pax_global_header00006660000000000000000000000064145366302320014516gustar00rootroot0000000000000052 comment=ab13479f8bf839366915b5ab7aa30c15c7a8834c golang-k8s-kube-openapi-0.0~git20231214.ab13479/000077500000000000000000000000001453663023200204165ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/.github/000077500000000000000000000000001453663023200217565ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/.github/workflows/000077500000000000000000000000001453663023200240135ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/.github/workflows/ci.yml000066400000000000000000000020201453663023200251230ustar00rootroot00000000000000name: ci-pipeline on: push: branches: [ master ] pull_request: branches: [ master ] jobs: ci: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Go uses: actions/setup-go@v4 with: go-version-file: 'go.mod' - name: Build run: | go mod tidy && git diff --exit-code go build ./cmd/... ./pkg/... - name: Format run: | diff=$(gofmt -s -d .) if [[ -n "${diff}" ]]; then echo "${diff}"; exit 1; fi - name: Test run: | go test -race ./cmd/... ./pkg/... - name: Run integration tests run: | cd test/integration go mod tidy && git diff --exit-code go test ./... required: # The name of the ci jobs above change based on the golang version. # Use this as a stable required job that depends on the above jobs. # ref: https://github.com/kubernetes/test-infra/pull/27016 needs: ci runs-on: ubuntu-latest steps: - run: echo "Required jobs success!" golang-k8s-kube-openapi-0.0~git20231214.ab13479/.gitignore000066400000000000000000000005001453663023200224010ustar00rootroot00000000000000# Binaries for programs and plugins *.exe *.dll *.so *.dylib # Test binary, build with `go test -c` *.test # Output of the go coverage tool, specifically when used with LiteIDE *.out # Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 .glide/ # Intellij IDEA files .idea/ *.iml .vscode golang-k8s-kube-openapi-0.0~git20231214.ab13479/CONTRIBUTING.md000066400000000000000000000007601453663023200226520ustar00rootroot00000000000000# Contributing Thanks for taking the time to join our community and start contributing! The [Contributor Guide](https://github.com/kubernetes/community/blob/master/contributors/guide/README.md) provides detailed instructions on how to get your ideas and bug fixes seen and accepted. Please remember to sign the [CNCF CLA](https://github.com/kubernetes/community/blob/master/CLA.md) and read and observe the [Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). golang-k8s-kube-openapi-0.0~git20231214.ab13479/LICENSE000066400000000000000000000261361453663023200214330ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. golang-k8s-kube-openapi-0.0~git20231214.ab13479/OWNERS000066400000000000000000000003401453663023200213530ustar00rootroot00000000000000reviewers: - yujuhong - gmarek - philips - seans3 - apelisse - roycaihw - sttts - jpbetz - jefftree - alexzielenski approvers: - sttts - apelisse - jpbetz - jefftree - alexzielenski emeritus_approvers: - mbohlool - lavalamp golang-k8s-kube-openapi-0.0~git20231214.ab13479/README.md000066400000000000000000000013131453663023200216730ustar00rootroot00000000000000# Kube OpenAPI This repo is the home for Kubernetes OpenAPI discovery spec generation. The goal is to support a subset of OpenAPI features to satisfy kubernetes use-cases but implement that subset with little to no assumption about the structure of the code or routes. Thus, there should be no kubernetes specific code in this repo. There are two main parts: - A model generator that goes through .go files, find and generate model definitions. - The spec generator that is responsible for dynamically generate the final OpenAPI spec using web service routes or combining other OpenAPI/Json specs. ## Contributing Please see [CONTRIBUTING.md](CONTRIBUTING.md) for instructions on how to contribute. golang-k8s-kube-openapi-0.0~git20231214.ab13479/SECURITY.md000066400000000000000000000020551453663023200222110ustar00rootroot00000000000000# Security Policy ## Security Announcements Join the [kubernetes-security-announce] group for security and vulnerability announcements. You can also subscribe to an RSS feed of the above using [this link][kubernetes-security-announce-rss]. ## Reporting a Vulnerability Instructions for reporting a vulnerability can be found on the [Kubernetes Security and Disclosure Information] page. ## Supported Versions Information about supported Kubernetes versions can be found on the [Kubernetes version and version skew support policy] page on the Kubernetes website. [kubernetes-security-announce]: https://groups.google.com/forum/#!forum/kubernetes-security-announce [kubernetes-security-announce-rss]: https://groups.google.com/forum/feed/kubernetes-security-announce/msgs/rss_v2_0.xml?num=50 [Kubernetes version and version skew support policy]: https://kubernetes.io/docs/setup/release/version-skew-policy/#supported-versions [Kubernetes Security and Disclosure Information]: https://kubernetes.io/docs/reference/issues-security/security/#report-a-vulnerability golang-k8s-kube-openapi-0.0~git20231214.ab13479/SECURITY_CONTACTS000066400000000000000000000010251453663023200231040ustar00rootroot00000000000000# Defined below are the security contacts for this repo. # # They are the contact point for the Product Security Committee to reach out # to for triaging and handling of incoming issues. # # The below names agree to abide by the # [Embargo Policy](https://git.k8s.io/security/private-distributors-list.md#embargo-policy) # and will be removed and replaced if they violate that agreement. # # DO NOT REPORT SECURITY VULNERABILITIES DIRECTLY TO THESE NAMES, FOLLOW THE # INSTRUCTIONS AT https://kubernetes.io/security/ sttts mbohlool golang-k8s-kube-openapi-0.0~git20231214.ab13479/boilerplate/000077500000000000000000000000001453663023200227205ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/boilerplate/boilerplate.go.txt000066400000000000000000000010661453663023200263720ustar00rootroot00000000000000/* Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ golang-k8s-kube-openapi-0.0~git20231214.ab13479/cmd/000077500000000000000000000000001453663023200211615ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/cmd/openapi-gen/000077500000000000000000000000001453663023200233635ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/cmd/openapi-gen/args/000077500000000000000000000000001453663023200243175ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/cmd/openapi-gen/args/args.go000066400000000000000000000060401453663023200256020ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package args import ( "fmt" "path/filepath" "github.com/spf13/pflag" "k8s.io/gengo/args" ) // CustomArgs is used by the gengo framework to pass args specific to this generator. type CustomArgs struct { // ReportFilename is added to CustomArgs for specifying name of report file used // by API linter. If specified, API rule violations will be printed to report file. // Otherwise default value "-" will be used which indicates stdout. ReportFilename string } // NewDefaults returns default arguments for the generator. Returning the arguments instead // of using default flag parsing allows registering custom arguments afterwards func NewDefaults() (*args.GeneratorArgs, *CustomArgs) { // Default() sets a couple of flag default values for example the boilerplate. // WithoutDefaultFlagParsing() disables implicit addition of command line flags and parsing, // which allows registering custom arguments afterwards genericArgs := args.Default().WithoutDefaultFlagParsing() genericArgs.GoHeaderFilePath = filepath.Join(args.DefaultSourceTree(), "k8s.io/kube-openapi/boilerplate/boilerplate.go.txt") customArgs := &CustomArgs{} genericArgs.CustomArgs = customArgs // Default value for report filename is "-", which stands for stdout customArgs.ReportFilename = "-" // Default value for output file base name genericArgs.OutputFileBaseName = "openapi_generated" return genericArgs, customArgs } // AddFlags add the generator flags to the flag set. func (c *CustomArgs) AddFlags(fs *pflag.FlagSet) { fs.StringVarP(&c.ReportFilename, "report-filename", "r", c.ReportFilename, "Name of report file used by API linter to print API violations. Default \"-\" stands for standard output. NOTE that if valid filename other than \"-\" is specified, API linter won't return error on detected API violations. This allows further check of existing API violations without stopping the OpenAPI generation toolchain.") } // Validate checks the given arguments. func Validate(genericArgs *args.GeneratorArgs) error { c, ok := genericArgs.CustomArgs.(*CustomArgs) if !ok { return fmt.Errorf("input arguments don't contain valid custom arguments") } if len(c.ReportFilename) == 0 { return fmt.Errorf("report filename cannot be empty. specify a valid filename or use \"-\" for stdout") } if len(genericArgs.OutputFileBaseName) == 0 { return fmt.Errorf("output file base name cannot be empty") } if len(genericArgs.OutputPackagePath) == 0 { return fmt.Errorf("output package cannot be empty") } return nil } golang-k8s-kube-openapi-0.0~git20231214.ab13479/cmd/openapi-gen/openapi-gen.go000066400000000000000000000032731453663023200261210ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ // This package generates openAPI definition file to be used in open API spec generation on API servers. To generate // definition for a specific type or package add "+k8s:openapi-gen=true" tag to the type/package comment lines. To // exclude a type from a tagged package, add "+k8s:openapi-gen=false" tag to the type comment lines. package main import ( "flag" "log" generatorargs "k8s.io/kube-openapi/cmd/openapi-gen/args" "k8s.io/kube-openapi/pkg/generators" "github.com/spf13/pflag" "k8s.io/klog/v2" ) func main() { klog.InitFlags(nil) genericArgs, customArgs := generatorargs.NewDefaults() genericArgs.AddFlags(pflag.CommandLine) customArgs.AddFlags(pflag.CommandLine) flag.Set("logtostderr", "true") pflag.CommandLine.AddGoFlagSet(flag.CommandLine) pflag.Parse() if err := generatorargs.Validate(genericArgs); err != nil { log.Fatalf("Arguments validation error: %v", err) } // Generates the code for the OpenAPIDefinitions. if err := genericArgs.Execute( generators.NameSystems(), generators.DefaultNameSystem(), generators.Packages, ); err != nil { log.Fatalf("OpenAPI code generation error: %v", err) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/cmd/openapi2smd/000077500000000000000000000000001453663023200234025ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/cmd/openapi2smd/openapi2smd.go000066400000000000000000000027201453663023200261530ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package main import ( "io" "log" "os" openapi_v2 "github.com/google/gnostic-models/openapiv2" yaml "gopkg.in/yaml.v2" "k8s.io/kube-openapi/pkg/schemaconv" "k8s.io/kube-openapi/pkg/util/proto" ) func main() { if len(os.Args) != 1 { log.Fatal("this program takes input on stdin and writes output to stdout.") } input, err := io.ReadAll(os.Stdin) if err != nil { log.Fatalf("error reading stdin: %v", err) } document, err := openapi_v2.ParseDocument(input) if err != nil { log.Fatalf("error interpreting stdin: %v", err) } models, err := proto.NewOpenAPIData(document) if err != nil { log.Fatalf("error interpreting models: %v", err) } newSchema, err := schemaconv.ToSchema(models) if err != nil { log.Fatalf("error converting schema format: %v", err) } if err := yaml.NewEncoder(os.Stdout).Encode(newSchema); err != nil { log.Fatalf("error writing new schema: %v", err) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/code-of-conduct.md000066400000000000000000000002241453663023200237070ustar00rootroot00000000000000# Kubernetes Community Code of Conduct Please refer to our [Kubernetes Community Code of Conduct](https://git.k8s.io/community/code-of-conduct.md) golang-k8s-kube-openapi-0.0~git20231214.ab13479/go.mod000066400000000000000000000033261453663023200215300ustar00rootroot00000000000000module k8s.io/kube-openapi go 1.19 require ( github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46 github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a github.com/emicklei/go-restful/v3 v3.8.0 github.com/go-openapi/jsonreference v0.20.1 github.com/go-openapi/swag v0.22.3 github.com/golang/protobuf v1.5.2 github.com/google/gnostic-models v0.6.8 github.com/google/go-cmp v0.5.5 github.com/google/gofuzz v1.1.0 github.com/google/uuid v1.1.2 github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d github.com/onsi/ginkgo/v2 v2.1.4 github.com/onsi/gomega v1.19.0 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.1 google.golang.org/protobuf v1.27.1 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 k8s.io/klog/v2 v2.2.0 k8s.io/utils v0.0.0-20210802155522-efc7438f0176 sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd sigs.k8s.io/structured-merge-diff/v4 v4.2.3 sigs.k8s.io/yaml v1.2.0 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/go-logr/logr v0.2.0 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect golang.org/x/mod v0.7.0 // indirect golang.org/x/net v0.7.0 // indirect golang.org/x/sys v0.5.0 // indirect golang.org/x/text v0.7.0 // indirect golang.org/x/tools v0.4.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect ) golang-k8s-kube-openapi-0.0~git20231214.ab13479/go.sum000066400000000000000000000262271453663023200215620ustar00rootroot00000000000000github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46 h1:lsxEuwrXEAokXB9qhlbKWPpo3KMLZQ5WB5WLQRW1uq0= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0 h1:QvGt2nLcHH0WK9orKa+ppBPAxREcH364nPUedEpK0TY= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= github.com/go-openapi/jsonreference v0.20.1 h1:FBLnyygC4/IZZr893oiomc9XaghoveYTrLC1F86HID8= github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d h1:7PxY7LVfSZm7PEeBTyK1rj1gABdCO2mbri6GKO1cMDs= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/onsi/ginkgo/v2 v2.1.4 h1:GNapqRSid3zijZ9H77KrgVG4/8KqiyRsxcSxe+7ApXY= github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU= github.com/onsi/gomega v1.19.0 h1:4ieX6qQjPP/BfC3mpsAtIGGlxTWPeA3Inl/7DtXw1tw= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.4.0 h1:7mTAgkunk3fr4GAloyyCasadO6h9zSsQZbwvcaIciV4= golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 h1:pWEwq4Asjm4vjW7vcsmijwBhOr1/shsbSYiWXmNGlks= k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.2.0 h1:XRvcwJozkgZ1UQJmfMGpvRthQHOvihEhYtDfAaxMz/A= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/utils v0.0.0-20210802155522-efc7438f0176 h1:Mx0aa+SUAcNRQbs5jUzV8lkDlGFU8laZsY9jrcVX5SY= k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= golang-k8s-kube-openapi-0.0~git20231214.ab13479/hack/000077500000000000000000000000001453663023200213245ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/hack/JSON-EXPERIMENTAL-HASH000066400000000000000000000000511453663023200244300ustar00rootroot00000000000000540f014424240312547dcccddf11a8229ca0f463 golang-k8s-kube-openapi-0.0~git20231214.ab13479/hack/update-json-library.sh000077500000000000000000000024341453663023200255610ustar00rootroot00000000000000#!/usr/bin/env bash # This script can be called via ./hack/update-json-library.sh` to update the # go-json-experiment fork in the repo. # The HASH parameter may be set as part of the invocation to this script or # the default hash from ./hack/JSON-EXPERIMENTAL-HASH will be used. HASH="${HASH:-$(cat ./hack/JSON-EXPERIMENTAL-HASH)}" GO_JSON_EXPERIMENT_DIR="pkg/internal/third_party/go-json-experiment/json" rm -rf $GO_JSON_EXPERIMENT_DIR git clone https://github.com/go-json-experiment/json $GO_JSON_EXPERIMENT_DIR cd $GO_JSON_EXPERIMENT_DIR git reset --hard $HASH # If HASH was set to a keyword like HEAD, get the actual commit ID HASH=$(git rev-parse HEAD) cat < ../README.md Forked from: https://github.com/go-json-experiment/json Commit Hash: $HASH This internal fork exists to prevent dependency issues with go-json-experiment until its API stabilizes. EOF # Remove git directories rm -rf ".git" rm -rf ".github" # Remove images rm *.png # Remove go.{mod|sum} # NOTE: go-json-experiment has no go mod dependencies at the moment. # If this changes, the code will need to be updated. rm go.mod go.sum # Update references to point to the fork find . -type f -name "*.go" -print0 | xargs -0 perl -pi -e "s#github.com/go-json-experiment/json#k8s.io/kube-openapi/${GO_JSON_EXPERIMENT_DIR}#g" golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/000077500000000000000000000000001453663023200211775ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/aggregator/000077500000000000000000000000001453663023200233215ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/aggregator/aggregator.go000066400000000000000000000324361453663023200260020ustar00rootroot00000000000000/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package aggregator import ( "fmt" "reflect" "sort" "strings" "k8s.io/kube-openapi/pkg/schemamutation" "k8s.io/kube-openapi/pkg/util" "k8s.io/kube-openapi/pkg/validation/spec" ) const gvkKey = "x-kubernetes-group-version-kind" // usedDefinitionForSpec returns a map with all used definitions in the provided spec as keys and true as values. func usedDefinitionForSpec(root *spec.Swagger) map[string]bool { usedDefinitions := map[string]bool{} walkOnAllReferences(func(ref *spec.Ref) { if refStr := ref.String(); refStr != "" && strings.HasPrefix(refStr, definitionPrefix) { usedDefinitions[refStr[len(definitionPrefix):]] = true } }, root) return usedDefinitions } // FilterSpecByPaths removes unnecessary paths and definitions used by those paths. // i.e. if a Path removed by this function, all definitions used by it and not used // anywhere else will also be removed. func FilterSpecByPaths(sp *spec.Swagger, keepPathPrefixes []string) { *sp = *FilterSpecByPathsWithoutSideEffects(sp, keepPathPrefixes) } // FilterSpecByPathsWithoutSideEffects removes unnecessary paths and definitions used by those paths. // i.e. if a Path removed by this function, all definitions used by it and not used // anywhere else will also be removed. // It does not modify the input, but the output shares data structures with the input. func FilterSpecByPathsWithoutSideEffects(sp *spec.Swagger, keepPathPrefixes []string) *spec.Swagger { if sp.Paths == nil { return sp } // Walk all references to find all used definitions. This function // want to only deal with unused definitions resulted from filtering paths. // Thus a definition will be removed only if it has been used before but // it is unused because of a path prune. initialUsedDefinitions := usedDefinitionForSpec(sp) // First remove unwanted paths prefixes := util.NewTrie(keepPathPrefixes) ret := *sp ret.Paths = &spec.Paths{ VendorExtensible: sp.Paths.VendorExtensible, Paths: map[string]spec.PathItem{}, } for path, pathItem := range sp.Paths.Paths { if !prefixes.HasPrefix(path) { continue } ret.Paths.Paths[path] = pathItem } // Walk all references to find all definition references. usedDefinitions := usedDefinitionForSpec(&ret) // Remove unused definitions ret.Definitions = spec.Definitions{} for k, v := range sp.Definitions { if usedDefinitions[k] || !initialUsedDefinitions[k] { ret.Definitions[k] = v } } return &ret } // renameDefinitions renames definition references, without mutating the input. // The output might share data structures with the input. func renameDefinitions(s *spec.Swagger, renames map[string]string) *spec.Swagger { refRenames := make(map[string]string, len(renames)) foundOne := false for k, v := range renames { refRenames[definitionPrefix+k] = definitionPrefix + v if _, ok := s.Definitions[k]; ok { foundOne = true } } if !foundOne { return s } ret := &spec.Swagger{} *ret = *s ret = schemamutation.ReplaceReferences(func(ref *spec.Ref) *spec.Ref { refName := ref.String() if newRef, found := refRenames[refName]; found { ret := spec.MustCreateRef(newRef) return &ret } return ref }, ret) renamedDefinitions := make(spec.Definitions, len(ret.Definitions)) for k, v := range ret.Definitions { if newRef, found := renames[k]; found { k = newRef } renamedDefinitions[k] = v } ret.Definitions = renamedDefinitions return ret } // renameParameters renames parameter references, without mutating the input. // The output might share data structures with the input. func renameParameters(s *spec.Swagger, renames map[string]string) *spec.Swagger { refRenames := make(map[string]string, len(renames)) foundOne := false for k, v := range renames { refRenames[parameterPrefix+k] = parameterPrefix + v if _, ok := s.Parameters[k]; ok { foundOne = true } } if !foundOne { return s } ret := &spec.Swagger{} *ret = *s ret = schemamutation.ReplaceReferences(func(ref *spec.Ref) *spec.Ref { refName := ref.String() if newRef, found := refRenames[refName]; found { ret := spec.MustCreateRef(newRef) return &ret } return ref }, ret) renamed := make(map[string]spec.Parameter, len(ret.Parameters)) for k, v := range ret.Parameters { if newRef, found := renames[k]; found { k = newRef } renamed[k] = v } ret.Parameters = renamed return ret } // MergeSpecsIgnorePathConflictRenamingDefinitionsAndParameters is the same as // MergeSpecs except it will ignore any path conflicts by keeping the paths of // destination. It will rename definition and parameter conflicts. func MergeSpecsIgnorePathConflictRenamingDefinitionsAndParameters(dest, source *spec.Swagger) error { return mergeSpecs(dest, source, true, true, true) } // MergeSpecsIgnorePathConflictDeprecated is the same as MergeSpecs except it will ignore any path // conflicts by keeping the paths of destination. It will rename definition and // parameter conflicts. func MergeSpecsIgnorePathConflictDeprecated(dest, source *spec.Swagger) error { return mergeSpecs(dest, source, true, false, true) } // MergeSpecsFailOnDefinitionConflict is different from MergeSpecs as it fails if there is // a definition or parameter conflict. func MergeSpecsFailOnDefinitionConflict(dest, source *spec.Swagger) error { return mergeSpecs(dest, source, false, false, false) } // MergeSpecs copies paths, definitions and parameters from source to dest, rename // definitions if needed. It will fail on path conflicts. // // The destination is mutated, the source is not. func MergeSpecs(dest, source *spec.Swagger) error { return mergeSpecs(dest, source, true, true, false) } // mergeSpecs merges source into dest while resolving conflicts. // The source is not mutated. func mergeSpecs(dest, source *spec.Swagger, renameModelConflicts, renameParameterConflicts, ignorePathConflicts bool) (err error) { // Paths may be empty, due to [ACL constraints](http://goo.gl/8us55a#securityFiltering). if source.Paths == nil { // When a source spec does not have any path, that means none of the definitions // are used thus we should not do anything return nil } if dest.Paths == nil { dest.Paths = &spec.Paths{} } if ignorePathConflicts { keepPaths := []string{} hasConflictingPath := false for k := range source.Paths.Paths { if _, found := dest.Paths.Paths[k]; !found { keepPaths = append(keepPaths, k) } else { hasConflictingPath = true } } if len(keepPaths) == 0 { // There is nothing to merge. All paths are conflicting. return nil } if hasConflictingPath { source = FilterSpecByPathsWithoutSideEffects(source, keepPaths) } } // Check for model conflicts and rename to make definitions conflict-free (modulo different GVKs) usedNames := map[string]bool{} for k := range dest.Definitions { usedNames[k] = true } renames := map[string]string{} DEFINITIONLOOP: for k, v := range source.Definitions { existing, found := dest.Definitions[k] if !found || deepEqualDefinitionsModuloGVKs(&existing, &v) { // skip for now, we copy them after the rename loop continue } if !renameModelConflicts { return fmt.Errorf("model name conflict in merging OpenAPI spec: %s", k) } // Reuse previously renamed model if one exists var newName string i := 1 for found { i++ newName = fmt.Sprintf("%s_v%d", k, i) existing, found = dest.Definitions[newName] if found && deepEqualDefinitionsModuloGVKs(&existing, &v) { renames[k] = newName continue DEFINITIONLOOP } } _, foundInSource := source.Definitions[newName] for usedNames[newName] || foundInSource { i++ newName = fmt.Sprintf("%s_v%d", k, i) _, foundInSource = source.Definitions[newName] } renames[k] = newName usedNames[newName] = true } source = renameDefinitions(source, renames) // Check for parameter conflicts and rename to make parameters conflict-free usedNames = map[string]bool{} for k := range dest.Parameters { usedNames[k] = true } renames = map[string]string{} PARAMETERLOOP: for k, p := range source.Parameters { existing, found := dest.Parameters[k] if !found || reflect.DeepEqual(&existing, &p) { // skip for now, we copy them after the rename loop continue } if !renameParameterConflicts { return fmt.Errorf("parameter name conflict in merging OpenAPI spec: %s", k) } // Reuse previously renamed parameter if one exists var newName string i := 1 for found { i++ newName = fmt.Sprintf("%s_v%d", k, i) existing, found = dest.Parameters[newName] if found && reflect.DeepEqual(&existing, &p) { renames[k] = newName continue PARAMETERLOOP } } _, foundInSource := source.Parameters[newName] for usedNames[newName] || foundInSource { i++ newName = fmt.Sprintf("%s_v%d", k, i) _, foundInSource = source.Parameters[newName] } renames[k] = newName usedNames[newName] = true } source = renameParameters(source, renames) // Now without conflict (modulo different GVKs), copy definitions to dest for k, v := range source.Definitions { if existing, found := dest.Definitions[k]; !found { if dest.Definitions == nil { dest.Definitions = make(spec.Definitions, len(source.Definitions)) } dest.Definitions[k] = v } else if merged, changed, err := mergedGVKs(&existing, &v); err != nil { return err } else if changed { existing.Extensions[gvkKey] = merged } } // Now without conflict, copy parameters to dest for k, v := range source.Parameters { if _, found := dest.Parameters[k]; !found { if dest.Parameters == nil { dest.Parameters = make(map[string]spec.Parameter, len(source.Parameters)) } dest.Parameters[k] = v } } // Check for path conflicts for k, v := range source.Paths.Paths { if _, found := dest.Paths.Paths[k]; found { return fmt.Errorf("unable to merge: duplicated path %s", k) } // PathItem may be empty, due to [ACL constraints](http://goo.gl/8us55a#securityFiltering). if dest.Paths.Paths == nil { dest.Paths.Paths = map[string]spec.PathItem{} } dest.Paths.Paths[k] = v } return nil } // deepEqualDefinitionsModuloGVKs compares s1 and s2, but ignores the x-kubernetes-group-version-kind extension. func deepEqualDefinitionsModuloGVKs(s1, s2 *spec.Schema) bool { if s1 == nil { return s2 == nil } else if s2 == nil { return false } if !reflect.DeepEqual(s1.Extensions, s2.Extensions) { for k, v := range s1.Extensions { if k == gvkKey { continue } if !reflect.DeepEqual(v, s2.Extensions[k]) { return false } } len1 := len(s1.Extensions) len2 := len(s2.Extensions) if _, found := s1.Extensions[gvkKey]; found { len1-- } if _, found := s2.Extensions[gvkKey]; found { len2-- } if len1 != len2 { return false } if s1.Extensions != nil { shallowCopy := *s1 s1 = &shallowCopy s1.Extensions = nil } if s2.Extensions != nil { shallowCopy := *s2 s2 = &shallowCopy s2.Extensions = nil } } return reflect.DeepEqual(s1, s2) } // mergedGVKs merges the x-kubernetes-group-version-kind slices and returns the result, and whether // s1's x-kubernetes-group-version-kind slice was changed at all. func mergedGVKs(s1, s2 *spec.Schema) (interface{}, bool, error) { gvk1, found1 := s1.Extensions[gvkKey] gvk2, found2 := s2.Extensions[gvkKey] if !found1 { return gvk2, found2, nil } if !found2 { return gvk1, false, nil } slice1, ok := gvk1.([]interface{}) if !ok { return nil, false, fmt.Errorf("expected slice of GroupVersionKinds, got: %+v", slice1) } slice2, ok := gvk2.([]interface{}) if !ok { return nil, false, fmt.Errorf("expected slice of GroupVersionKinds, got: %+v", slice2) } ret := make([]interface{}, len(slice1), len(slice1)+len(slice2)) keys := make([]string, 0, len(slice1)+len(slice2)) copy(ret, slice1) seen := make(map[string]bool, len(slice1)) for _, x := range slice1 { gvk, ok := x.(map[string]interface{}) if !ok { return nil, false, fmt.Errorf(`expected {"group": , "kind": , "version": }, got: %#v`, x) } k := fmt.Sprintf("%s/%s.%s", gvk["group"], gvk["version"], gvk["kind"]) keys = append(keys, k) seen[k] = true } changed := false for _, x := range slice2 { gvk, ok := x.(map[string]interface{}) if !ok { return nil, false, fmt.Errorf(`expected {"group": , "kind": , "version": }, got: %#v`, x) } k := fmt.Sprintf("%s/%s.%s", gvk["group"], gvk["version"], gvk["kind"]) if seen[k] { continue } ret = append(ret, x) keys = append(keys, k) changed = true } if changed { sort.Sort(byKeys{ret, keys}) } return ret, changed, nil } type byKeys struct { values []interface{} keys []string } func (b byKeys) Len() int { return len(b.values) } func (b byKeys) Less(i, j int) bool { return b.keys[i] < b.keys[j] } func (b byKeys) Swap(i, j int) { b.values[i], b.values[j] = b.values[j], b.values[i] b.keys[i], b.keys[j] = b.keys[j], b.keys[i] } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/aggregator/aggregator_test.go000066400000000000000000001531571453663023200270450ustar00rootroot00000000000000/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package aggregator import ( "encoding/json" "fmt" "os" "path/filepath" "reflect" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "k8s.io/kube-openapi/pkg/handler" "k8s.io/kube-openapi/pkg/validation/spec" "sigs.k8s.io/yaml" ) type DebugSpec struct { *spec.Swagger } func (d DebugSpec) String() string { bytes, err := d.Swagger.MarshalJSON() if err != nil { return fmt.Sprintf("DebugSpec.String failed: %s", err) } return string(bytes) } func TestFilterSpecs(t *testing.T) { var spec1, spec1_filtered *spec.Swagger yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: tags: - "test" summary: "Test API" operationId: "addTest" parameters: - in: "body" name: "body" description: "test object" required: true schema: $ref: "#/definitions/Test" responses: 405: description: "Invalid input" $ref: "#/definitions/InvalidInput" /othertest: post: tags: - "test2" summary: "Test2 API" operationId: "addTest2" consumes: - "application/json" produces: - "application/xml" parameters: - in: "body" name: "body" description: "test2 object" required: true schema: $ref: "#/definitions/Test2" definitions: Test: type: "object" properties: id: type: "integer" format: "int64" status: type: "string" description: "Status" InvalidInput: type: "string" format: "string" Test2: type: "object" properties: other: $ref: "#/definitions/Other" Other: type: "string" `), &spec1) yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: tags: - "test" summary: "Test API" operationId: "addTest" parameters: - in: "body" name: "body" description: "test object" required: true schema: $ref: "#/definitions/Test" responses: 405: description: "Invalid input" $ref: "#/definitions/InvalidInput" definitions: Test: type: "object" properties: id: type: "integer" format: "int64" status: type: "string" description: "Status" InvalidInput: type: "string" format: "string" `), &spec1_filtered) ast := assert.New(t) orig_spec1, _ := cloneSpec(spec1) new_spec1 := FilterSpecByPathsWithoutSideEffects(spec1, []string{"/test"}) ast.Equal(DebugSpec{spec1_filtered}, DebugSpec{new_spec1}) ast.Equal(DebugSpec{orig_spec1}, DebugSpec{spec1}, "unexpected mutation of input") } func TestFilterSpecsWithUnusedDefinitions(t *testing.T) { var spec1, spec1Filtered *spec.Swagger yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: tags: - "test" summary: "Test API" operationId: "addTest" parameters: - in: "body" name: "body" description: "test object" required: true schema: $ref: "#/definitions/Test" responses: 405: description: "Invalid input" $ref: "#/definitions/InvalidInput" /othertest: post: tags: - "test2" summary: "Test2 API" operationId: "addTest2" consumes: - "application/json" produces: - "application/xml" parameters: - in: "body" name: "body" description: "test2 object" required: true schema: $ref: "#/definitions/Test2" definitions: Test: type: "object" properties: id: type: "integer" format: "int64" status: type: "string" description: "Status" InvalidInput: type: "string" format: "string" Test2: type: "object" properties: other: $ref: "#/definitions/Other" Other: type: "string" Unused: type: "object" `), &spec1) yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: tags: - "test" summary: "Test API" operationId: "addTest" parameters: - in: "body" name: "body" description: "test object" required: true schema: $ref: "#/definitions/Test" responses: 405: description: "Invalid input" $ref: "#/definitions/InvalidInput" definitions: Test: type: "object" properties: id: type: "integer" format: "int64" status: type: "string" description: "Status" InvalidInput: type: "string" format: "string" Unused: type: "object" `), &spec1Filtered) ast := assert.New(t) orig_spec1, _ := cloneSpec(spec1) new_spec1 := FilterSpecByPathsWithoutSideEffects(spec1, []string{"/test"}) ast.Equal(DebugSpec{spec1Filtered}, DebugSpec{new_spec1}) ast.Equal(DebugSpec{orig_spec1}, DebugSpec{spec1}, "unexpected mutation of input") } func TestMergeSpecsSimple(t *testing.T) { var spec1, spec2, expected *spec.Swagger require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: tags: - "test" summary: "Test API" operationId: "addTest" parameters: - in: "body" name: "body" description: "test object" required: true schema: $ref: "#/definitions/Test" - $ref: "#/parameters/a" responses: 405: description: "Invalid input" $ref: "#/definitions/InvalidInput" definitions: Test: type: "object" properties: id: type: "integer" format: "int64" status: type: "string" description: "Status" InvalidInput: type: "string" format: "string" parameters: a: in: query name: a schema: $ref: "#/definitions/Test" `), &spec1)) require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /othertest: post: tags: - "test2" summary: "Test2 API" operationId: "addTest2" consumes: - "application/json" produces: - "application/xml" parameters: - in: "body" name: "body" description: "test2 object" required: true schema: $ref: "#/definitions/Test2" - $ref: "#/parameters/b" definitions: Test2: type: "object" properties: other: $ref: "#/definitions/Other" Other: type: "string" parameters: b: in: query name: b schema: $ref: "#/definitions/Test2" `), &spec2)) require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: tags: - "test" summary: "Test API" operationId: "addTest" parameters: - in: "body" name: "body" description: "test object" required: true schema: $ref: "#/definitions/Test" - $ref: "#/parameters/a" responses: 405: description: "Invalid input" $ref: "#/definitions/InvalidInput" /othertest: post: tags: - "test2" summary: "Test2 API" operationId: "addTest2" consumes: - "application/json" produces: - "application/xml" parameters: - in: "body" name: "body" description: "test2 object" required: true schema: $ref: "#/definitions/Test2" - $ref: "#/parameters/b" definitions: Test: type: "object" properties: id: type: "integer" format: "int64" status: type: "string" description: "Status" InvalidInput: type: "string" format: "string" Test2: type: "object" properties: other: $ref: "#/definitions/Other" Other: type: "string" parameters: a: in: query name: a schema: $ref: "#/definitions/Test" b: in: query name: b schema: $ref: "#/definitions/Test2" `), &expected)) ast := assert.New(t) orig_spec2, _ := cloneSpec(spec2) if !ast.NoError(MergeSpecs(spec1, spec2)) { return } ast.Equal(DebugSpec{expected}.String(), DebugSpec{spec1}.String()) ast.Equal(DebugSpec{orig_spec2}.String(), DebugSpec{spec2}.String(), "unexpected mutation of input") } func TestMergeSpecsEmptyDefinitions(t *testing.T) { var spec1, spec2, expected *spec.Swagger require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: tags: - "test" summary: "Test API" operationId: "addTest" parameters: - in: "body" name: "body" description: "test object" required: true responses: 405: description: "Invalid input" `), &spec1)) require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /othertest: post: tags: - "test2" summary: "Test2 API" operationId: "addTest2" consumes: - "application/json" produces: - "application/xml" parameters: - in: "body" name: "body" description: "test2 object" required: true schema: $ref: "#/definitions/Test2" definitions: Test2: type: "object" properties: other: $ref: "#/definitions/Other" Other: type: "string" `), &spec2)) require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: tags: - "test" summary: "Test API" operationId: "addTest" parameters: - in: "body" name: "body" description: "test object" required: true responses: 405: description: "Invalid input" /othertest: post: tags: - "test2" summary: "Test2 API" operationId: "addTest2" consumes: - "application/json" produces: - "application/xml" parameters: - in: "body" name: "body" description: "test2 object" required: true schema: $ref: "#/definitions/Test2" definitions: Test2: type: "object" properties: other: $ref: "#/definitions/Other" Other: type: "string" `), &expected)) ast := assert.New(t) orig_spec2, _ := cloneSpec(spec2) if !ast.NoError(MergeSpecs(spec1, spec2)) { return } ast.Equal(DebugSpec{expected}, DebugSpec{spec1}) ast.Equal(DebugSpec{orig_spec2}, DebugSpec{spec2}, "unexpected mutation of input") } func TestMergeSpecsEmptyPaths(t *testing.T) { var spec1, spec2, expected *spec.Swagger yaml.Unmarshal([]byte(` swagger: "2.0" definitions: Test: type: "object" properties: id: type: "integer" format: "int64" status: type: "string" description: "Status" InvalidInput: type: "string" format: "string" `), &spec1) yaml.Unmarshal([]byte(` swagger: "2.0" paths: /othertest: post: tags: - "test2" summary: "Test2 API" operationId: "addTest2" consumes: - "application/json" produces: - "application/xml" parameters: - in: "body" name: "body" description: "test2 object" required: true schema: $ref: "#/definitions/Test2" definitions: Test2: type: "object" properties: other: $ref: "#/definitions/Other" Other: type: "string" `), &spec2) yaml.Unmarshal([]byte(` swagger: "2.0" paths: /othertest: post: tags: - "test2" summary: "Test2 API" operationId: "addTest2" consumes: - "application/json" produces: - "application/xml" parameters: - in: "body" name: "body" description: "test2 object" required: true schema: $ref: "#/definitions/Test2" definitions: Test: type: "object" properties: id: type: "integer" format: "int64" status: type: "string" description: "Status" InvalidInput: type: "string" format: "string" Test2: type: "object" properties: other: $ref: "#/definitions/Other" Other: type: "string" `), &expected) ast := assert.New(t) orig_spec2, _ := cloneSpec(spec2) if !ast.NoError(MergeSpecs(spec1, spec2)) { return } ast.Equal(DebugSpec{expected}, DebugSpec{spec1}) ast.Equal(DebugSpec{orig_spec2}, DebugSpec{spec2}, "unexpected mutation of input") } func TestMergeSpecsReuseModel(t *testing.T) { var spec1, spec2, expected *spec.Swagger require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: tags: - "test" summary: "Test API" operationId: "addTest" parameters: - in: "body" name: "body" description: "test object" required: true schema: $ref: "#/definitions/Test" - $ref: "#/parameters/a" responses: 405: description: "Invalid input" $ref: "#/definitions/InvalidInput" definitions: Test: type: "object" properties: id: type: "integer" format: "int64" status: type: "string" description: "Status" InvalidInput: type: "string" format: "string" parameters: a: in: query name: a schema: $ref: "#/definitions/Test" `), &spec1)) require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /othertest: post: tags: - "test2" summary: "Test2 API" operationId: "addTest2" consumes: - "application/json" produces: - "application/xml" parameters: - in: "body" name: "body" description: "test2 object" required: true schema: $ref: "#/definitions/Test" - $ref: "#/parameters/a" definitions: Test: type: "object" properties: id: type: "integer" format: "int64" status: type: "string" description: "Status" InvalidInput: type: "string" format: "string" parameters: a: in: query name: a schema: $ref: "#/definitions/Test" `), &spec2)) require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: tags: - "test" summary: "Test API" operationId: "addTest" parameters: - in: "body" name: "body" description: "test object" required: true schema: $ref: "#/definitions/Test" - $ref: "#/parameters/a" responses: 405: description: "Invalid input" $ref: "#/definitions/InvalidInput" /othertest: post: tags: - "test2" summary: "Test2 API" operationId: "addTest2" consumes: - "application/json" produces: - "application/xml" parameters: - in: "body" name: "body" description: "test2 object" required: true schema: $ref: "#/definitions/Test" - $ref: "#/parameters/a" definitions: Test: type: "object" properties: id: type: "integer" format: "int64" status: type: "string" description: "Status" InvalidInput: type: "string" format: "string" parameters: a: in: query name: a schema: $ref: "#/definitions/Test" `), &expected)) ast := assert.New(t) orig_spec2, _ := cloneSpec(spec2) if !ast.NoError(MergeSpecs(spec1, spec2)) { return } ast.Equal(DebugSpec{expected}, DebugSpec{spec1}) ast.Equal(DebugSpec{orig_spec2}, DebugSpec{spec2}, "unexpected mutation of input") } func TestMergeSpecsRenameModel(t *testing.T) { var spec1, spec2, expected *spec.Swagger require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: tags: - "test" summary: "Test API" operationId: "addTest" parameters: - in: "body" name: "body" description: "test object" required: true schema: $ref: "#/definitions/Test" - $ref: "#/parameters/a" responses: 405: description: "Invalid input" $ref: "#/definitions/InvalidInput" definitions: Test: type: "object" properties: id: type: "integer" format: "int64" status: type: "string" description: "Status" InvalidInput: type: "string" format: "string" parameters: a: in: query name: a schema: $ref: "#/definitions/Test" `), &spec1)) require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /othertest: post: tags: - "test2" summary: "Test2 API" operationId: "addTest2" consumes: - "application/json" produces: - "application/xml" parameters: - in: "body" name: "body" description: "test2 object" required: true schema: $ref: "#/definitions/Test" - $ref: "#/parameters/a" definitions: Test: description: "This Test has a description" type: "object" properties: id: type: "integer" format: "int64" InvalidInput: type: "string" format: "string" parameters: a: in: query name: a schema: $ref: "#/definitions/Test" `), &spec2)) require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: tags: - "test" summary: "Test API" operationId: "addTest" parameters: - in: "body" name: "body" description: "test object" required: true schema: $ref: "#/definitions/Test" - $ref: "#/parameters/a" responses: 405: description: "Invalid input" $ref: "#/definitions/InvalidInput" /othertest: post: tags: - "test2" summary: "Test2 API" operationId: "addTest2" consumes: - "application/json" produces: - "application/xml" parameters: - in: "body" name: "body" description: "test2 object" required: true schema: $ref: "#/definitions/Test_v2" - $ref: "#/parameters/a_v2" definitions: Test: type: "object" properties: id: type: "integer" format: "int64" status: type: "string" description: "Status" Test_v2: description: "This Test has a description" type: "object" properties: id: type: "integer" format: "int64" InvalidInput: type: "string" format: "string" parameters: a: in: query name: a schema: $ref: "#/definitions/Test" a_v2: in: query name: a schema: $ref: "#/definitions/Test_v2" `), &expected)) ast := assert.New(t) orig_spec2, _ := cloneSpec(spec2) if !ast.NoError(MergeSpecs(spec1, spec2)) { return } ast.Equal(DebugSpec{expected}, DebugSpec{spec1}, DebugSpec{spec1}.String()) ast.Equal(DebugSpec{orig_spec2}, DebugSpec{spec2}, "unexpected mutation of input") } func TestMergeSpecsRenameModelWithExistingV2InDestination(t *testing.T) { var spec1, spec2, expected *spec.Swagger require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" - $ref: "#/parameters/a" /testv2: post: parameters: - name: "body" schema: $ref: "#/definitions/Test_v2" - $ref: "#/parameters/a_v2" definitions: Test: type: "object" Test_v2: description: "This is an existing Test_v2 in destination schema" type: "object" parameters: a: in: query name: a schema: $ref: "#/definitions/Test" a_v2: in: query name: a schema: $ref: "#/definitions/Test_v2" `), &spec1)) require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /othertest: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" - $ref: "#/parameters/a" definitions: Test: description: "This Test has a description" type: "object" parameters: a: in: query name: a schema: $ref: "#/definitions/Test" `), &spec2)) require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" - $ref: "#/parameters/a" /testv2: post: parameters: - name: "body" schema: $ref: "#/definitions/Test_v2" - $ref: "#/parameters/a_v2" /othertest: post: parameters: - name: "body" schema: $ref: "#/definitions/Test_v3" - $ref: "#/parameters/a_v3" definitions: Test: type: "object" Test_v2: description: "This is an existing Test_v2 in destination schema" type: "object" Test_v3: description: "This Test has a description" type: "object" parameters: a: in: query name: a schema: $ref: "#/definitions/Test" a_v2: in: query name: a schema: $ref: "#/definitions/Test_v2" a_v3: in: query name: a schema: $ref: "#/definitions/Test_v3" `), &expected)) ast := assert.New(t) orig_spec2, _ := cloneSpec(spec2) if !ast.NoError(MergeSpecs(spec1, spec2)) { return } ast.Equal(DebugSpec{expected}, DebugSpec{spec1}) ast.Equal(DebugSpec{orig_spec2}, DebugSpec{spec2}, "unexpected mutation of input") } func TestMergeSpecsMultipleRenamesOfModelsAndLateConflict(t *testing.T) { var spec1, spec2, expected *spec.Swagger require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" - $ref: "#/parameters/a" /test3: post: parameters: - name: "body" schema: $ref: "#/definitions/Test_v3" - $ref: "#/parameters/a_v3" definitions: Test: description: "I used to be Test in destination" type: "object" Test_v3: description: "I used to be Test_v3 in destination" type: "object" parameters: a: in: query name: a schema: $ref: "#/definitions/Test" a_v3: in: query name: a schema: $ref: "#/definitions/Test_v3" `), &spec1)) require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /othertest: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" - $ref: "#/parameters/a" /othertest2: post: parameters: - name: "body" schema: $ref: "#/definitions/Test_v2" - $ref: "#/parameters/a_v2" definitions: Test: description: "I used to be Test in source" type: "object" Test_v2: description: "I used to be Test_v2 in source" type: "object" parameters: a: in: query name: a schema: $ref: "#/definitions/Test" a_v2: in: query name: a schema: $ref: "#/definitions/Test_v2" `), &spec2)) require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" - $ref: "#/parameters/a" /test3: post: parameters: - name: "body" schema: $ref: "#/definitions/Test_v3" - $ref: "#/parameters/a_v3" /othertest2: post: parameters: - name: "body" schema: $ref: "#/definitions/Test_v2" - $ref: "#/parameters/a_v2" /othertest: post: parameters: - name: "body" schema: $ref: "#/definitions/Test_v4" - $ref: "#/parameters/a_v4" definitions: Test: description: "I used to be Test in destination" type: "object" Test_v2: description: "I used to be Test_v2 in source" type: "object" Test_v3: description: "I used to be Test_v3 in destination" type: "object" Test_v4: description: "I used to be Test in source" type: "object" parameters: a: in: query name: a schema: $ref: "#/definitions/Test" a_v2: in: query name: a schema: $ref: "#/definitions/Test_v2" a_v3: in: query name: a schema: $ref: "#/definitions/Test_v3" a_v4: in: query name: a schema: $ref: "#/definitions/Test_v4" `), &expected)) ast := assert.New(t) orig_spec2, _ := cloneSpec(spec2) if !ast.NoError(MergeSpecs(spec1, spec2)) { return } ast.Equal(DebugSpec{expected}, DebugSpec{spec1}) ast.Equal(DebugSpec{orig_spec2}, DebugSpec{spec2}, "unexpected mutation of input") } func TestMergeSpecsRenameModelWithExistingV2InSource(t *testing.T) { var spec1, spec2, expected *spec.Swagger require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" - $ref: "#/parameters/a" definitions: Test: type: "object" parameters: a: in: query name: a schema: $ref: "#/definitions/Test" `), &spec1)) require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /othertest: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" - $ref: "#/parameters/a" /testv2: post: parameters: - name: "body" schema: $ref: "#/definitions/Test_v2" - $ref: "#/parameters/a_v2" definitions: Test: description: "This Test has a description" type: "object" Test_v2: description: "This is an existing Test_v2 in source schema" type: "object" parameters: a: in: query name: a schema: $ref: "#/definitions/Test" a_v2: in: query name: a schema: $ref: "#/definitions/Test_v2" `), &spec2)) require.NoError(t, yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" - $ref: "#/parameters/a" /testv2: post: parameters: - name: "body" schema: $ref: "#/definitions/Test_v2" - $ref: "#/parameters/a_v2" /othertest: post: parameters: - name: "body" schema: $ref: "#/definitions/Test_v3" - $ref: "#/parameters/a_v3" definitions: Test: type: "object" Test_v2: description: "This is an existing Test_v2 in source schema" type: "object" Test_v3: description: "This Test has a description" type: "object" parameters: a: in: query name: a schema: $ref: "#/definitions/Test" a_v2: in: query name: a schema: $ref: "#/definitions/Test_v2" a_v3: in: query name: a schema: $ref: "#/definitions/Test_v3" `), &expected)) ast := assert.New(t) orig_spec2, _ := cloneSpec(spec2) if !ast.NoError(MergeSpecs(spec1, spec2)) { return } ast.Equal(DebugSpec{expected}, DebugSpec{spec1}) ast.Equal(DebugSpec{orig_spec2}, DebugSpec{spec2}, "unexpected mutation of input") } // This tests if there are three specs, where the first two use the same object definition, // while the third one uses its own. // We expect the merged schema to contain two versions of the object, not three func TestTwoMergeSpecsFirstTwoSchemasHaveSameDefinition(t *testing.T) { var spec1, spec2, spec3, expected *spec.Swagger yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" definitions: Test: description: "spec1 and spec2 use the same object definition, while spec3 doesn't" type: "object" `), &spec1) yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test2: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" definitions: Test: description: "spec1 and spec2 use the same object definition, while spec3 doesn't" type: "object" `), &spec2) yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test3: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" definitions: Test: description: "spec3 has its own definition (the description doesn't match)" type: "object" `), &spec3) yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" /test2: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" /test3: post: parameters: - name: "body" schema: $ref: "#/definitions/Test_v2" definitions: Test: description: "spec1 and spec2 use the same object definition, while spec3 doesn't" type: "object" Test_v2: description: "spec3 has its own definition (the description doesn't match)" type: "object" `), &expected) ast := assert.New(t) orig_spec2, _ := cloneSpec(spec2) orig_spec3, _ := cloneSpec(spec3) if !ast.NoError(MergeSpecs(spec1, spec2)) { return } if !ast.NoError(MergeSpecs(spec1, spec3)) { return } ast.Equal(DebugSpec{expected}, DebugSpec{spec1}) ast.Equal(DebugSpec{orig_spec2}, DebugSpec{spec2}, "unexpected mutation of spec2 input") ast.Equal(DebugSpec{orig_spec3}, DebugSpec{spec3}, "unexpected mutation of spec3 input") } // This tests if there are three specs, where the last two use the same object definition, // while the first one uses its own. // We expect the merged schema to contain two versions of the object, not three func TestTwoMergeSpecsLastTwoSchemasHaveSameDefinition(t *testing.T) { var spec1, spec2, spec3, expected *spec.Swagger yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" definitions: Test: type: "object" `), &spec1) yaml.Unmarshal([]byte(` swagger: "2.0" paths: /othertest: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" definitions: Test: description: "spec2 and spec3 use the same object definition, while spec1 doesn't" type: "object" `), &spec2) yaml.Unmarshal([]byte(` swagger: "2.0" paths: /othertest2: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" definitions: Test: description: "spec2 and spec3 use the same object definition, while spec1 doesn't" type: "object" `), &spec3) yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" /othertest: post: parameters: - name: "body" schema: $ref: "#/definitions/Test_v2" /othertest2: post: parameters: - name: "body" schema: $ref: "#/definitions/Test_v2" definitions: Test: type: "object" Test_v2: description: "spec2 and spec3 use the same object definition, while spec1 doesn't" type: "object" `), &expected) ast := assert.New(t) orig_spec2, _ := cloneSpec(spec2) orig_spec3, _ := cloneSpec(spec3) if !ast.NoError(MergeSpecs(spec1, spec2)) { return } if !ast.NoError(MergeSpecs(spec1, spec3)) { return } ast.Equal(DebugSpec{expected}, DebugSpec{spec1}) ast.Equal(DebugSpec{orig_spec2}, DebugSpec{spec2}, "unexpected mutation of spec2 input") ast.Equal(DebugSpec{orig_spec3}, DebugSpec{spec3}, "unexpected mutation of spec3 input") } func TestSafeMergeSpecsSimple(t *testing.T) { var fooSpec, barSpec, expected *spec.Swagger yaml.Unmarshal([]byte(` swagger: "2.0" paths: /foo: post: summary: "Foo API" operationId: "fooTest" parameters: - in: "body" name: "body" description: "foo object" required: true schema: $ref: "#/definitions/Foo" responses: 200: description: "OK" definitions: Foo: type: "object" properties: id: type: "integer" format: "int64" `), &fooSpec) yaml.Unmarshal([]byte(` swagger: "2.0" paths: /bar: post: summary: "Bar API" operationId: "barTest" parameters: - in: "body" name: "body" description: "bar object" required: true schema: $ref: "#/definitions/Bar" responses: 200: description: "OK" definitions: Bar: type: "object" properties: id: type: "integer" format: "int64" `), &barSpec) yaml.Unmarshal([]byte(` swagger: "2.0" paths: /foo: post: summary: "Foo API" operationId: "fooTest" parameters: - in: "body" name: "body" description: "foo object" required: true schema: $ref: "#/definitions/Foo" responses: 200: description: "OK" /bar: post: summary: "Bar API" operationId: "barTest" parameters: - in: "body" name: "body" description: "bar object" required: true schema: $ref: "#/definitions/Bar" responses: 200: description: "OK" definitions: Foo: type: "object" properties: id: type: "integer" format: "int64" Bar: type: "object" properties: id: type: "integer" format: "int64" `), &expected) ast := assert.New(t) orig_barSpec, err := cloneSpec(barSpec) if !ast.NoError(err) { return } if !ast.NoError(MergeSpecsFailOnDefinitionConflict(fooSpec, barSpec)) { return } ast.Equal(DebugSpec{expected}, DebugSpec{fooSpec}) ast.Equal(DebugSpec{orig_barSpec}, DebugSpec{barSpec}, "unexpected mutation of input") } func TestSafeMergeSpecsReuseModel(t *testing.T) { var fooSpec, barSpec, expected *spec.Swagger if err := yaml.Unmarshal([]byte(` swagger: "2.0" paths: /foo: post: summary: "Foo API" operationId: "fooTest" parameters: - in: "body" name: "body" description: "foo object" required: true schema: $ref: "#/definitions/Foo" responses: 200: description: "OK" definitions: Foo: type: "object" properties: id: type: "integer" format: "int64" x-kubernetes-group-version-kind: - group: group1 version: v1 kind: Foo - group: group3 version: v1 kind: Foo `), &fooSpec); err != nil { t.Fatal(err) } if err := yaml.Unmarshal([]byte(` swagger: "2.0" paths: /refoo: post: summary: "Refoo API" operationId: "refooTest" parameters: - in: "body" name: "body" description: "foo object" required: true schema: $ref: "#/definitions/Foo" responses: 200: description: "OK" definitions: Foo: type: "object" properties: id: type: "integer" format: "int64" x-kubernetes-group-version-kind: - group: group2 version: v1 kind: Foo `), &barSpec); err != nil { t.Fatal(err) } if err := yaml.Unmarshal([]byte(` swagger: "2.0" paths: /foo: post: summary: "Foo API" operationId: "fooTest" parameters: - in: "body" name: "body" description: "foo object" required: true schema: $ref: "#/definitions/Foo" responses: 200: description: "OK" /refoo: post: summary: "Refoo API" operationId: "refooTest" parameters: - in: "body" name: "body" description: "foo object" required: true schema: $ref: "#/definitions/Foo" responses: 200: description: "OK" definitions: Foo: type: "object" properties: id: type: "integer" format: "int64" x-kubernetes-group-version-kind: - group: group1 version: v1 kind: Foo - group: group2 version: v1 kind: Foo - group: group3 version: v1 kind: Foo `), &expected); err != nil { t.Fatal(err) } ast := assert.New(t) orig_barSpec, err := cloneSpec(barSpec) if !ast.NoError(err) { return } if !ast.NoError(MergeSpecsFailOnDefinitionConflict(fooSpec, barSpec)) { return } ast.Equal(DebugSpec{expected}, DebugSpec{fooSpec}) ast.Equal(DebugSpec{orig_barSpec}, DebugSpec{barSpec}, "unexpected mutation of input") } func TestSafeMergeSpecsReuseModelFails(t *testing.T) { var fooSpec, barSpec, expected *spec.Swagger yaml.Unmarshal([]byte(` swagger: "2.0" paths: /foo: post: summary: "Foo API" operationId: "fooTest" parameters: - in: "body" name: "body" description: "foo object" required: true schema: $ref: "#/definitions/Foo" responses: 200: description: "OK" definitions: Foo: type: "object" properties: id: type: "integer" format: "int64" `), &fooSpec) yaml.Unmarshal([]byte(` swagger: "2.0" paths: /refoo: post: summary: "Refoo API" operationId: "refooTest" parameters: - in: "body" name: "body" description: "foo object" required: true schema: $ref: "#/definitions/Foo" responses: 200: description: "OK" definitions: Foo: type: "object" properties: id: type: "integer" format: "int64" new_field: type: "string" `), &barSpec) yaml.Unmarshal([]byte(` swagger: "2.0" paths: /foo: post: summary: "Foo API" operationId: "fooTest" parameters: - in: "body" name: "body" description: "foo object" required: true schema: $ref: "#/definitions/Foo" responses: 200: description: "OK" /refoo: post: summary: "Refoo API" operationId: "refooTest" parameters: - in: "body" name: "body" description: "foo object" required: true schema: $ref: "#/definitions/Foo" responses: 200: description: "OK" definitions: Foo: type: "object" properties: id: type: "integer" format: "int64" `), &expected) ast := assert.New(t) ast.Error(MergeSpecsFailOnDefinitionConflict(fooSpec, barSpec)) } func TestMergeSpecsIgnorePathConflicts(t *testing.T) { var fooSpec, barSpec, expected *spec.Swagger yaml.Unmarshal([]byte(` swagger: "2.0" paths: /foo: post: summary: "Foo API" operationId: "fooTest" parameters: - in: "body" name: "body" description: "foo object" required: true schema: $ref: "#/definitions/Foo" responses: 200: description: "OK" definitions: Foo: type: "object" properties: id: type: "integer" format: "int64" `), &fooSpec) yaml.Unmarshal([]byte(` swagger: "2.0" paths: /foo: post: summary: "Should be ignored" /bar: post: summary: "Bar API" operationId: "barTest" parameters: - in: "body" name: "body" description: "bar object" required: true schema: $ref: "#/definitions/Bar" responses: 200: description: "OK" definitions: Bar: type: "object" properties: id: type: "integer" format: "int64" `), &barSpec) yaml.Unmarshal([]byte(` swagger: "2.0" paths: /foo: post: summary: "Foo API" operationId: "fooTest" parameters: - in: "body" name: "body" description: "foo object" required: true schema: $ref: "#/definitions/Foo" responses: 200: description: "OK" /bar: post: summary: "Bar API" operationId: "barTest" parameters: - in: "body" name: "body" description: "bar object" required: true schema: $ref: "#/definitions/Bar" responses: 200: description: "OK" definitions: Foo: type: "object" properties: id: type: "integer" format: "int64" Bar: type: "object" properties: id: type: "integer" format: "int64" `), &expected) ast := assert.New(t) actual, _ := cloneSpec(fooSpec) orig_barSpec, _ := cloneSpec(barSpec) if !ast.Error(MergeSpecs(actual, barSpec)) { return } ast.Equal(DebugSpec{orig_barSpec}, DebugSpec{barSpec}, "unexpected mutation of input") actual, _ = cloneSpec(fooSpec) if !ast.NoError(MergeSpecsIgnorePathConflictDeprecated(actual, barSpec)) { return } ast.Equal(DebugSpec{expected}, DebugSpec{actual}) ast.Equal(DebugSpec{orig_barSpec}, DebugSpec{barSpec}, "unexpected mutation of input") } func TestMergeSpecsIgnorePathConflictsAllConflicting(t *testing.T) { var fooSpec *spec.Swagger yaml.Unmarshal([]byte(` swagger: "2.0" paths: /foo: post: summary: "Foo API" operationId: "fooTest" parameters: - in: "body" name: "body" description: "foo object" required: true schema: $ref: "#/definitions/Foo" responses: 200: description: "OK" definitions: Foo: type: "object" properties: id: type: "integer" format: "int64" `), &fooSpec) ast := assert.New(t) foo2Spec, _ := cloneSpec(fooSpec) actual, _ := cloneSpec(fooSpec) if !ast.NoError(MergeSpecsIgnorePathConflictRenamingDefinitionsAndParameters(actual, foo2Spec)) { return } ast.Equal(DebugSpec{fooSpec}, DebugSpec{actual}) ast.Equal(DebugSpec{fooSpec}, DebugSpec{foo2Spec}, "unexpected mutation of input") } func TestMergeSpecsIgnorePathConflictsWithKubeSpec(t *testing.T) { ast := assert.New(t) specs, expected := loadTestData() sp, specs := specs[0], specs[1:] origSpecs := make([]*spec.Swagger, len(specs)) for i := range specs { cpy, err := cloneSpec(specs[i]) if err != nil { t.Fatal(err) } ast.NoError(err) origSpecs[i] = cpy } for i := range specs { if err := MergeSpecsIgnorePathConflictRenamingDefinitionsAndParameters(sp, specs[i]); err != nil { t.Fatalf("merging spec %d failed: %v", i, err) } } ast.Equal(DebugSpec{expected}, DebugSpec{sp}) for i := range specs { ast.Equal(DebugSpec{origSpecs[i]}, DebugSpec{specs[i]}, "unexpected mutation of specs[%d]", i) } } func BenchmarkMergeSpecsIgnorePathConflictsWithKubeSpec(b *testing.B) { b.StopTimer() b.ReportAllocs() b.ResetTimer() specs, _ := loadTestData() start, specs := specs[0], specs[1:] for n := 0; n < b.N; n++ { sp, err := cloneSpec(start) if err != nil { b.Fatal(err) } b.StartTimer() for i := range specs { if err := MergeSpecsIgnorePathConflictRenamingDefinitionsAndParameters(sp, specs[i]); err != nil { panic(err) } } specBytes, _ := sp.MarshalJSON() handler.ToProtoBinary(specBytes) b.StopTimer() } } func TestMergeSpecReplacesAllPossibleRefs(t *testing.T) { var spec1, spec2, expected *spec.Swagger yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" definitions: Test: type: "object" properties: foo: $ref: "#/definitions/TestProperty" TestProperty: type: "object" `), &spec1) yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test2: post: parameters: - name: "test2" schema: $ref: "#/definitions/Test2" - name: "test3" schema: $ref: "#/definitions/Test3" - name: "test4" schema: $ref: "#/definitions/Test4" - name: "test5" schema: $ref: "#/definitions/Test5" definitions: Test2: $ref: "#/definitions/TestProperty" Test3: type: "object" properties: withRef: $ref: "#/definitions/TestProperty" withAllOf: type: "object" allOf: - $ref: "#/definitions/TestProperty" - type: object properties: test: $ref: "#/definitions/TestProperty" withAnyOf: type: "object" anyOf: - $ref: "#/definitions/TestProperty" - type: object properties: test: $ref: "#/definitions/TestProperty" withOneOf: type: "object" oneOf: - $ref: "#/definitions/TestProperty" - type: object properties: test: $ref: "#/definitions/TestProperty" withNot: type: "object" not: $ref: "#/definitions/TestProperty" patternProperties: "prefix.*": $ref: "#/definitions/TestProperty" additionalProperties: $ref: "#/definitions/TestProperty" definitions: SomeDefinition: $ref: "#/definitions/TestProperty" Test4: type: "array" items: $ref: "#/definitions/TestProperty" additionalItems: $ref: "#/definitions/TestProperty" Test5: type: "array" items: - $ref: "#/definitions/TestProperty" - $ref: "#/definitions/TestProperty" TestProperty: description: "This TestProperty is different from the one in spec1" type: "object" `), &spec2) yaml.Unmarshal([]byte(` swagger: "2.0" paths: /test: post: parameters: - name: "body" schema: $ref: "#/definitions/Test" /test2: post: parameters: - name: "test2" schema: $ref: "#/definitions/Test2" - name: "test3" schema: $ref: "#/definitions/Test3" - name: "test4" schema: $ref: "#/definitions/Test4" - name: "test5" schema: $ref: "#/definitions/Test5" definitions: Test: type: "object" properties: foo: $ref: "#/definitions/TestProperty" TestProperty: type: "object" Test2: $ref: "#/definitions/TestProperty_v2" Test3: type: "object" properties: withRef: $ref: "#/definitions/TestProperty_v2" withAllOf: type: "object" allOf: - $ref: "#/definitions/TestProperty_v2" - type: object properties: test: $ref: "#/definitions/TestProperty_v2" withAnyOf: type: "object" anyOf: - $ref: "#/definitions/TestProperty_v2" - type: object properties: test: $ref: "#/definitions/TestProperty_v2" withOneOf: type: "object" oneOf: - $ref: "#/definitions/TestProperty_v2" - type: object properties: test: $ref: "#/definitions/TestProperty_v2" withNot: type: "object" not: $ref: "#/definitions/TestProperty_v2" patternProperties: "prefix.*": $ref: "#/definitions/TestProperty_v2" additionalProperties: $ref: "#/definitions/TestProperty_v2" definitions: SomeDefinition: $ref: "#/definitions/TestProperty_v2" Test4: type: "array" items: $ref: "#/definitions/TestProperty_v2" additionalItems: $ref: "#/definitions/TestProperty_v2" Test5: type: "array" items: - $ref: "#/definitions/TestProperty_v2" - $ref: "#/definitions/TestProperty_v2" TestProperty_v2: description: "This TestProperty is different from the one in spec1" type: "object" `), &expected) ast := assert.New(t) orig_spec2, _ := cloneSpec(spec2) if !ast.NoError(MergeSpecs(spec1, spec2)) { return } ast.Equal(DebugSpec{expected}, DebugSpec{spec1}) ast.Equal(DebugSpec{orig_spec2}, DebugSpec{spec2}, "unexpected mutation of input") } func loadTestData() ([]*spec.Swagger, *spec.Swagger) { loadSpec := func(fileName string) *spec.Swagger { bs, err := os.ReadFile(filepath.Join("../../test/integration/testdata/aggregator", fileName)) if err != nil { panic(err) } sp := spec.Swagger{} if err := json.Unmarshal(bs, &sp); err != nil { panic(err) } return &sp } specs := []*spec.Swagger{ loadSpec("openapi-0.json"), loadSpec("openapi-1.json"), loadSpec("openapi-2.json"), } expected := loadSpec("openapi.json") return specs, expected } func TestCloneSpec(t *testing.T) { _, sp := loadTestData() clone, err := cloneSpec(sp) if err != nil { t.Fatalf("unexpected error: %v", err) } ast := assert.New(t) ast.Equal(DebugSpec{sp}, DebugSpec{clone}) } func cloneSpec(source *spec.Swagger) (*spec.Swagger, error) { bytes, err := source.MarshalJSON() if err != nil { return nil, err } var ret spec.Swagger err = json.Unmarshal(bytes, &ret) if err != nil { return nil, err } return &ret, nil } func TestMergedGVKs(t *testing.T) { gvk1 := map[string]interface{}{"group": "group1", "version": "v1", "kind": "Foo"} gvk2 := map[string]interface{}{"group": "group2", "version": "v1", "kind": "Bar"} gvk3 := map[string]interface{}{"group": "group3", "version": "v1", "kind": "Abc"} gvk4 := map[string]interface{}{"group": "group4", "version": "v1", "kind": "Abc"} tests := []struct { name string gvks1 interface{} gvks2 interface{} want interface{} wantChanged bool wantErr bool }{ {"nil", nil, nil, nil, false, false}, {"first only", []interface{}{gvk1, gvk2}, nil, []interface{}{gvk1, gvk2}, false, false}, {"second only", nil, []interface{}{gvk1, gvk2}, []interface{}{gvk1, gvk2}, true, false}, {"both", []interface{}{gvk1, gvk2}, []interface{}{gvk3}, []interface{}{gvk1, gvk2, gvk3}, true, false}, {"equal, different order", []interface{}{gvk1, gvk2, gvk3}, []interface{}{gvk3, gvk2, gvk1}, []interface{}{gvk1, gvk2, gvk3}, false, false}, {"ordered", []interface{}{gvk3, gvk1, gvk4}, []interface{}{gvk2}, []interface{}{gvk1, gvk2, gvk3, gvk4}, true, false}, {"not ordered when not changed", []interface{}{gvk3, gvk1, gvk4}, []interface{}{}, []interface{}{gvk3, gvk1, gvk4}, false, false}, {"empty", []interface{}{}, []interface{}{}, []interface{}{}, false, false}, {"overlapping", []interface{}{gvk1, gvk2}, []interface{}{gvk2, gvk3}, []interface{}{gvk1, gvk2, gvk3}, true, false}, {"first no slice", 42, []interface{}{gvk1}, nil, false, true}, {"second no slice", []interface{}{gvk1}, 42, nil, false, true}, {"no map in slice", []interface{}{42}, []interface{}{gvk1}, nil, false, true}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { var ext1, ext2 map[string]interface{} if tt.gvks1 != nil { ext1 = map[string]interface{}{"x-kubernetes-group-version-kind": tt.gvks1} } if tt.gvks2 != nil { ext2 = map[string]interface{}{"x-kubernetes-group-version-kind": tt.gvks2} } got, gotChanged, gotErr := mergedGVKs( &spec.Schema{VendorExtensible: spec.VendorExtensible{Extensions: ext1}}, &spec.Schema{VendorExtensible: spec.VendorExtensible{Extensions: ext2}}, ) if (gotErr != nil) != tt.wantErr { t.Errorf("mergedGVKs() error = %v, wantErr %v", gotErr, tt.wantErr) return } if gotChanged != tt.wantChanged { t.Errorf("mergedGVKs() changed = %v, want %v", gotChanged, tt.wantChanged) } if !reflect.DeepEqual(got, tt.want) { t.Errorf("mergedGVKs() got = %v, want %v", got, tt.want) } }) } } func TestDeepEqualDefinitionsModuloGVKs(t *testing.T) { tests := []struct { name string s1 *spec.Schema s2 *spec.Schema equal bool }{ {name: "nil", equal: true}, {name: "nil, non-nil", s1: nil, s2: &spec.Schema{}}, {name: "equal", s1: &spec.Schema{}, s2: &spec.Schema{}, equal: true}, {name: "different", s1: &spec.Schema{SchemaProps: spec.SchemaProps{ID: "abc"}}, s2: &spec.Schema{}}, {name: "equal modulo: nil, empty", s1: &spec.Schema{VendorExtensible: spec.VendorExtensible{Extensions: nil}}, s2: &spec.Schema{VendorExtensible: spec.VendorExtensible{Extensions: spec.Extensions{}}}, equal: true, }, {name: "equal modulo: nil, gvk", s1: &spec.Schema{VendorExtensible: spec.VendorExtensible{Extensions: nil}}, s2: &spec.Schema{VendorExtensible: spec.VendorExtensible{Extensions: spec.Extensions{ gvkKey: true, }}}, equal: true, }, {name: "equal modulo: empty, gvk", s1: &spec.Schema{VendorExtensible: spec.VendorExtensible{Extensions: spec.Extensions{}}}, s2: &spec.Schema{VendorExtensible: spec.VendorExtensible{Extensions: spec.Extensions{ gvkKey: true, }}}, equal: true, }, {name: "equal modulo: non-empty, gvk", s1: &spec.Schema{VendorExtensible: spec.VendorExtensible{Extensions: spec.Extensions{"foo": "bar"}}}, s2: &spec.Schema{VendorExtensible: spec.VendorExtensible{Extensions: spec.Extensions{ gvkKey: true, "foo": "bar", }}}, equal: true, }, {name: "equal modulo: gvk, gvk", s1: &spec.Schema{VendorExtensible: spec.VendorExtensible{Extensions: spec.Extensions{ gvkKey: false, "foo": "bar", }}}, s2: &spec.Schema{VendorExtensible: spec.VendorExtensible{Extensions: spec.Extensions{ gvkKey: true, "foo": "bar", }}}, equal: true, }, {name: "different values", s1: &spec.Schema{VendorExtensible: spec.VendorExtensible{Extensions: spec.Extensions{ gvkKey: false, "foo": "bar", }}}, s2: &spec.Schema{VendorExtensible: spec.VendorExtensible{Extensions: spec.Extensions{ gvkKey: true, "foo": "abc", }}}, }, {name: "different sizes", s1: &spec.Schema{VendorExtensible: spec.VendorExtensible{Extensions: spec.Extensions{ gvkKey: false, "foo": "bar", "xyz": "123", }}}, s2: &spec.Schema{VendorExtensible: spec.VendorExtensible{Extensions: spec.Extensions{ gvkKey: true, "foo": "abc", }}}, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := deepEqualDefinitionsModuloGVKs(tt.s1, tt.s2); got != tt.equal { t.Errorf("deepEqualDefinitionsModuloGVKs(s1, v2) = %v, want %v", got, tt.equal) } if got := deepEqualDefinitionsModuloGVKs(tt.s2, tt.s1); got != tt.equal { t.Errorf("deepEqualDefinitionsModuloGVKs(s2, s1) = %v, want %v", got, tt.equal) } }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/aggregator/walker.go000066400000000000000000000100461453663023200251360ustar00rootroot00000000000000/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package aggregator import ( "strings" "k8s.io/kube-openapi/pkg/validation/spec" ) const ( definitionPrefix = "#/definitions/" parameterPrefix = "#/parameters/" ) // Run a readonlyReferenceWalker method on all references of an OpenAPI spec type readonlyReferenceWalker struct { // walkRefCallback will be called on each reference. The input will never be nil. walkRefCallback func(ref *spec.Ref) // The spec to walk through. root *spec.Swagger } // walkOnAllReferences recursively walks on all references, while following references into definitions. // it calls walkRef on each found reference. func walkOnAllReferences(walkRef func(ref *spec.Ref), root *spec.Swagger) { alreadyVisited := map[string]bool{} walker := &readonlyReferenceWalker{ root: root, } walker.walkRefCallback = func(ref *spec.Ref) { walkRef(ref) refStr := ref.String() if refStr == "" || !strings.HasPrefix(refStr, definitionPrefix) { return } defName := refStr[len(definitionPrefix):] if _, found := root.Definitions[defName]; found && !alreadyVisited[refStr] { alreadyVisited[refStr] = true def := root.Definitions[defName] walker.walkSchema(&def) } } walker.Start() } func (s *readonlyReferenceWalker) walkSchema(schema *spec.Schema) { if schema == nil { return } s.walkRefCallback(&schema.Ref) var v *spec.Schema if len(schema.Definitions)+len(schema.Properties)+len(schema.PatternProperties) > 0 { v = &spec.Schema{} } for k := range schema.Definitions { *v = schema.Definitions[k] s.walkSchema(v) } for k := range schema.Properties { *v = schema.Properties[k] s.walkSchema(v) } for k := range schema.PatternProperties { *v = schema.PatternProperties[k] s.walkSchema(v) } for i := range schema.AllOf { s.walkSchema(&schema.AllOf[i]) } for i := range schema.AnyOf { s.walkSchema(&schema.AnyOf[i]) } for i := range schema.OneOf { s.walkSchema(&schema.OneOf[i]) } if schema.Not != nil { s.walkSchema(schema.Not) } if schema.AdditionalProperties != nil && schema.AdditionalProperties.Schema != nil { s.walkSchema(schema.AdditionalProperties.Schema) } if schema.AdditionalItems != nil && schema.AdditionalItems.Schema != nil { s.walkSchema(schema.AdditionalItems.Schema) } if schema.Items != nil { if schema.Items.Schema != nil { s.walkSchema(schema.Items.Schema) } for i := range schema.Items.Schemas { s.walkSchema(&schema.Items.Schemas[i]) } } } func (s *readonlyReferenceWalker) walkParams(params []spec.Parameter) { if params == nil { return } for _, param := range params { s.walkRefCallback(¶m.Ref) s.walkSchema(param.Schema) if param.Items != nil { s.walkRefCallback(¶m.Items.Ref) } } } func (s *readonlyReferenceWalker) walkResponse(resp *spec.Response) { if resp == nil { return } s.walkRefCallback(&resp.Ref) s.walkSchema(resp.Schema) } func (s *readonlyReferenceWalker) walkOperation(op *spec.Operation) { if op == nil { return } s.walkParams(op.Parameters) if op.Responses == nil { return } s.walkResponse(op.Responses.Default) for _, r := range op.Responses.StatusCodeResponses { s.walkResponse(&r) } } func (s *readonlyReferenceWalker) Start() { if s.root.Paths == nil { return } for _, pathItem := range s.root.Paths.Paths { s.walkParams(pathItem.Parameters) s.walkOperation(pathItem.Delete) s.walkOperation(pathItem.Get) s.walkOperation(pathItem.Head) s.walkOperation(pathItem.Options) s.walkOperation(pathItem.Patch) s.walkOperation(pathItem.Post) s.walkOperation(pathItem.Put) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/builder/000077500000000000000000000000001453663023200226255ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/builder/doc.go000066400000000000000000000014511453663023200237220ustar00rootroot00000000000000/* Copyright 2016 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ // Package builder contains code to generate OpenAPI discovery spec (which // initial version of it also known as Swagger 2.0). // For more details: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md package builder golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/builder/openapi.go000066400000000000000000000360341453663023200246150ustar00rootroot00000000000000/* Copyright 2016 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package builder import ( "encoding/json" "fmt" "net/http" "strings" restful "github.com/emicklei/go-restful/v3" "k8s.io/kube-openapi/pkg/common" "k8s.io/kube-openapi/pkg/common/restfuladapter" "k8s.io/kube-openapi/pkg/util" "k8s.io/kube-openapi/pkg/validation/spec" ) const ( OpenAPIVersion = "2.0" ) type openAPI struct { config *common.Config swagger *spec.Swagger protocolList []string definitions map[string]common.OpenAPIDefinition } // BuildOpenAPISpec builds OpenAPI spec given a list of route containers and common.Config to customize it. // // Deprecated: BuildOpenAPISpecFromRoutes should be used instead. func BuildOpenAPISpec(routeContainers []*restful.WebService, config *common.Config) (*spec.Swagger, error) { return BuildOpenAPISpecFromRoutes(restfuladapter.AdaptWebServices(routeContainers), config) } // BuildOpenAPISpecFromRoutes builds OpenAPI spec given a list of route containers and common.Config to customize it. func BuildOpenAPISpecFromRoutes(routeContainers []common.RouteContainer, config *common.Config) (*spec.Swagger, error) { o := newOpenAPI(config) err := o.buildPaths(routeContainers) if err != nil { return nil, err } return o.finalizeSwagger() } // BuildOpenAPIDefinitionsForResource builds a partial OpenAPI spec given a sample object and common.Config to customize it. func BuildOpenAPIDefinitionsForResource(model interface{}, config *common.Config) (*spec.Definitions, error) { o := newOpenAPI(config) // We can discard the return value of toSchema because all we care about is the side effect of calling it. // All the models created for this resource get added to o.swagger.Definitions _, err := o.toSchema(util.GetCanonicalTypeName(model)) if err != nil { return nil, err } swagger, err := o.finalizeSwagger() if err != nil { return nil, err } return &swagger.Definitions, nil } // BuildOpenAPIDefinitionsForResources returns the OpenAPI spec which includes the definitions for the // passed type names. func BuildOpenAPIDefinitionsForResources(config *common.Config, names ...string) (*spec.Swagger, error) { o := newOpenAPI(config) // We can discard the return value of toSchema because all we care about is the side effect of calling it. // All the models created for this resource get added to o.swagger.Definitions for _, name := range names { _, err := o.toSchema(name) if err != nil { return nil, err } } return o.finalizeSwagger() } // newOpenAPI sets up the openAPI object so we can build the spec. func newOpenAPI(config *common.Config) openAPI { o := openAPI{ config: config, swagger: &spec.Swagger{ SwaggerProps: spec.SwaggerProps{ Swagger: OpenAPIVersion, Definitions: spec.Definitions{}, Responses: config.ResponseDefinitions, Paths: &spec.Paths{Paths: map[string]spec.PathItem{}}, Info: config.Info, }, }, } if o.config.GetOperationIDAndTagsFromRoute == nil { // Map the deprecated handler to the common interface, if provided. if o.config.GetOperationIDAndTags != nil { o.config.GetOperationIDAndTagsFromRoute = func(r common.Route) (string, []string, error) { restfulRouteAdapter, ok := r.(*restfuladapter.RouteAdapter) if !ok { return "", nil, fmt.Errorf("config.GetOperationIDAndTags specified but route is not a restful v1 Route") } return o.config.GetOperationIDAndTags(restfulRouteAdapter.Route) } } else { o.config.GetOperationIDAndTagsFromRoute = func(r common.Route) (string, []string, error) { return r.OperationName(), nil, nil } } } if o.config.GetDefinitionName == nil { o.config.GetDefinitionName = func(name string) (string, spec.Extensions) { return name[strings.LastIndex(name, "/")+1:], nil } } o.definitions = o.config.GetDefinitions(func(name string) spec.Ref { defName, _ := o.config.GetDefinitionName(name) return spec.MustCreateRef("#/definitions/" + common.EscapeJsonPointer(defName)) }) if o.config.CommonResponses == nil { o.config.CommonResponses = map[int]spec.Response{} } return o } // finalizeSwagger is called after the spec is built and returns the final spec. // NOTE: finalizeSwagger also make changes to the final spec, as specified in the config. func (o *openAPI) finalizeSwagger() (*spec.Swagger, error) { if o.config.SecurityDefinitions != nil { o.swagger.SecurityDefinitions = *o.config.SecurityDefinitions o.swagger.Security = o.config.DefaultSecurity } if o.config.PostProcessSpec != nil { var err error o.swagger, err = o.config.PostProcessSpec(o.swagger) if err != nil { return nil, err } } return deduplicateParameters(o.swagger) } func (o *openAPI) buildDefinitionRecursively(name string) error { uniqueName, extensions := o.config.GetDefinitionName(name) if _, ok := o.swagger.Definitions[uniqueName]; ok { return nil } if item, ok := o.definitions[name]; ok { schema := spec.Schema{ VendorExtensible: item.Schema.VendorExtensible, SchemaProps: item.Schema.SchemaProps, SwaggerSchemaProps: item.Schema.SwaggerSchemaProps, } if extensions != nil { if schema.Extensions == nil { schema.Extensions = spec.Extensions{} } for k, v := range extensions { schema.Extensions[k] = v } } if v, ok := item.Schema.Extensions[common.ExtensionV2Schema]; ok { if v2Schema, isOpenAPISchema := v.(spec.Schema); isOpenAPISchema { schema = v2Schema } } o.swagger.Definitions[uniqueName] = schema for _, v := range item.Dependencies { if err := o.buildDefinitionRecursively(v); err != nil { return err } } } else { return fmt.Errorf("cannot find model definition for %v. If you added a new type, you may need to add +k8s:openapi-gen=true to the package or type and run code-gen again", name) } return nil } // buildDefinitionForType build a definition for a given type and return a referable name to its definition. // This is the main function that keep track of definitions used in this spec and is depend on code generated // by k8s.io/kubernetes/cmd/libs/go2idl/openapi-gen. func (o *openAPI) buildDefinitionForType(name string) (string, error) { if err := o.buildDefinitionRecursively(name); err != nil { return "", err } defName, _ := o.config.GetDefinitionName(name) return "#/definitions/" + common.EscapeJsonPointer(defName), nil } // buildPaths builds OpenAPI paths using go-restful's web services. func (o *openAPI) buildPaths(routeContainers []common.RouteContainer) error { pathsToIgnore := util.NewTrie(o.config.IgnorePrefixes) duplicateOpId := make(map[string]string) for _, w := range routeContainers { rootPath := w.RootPath() if pathsToIgnore.HasPrefix(rootPath) { continue } commonParams, err := o.buildParameters(w.PathParameters()) if err != nil { return err } for path, routes := range groupRoutesByPath(w.Routes()) { // go-swagger has special variable definition {$NAME:*} that can only be // used at the end of the path and it is not recognized by OpenAPI. if strings.HasSuffix(path, ":*}") { path = path[:len(path)-3] + "}" } if pathsToIgnore.HasPrefix(path) { continue } // Aggregating common parameters make API spec (and generated clients) simpler inPathCommonParamsMap, err := o.findCommonParameters(routes) if err != nil { return err } pathItem, exists := o.swagger.Paths.Paths[path] if exists { return fmt.Errorf("duplicate webservice route has been found for path: %v", path) } pathItem = spec.PathItem{ PathItemProps: spec.PathItemProps{ Parameters: make([]spec.Parameter, 0), }, } // add web services's parameters as well as any parameters appears in all ops, as common parameters pathItem.Parameters = append(pathItem.Parameters, commonParams...) for _, p := range inPathCommonParamsMap { pathItem.Parameters = append(pathItem.Parameters, p) } sortParameters(pathItem.Parameters) for _, route := range routes { op, err := o.buildOperations(route, inPathCommonParamsMap) sortParameters(op.Parameters) if err != nil { return err } dpath, exists := duplicateOpId[op.ID] if exists { return fmt.Errorf("duplicate Operation ID %v for path %v and %v", op.ID, dpath, path) } else { duplicateOpId[op.ID] = path } switch strings.ToUpper(route.Method()) { case "GET": pathItem.Get = op case "POST": pathItem.Post = op case "HEAD": pathItem.Head = op case "PUT": pathItem.Put = op case "DELETE": pathItem.Delete = op case "OPTIONS": pathItem.Options = op case "PATCH": pathItem.Patch = op } } o.swagger.Paths.Paths[path] = pathItem } } return nil } // buildOperations builds operations for each webservice path func (o *openAPI) buildOperations(route common.Route, inPathCommonParamsMap map[interface{}]spec.Parameter) (ret *spec.Operation, err error) { ret = &spec.Operation{ OperationProps: spec.OperationProps{ Description: route.Description(), Consumes: route.Consumes(), Produces: route.Produces(), Schemes: o.config.ProtocolList, Responses: &spec.Responses{ ResponsesProps: spec.ResponsesProps{ StatusCodeResponses: make(map[int]spec.Response), }, }, }, } for k, v := range route.Metadata() { if strings.HasPrefix(k, common.ExtensionPrefix) { if ret.Extensions == nil { ret.Extensions = spec.Extensions{} } ret.Extensions.Add(k, v) } } if ret.ID, ret.Tags, err = o.config.GetOperationIDAndTagsFromRoute(route); err != nil { return ret, err } // Build responses for _, resp := range route.StatusCodeResponses() { ret.Responses.StatusCodeResponses[resp.Code()], err = o.buildResponse(resp.Model(), resp.Message()) if err != nil { return ret, err } } // If there is no response but a write sample, assume that write sample is an http.StatusOK response. if len(ret.Responses.StatusCodeResponses) == 0 && route.ResponsePayloadSample() != nil { ret.Responses.StatusCodeResponses[http.StatusOK], err = o.buildResponse(route.ResponsePayloadSample(), "OK") if err != nil { return ret, err } } for code, resp := range o.config.CommonResponses { if _, exists := ret.Responses.StatusCodeResponses[code]; !exists { ret.Responses.StatusCodeResponses[code] = resp } } // If there is still no response, use default response provided. if len(ret.Responses.StatusCodeResponses) == 0 { ret.Responses.Default = o.config.DefaultResponse } // Build non-common Parameters ret.Parameters = make([]spec.Parameter, 0) for _, param := range route.Parameters() { if _, isCommon := inPathCommonParamsMap[mapKeyFromParam(param)]; !isCommon { openAPIParam, err := o.buildParameter(param, route.RequestPayloadSample()) if err != nil { return ret, err } ret.Parameters = append(ret.Parameters, openAPIParam) } } return ret, nil } func (o *openAPI) buildResponse(model interface{}, description string) (spec.Response, error) { schema, err := o.toSchema(util.GetCanonicalTypeName(model)) if err != nil { return spec.Response{}, err } return spec.Response{ ResponseProps: spec.ResponseProps{ Description: description, Schema: schema, }, }, nil } func (o *openAPI) findCommonParameters(routes []common.Route) (map[interface{}]spec.Parameter, error) { commonParamsMap := make(map[interface{}]spec.Parameter, 0) paramOpsCountByName := make(map[interface{}]int, 0) paramNameKindToDataMap := make(map[interface{}]common.Parameter, 0) for _, route := range routes { routeParamDuplicateMap := make(map[interface{}]bool) s := "" params := route.Parameters() for _, param := range params { m, _ := json.Marshal(param) s += string(m) + "\n" key := mapKeyFromParam(param) if routeParamDuplicateMap[key] { msg, _ := json.Marshal(params) return commonParamsMap, fmt.Errorf("duplicate parameter %v for route %v, %v", param.Name(), string(msg), s) } routeParamDuplicateMap[key] = true paramOpsCountByName[key]++ paramNameKindToDataMap[key] = param } } for key, count := range paramOpsCountByName { paramData := paramNameKindToDataMap[key] if count == len(routes) && paramData.Kind() != common.BodyParameterKind { openAPIParam, err := o.buildParameter(paramData, nil) if err != nil { return commonParamsMap, err } commonParamsMap[key] = openAPIParam } } return commonParamsMap, nil } func (o *openAPI) toSchema(name string) (_ *spec.Schema, err error) { if openAPIType, openAPIFormat := common.OpenAPITypeFormat(name); openAPIType != "" { return &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{openAPIType}, Format: openAPIFormat, }, }, nil } else { ref, err := o.buildDefinitionForType(name) if err != nil { return nil, err } return &spec.Schema{ SchemaProps: spec.SchemaProps{ Ref: spec.MustCreateRef(ref), }, }, nil } } func (o *openAPI) buildParameter(restParam common.Parameter, bodySample interface{}) (ret spec.Parameter, err error) { ret = spec.Parameter{ ParamProps: spec.ParamProps{ Name: restParam.Name(), Description: restParam.Description(), Required: restParam.Required(), }, } switch restParam.Kind() { case common.BodyParameterKind: if bodySample != nil { ret.In = "body" ret.Schema, err = o.toSchema(util.GetCanonicalTypeName(bodySample)) return ret, err } else { // There is not enough information in the body parameter to build the definition. // Body parameter has a data type that is a short name but we need full package name // of the type to create a definition. return ret, fmt.Errorf("restful body parameters are not supported: %v", restParam.DataType()) } case common.PathParameterKind: ret.In = "path" if !restParam.Required() { return ret, fmt.Errorf("path parameters should be marked at required for parameter %v", restParam) } case common.QueryParameterKind: ret.In = "query" case common.HeaderParameterKind: ret.In = "header" case common.FormParameterKind: ret.In = "formData" default: return ret, fmt.Errorf("unknown restful operation kind : %v", restParam.Kind()) } openAPIType, openAPIFormat := common.OpenAPITypeFormat(restParam.DataType()) if openAPIType == "" { return ret, fmt.Errorf("non-body Restful parameter type should be a simple type, but got : %v", restParam.DataType()) } ret.Type = openAPIType ret.Format = openAPIFormat ret.UniqueItems = !restParam.AllowMultiple() return ret, nil } func (o *openAPI) buildParameters(restParam []common.Parameter) (ret []spec.Parameter, err error) { ret = make([]spec.Parameter, len(restParam)) for i, v := range restParam { ret[i], err = o.buildParameter(v, nil) if err != nil { return ret, err } } return ret, nil } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/builder/openapi_test.go000066400000000000000000000346471453663023200256640ustar00rootroot00000000000000/* Copyright 2016 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package builder import ( "encoding/json" "fmt" "net/http" "strings" "testing" "github.com/emicklei/go-restful/v3" "github.com/stretchr/testify/assert" openapi "k8s.io/kube-openapi/pkg/common" "k8s.io/kube-openapi/pkg/util/jsontesting" "k8s.io/kube-openapi/pkg/validation/spec" ) // setUp is a convenience function for setting up for (most) tests. func setUp(t *testing.T, fullMethods bool) (*openapi.Config, *restful.Container, *assert.Assertions) { assert := assert.New(t) config, container := getConfig(fullMethods) return config, container, assert } func noOp(request *restful.Request, response *restful.Response) {} // Test input type TestInput struct { // Name of the input Name string `json:"name,omitempty"` // ID of the input ID int `json:"id,omitempty"` Tags []string `json:"tags,omitempty"` } // Test output type TestOutput struct { // Name of the output Name string `json:"name,omitempty"` // Number of outputs Count int `json:"count,omitempty"` } type TestExtensionV2Schema struct{} func (_ TestExtensionV2Schema) OpenAPIDefinition() *openapi.OpenAPIDefinition { schema := spec.Schema{ VendorExtensible: spec.VendorExtensible{ Extensions: map[string]interface{}{ openapi.ExtensionV2Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"integer"}, }, }, }, }, } schema.Description = "Test extension V2 spec conversion" schema.Properties = map[string]spec.Schema{ "apple": { SchemaProps: spec.SchemaProps{ Description: "Name of the output", Type: []string{"string"}, Format: "", }, }, } return &openapi.OpenAPIDefinition{ Schema: schema, Dependencies: []string{}, } } func (_ TestInput) OpenAPIDefinition() *openapi.OpenAPIDefinition { schema := spec.Schema{} schema.Description = "Test input" schema.Properties = map[string]spec.Schema{ "name": { SchemaProps: spec.SchemaProps{ Description: "Name of the input", Type: []string{"string"}, Format: "", }, }, "id": { SchemaProps: spec.SchemaProps{ Description: "ID of the input", Type: []string{"integer"}, Format: "int32", }, }, "tags": { SchemaProps: spec.SchemaProps{ Description: "", Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"string"}, Format: "", }, }, }, }, }, } schema.Extensions = spec.Extensions{"x-test": "test"} return &openapi.OpenAPIDefinition{ Schema: schema, Dependencies: []string{}, } } func (_ TestOutput) OpenAPIDefinition() *openapi.OpenAPIDefinition { schema := spec.Schema{} schema.Description = "Test output" schema.Properties = map[string]spec.Schema{ "name": { SchemaProps: spec.SchemaProps{ Description: "Name of the output", Type: []string{"string"}, Format: "", }, }, "count": { SchemaProps: spec.SchemaProps{ Description: "Number of outputs", Type: []string{"integer"}, Format: "int32", }, }, } return &openapi.OpenAPIDefinition{ Schema: schema, Dependencies: []string{}, } } var _ openapi.OpenAPIDefinitionGetter = TestInput{} var _ openapi.OpenAPIDefinitionGetter = TestOutput{} func getTestRoute(ws *restful.WebService, method string, additionalParams bool, opPrefix string) *restful.RouteBuilder { ret := ws.Method(method). Path("/test/{path:*}"). Doc(fmt.Sprintf("%s test input", method)). Operation(fmt.Sprintf("%s%sTestInput", method, opPrefix)). Produces(restful.MIME_JSON). Consumes(restful.MIME_JSON). Param(ws.PathParameter("path", "path to the resource").DataType("string")). Param(ws.QueryParameter("pretty", "If 'true', then the output is pretty printed.")). Reads(TestInput{}). Returns(200, "OK", TestOutput{}). Writes(TestOutput{}). To(noOp) if additionalParams { ret.Param(ws.HeaderParameter("hparam", "a test head parameter").DataType("integer")) ret.Param(ws.FormParameter("fparam", "a test form parameter").DataType("number")) } return ret } func getConfig(fullMethods bool) (*openapi.Config, *restful.Container) { mux := http.NewServeMux() container := restful.NewContainer() container.ServeMux = mux ws := new(restful.WebService) ws.Path("/foo") ws.Route(getTestRoute(ws, "get", true, "foo")) if fullMethods { ws.Route(getTestRoute(ws, "post", false, "foo")). Route(getTestRoute(ws, "put", false, "foo")). Route(getTestRoute(ws, "head", false, "foo")). Route(getTestRoute(ws, "patch", false, "foo")). Route(getTestRoute(ws, "options", false, "foo")). Route(getTestRoute(ws, "delete", false, "foo")) } ws.Path("/bar") ws.Route(getTestRoute(ws, "get", true, "bar")) if fullMethods { ws.Route(getTestRoute(ws, "post", false, "bar")). Route(getTestRoute(ws, "put", false, "bar")). Route(getTestRoute(ws, "head", false, "bar")). Route(getTestRoute(ws, "patch", false, "bar")). Route(getTestRoute(ws, "options", false, "bar")). Route(getTestRoute(ws, "delete", false, "bar")) } container.Add(ws) return &openapi.Config{ ProtocolList: []string{"https"}, Info: &spec.Info{ InfoProps: spec.InfoProps{ Title: "TestAPI", Description: "Test API", Version: "unversioned", }, }, GetDefinitions: func(_ openapi.ReferenceCallback) map[string]openapi.OpenAPIDefinition { return map[string]openapi.OpenAPIDefinition{ "k8s.io/kube-openapi/pkg/builder.TestInput": *TestInput{}.OpenAPIDefinition(), "k8s.io/kube-openapi/pkg/builder.TestOutput": *TestOutput{}.OpenAPIDefinition(), "k8s.io/kube-openapi/pkg/builder.TestExtensionV2Schema": *TestExtensionV2Schema{}.OpenAPIDefinition(), } }, GetDefinitionName: func(name string) (string, spec.Extensions) { friendlyName := name[strings.LastIndex(name, "/")+1:] return friendlyName, spec.Extensions{"x-test2": "test2"} }, }, container } func getTestOperation(method string, opPrefix string) *spec.Operation { return &spec.Operation{ OperationProps: spec.OperationProps{ Description: fmt.Sprintf("%s test input", method), Consumes: []string{"application/json"}, Produces: []string{"application/json"}, Schemes: []string{"https"}, Parameters: []spec.Parameter{}, Responses: getTestResponses(), ID: fmt.Sprintf("%s%sTestInput", method, opPrefix), }, } } func getTestPathItem(allMethods bool, opPrefix string) spec.PathItem { ret := spec.PathItem{ PathItemProps: spec.PathItemProps{ Get: getTestOperation("get", opPrefix), Parameters: getTestCommonParameters(), }, } ret.Get.Parameters = getAdditionalTestParameters() if allMethods { ret.Put = getTestOperation("put", opPrefix) ret.Put.Parameters = getTestParameters() ret.Post = getTestOperation("post", opPrefix) ret.Post.Parameters = getTestParameters() ret.Head = getTestOperation("head", opPrefix) ret.Head.Parameters = getTestParameters() ret.Patch = getTestOperation("patch", opPrefix) ret.Patch.Parameters = getTestParameters() ret.Delete = getTestOperation("delete", opPrefix) ret.Delete.Parameters = getTestParameters() ret.Options = getTestOperation("options", opPrefix) ret.Options.Parameters = getTestParameters() } return ret } func getRefSchema(ref string) *spec.Schema { return &spec.Schema{ SchemaProps: spec.SchemaProps{ Ref: spec.MustCreateRef(ref), }, } } func getTestResponses() *spec.Responses { ret := spec.Responses{ ResponsesProps: spec.ResponsesProps{ StatusCodeResponses: map[int]spec.Response{}, }, } ret.StatusCodeResponses[200] = spec.Response{ ResponseProps: spec.ResponseProps{ Description: "OK", Schema: getRefSchema("#/definitions/builder.TestOutput"), }, } return &ret } func getTestCommonParameters() []spec.Parameter { ret := make([]spec.Parameter, 2) ret[0] = spec.Parameter{ Refable: spec.Refable{ Ref: spec.MustCreateRef("#/parameters/path-z6Ciiujn"), }, } ret[1] = spec.Parameter{ Refable: spec.Refable{ Ref: spec.MustCreateRef("#/parameters/pretty-nN7o5FEq"), }, } return ret } func getTestParameters() []spec.Parameter { ret := make([]spec.Parameter, 1) ret[0] = spec.Parameter{ ParamProps: spec.ParamProps{ In: "body", Name: "body", Required: true, Schema: getRefSchema("#/definitions/builder.TestInput"), }, } return ret } func getAdditionalTestParameters() []spec.Parameter { ret := make([]spec.Parameter, 3) ret[0] = spec.Parameter{ ParamProps: spec.ParamProps{ In: "body", Name: "body", Required: true, Schema: getRefSchema("#/definitions/builder.TestInput"), }, } ret[1] = spec.Parameter{ Refable: spec.Refable{ Ref: spec.MustCreateRef("#/parameters/fparam-xCJg5kHS"), }, } ret[2] = spec.Parameter{ Refable: spec.Refable{ Ref: spec.MustCreateRef("#/parameters/hparam-tx-jfxM1"), }, } return ret } func getTestInputDefinition() spec.Schema { return spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Test input", Properties: map[string]spec.Schema{ "id": { SchemaProps: spec.SchemaProps{ Description: "ID of the input", Type: spec.StringOrArray{"integer"}, Format: "int32", }, }, "name": { SchemaProps: spec.SchemaProps{ Description: "Name of the input", Type: spec.StringOrArray{"string"}, }, }, "tags": { SchemaProps: spec.SchemaProps{ Type: spec.StringOrArray{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: spec.StringOrArray{"string"}, }, }, }, }, }, }, }, VendorExtensible: spec.VendorExtensible{ Extensions: spec.Extensions{ "x-test": "test", "x-test2": "test2", }, }, } } func getTestOutputDefinition() spec.Schema { return spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Test output", Properties: map[string]spec.Schema{ "count": { SchemaProps: spec.SchemaProps{ Description: "Number of outputs", Type: spec.StringOrArray{"integer"}, Format: "int32", }, }, "name": { SchemaProps: spec.SchemaProps{ Description: "Name of the output", Type: spec.StringOrArray{"string"}, }, }, }, }, VendorExtensible: spec.VendorExtensible{ Extensions: spec.Extensions{ "x-test2": "test2", }, }, } } func TestBuildOpenAPISpec(t *testing.T) { config, container, assert := setUp(t, true) expected := &spec.Swagger{ SwaggerProps: spec.SwaggerProps{ Info: &spec.Info{ InfoProps: spec.InfoProps{ Title: "TestAPI", Description: "Test API", Version: "unversioned", }, }, Swagger: "2.0", Paths: &spec.Paths{ Paths: map[string]spec.PathItem{ "/foo/test/{path}": getTestPathItem(true, "foo"), "/bar/test/{path}": getTestPathItem(true, "bar"), }, }, Definitions: spec.Definitions{ "builder.TestInput": getTestInputDefinition(), "builder.TestOutput": getTestOutputDefinition(), }, Parameters: map[string]spec.Parameter{ "fparam-xCJg5kHS": { CommonValidations: spec.CommonValidations{ UniqueItems: true, }, SimpleSchema: spec.SimpleSchema{ Type: "number", }, ParamProps: spec.ParamProps{ In: "formData", Name: "fparam", Description: "a test form parameter", }, }, "hparam-tx-jfxM1": { CommonValidations: spec.CommonValidations{ UniqueItems: true, }, SimpleSchema: spec.SimpleSchema{ Type: "integer", }, ParamProps: spec.ParamProps{ In: "header", Name: "hparam", Description: "a test head parameter", }, }, "path-z6Ciiujn": { CommonValidations: spec.CommonValidations{ UniqueItems: true, }, SimpleSchema: spec.SimpleSchema{ Type: "string", }, ParamProps: spec.ParamProps{ In: "path", Name: "path", Description: "path to the resource", Required: true, }, }, "pretty-nN7o5FEq": { CommonValidations: spec.CommonValidations{ UniqueItems: true, }, SimpleSchema: spec.SimpleSchema{ Type: "string", }, ParamProps: spec.ParamProps{ In: "query", Name: "pretty", Description: "If 'true', then the output is pretty printed.", }, }, }, }, } swagger, err := BuildOpenAPISpec(container.RegisteredWebServices(), config) if !assert.NoError(err) { return } expected_json, err := expected.MarshalJSON() if !assert.NoError(err) { return } actual_json, err := swagger.MarshalJSON() if !assert.NoError(err) { return } if err := jsontesting.JsonCompare(expected_json, actual_json); err != nil { t.Error(err) } } func TestBuildOpenAPIDefinitionsForResource(t *testing.T) { config, _, assert := setUp(t, true) expected := &spec.Definitions{ "builder.TestInput": getTestInputDefinition(), } swagger, err := BuildOpenAPIDefinitionsForResource(TestInput{}, config) if !assert.NoError(err) { return } expected_json, err := json.Marshal(expected) if !assert.NoError(err) { return } actual_json, err := json.Marshal(swagger) if !assert.NoError(err) { return } if err := jsontesting.JsonCompare(expected_json, actual_json); err != nil { t.Error(err) } } func TestBuildOpenAPIDefinitionsForResourceWithExtensionV2Schema(t *testing.T) { config, _, assert := setUp(t, true) expected := &spec.Definitions{ "builder.TestExtensionV2Schema": spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"integer"}, }, }, } swagger, err := BuildOpenAPIDefinitionsForResource(TestExtensionV2Schema{}, config) if !assert.NoError(err) { return } expected_json, err := json.Marshal(expected) if !assert.NoError(err) { return } actual_json, err := json.Marshal(swagger) if !assert.NoError(err) { return } assert.Equal(string(expected_json), string(actual_json)) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/builder/parameters.go000066400000000000000000000155131453663023200253240ustar00rootroot00000000000000/* Copyright 2023 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package builder import ( "encoding/base64" "encoding/json" "fmt" "hash/fnv" "sort" "strconv" "strings" "k8s.io/kube-openapi/pkg/validation/spec" ) // deduplicateParameters finds parameters that are shared across multiple endpoints and replace them with // references to the shared parameters in order to avoid repetition. // // deduplicateParameters does not mutate the source. func deduplicateParameters(sp *spec.Swagger) (*spec.Swagger, error) { names, parameters, err := collectSharedParameters(sp) if err != nil { return nil, err } if sp.Parameters != nil { return nil, fmt.Errorf("shared parameters already exist") // should not happen with the builder, but to be sure } clone := *sp clone.Parameters = parameters return replaceSharedParameters(names, &clone) } // collectSharedParameters finds parameters that show up for many endpoints. These // are basically all parameters with the exceptions of those where we know they are // endpoint specific, e.g. because they reference the schema of the kind, or have // the kind or resource name in the description. func collectSharedParameters(sp *spec.Swagger) (namesByJSON map[string]string, ret map[string]spec.Parameter, err error) { if sp == nil || sp.Paths == nil { return nil, nil, nil } countsByJSON := map[string]int{} shared := map[string]spec.Parameter{} var keys []string collect := func(p *spec.Parameter) error { if (p.In == "query" || p.In == "path") && p.Name == "name" { return nil // ignore name parameter as they are never shared with the Kind in the description } if p.In == "query" && p.Name == "fieldValidation" { return nil // keep fieldValidation parameter unshared because kubectl uses it (until 1.27) to detect server-side field validation support } if p.In == "query" && p.Name == "dryRun" { return nil // keep fieldValidation parameter unshared because kubectl uses it (until 1.26) to detect dry-run support } if p.Schema != nil && p.In == "body" && p.Name == "body" && !strings.HasPrefix(p.Schema.Ref.String(), "#/definitions/io.k8s.apimachinery") { return nil // ignore non-generic body parameters as they reference the custom schema of the kind } bs, err := json.Marshal(p) if err != nil { return err } k := string(bs) countsByJSON[k]++ if count := countsByJSON[k]; count == 1 { shared[k] = *p keys = append(keys, k) } return nil } for _, path := range sp.Paths.Paths { // per operation parameters for _, op := range operations(&path) { if op == nil { continue // shouldn't happen, but ignore if it does; tested through unit test } for _, p := range op.Parameters { if p.Ref.String() != "" { // shouldn't happen, but ignore if it does continue } if err := collect(&p); err != nil { return nil, nil, err } } } // per path parameters for _, p := range path.Parameters { if p.Ref.String() != "" { continue // shouldn't happen, but ignore if it does } if err := collect(&p); err != nil { return nil, nil, err } } } // name deterministically sort.Strings(keys) ret = map[string]spec.Parameter{} namesByJSON = map[string]string{} for _, k := range keys { name := shared[k].Name if name == "" { // this should never happen as the name is a required field. But if it does, let's be safe. name = "param" } name += "-" + base64Hash(k) i := 0 for { if _, ok := ret[name]; !ok { ret[name] = shared[k] namesByJSON[k] = name break } i++ // only on hash conflict, unlikely with our few variants name = shared[k].Name + "-" + strconv.Itoa(i) } } return namesByJSON, ret, nil } func operations(path *spec.PathItem) []*spec.Operation { return []*spec.Operation{path.Get, path.Put, path.Post, path.Delete, path.Options, path.Head, path.Patch} } func base64Hash(s string) string { hash := fnv.New64() hash.Write([]byte(s)) //nolint:errcheck return base64.URLEncoding.EncodeToString(hash.Sum(make([]byte, 0, 8))[:6]) // 8 characters } func replaceSharedParameters(sharedParameterNamesByJSON map[string]string, sp *spec.Swagger) (*spec.Swagger, error) { if sp == nil || sp.Paths == nil { return sp, nil } ret := sp firstPathChange := true for k, path := range sp.Paths.Paths { pathChanged := false // per operation parameters for _, op := range []**spec.Operation{&path.Get, &path.Put, &path.Post, &path.Delete, &path.Options, &path.Head, &path.Patch} { if *op == nil { continue } firstParamChange := true for i := range (*op).Parameters { p := (*op).Parameters[i] if p.Ref.String() != "" { // shouldn't happen, but be idem-potent if it does continue } bs, err := json.Marshal(p) if err != nil { return nil, err } if name, ok := sharedParameterNamesByJSON[string(bs)]; ok { if firstParamChange { orig := *op *op = &spec.Operation{} **op = *orig (*op).Parameters = make([]spec.Parameter, len(orig.Parameters)) copy((*op).Parameters, orig.Parameters) firstParamChange = false } (*op).Parameters[i] = spec.Parameter{ Refable: spec.Refable{ Ref: spec.MustCreateRef("#/parameters/" + name), }, } pathChanged = true } } } // per path parameters firstParamChange := true for i := range path.Parameters { p := path.Parameters[i] if p.Ref.String() != "" { // shouldn't happen, but be idem-potent if it does continue } bs, err := json.Marshal(p) if err != nil { return nil, err } if name, ok := sharedParameterNamesByJSON[string(bs)]; ok { if firstParamChange { orig := path.Parameters path.Parameters = make([]spec.Parameter, len(orig)) copy(path.Parameters, orig) firstParamChange = false } path.Parameters[i] = spec.Parameter{ Refable: spec.Refable{ Ref: spec.MustCreateRef("#/parameters/" + name), }, } pathChanged = true } } if pathChanged { if firstPathChange { clone := *sp ret = &clone pathsClone := *ret.Paths ret.Paths = &pathsClone ret.Paths.Paths = make(map[string]spec.PathItem, len(sp.Paths.Paths)) for k, v := range sp.Paths.Paths { ret.Paths.Paths[k] = v } firstPathChange = false } ret.Paths.Paths[k] = path } } return ret, nil } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/builder/parameters_test.go000066400000000000000000000212711453663023200263610ustar00rootroot00000000000000/* Copyright 2023 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package builder import ( "encoding/json" "reflect" "testing" "github.com/stretchr/testify/require" "k8s.io/kube-openapi/pkg/validation/spec" ) func TestCollectSharedParameters(t *testing.T) { tests := []struct { name string spec string want map[string]string }{ { name: "empty", spec: "", want: nil, }, { name: "no shared", spec: `{ "parameters": {"pre": {"in": "body", "name": "body", "required": true, "schema": {}}}, "paths": { "/api/v1/a/{name}": {"get": {"parameters": [ {"description": "x","in":"query","name": "x","type":"boolean","uniqueItems":true}, {"description": "y","in":"query","name": "y","type":"boolean","uniqueItems":true} ]}}, "/api/v1/a/{name}/foo": {"get": {"parameters": [ {"description": "z","in":"query","name": "z","type":"boolean","uniqueItems":true} ]}}, "/api/v1/b/{name}": {"get": {"parameters": [ {"description": "x","in":"query","name": "x2","type":"boolean","uniqueItems":true}, {"description": "y","in":"query","name": "y2","type":"boolean","uniqueItems":true} ]}}, "/api/v1/b/{name}/foo": {"get": {"parameters": [ {"description": "z","in":"query","name": "z2","type":"boolean","uniqueItems":true} ]}} } }`, want: map[string]string{ `{"uniqueItems":true,"type":"boolean","description":"x","name":"x","in":"query"}`: "x-yaDSHpi7", `{"uniqueItems":true,"type":"boolean","description":"y","name":"y","in":"query"}`: "y-g6h7lEsz", `{"uniqueItems":true,"type":"boolean","description":"z","name":"z","in":"query"}`: "z--SXYWoM_", `{"uniqueItems":true,"type":"boolean","description":"x","name":"x2","in":"query"}`: "x2-nds6MpS1", `{"uniqueItems":true,"type":"boolean","description":"y","name":"y2","in":"query"}`: "y2-exnalzYE", `{"uniqueItems":true,"type":"boolean","description":"z","name":"z2","in":"query"}`: "z2-8oJfzBQF", }, }, { name: "shared per operation", spec: `{ "parameters": {"pre": {"in": "body", "name": "body", "required": true, "schema": {}}}, "paths": { "/api/v1/a/{name}": {"get": {"parameters": [ {"description": "x","in":"query","name": "x","type":"boolean","uniqueItems":true}, {"description": "y","in":"query","name": "y","type":"boolean","uniqueItems":true} ]}}, "/api/v1/a/{name}/foo": {"get": {"parameters": [ {"description": "z","in":"query","name": "z","type":"boolean","uniqueItems":true}, {"description": "y","in":"query","name": "y","type":"boolean","uniqueItems":true} ]}}, "/api/v1/b/{name}": {"get": {"parameters": [ {"description": "z","in":"query","name": "z","type":"boolean","uniqueItems":true} ]}}, "/api/v1/b/{name}/foo": {"get": {"parameters": [ {"description": "x","in":"query","name": "x","type":"boolean","uniqueItems":true} ]}} } }`, want: map[string]string{ `{"uniqueItems":true,"type":"boolean","description":"x","name":"x","in":"query"}`: "x-yaDSHpi7", `{"uniqueItems":true,"type":"boolean","description":"y","name":"y","in":"query"}`: "y-g6h7lEsz", `{"uniqueItems":true,"type":"boolean","description":"z","name":"z","in":"query"}`: "z--SXYWoM_", }, }, { name: "shared per path", spec: `{ "parameters": {"pre": {"in": "body", "name": "body", "required": true, "schema": {}}}, "paths": { "/api/v1/a/{name}": {"get": {}, "parameters": [ {"description": "x","in":"query","name": "x","type":"boolean","uniqueItems":true}, {"description": "y","in":"query","name": "y","type":"boolean","uniqueItems":true} ] }, "/api/v1/a/{name}/foo": {"get": {"parameters": [ {"description": "z","in":"query","name": "z","type":"boolean","uniqueItems":true}, {"description": "y","in":"query","name": "y","type":"boolean","uniqueItems":true} ]}}, "/api/v1/b/{name}": {"get": {}, "parameters": [ {"description": "z","in":"query","name": "z","type":"boolean","uniqueItems":true} ] }, "/api/v1/b/{name}/foo": {"get": {"parameters": [ {"description": "x","in":"query","name": "x","type":"boolean","uniqueItems":true} ]}} } }`, want: map[string]string{ `{"uniqueItems":true,"type":"boolean","description":"x","name":"x","in":"query"}`: "x-yaDSHpi7", `{"uniqueItems":true,"type":"boolean","description":"y","name":"y","in":"query"}`: "y-g6h7lEsz", `{"uniqueItems":true,"type":"boolean","description":"z","name":"z","in":"query"}`: "z--SXYWoM_", }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { var sp *spec.Swagger if tt.spec != "" { err := json.Unmarshal([]byte(tt.spec), &sp) require.NoError(t, err) } gotNamesByJSON, _, err := collectSharedParameters(sp) require.NoError(t, err) require.Equalf(t, tt.want, gotNamesByJSON, "unexpected shared parameters") }) } } func TestReplaceSharedParameters(t *testing.T) { shared := map[string]string{ `{"uniqueItems":true,"type":"boolean","description":"x","name":"x","in":"query"}`: "x", `{"uniqueItems":true,"type":"boolean","description":"y","name":"y","in":"query"}`: "y", `{"uniqueItems":true,"type":"boolean","description":"z","name":"z","in":"query"}`: "z", } tests := []struct { name string spec string want string }{ { name: "empty", spec: "{}", want: `{"paths":null}`, }, { name: "existing parameters", spec: `{"parameters": {"a":{"type":"boolean"}}}`, want: `{"parameters": {"a":{"type":"boolean"}},"paths":null}`, }, { name: "replace", spec: `{ "parameters": {"pre": {"in": "body", "name": "body", "required": true, "schema": {}}}, "paths": { "/api/v1/a/{name}": {"get": {"description":"foo"}, "parameters": [ {"description": "x","in":"query","name": "x","type":"boolean","uniqueItems":true}, {"description": "y","in":"query","name": "y","type":"boolean","uniqueItems":true} ] }, "/api/v1/a/{name}/foo": {"get": {"parameters": [ {"description": "z","in":"query","name": "z","type":"boolean","uniqueItems":true}, {"description": "y","in":"query","name": "y","type":"boolean","uniqueItems":true} ]}}, "/api/v1/b/{name}": {"get": {"parameters": [ {"description": "z","in":"query","name": "z","type":"boolean","uniqueItems":true} ]}}, "/api/v1/b/{name}/foo": {"get": {"parameters": [ {"description": "x","in":"query","name": "x","type":"boolean","uniqueItems":true}, {"description": "w","in":"query","name": "w","type":"boolean","uniqueItems":true} ]}} } }`, want: `{ "parameters": {"pre":{"in":"body","name":"body","required":true,"schema":{}}}, "paths": { "/api/v1/a/{name}": {"get": {"description":"foo"}, "parameters": [ {"$ref": "#/parameters/x"}, {"$ref": "#/parameters/y"} ] }, "/api/v1/a/{name}/foo": {"get": {"parameters": [ {"$ref": "#/parameters/z"}, {"$ref": "#/parameters/y"} ]}}, "/api/v1/b/{name}": {"get": {"parameters": [ {"$ref": "#/parameters/z"} ]}}, "/api/v1/b/{name}/foo": {"get": {"parameters": [ {"$ref":"#/parameters/x"}, {"description": "w","in":"query","name": "w","type":"boolean","uniqueItems":true} ]}} } }`, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { var unmarshalled *spec.Swagger err := json.Unmarshal([]byte(tt.spec), &unmarshalled) require.NoError(t, err) got, err := replaceSharedParameters(shared, unmarshalled) require.NoError(t, err) require.Equalf(t, normalizeJSON(t, tt.want), normalizeJSON(t, toJSON(t, got)), "unexpected result") }) } } func toJSON(t *testing.T, x interface{}) string { bs, err := json.Marshal(x) require.NoError(t, err) return string(bs) } func normalizeJSON(t *testing.T, j string) string { var obj interface{} err := json.Unmarshal([]byte(j), &obj) require.NoError(t, err) return toJSON(t, obj) } func TestOperations(t *testing.T) { t.Log("Ensuring that operations() returns all operations in spec.PathItemProps") path := spec.PathItem{} v := reflect.ValueOf(path.PathItemProps) var rOps []any for i := 0; i < v.NumField(); i++ { if v.Field(i).Kind() == reflect.Ptr { rOps = append(rOps, v.Field(i).Interface()) } } ops := operations(&path) require.Equal(t, len(rOps), len(ops), "operations() should return all operations in spec.PathItemProps") } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/builder/util.go000066400000000000000000000031761453663023200241400ustar00rootroot00000000000000/* Copyright 2016 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package builder import ( "sort" "k8s.io/kube-openapi/pkg/common" "k8s.io/kube-openapi/pkg/validation/spec" ) type parameters []spec.Parameter func (s parameters) Len() int { return len(s) } func (s parameters) Swap(i, j int) { s[i], s[j] = s[j], s[i] } // byNameIn used in sorting parameters by Name and In fields. type byNameIn struct { parameters } func (s byNameIn) Less(i, j int) bool { return s.parameters[i].Name < s.parameters[j].Name || (s.parameters[i].Name == s.parameters[j].Name && s.parameters[i].In < s.parameters[j].In) } // SortParameters sorts parameters by Name and In fields. func sortParameters(p []spec.Parameter) { sort.Sort(byNameIn{p}) } func groupRoutesByPath(routes []common.Route) map[string][]common.Route { pathToRoutes := make(map[string][]common.Route) for _, r := range routes { pathToRoutes[r.Path()] = append(pathToRoutes[r.Path()], r) } return pathToRoutes } func mapKeyFromParam(param common.Parameter) interface{} { return struct { Name string Kind common.ParameterKind }{ Name: param.Name(), Kind: param.Kind(), } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/builder3/000077500000000000000000000000001453663023200227105ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/builder3/openapi.go000066400000000000000000000351561453663023200247040ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package builder3 import ( "encoding/json" "fmt" "net/http" "strings" restful "github.com/emicklei/go-restful/v3" builderutil "k8s.io/kube-openapi/pkg/builder3/util" "k8s.io/kube-openapi/pkg/common" "k8s.io/kube-openapi/pkg/common/restfuladapter" "k8s.io/kube-openapi/pkg/spec3" "k8s.io/kube-openapi/pkg/util" "k8s.io/kube-openapi/pkg/validation/spec" ) const ( OpenAPIVersion = "3.0" ) type openAPI struct { config *common.OpenAPIV3Config spec *spec3.OpenAPI definitions map[string]common.OpenAPIDefinition } func groupRoutesByPath(routes []common.Route) map[string][]common.Route { pathToRoutes := make(map[string][]common.Route) for _, r := range routes { pathToRoutes[r.Path()] = append(pathToRoutes[r.Path()], r) } return pathToRoutes } func (o *openAPI) buildResponse(model interface{}, description string, content []string) (*spec3.Response, error) { response := &spec3.Response{ ResponseProps: spec3.ResponseProps{ Description: description, Content: make(map[string]*spec3.MediaType), }, } s, err := o.toSchema(util.GetCanonicalTypeName(model)) if err != nil { return nil, err } for _, contentType := range content { response.ResponseProps.Content[contentType] = &spec3.MediaType{ MediaTypeProps: spec3.MediaTypeProps{ Schema: s, }, } } return response, nil } func (o *openAPI) buildOperations(route common.Route, inPathCommonParamsMap map[interface{}]*spec3.Parameter) (*spec3.Operation, error) { ret := &spec3.Operation{ OperationProps: spec3.OperationProps{ Description: route.Description(), Responses: &spec3.Responses{ ResponsesProps: spec3.ResponsesProps{ StatusCodeResponses: make(map[int]*spec3.Response), }, }, }, } for k, v := range route.Metadata() { if strings.HasPrefix(k, common.ExtensionPrefix) { if ret.Extensions == nil { ret.Extensions = spec.Extensions{} } ret.Extensions.Add(k, v) } } var err error if ret.OperationId, ret.Tags, err = o.config.GetOperationIDAndTagsFromRoute(route); err != nil { return ret, err } // Build responses for _, resp := range route.StatusCodeResponses() { ret.Responses.StatusCodeResponses[resp.Code()], err = o.buildResponse(resp.Model(), resp.Message(), route.Produces()) if err != nil { return ret, err } } // If there is no response but a write sample, assume that write sample is an http.StatusOK response. if len(ret.Responses.StatusCodeResponses) == 0 && route.ResponsePayloadSample() != nil { ret.Responses.StatusCodeResponses[http.StatusOK], err = o.buildResponse(route.ResponsePayloadSample(), "OK", route.Produces()) if err != nil { return ret, err } } for code, resp := range o.config.CommonResponses { if _, exists := ret.Responses.StatusCodeResponses[code]; !exists { ret.Responses.StatusCodeResponses[code] = resp } } if len(ret.Responses.StatusCodeResponses) == 0 { ret.Responses.Default = o.config.DefaultResponse } params := route.Parameters() for _, param := range params { _, isCommon := inPathCommonParamsMap[mapKeyFromParam(param)] if !isCommon && param.Kind() != common.BodyParameterKind { openAPIParam, err := o.buildParameter(param) if err != nil { return ret, err } ret.Parameters = append(ret.Parameters, openAPIParam) } } body, err := o.buildRequestBody(params, route.Consumes(), route.RequestPayloadSample()) if err != nil { return nil, err } if body != nil { ret.RequestBody = body } return ret, nil } func (o *openAPI) buildRequestBody(parameters []common.Parameter, consumes []string, bodySample interface{}) (*spec3.RequestBody, error) { for _, param := range parameters { if param.Kind() == common.BodyParameterKind && bodySample != nil { schema, err := o.toSchema(util.GetCanonicalTypeName(bodySample)) if err != nil { return nil, err } r := &spec3.RequestBody{ RequestBodyProps: spec3.RequestBodyProps{ Content: map[string]*spec3.MediaType{}, Description: param.Description(), Required: param.Required(), }, } for _, consume := range consumes { r.Content[consume] = &spec3.MediaType{ MediaTypeProps: spec3.MediaTypeProps{ Schema: schema, }, } } return r, nil } } return nil, nil } func newOpenAPI(config *common.OpenAPIV3Config) openAPI { o := openAPI{ config: config, spec: &spec3.OpenAPI{ Version: "3.0.0", Info: config.Info, Paths: &spec3.Paths{ Paths: map[string]*spec3.Path{}, }, Components: &spec3.Components{ Schemas: map[string]*spec.Schema{}, }, }, } if len(o.config.ResponseDefinitions) > 0 { o.spec.Components.Responses = make(map[string]*spec3.Response) } for k, response := range o.config.ResponseDefinitions { o.spec.Components.Responses[k] = response } if len(o.config.SecuritySchemes) > 0 { o.spec.Components.SecuritySchemes = make(spec3.SecuritySchemes) } for k, securityScheme := range o.config.SecuritySchemes { o.spec.Components.SecuritySchemes[k] = securityScheme } if o.config.GetOperationIDAndTagsFromRoute == nil { // Map the deprecated handler to the common interface, if provided. if o.config.GetOperationIDAndTags != nil { o.config.GetOperationIDAndTagsFromRoute = func(r common.Route) (string, []string, error) { restfulRouteAdapter, ok := r.(*restfuladapter.RouteAdapter) if !ok { return "", nil, fmt.Errorf("config.GetOperationIDAndTags specified but route is not a restful v1 Route") } return o.config.GetOperationIDAndTags(restfulRouteAdapter.Route) } } else { o.config.GetOperationIDAndTagsFromRoute = func(r common.Route) (string, []string, error) { return r.OperationName(), nil, nil } } } if o.config.GetDefinitionName == nil { o.config.GetDefinitionName = func(name string) (string, spec.Extensions) { return name[strings.LastIndex(name, "/")+1:], nil } } if o.config.Definitions != nil { o.definitions = o.config.Definitions } else { o.definitions = o.config.GetDefinitions(func(name string) spec.Ref { defName, _ := o.config.GetDefinitionName(name) return spec.MustCreateRef("#/components/schemas/" + common.EscapeJsonPointer(defName)) }) } return o } func (o *openAPI) buildOpenAPISpec(webServices []common.RouteContainer) error { pathsToIgnore := util.NewTrie(o.config.IgnorePrefixes) for _, w := range webServices { rootPath := w.RootPath() if pathsToIgnore.HasPrefix(rootPath) { continue } commonParams, err := o.buildParameters(w.PathParameters()) if err != nil { return err } for path, routes := range groupRoutesByPath(w.Routes()) { // go-swagger has special variable definition {$NAME:*} that can only be // used at the end of the path and it is not recognized by OpenAPI. if strings.HasSuffix(path, ":*}") { path = path[:len(path)-3] + "}" } if pathsToIgnore.HasPrefix(path) { continue } // Aggregating common parameters make API spec (and generated clients) simpler inPathCommonParamsMap, err := o.findCommonParameters(routes) if err != nil { return err } pathItem, exists := o.spec.Paths.Paths[path] if exists { return fmt.Errorf("duplicate webservice route has been found for path: %v", path) } pathItem = &spec3.Path{ PathProps: spec3.PathProps{}, } // add web services's parameters as well as any parameters appears in all ops, as common parameters pathItem.Parameters = append(pathItem.Parameters, commonParams...) for _, p := range inPathCommonParamsMap { pathItem.Parameters = append(pathItem.Parameters, p) } sortParameters(pathItem.Parameters) for _, route := range routes { op, _ := o.buildOperations(route, inPathCommonParamsMap) sortParameters(op.Parameters) switch strings.ToUpper(route.Method()) { case "GET": pathItem.Get = op case "POST": pathItem.Post = op case "HEAD": pathItem.Head = op case "PUT": pathItem.Put = op case "DELETE": pathItem.Delete = op case "OPTIONS": pathItem.Options = op case "PATCH": pathItem.Patch = op } } o.spec.Paths.Paths[path] = pathItem } } return nil } // BuildOpenAPISpec builds OpenAPI v3 spec given a list of route containers and common.Config to customize it. // // Deprecated: BuildOpenAPISpecFromRoutes should be used instead. func BuildOpenAPISpec(webServices []*restful.WebService, config *common.OpenAPIV3Config) (*spec3.OpenAPI, error) { return BuildOpenAPISpecFromRoutes(restfuladapter.AdaptWebServices(webServices), config) } // BuildOpenAPISpecFromRoutes builds OpenAPI v3 spec given a list of route containers and common.Config to customize it. func BuildOpenAPISpecFromRoutes(webServices []common.RouteContainer, config *common.OpenAPIV3Config) (*spec3.OpenAPI, error) { a := newOpenAPI(config) err := a.buildOpenAPISpec(webServices) if err != nil { return nil, err } if config.PostProcessSpec != nil { return config.PostProcessSpec(a.spec) } return a.spec, nil } // BuildOpenAPIDefinitionsForResource builds a partial OpenAPI spec given a sample object and common.Config to customize it. // BuildOpenAPIDefinitionsForResources returns the OpenAPI spec which includes the definitions for the // passed type names. func BuildOpenAPIDefinitionsForResources(config *common.OpenAPIV3Config, names ...string) (map[string]*spec.Schema, error) { o := newOpenAPI(config) // We can discard the return value of toSchema because all we care about is the side effect of calling it. // All the models created for this resource get added to o.swagger.Definitions for _, name := range names { _, err := o.toSchema(name) if err != nil { return nil, err } } return o.spec.Components.Schemas, nil } func (o *openAPI) findCommonParameters(routes []common.Route) (map[interface{}]*spec3.Parameter, error) { commonParamsMap := make(map[interface{}]*spec3.Parameter, 0) paramOpsCountByName := make(map[interface{}]int, 0) paramNameKindToDataMap := make(map[interface{}]common.Parameter, 0) for _, route := range routes { routeParamDuplicateMap := make(map[interface{}]bool) s := "" params := route.Parameters() for _, param := range params { m, _ := json.Marshal(param) s += string(m) + "\n" key := mapKeyFromParam(param) if routeParamDuplicateMap[key] { msg, _ := json.Marshal(params) return commonParamsMap, fmt.Errorf("duplicate parameter %v for route %v, %v", param.Name(), string(msg), s) } routeParamDuplicateMap[key] = true paramOpsCountByName[key]++ paramNameKindToDataMap[key] = param } } for key, count := range paramOpsCountByName { paramData := paramNameKindToDataMap[key] if count == len(routes) && paramData.Kind() != common.BodyParameterKind { openAPIParam, err := o.buildParameter(paramData) if err != nil { return commonParamsMap, err } commonParamsMap[key] = openAPIParam } } return commonParamsMap, nil } func (o *openAPI) buildParameters(restParam []common.Parameter) (ret []*spec3.Parameter, err error) { ret = make([]*spec3.Parameter, len(restParam)) for i, v := range restParam { ret[i], err = o.buildParameter(v) if err != nil { return ret, err } } return ret, nil } func (o *openAPI) buildParameter(restParam common.Parameter) (ret *spec3.Parameter, err error) { ret = &spec3.Parameter{ ParameterProps: spec3.ParameterProps{ Name: restParam.Name(), Description: restParam.Description(), Required: restParam.Required(), }, } switch restParam.Kind() { case common.BodyParameterKind: return nil, nil case common.PathParameterKind: ret.In = "path" if !restParam.Required() { return ret, fmt.Errorf("path parameters should be marked as required for parameter %v", restParam) } case common.QueryParameterKind: ret.In = "query" case common.HeaderParameterKind: ret.In = "header" /* TODO: add support for the cookie param */ default: return ret, fmt.Errorf("unsupported restful parameter kind : %v", restParam.Kind()) } openAPIType, openAPIFormat := common.OpenAPITypeFormat(restParam.DataType()) if openAPIType == "" { return ret, fmt.Errorf("non-body Restful parameter type should be a simple type, but got : %v", restParam.DataType()) } ret.Schema = &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{openAPIType}, Format: openAPIFormat, UniqueItems: !restParam.AllowMultiple(), }, } return ret, nil } func (o *openAPI) buildDefinitionRecursively(name string) error { uniqueName, extensions := o.config.GetDefinitionName(name) if _, ok := o.spec.Components.Schemas[uniqueName]; ok { return nil } if item, ok := o.definitions[name]; ok { schema := &spec.Schema{ VendorExtensible: item.Schema.VendorExtensible, SchemaProps: item.Schema.SchemaProps, SwaggerSchemaProps: item.Schema.SwaggerSchemaProps, } if extensions != nil { if schema.Extensions == nil { schema.Extensions = spec.Extensions{} } for k, v := range extensions { schema.Extensions[k] = v } } // delete the embedded v2 schema if exists, otherwise no-op delete(schema.VendorExtensible.Extensions, common.ExtensionV2Schema) schema = builderutil.WrapRefs(schema) o.spec.Components.Schemas[uniqueName] = schema for _, v := range item.Dependencies { if err := o.buildDefinitionRecursively(v); err != nil { return err } } } else { return fmt.Errorf("cannot find model definition for %v. If you added a new type, you may need to add +k8s:openapi-gen=true to the package or type and run code-gen again", name) } return nil } func (o *openAPI) buildDefinitionForType(name string) (string, error) { if err := o.buildDefinitionRecursively(name); err != nil { return "", err } defName, _ := o.config.GetDefinitionName(name) return "#/components/schemas/" + common.EscapeJsonPointer(defName), nil } func (o *openAPI) toSchema(name string) (_ *spec.Schema, err error) { if openAPIType, openAPIFormat := common.OpenAPITypeFormat(name); openAPIType != "" { return &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{openAPIType}, Format: openAPIFormat, }, }, nil } else { ref, err := o.buildDefinitionForType(name) if err != nil { return nil, err } return &spec.Schema{ SchemaProps: spec.SchemaProps{ Ref: spec.MustCreateRef(ref), }, }, nil } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/builder3/openapi_test.go000066400000000000000000000312701453663023200257340ustar00rootroot00000000000000/* Copyright 2022 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package builder3 import ( "encoding/json" "fmt" "net/http" "strings" "testing" "github.com/emicklei/go-restful/v3" "github.com/stretchr/testify/assert" openapi "k8s.io/kube-openapi/pkg/common" "k8s.io/kube-openapi/pkg/spec3" "k8s.io/kube-openapi/pkg/util/jsontesting" "k8s.io/kube-openapi/pkg/validation/spec" ) // setUp is a convenience function for setting up for (most) tests. func setUp(t *testing.T, fullMethods bool) (*openapi.OpenAPIV3Config, *restful.Container, *assert.Assertions) { assert := assert.New(t) config, container := getConfig(fullMethods) return config, container, assert } func noOp(request *restful.Request, response *restful.Response) {} // Test input type TestInput struct { // Name of the input Name string `json:"name,omitempty"` // ID of the input ID int `json:"id,omitempty"` Tags []string `json:"tags,omitempty"` } // Test output type TestOutput struct { // Name of the output Name string `json:"name,omitempty"` // Number of outputs Count int `json:"count,omitempty"` } func (_ TestInput) OpenAPIDefinition() *openapi.OpenAPIDefinition { schema := spec.Schema{} schema.Description = "Test input" schema.Properties = map[string]spec.Schema{ "name": { SchemaProps: spec.SchemaProps{ Description: "Name of the input", Type: []string{"string"}, Format: "", }, }, "id": { SchemaProps: spec.SchemaProps{ Description: "ID of the input", Type: []string{"integer"}, Format: "int32", }, }, "tags": { SchemaProps: spec.SchemaProps{ Description: "", Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"string"}, Format: "", }, }, }, }, }, "reference-extension": { VendorExtensible: spec.VendorExtensible{ Extensions: map[string]interface{}{"extension": "value"}, }, SchemaProps: spec.SchemaProps{ Ref: spec.MustCreateRef("/components/schemas/builder3.TestOutput"), }, }, "reference-nullable": { SchemaProps: spec.SchemaProps{ Ref: spec.MustCreateRef("/components/schemas/builder3.TestOutput"), Nullable: true, }, }, "reference-default": { SchemaProps: spec.SchemaProps{ Ref: spec.MustCreateRef("/components/schemas/builder3.TestOutput"), Default: map[string]interface{}{}, }, }, } schema.Extensions = spec.Extensions{"x-test": "test"} def := openapi.EmbedOpenAPIDefinitionIntoV2Extension(openapi.OpenAPIDefinition{ Schema: schema, Dependencies: []string{}, }, openapi.OpenAPIDefinition{ // this empty embedded v2 definition should not appear in the result }) return &def } func (_ TestOutput) OpenAPIDefinition() *openapi.OpenAPIDefinition { schema := spec.Schema{} schema.Description = "Test output" schema.Properties = map[string]spec.Schema{ "name": { SchemaProps: spec.SchemaProps{ Description: "Name of the output", Type: []string{"string"}, Format: "", }, }, "count": { SchemaProps: spec.SchemaProps{ Description: "Number of outputs", Type: []string{"integer"}, Format: "int32", }, }, } return &openapi.OpenAPIDefinition{ Schema: schema, Dependencies: []string{}, } } var _ openapi.OpenAPIDefinitionGetter = TestInput{} var _ openapi.OpenAPIDefinitionGetter = TestOutput{} func getTestRoute(ws *restful.WebService, method string, opPrefix string) *restful.RouteBuilder { ret := ws.Method(method). Path("/test/{path:*}"). Doc(fmt.Sprintf("%s test input", method)). Operation(fmt.Sprintf("%s%sTestInput", method, opPrefix)). Produces(restful.MIME_JSON). Consumes(restful.MIME_JSON). Param(ws.PathParameter("path", "path to the resource").DataType("string")). Param(ws.QueryParameter("pretty", "If 'true', then the output is pretty printed.")). Reads(TestInput{}). Returns(200, "OK", TestOutput{}). Writes(TestOutput{}). To(noOp) return ret } func getConfig(fullMethods bool) (*openapi.OpenAPIV3Config, *restful.Container) { mux := http.NewServeMux() container := restful.NewContainer() container.ServeMux = mux ws := new(restful.WebService) ws.Path("/foo") ws.Route(getTestRoute(ws, "get", "foo")) if fullMethods { ws.Route(getTestRoute(ws, "post", "foo")). Route(getTestRoute(ws, "put", "foo")). Route(getTestRoute(ws, "head", "foo")). Route(getTestRoute(ws, "patch", "foo")). Route(getTestRoute(ws, "options", "foo")). Route(getTestRoute(ws, "delete", "foo")) } ws.Path("/bar") ws.Route(getTestRoute(ws, "get", "bar")) if fullMethods { ws.Route(getTestRoute(ws, "post", "bar")). Route(getTestRoute(ws, "put", "bar")). Route(getTestRoute(ws, "head", "bar")). Route(getTestRoute(ws, "patch", "bar")). Route(getTestRoute(ws, "options", "bar")). Route(getTestRoute(ws, "delete", "bar")) } container.Add(ws) return &openapi.OpenAPIV3Config{ Info: &spec.Info{ InfoProps: spec.InfoProps{ Title: "TestAPI", Description: "Test API", Version: "unversioned", }, }, GetDefinitions: func(_ openapi.ReferenceCallback) map[string]openapi.OpenAPIDefinition { return map[string]openapi.OpenAPIDefinition{ "k8s.io/kube-openapi/pkg/builder3.TestInput": *TestInput{}.OpenAPIDefinition(), "k8s.io/kube-openapi/pkg/builder3.TestOutput": *TestOutput{}.OpenAPIDefinition(), } }, GetDefinitionName: func(name string) (string, spec.Extensions) { friendlyName := name[strings.LastIndex(name, "/")+1:] return friendlyName, spec.Extensions{"x-test2": "test2"} }, }, container } func getTestOperation(method string, opPrefix string) *spec3.Operation { return &spec3.Operation{ OperationProps: spec3.OperationProps{ Description: fmt.Sprintf("%s test input", method), Parameters: []*spec3.Parameter{}, Responses: getTestResponses(), OperationId: fmt.Sprintf("%s%sTestInput", method, opPrefix), }, } } func getTestPathItem(opPrefix string) *spec3.Path { ret := &spec3.Path{ PathProps: spec3.PathProps{ Get: getTestOperation("get", opPrefix), Parameters: getTestCommonParameters(), }, } ret.Get.RequestBody = getTestRequestBody() ret.Put = getTestOperation("put", opPrefix) ret.Put.RequestBody = getTestRequestBody() ret.Post = getTestOperation("post", opPrefix) ret.Post.RequestBody = getTestRequestBody() ret.Head = getTestOperation("head", opPrefix) ret.Head.RequestBody = getTestRequestBody() ret.Patch = getTestOperation("patch", opPrefix) ret.Patch.RequestBody = getTestRequestBody() ret.Delete = getTestOperation("delete", opPrefix) ret.Delete.RequestBody = getTestRequestBody() ret.Options = getTestOperation("options", opPrefix) ret.Options.RequestBody = getTestRequestBody() return ret } func getRefSchema(ref string) *spec.Schema { return &spec.Schema{ SchemaProps: spec.SchemaProps{ Ref: spec.MustCreateRef(ref), }, } } func getTestResponses() *spec3.Responses { ret := &spec3.Responses{ ResponsesProps: spec3.ResponsesProps{ StatusCodeResponses: map[int]*spec3.Response{}, }, } ret.StatusCodeResponses[200] = &spec3.Response{ ResponseProps: spec3.ResponseProps{ Description: "OK", Content: map[string]*spec3.MediaType{}, }, } ret.StatusCodeResponses[200].Content[restful.MIME_JSON] = &spec3.MediaType{ MediaTypeProps: spec3.MediaTypeProps{ Schema: getRefSchema("#/components/schemas/builder3.TestOutput"), }, } return ret } func getTestCommonParameters() []*spec3.Parameter { ret := make([]*spec3.Parameter, 2) ret[0] = &spec3.Parameter{ ParameterProps: spec3.ParameterProps{ Description: "path to the resource", Name: "path", In: "path", Required: true, Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"string"}, UniqueItems: true, }, }, }, } ret[1] = &spec3.Parameter{ ParameterProps: spec3.ParameterProps{ Description: "If 'true', then the output is pretty printed.", Name: "pretty", In: "query", Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"string"}, UniqueItems: true, }, }, }, } return ret } func getTestRequestBody() *spec3.RequestBody { ret := &spec3.RequestBody{ RequestBodyProps: spec3.RequestBodyProps{ Content: map[string]*spec3.MediaType{ restful.MIME_JSON: { MediaTypeProps: spec3.MediaTypeProps{ Schema: getRefSchema("#/components/schemas/builder3.TestInput"), }, }, }, Required: true, }, } return ret } func getTestInputDefinition() *spec.Schema { return &spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Test input", Properties: map[string]spec.Schema{ "id": { SchemaProps: spec.SchemaProps{ Description: "ID of the input", Type: spec.StringOrArray{"integer"}, Format: "int32", }, }, "name": { SchemaProps: spec.SchemaProps{ Description: "Name of the input", Type: spec.StringOrArray{"string"}, }, }, "tags": { SchemaProps: spec.SchemaProps{ Type: spec.StringOrArray{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: spec.StringOrArray{"string"}, }, }, }, }, }, "reference-extension": { VendorExtensible: spec.VendorExtensible{ Extensions: map[string]interface{}{"extension": "value"}, }, SchemaProps: spec.SchemaProps{ AllOf: []spec.Schema{{ SchemaProps: spec.SchemaProps{ Ref: spec.MustCreateRef("/components/schemas/builder3.TestOutput"), }, }}, }, }, "reference-nullable": { SchemaProps: spec.SchemaProps{ Nullable: true, AllOf: []spec.Schema{{ SchemaProps: spec.SchemaProps{ Ref: spec.MustCreateRef("/components/schemas/builder3.TestOutput"), }, }}, }, }, "reference-default": { SchemaProps: spec.SchemaProps{ AllOf: []spec.Schema{{ SchemaProps: spec.SchemaProps{ Ref: spec.MustCreateRef("/components/schemas/builder3.TestOutput"), }, }}, Default: map[string]interface{}{}, }, }, }, }, VendorExtensible: spec.VendorExtensible{ Extensions: spec.Extensions{ "x-test": "test", "x-test2": "test2", }, }, } } func getTestOutputDefinition() *spec.Schema { return &spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Test output", Properties: map[string]spec.Schema{ "count": { SchemaProps: spec.SchemaProps{ Description: "Number of outputs", Type: spec.StringOrArray{"integer"}, Format: "int32", }, }, "name": { SchemaProps: spec.SchemaProps{ Description: "Name of the output", Type: spec.StringOrArray{"string"}, }, }, }, }, VendorExtensible: spec.VendorExtensible{ Extensions: spec.Extensions{ "x-test2": "test2", }, }, } } func TestBuildOpenAPISpec(t *testing.T) { config, container, assert := setUp(t, true) expected := &spec3.OpenAPI{ Info: &spec.Info{ InfoProps: spec.InfoProps{ Title: "TestAPI", Description: "Test API", Version: "unversioned", }, VendorExtensible: spec.VendorExtensible{ Extensions: map[string]any{ "hello": "world", // set from PostProcessSpec callback }, }, }, Version: "3.0.0", Paths: &spec3.Paths{ Paths: map[string]*spec3.Path{ "/foo/test/{path}": getTestPathItem("foo"), "/bar/test/{path}": getTestPathItem("bar"), }, }, Components: &spec3.Components{ Schemas: map[string]*spec.Schema{ "builder3.TestInput": getTestInputDefinition(), "builder3.TestOutput": getTestOutputDefinition(), }, }, } config.PostProcessSpec = func(s *spec3.OpenAPI) (*spec3.OpenAPI, error) { s.Info.Extensions = map[string]any{ "hello": "world", } return s, nil } swagger, err := BuildOpenAPISpec(container.RegisteredWebServices(), config) if !assert.NoError(err) { return } expected_json, err := json.Marshal(expected) if !assert.NoError(err) { return } actual_json, err := json.Marshal(swagger) if !assert.NoError(err) { return } if err := jsontesting.JsonCompare(expected_json, actual_json); err != nil { t.Error(err) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/builder3/util.go000066400000000000000000000025141453663023200242160ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package builder3 import ( "sort" "k8s.io/kube-openapi/pkg/common" "k8s.io/kube-openapi/pkg/spec3" ) func mapKeyFromParam(param common.Parameter) interface{} { return struct { Name string Kind common.ParameterKind }{ Name: param.Name(), Kind: param.Kind(), } } func (s parameters) Len() int { return len(s) } func (s parameters) Swap(i, j int) { s[i], s[j] = s[j], s[i] } type parameters []*spec3.Parameter type byNameIn struct { parameters } func (s byNameIn) Less(i, j int) bool { return s.parameters[i].Name < s.parameters[j].Name || (s.parameters[i].Name == s.parameters[j].Name && s.parameters[i].In < s.parameters[j].In) } // SortParameters sorts parameters by Name and In fields. func sortParameters(p []*spec3.Parameter) { sort.Sort(byNameIn{p}) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/builder3/util/000077500000000000000000000000001453663023200236655ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/builder3/util/util.go000066400000000000000000000031001453663023200251630ustar00rootroot00000000000000/* Copyright 2022 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package util import ( "reflect" "k8s.io/kube-openapi/pkg/schemamutation" "k8s.io/kube-openapi/pkg/validation/spec" ) // wrapRefs wraps OpenAPI V3 Schema refs that contain sibling elements. // AllOf is used to wrap the Ref to prevent references from having sibling elements // Please see https://github.com/kubernetes/kubernetes/issues/106387#issuecomment-967640388 func WrapRefs(schema *spec.Schema) *spec.Schema { walker := schemamutation.Walker{ SchemaCallback: func(schema *spec.Schema) *spec.Schema { orig := schema clone := func() { if orig == schema { schema = new(spec.Schema) *schema = *orig } } if schema.Ref.String() != "" && !reflect.DeepEqual(*schema, spec.Schema{SchemaProps: spec.SchemaProps{Ref: schema.Ref}}) { clone() refSchema := new(spec.Schema) refSchema.Ref = schema.Ref schema.Ref = spec.Ref{} schema.AllOf = []spec.Schema{*refSchema} } return schema }, RefCallback: schemamutation.RefCallbackNoop, } return walker.WalkSchema(schema) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/cached/000077500000000000000000000000001453663023200224065ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/cached/cache.go000066400000000000000000000221661453663023200240070ustar00rootroot00000000000000/* Copyright 2022 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ // Package cached provides a cache mechanism based on etags to lazily // build, and/or cache results from expensive operation such that those // operations are not repeated unnecessarily. The operations can be // created as a tree, and replaced dynamically as needed. // // All the operations in this module are thread-safe. // // # Dependencies and types of caches // // This package uses a source/transform/sink model of caches to build // the dependency tree, and can be used as follows: // - [Func]: A source cache that recomputes the content every time. // - [Once]: A source cache that always produces the // same content, it is only called once. // - [Transform]: A cache that transforms data from one format to // another. It's only refreshed when the source changes. // - [Merge]: A cache that aggregates multiple caches in a map into one. // It's only refreshed when the source changes. // - [MergeList]: A cache that aggregates multiple caches in a list into one. // It's only refreshed when the source changes. // - [Atomic]: A cache adapter that atomically replaces the source with a new one. // - [LastSuccess]: A cache adapter that caches the last successful and returns // it if the next call fails. It extends [Atomic]. // // # Etags // // Etags in this library is a cache version identifier. It doesn't // necessarily strictly match to the semantics of http `etags`, but are // somewhat inspired from it and function with the same principles. // Hashing the content is a good way to guarantee that your function is // never going to be called spuriously. In Kubernetes world, this could // be a `resourceVersion`, this can be an actual etag, a hash, a UUID // (if the cache always changes), or even a made-up string when the // content of the cache never changes. package cached import ( "fmt" "sync" "sync/atomic" ) // Value is wrapping a value behind a getter for lazy evaluation. type Value[T any] interface { Get() (value T, etag string, err error) } // Result is wrapping T and error into a struct for cases where a tuple is more // convenient or necessary in Golang. type Result[T any] struct { Value T Etag string Err error } func (r Result[T]) Get() (T, string, error) { return r.Value, r.Etag, r.Err } // Func wraps a (thread-safe) function as a Value[T]. func Func[T any](fn func() (T, string, error)) Value[T] { return valueFunc[T](fn) } type valueFunc[T any] func() (T, string, error) func (c valueFunc[T]) Get() (T, string, error) { return c() } // Static returns constant values. func Static[T any](value T, etag string) Value[T] { return Result[T]{Value: value, Etag: etag} } // Merge merges a of cached values. The merge function only gets called if any of // the dependency has changed. // // If any of the dependency returned an error before, or any of the // dependency returned an error this time, or if the mergeFn failed // before, then the function is run again. // // Note that this assumes there is no "partial" merge, the merge // function will remerge all the dependencies together everytime. Since // the list of dependencies is constant, there is no way to save some // partial merge information either. // // Also note that Golang map iteration is not stable. If the mergeFn // depends on the order iteration to be stable, it will need to // implement its own sorting or iteration order. func Merge[K comparable, T, V any](mergeFn func(results map[K]Result[T]) (V, string, error), caches map[K]Value[T]) Value[V] { list := make([]Value[T], 0, len(caches)) // map from index to key indexes := make(map[int]K, len(caches)) i := 0 for k := range caches { list = append(list, caches[k]) indexes[i] = k i++ } return MergeList(func(results []Result[T]) (V, string, error) { if len(results) != len(indexes) { panic(fmt.Errorf("invalid result length %d, expected %d", len(results), len(indexes))) } m := make(map[K]Result[T], len(results)) for i := range results { m[indexes[i]] = results[i] } return mergeFn(m) }, list) } // MergeList merges a list of cached values. The function only gets called if // any of the dependency has changed. // // The benefit of ListMerger over the basic Merger is that caches are // stored in an ordered list so the order of the cache will be // preserved in the order of the results passed to the mergeFn. // // If any of the dependency returned an error before, or any of the // dependency returned an error this time, or if the mergeFn failed // before, then the function is reran. // // Note that this assumes there is no "partial" merge, the merge // function will remerge all the dependencies together everytime. Since // the list of dependencies is constant, there is no way to save some // partial merge information either. func MergeList[T, V any](mergeFn func(results []Result[T]) (V, string, error), delegates []Value[T]) Value[V] { return &listMerger[T, V]{ mergeFn: mergeFn, delegates: delegates, } } type listMerger[T, V any] struct { lock sync.Mutex mergeFn func([]Result[T]) (V, string, error) delegates []Value[T] cache []Result[T] result Result[V] } func (c *listMerger[T, V]) prepareResultsLocked() []Result[T] { cacheResults := make([]Result[T], len(c.delegates)) ch := make(chan struct { int Result[T] }, len(c.delegates)) for i := range c.delegates { go func(index int) { value, etag, err := c.delegates[index].Get() ch <- struct { int Result[T] }{index, Result[T]{Value: value, Etag: etag, Err: err}} }(i) } for i := 0; i < len(c.delegates); i++ { res := <-ch cacheResults[res.int] = res.Result } return cacheResults } func (c *listMerger[T, V]) needsRunningLocked(results []Result[T]) bool { if c.cache == nil { return true } if c.result.Err != nil { return true } if len(results) != len(c.cache) { panic(fmt.Errorf("invalid number of results: %v (expected %v)", len(results), len(c.cache))) } for i, oldResult := range c.cache { newResult := results[i] if newResult.Etag != oldResult.Etag || newResult.Err != nil || oldResult.Err != nil { return true } } return false } func (c *listMerger[T, V]) Get() (V, string, error) { c.lock.Lock() defer c.lock.Unlock() cacheResults := c.prepareResultsLocked() if c.needsRunningLocked(cacheResults) { c.cache = cacheResults c.result.Value, c.result.Etag, c.result.Err = c.mergeFn(c.cache) } return c.result.Value, c.result.Etag, c.result.Err } // Transform the result of another cached value. The transformFn will only be called // if the source has updated, otherwise, the result will be returned. // // If the dependency returned an error before, or it returns an error // this time, or if the transformerFn failed before, the function is // reran. func Transform[T, V any](transformerFn func(T, string, error) (V, string, error), source Value[T]) Value[V] { return MergeList(func(delegates []Result[T]) (V, string, error) { if len(delegates) != 1 { panic(fmt.Errorf("invalid cache for transformer cache: %v", delegates)) } return transformerFn(delegates[0].Value, delegates[0].Etag, delegates[0].Err) }, []Value[T]{source}) } // Once calls Value[T].Get() lazily and only once, even in case of an error result. func Once[T any](d Value[T]) Value[T] { return &once[T]{ data: d, } } type once[T any] struct { once sync.Once data Value[T] result Result[T] } func (c *once[T]) Get() (T, string, error) { c.once.Do(func() { c.result.Value, c.result.Etag, c.result.Err = c.data.Get() }) return c.result.Value, c.result.Etag, c.result.Err } // Replaceable extends the Value[T] interface with the ability to change the // underlying Value[T] after construction. type Replaceable[T any] interface { Value[T] Store(Value[T]) } // Atomic wraps a Value[T] as an atomic value that can be replaced. It implements // Replaceable[T]. type Atomic[T any] struct { value atomic.Pointer[Value[T]] } var _ Replaceable[[]byte] = &Atomic[[]byte]{} func (x *Atomic[T]) Store(val Value[T]) { x.value.Store(&val) } func (x *Atomic[T]) Get() (T, string, error) { return (*x.value.Load()).Get() } // LastSuccess calls Value[T].Get(), but hides errors by returning the last // success if there has been any. type LastSuccess[T any] struct { Atomic[T] success atomic.Pointer[Result[T]] } var _ Replaceable[[]byte] = &LastSuccess[[]byte]{} func (c *LastSuccess[T]) Get() (T, string, error) { success := c.success.Load() value, etag, err := c.Atomic.Get() if err == nil { if success == nil { c.success.CompareAndSwap(nil, &Result[T]{Value: value, Etag: etag, Err: err}) } return value, etag, err } if success != nil { return success.Value, success.Etag, success.Err } return value, etag, err } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/cached/cache_test.go000066400000000000000000001067471453663023200250560ustar00rootroot00000000000000/* Copyright 2023 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package cached_test import ( "bytes" "encoding/json" "errors" "fmt" "math/rand" "sort" "strings" "sync" "testing" "time" "k8s.io/kube-openapi/pkg/cached" ) func TestDataFunc(t *testing.T) { count := 0 source := cached.Func(func() ([]byte, string, error) { count += 1 return []byte("source"), "source", nil }) if _, _, err := source.Get(); err != nil { t.Fatalf("unexpected error: %v", err) } if _, _, err := source.Get(); err != nil { t.Fatalf("unexpected error: %v", err) } if count != 2 { t.Fatalf("Expected function called twice, called: %v", count) } } func TestDataFuncError(t *testing.T) { count := 0 source := cached.Func(func() ([]byte, string, error) { count += 1 return nil, "", errors.New("source error") }) if _, _, err := source.Get(); err == nil { t.Fatalf("expected error, found none") } if _, _, err := source.Get(); err == nil { t.Fatalf("expected error, found none") } if count != 2 { t.Fatalf("Expected function called twice, called: %v", count) } } func TestDataFuncAlternate(t *testing.T) { count := 0 source := cached.Func(func() ([]byte, string, error) { count += 1 if count%2 == 0 { return nil, "", errors.New("source error") } return []byte("source"), "source", nil }) if _, _, err := source.Get(); err != nil { t.Fatalf("unexpected error: %v", err) } if _, _, err := source.Get(); err == nil { t.Fatalf("expected error, found none") } if _, _, err := source.Get(); err != nil { t.Fatalf("unexpected error: %v", err) } if _, _, err := source.Get(); err == nil { t.Fatalf("expected error, found none") } if count != 4 { t.Fatalf("Expected function called 4x, called: %v", count) } } func TestOnce(t *testing.T) { count := 0 source := cached.Once(cached.Func(func() ([]byte, string, error) { count += 1 return []byte("source"), "source", nil })) if _, _, err := source.Get(); err != nil { t.Fatalf("unexpected error: %v", err) } if _, _, err := source.Get(); err != nil { t.Fatalf("unexpected error: %v", err) } if count != 1 { t.Fatalf("Expected function called once, called: %v", count) } } func TestOnceError(t *testing.T) { count := 0 source := cached.Once(cached.Func(func() ([]byte, string, error) { count += 1 return nil, "", errors.New("source error") })) if _, _, err := source.Get(); err == nil { t.Fatalf("expected error, found none") } if _, _, err := source.Get(); err == nil { t.Fatalf("expected error, found none") } if count != 1 { t.Fatalf("Expected function called once, called: %v", count) } } func TestResultGet(t *testing.T) { source := cached.Static([]byte("source"), "etag") value, etag, err := source.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "source"; string(value) != want { t.Fatalf("expected value %q, got %q", want, string(value)) } if want := "etag"; etag != want { t.Fatalf("expected etag %q, got %q", want, etag) } } func TestResultGetError(t *testing.T) { source := cached.Result[[]byte]{Err: errors.New("source error")} value, etag, err := source.Get() if err == nil { t.Fatalf("expected error, found none") } if value != nil { t.Fatalf("expected nil value, got %v", value) } if etag != "" { t.Fatalf("expected empty etag, got %q", etag) } } func TestTransform(t *testing.T) { sourceCount := 0 source := cached.Func(func() ([]byte, string, error) { sourceCount += 1 return []byte("source"), "source", nil }) transformerCount := 0 transformer := cached.Transform(func(value []byte, etag string, err error) ([]byte, string, error) { transformerCount += 1 if err != nil { return nil, "", err } return []byte("transformed " + string(value)), "transformed " + etag, nil }, source) if _, _, err := transformer.Get(); err != nil { t.Fatalf("unexpected error: %v", err) } if _, _, err := transformer.Get(); err != nil { t.Fatalf("unexpected error: %v", err) } if sourceCount != 2 { t.Fatalf("Expected source function called twice, called: %v", sourceCount) } if transformerCount != 1 { t.Fatalf("Expected transformer function called once, called: %v", transformerCount) } } func TestTransformChained(t *testing.T) { sourceCount := 0 source := cached.Func(func() ([]byte, string, error) { sourceCount += 1 return []byte("source"), "source", nil }) transformer1Count := 0 transformer1 := cached.Transform(func(value []byte, etag string, err error) ([]byte, string, error) { transformer1Count += 1 if err != nil { return nil, "", err } return []byte("transformed " + string(value)), etag, nil }, source) transformer2Count := 0 transformer2 := cached.Transform(func(value []byte, etag string, err error) ([]byte, string, error) { transformer2Count += 1 if err != nil { return nil, "", err } return []byte("transformed " + string(value)), etag, nil }, transformer1) transformer3Count := 0 transformer3 := cached.Transform(func(value []byte, etag string, err error) ([]byte, string, error) { transformer3Count += 1 if err != nil { return nil, "", err } return []byte("transformed " + string(value)), etag, nil }, transformer2) if _, _, err := transformer3.Get(); err != nil { t.Fatalf("unexpected error: %v", err) } result, etag, err := transformer3.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "transformed transformed transformed source"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "source"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } if sourceCount != 2 { t.Fatalf("Expected source function called twice, called: %v", sourceCount) } if transformer1Count != 1 { t.Fatalf("Expected transformer function called once, called: %v", transformer1Count) } if transformer2Count != 1 { t.Fatalf("Expected transformer function called once, called: %v", transformer2Count) } if transformer3Count != 1 { t.Fatalf("Expected transformer function called once, called: %v", transformer3Count) } } func TestTransformError(t *testing.T) { sourceCount := 0 source := cached.Func(func() ([]byte, string, error) { sourceCount += 1 return []byte("source"), "source", nil }) transformerCount := 0 transformer := cached.Transform(func(value []byte, etag string, err error) ([]byte, string, error) { transformerCount += 1 return nil, "", errors.New("transformer error") }, source) if _, _, err := transformer.Get(); err == nil { t.Fatalf("expected error, none found") } if _, _, err := transformer.Get(); err == nil { t.Fatalf("expected error, none found") } if sourceCount != 2 { t.Fatalf("Expected source function called twice, called: %v", sourceCount) } if transformerCount != 2 { t.Fatalf("Expected transformer function called twice, called: %v", transformerCount) } } func TestTransformSourceError(t *testing.T) { sourceCount := 0 source := cached.Func(func() ([]byte, string, error) { sourceCount += 1 return nil, "", errors.New("source error") }) transformerCount := 0 transformer := cached.Transform(func(value []byte, etag string, err error) ([]byte, string, error) { transformerCount += 1 if err != nil { return nil, "", err } return []byte("transformed " + string(value)), "transformed " + etag, nil }, source) if _, _, err := transformer.Get(); err == nil { t.Fatalf("expected error, none found") } if _, _, err := transformer.Get(); err == nil { t.Fatalf("expected error, none found") } if sourceCount != 2 { t.Fatalf("Expected source function called twice, called: %v", sourceCount) } if transformerCount != 2 { t.Fatalf("Expected transformer function called twice, called: %v", transformerCount) } } func TestTransformAlternateSourceError(t *testing.T) { sourceCount := 0 source := cached.Func(func() ([]byte, string, error) { sourceCount += 1 if sourceCount%2 == 0 { return nil, "", errors.New("source error") } return []byte("source"), "source", nil }) transformerCount := 0 transformer := cached.Transform(func(value []byte, etag string, err error) ([]byte, string, error) { transformerCount += 1 if err != nil { return nil, "", err } return []byte("transformed " + string(value)), "transformed " + etag, err }, source) result, etag, err := transformer.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "transformed source"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "transformed source"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } if _, _, err := transformer.Get(); err == nil { t.Fatalf("expected error, none found") } result, etag, err = transformer.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "transformed source"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "transformed source"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } if _, _, err := transformer.Get(); err == nil { t.Fatalf("expected error, none found") } if sourceCount != 4 { t.Fatalf("Expected source function called 4x, called: %v", sourceCount) } if transformerCount != 4 { t.Fatalf("Expected transformer function called 4x, called: %v", transformerCount) } } func TestMerge(t *testing.T) { source1Count := 0 source1 := cached.Func(func() ([]byte, string, error) { source1Count += 1 return []byte("source1"), "source1", nil }) source2Count := 0 source2 := cached.Func(func() ([]byte, string, error) { source2Count += 1 return []byte("source2"), "source2", nil }) mergerCount := 0 merger := cached.Merge(func(results map[string]cached.Result[[]byte]) ([]byte, string, error) { mergerCount += 1 d := []string{} e := []string{} for _, result := range results { if result.Err != nil { return nil, "", result.Err } d = append(d, string(result.Value)) e = append(e, result.Etag) } sort.Strings(d) sort.Strings(e) return []byte("merged " + strings.Join(d, " and ")), "merged " + strings.Join(e, " and "), nil }, map[string]cached.Value[[]byte]{ "source1": source1, "source2": source2, }) if _, _, err := merger.Get(); err != nil { t.Fatalf("unexpected error: %v", err) } result, etag, err := merger.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "merged source1 and source2"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "merged source1 and source2"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } if source1Count != 2 { t.Fatalf("Expected source function called twice, called: %v", source1Count) } if source2Count != 2 { t.Fatalf("Expected source function called twice, called: %v", source2Count) } if mergerCount != 1 { t.Fatalf("Expected merger function called once, called: %v", mergerCount) } } func TestMergeError(t *testing.T) { source1Count := 0 source1 := cached.Func(func() ([]byte, string, error) { source1Count += 1 return []byte("source1"), "source1", nil }) source2Count := 0 source2 := cached.Func(func() ([]byte, string, error) { source2Count += 1 return []byte("source2"), "source2", nil }) mergerCount := 0 merger := cached.Merge(func(results map[string]cached.Result[[]byte]) ([]byte, string, error) { mergerCount += 1 return nil, "", errors.New("merger error") }, map[string]cached.Value[[]byte]{ "source1": source1, "source2": source2, }) if _, _, err := merger.Get(); err == nil { t.Fatalf("expected error, none found") } if _, _, err := merger.Get(); err == nil { t.Fatalf("expected error, none found") } if source1Count != 2 { t.Fatalf("Expected source function called twice, called: %v", source1Count) } if source2Count != 2 { t.Fatalf("Expected source function called twice, called: %v", source2Count) } if mergerCount != 2 { t.Fatalf("Expected merger function called twice, called: %v", mergerCount) } } func TestMergeSourceError(t *testing.T) { source1Count := 0 source1 := cached.Func(func() ([]byte, string, error) { source1Count += 1 return nil, "", errors.New("source1 error") }) source2Count := 0 source2 := cached.Func(func() ([]byte, string, error) { source2Count += 1 return []byte("source2"), "source2", nil }) mergerCount := 0 merger := cached.Merge(func(results map[string]cached.Result[[]byte]) ([]byte, string, error) { mergerCount += 1 d := []string{} e := []string{} for _, result := range results { if result.Err != nil { return nil, "", result.Err } d = append(d, string(result.Value)) e = append(e, result.Etag) } sort.Strings(d) sort.Strings(e) return []byte("merged " + strings.Join(d, " and ")), "merged " + strings.Join(e, " and "), nil }, map[string]cached.Value[[]byte]{ "source1": source1, "source2": source2, }) if _, _, err := merger.Get(); err == nil { t.Fatalf("expected error, none found") } if _, _, err := merger.Get(); err == nil { t.Fatalf("expected error, none found") } if source1Count != 2 { t.Fatalf("Expected source function called twice, called: %v", source1Count) } if source2Count != 2 { t.Fatalf("Expected source function called twice, called: %v", source2Count) } if mergerCount != 2 { t.Fatalf("Expected merger function called twice, called: %v", mergerCount) } } func TestMergeAlternateSourceError(t *testing.T) { source1Count := 0 source1 := cached.Func(func() ([]byte, string, error) { source1Count += 1 if source1Count%2 == 0 { return nil, "", errors.New("source1 error") } else { return []byte("source1"), "source1", nil } }) source2Count := 0 source2 := cached.Func(func() ([]byte, string, error) { source2Count += 1 return []byte("source2"), "source2", nil }) mergerCount := 0 merger := cached.Merge(func(results map[string]cached.Result[[]byte]) ([]byte, string, error) { mergerCount += 1 d := []string{} e := []string{} for _, result := range results { if result.Err != nil { return nil, "", result.Err } d = append(d, string(result.Value)) e = append(e, result.Etag) } sort.Strings(d) sort.Strings(e) return []byte("merged " + strings.Join(d, " and ")), "merged " + strings.Join(e, " and "), nil }, map[string]cached.Value[[]byte]{ "source1": source1, "source2": source2, }) result, etag, err := merger.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "merged source1 and source2"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "merged source1 and source2"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } if _, _, err := merger.Get(); err == nil { t.Fatalf("expected error, none found") } result, etag, err = merger.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "merged source1 and source2"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "merged source1 and source2"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } if _, _, err := merger.Get(); err == nil { t.Fatalf("expected error, none found") } if source1Count != 4 { t.Fatalf("Expected source function called 4x, called: %v", source1Count) } if source2Count != 4 { t.Fatalf("Expected source function called 4x, called: %v", source2Count) } if mergerCount != 4 { t.Fatalf("Expected merger function called 4x, called: %v", mergerCount) } } func TestAtomic(t *testing.T) { sourceDataCount := 0 sourceData := cached.Func(func() ([]byte, string, error) { sourceDataCount += 1 return []byte("source"), "source", nil }) sourceData2Count := 0 sourceData2 := cached.Func(func() ([]byte, string, error) { sourceData2Count += 1 return []byte("source2"), "source2", nil }) sourceErrCount := 0 sourceErr := cached.Func(func() ([]byte, string, error) { sourceErrCount += 1 return nil, "", errors.New("source error") }) replaceable := &cached.Atomic[[]byte]{} replaceable.Store(sourceErr) if _, _, err := replaceable.Get(); err == nil { t.Fatalf("expected error, found none") } replaceable.Store(sourceData) result, etag, err := replaceable.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "source"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "source"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } // replace with the same thing, shouldn't change anything replaceable.Store(sourceData) result, etag, err = replaceable.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "source"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "source"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } // when replacing with an error source, we see the error again replaceable.Store(sourceErr) result, etag, err = replaceable.Get() if err == nil { t.Fatalf("unexpected success") } replaceable.Store(sourceData2) result, etag, err = replaceable.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "source2"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "source2"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } if sourceDataCount != 2 { t.Fatalf("Expected sourceData function called twice, called: %v", sourceDataCount) } if sourceData2Count != 1 { t.Fatalf("Expected sourceData2 function called once, called: %v", sourceData2Count) } if sourceErrCount != 2 { t.Fatalf("Expected error source function called once, called: %v", sourceErrCount) } } func TestLastSuccess(t *testing.T) { sourceDataCount := 0 sourceData := cached.Func(func() ([]byte, string, error) { sourceDataCount += 1 return []byte("source"), "source", nil }) sourceData2Count := 0 sourceData2 := cached.Func(func() ([]byte, string, error) { sourceData2Count += 1 return []byte("source2"), "source2", nil }) sourceErrCount := 0 sourceErr := cached.Func(func() ([]byte, string, error) { sourceErrCount += 1 return nil, "", errors.New("source error") }) lastSuccess := &cached.LastSuccess[[]byte]{} lastSuccess.Store(sourceErr) if _, _, err := lastSuccess.Get(); err == nil { t.Fatalf("expected error, found none") } lastSuccess.Store(sourceData) result, etag, err := lastSuccess.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "source"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "source"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } // replace with the same thing, shouldn't change anything lastSuccess.Store(sourceData) result, etag, err = lastSuccess.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "source"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "source"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } // Even if we replace with something that fails, we continue to return the success. lastSuccess.Store(sourceErr) result, etag, err = lastSuccess.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "source"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "source"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } lastSuccess.Store(sourceData2) result, etag, err = lastSuccess.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "source2"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "source2"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } if sourceDataCount != 2 { t.Fatalf("Expected sourceData function called twice, called: %v", sourceDataCount) } if sourceData2Count != 1 { t.Fatalf("Expected sourceData2 function called once, called: %v", sourceData2Count) } if sourceErrCount != 2 { t.Fatalf("Expected error source function called once, called: %v", sourceErrCount) } } func TestLastSuccessEtag(t *testing.T) { lastSuccess := &cached.LastSuccess[bool]{} lastSuccess.Store(cached.Func(func() (bool, string, error) { return false, "hash", nil })) lastSuccess.Store(cached.Static(true, "hash2")) result, etag, _ := lastSuccess.Get() if actual := etag; actual != "hash2" { t.Fatalf(`expected "hash2", got %q`, actual) } if result != true { t.Fatal(`expected "true", got "false"`) } } func TestLastSuccessAlternateError(t *testing.T) { sourceCount := 0 source := cached.Func(func() ([]byte, string, error) { sourceCount += 1 if sourceCount%2 == 0 { return nil, "", errors.New("source error") } else { return []byte("source"), "source", nil } }) lastSuccess := &cached.LastSuccess[[]byte]{} lastSuccess.Store(source) result, etag, err := lastSuccess.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "source"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "source"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } result, etag, err = lastSuccess.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "source"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "source"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } result, etag, err = lastSuccess.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "source"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "source"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } result, etag, err = lastSuccess.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "source"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "source"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } if sourceCount != 4 { t.Fatalf("Expected sourceData function called 4x, called: %v", sourceCount) } } func TestLastSuccessWithTransformer(t *testing.T) { lastSuccess := &cached.LastSuccess[[]byte]{} lastSuccess.Store(cached.Static([]byte("source"), "source")) transformerCount := 0 transformed := cached.Transform[[]byte](func(value []byte, etag string, err error) ([]byte, string, error) { transformerCount += 1 if err != nil { return nil, "", err } return []byte("transformed " + string(value)), "transformed " + etag, nil }, lastSuccess) result, etag, err := transformed.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } result, etag, err = transformed.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "transformed source"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "transformed source"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } // replace with new cache, transformer shouldn't be affected (or called) lastSuccess.Store(cached.Static([]byte("source"), "source")) result, etag, err = transformed.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } result, etag, err = transformed.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "transformed source"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "transformed source"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } // replace with failing cache, transformer should still not be affected (or called) lastSuccess.Store(cached.Result[[]byte]{Err: errors.New("source error")}) result, etag, err = transformed.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } result, etag, err = transformed.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "transformed source"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "transformed source"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } if transformerCount != 1 { t.Fatalf("Expected transformer function called once, called: %v", transformerCount) } } // Here is an example of how one can write a cache that will constantly // be pulled, while actually recomputing the results only as needed. func Example() { // Merge Json is a replaceable cache, since we'll want it to // change a few times. mergeJson := &cached.LastSuccess[[]byte]{} one := cached.Once(cached.Func(func() ([]byte, string, error) { // This one is computed lazily, only when requested, and only once. return []byte("one"), "one", nil })) two := cached.Func(func() ([]byte, string, error) { // This cache is re-computed every time. return []byte("two"), "two", nil }) // This cache is computed once, and is not lazy at all. three := cached.Static([]byte("three"), "three") // This cache will allow us to replace a branch of the tree // efficiently. lastSuccess := &cached.LastSuccess[[]byte]{} lastSuccess.Store(cached.Static([]byte("four"), "four")) merger := func(results map[string]cached.Result[[]byte]) ([]byte, string, error) { var out = []json.RawMessage{} var resultEtag string for _, result := range results { if result.Err != nil { return nil, "", result.Err } resultEtag += result.Etag out = append(out, result.Value) } data, err := json.Marshal(out) if err != nil { return nil, "", err } return data, resultEtag, nil } mergeJson.Store(cached.Merge(merger, map[string]cached.Value[[]byte]{ "one": one, "two": two, "three": three, "replaceable": lastSuccess, })) // Create a new cache that indents a buffer. This should only be // called if the buffer has changed. indented := cached.Transform[[]byte](func(js []byte, etag string, err error) ([]byte, string, error) { // Get the json from the previous layer of cache, before // we indent. if err != nil { return nil, "", err } var out bytes.Buffer json.Indent(&out, js, "", "\t") return out.Bytes(), etag, nil }, mergeJson) // We have "clients" that constantly pulls the indented format. go func() { for { if _, _, err := indented.Get(); err != nil { panic(fmt.Errorf("invalid error: %v", err)) } } }() failure := cached.Result[[]byte]{Err: errors.New("Invalid cache!")} // Insert a new sub-cache that fails, it should just be ignored. mergeJson.Store(cached.Merge(merger, map[string]cached.Value[[]byte]{ "one": one, "two": two, "three": three, "replaceable": lastSuccess, "failure": failure, })) // We can replace just a branch of the dependency tree. lastSuccess.Store(cached.Static([]byte("five"), "five")) // We can replace to remove the failure and one of the sub-cached. mergeJson.Store(cached.Merge(merger, map[string]cached.Value[[]byte]{ "one": one, "two": two, "replaceable": lastSuccess, })) } func TestListMerger(t *testing.T) { source1Count := 0 source1 := cached.Func(func() ([]byte, string, error) { source1Count += 1 return []byte("source1"), "source1", nil }) source2Count := 0 source2 := cached.Func(func() ([]byte, string, error) { source2Count += 1 return []byte("source2"), "source2", nil }) mergerCount := 0 merger := cached.MergeList(func(results []cached.Result[[]byte]) ([]byte, string, error) { mergerCount += 1 d := []string{} e := []string{} for _, result := range results { if result.Err != nil { return nil, "", result.Err } d = append(d, string(result.Value)) e = append(e, result.Etag) } return []byte("merged " + strings.Join(d, " and ")), "merged " + strings.Join(e, " and "), nil }, []cached.Value[[]byte]{ source1, source2, }) if _, _, err := merger.Get(); err != nil { t.Fatalf("unexpected error: %v", err) } result, etag, err := merger.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "merged source1 and source2"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "merged source1 and source2"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } if source1Count != 2 { t.Fatalf("Expected source function called twice, called: %v", source1Count) } if source2Count != 2 { t.Fatalf("Expected source function called twice, called: %v", source2Count) } if mergerCount != 1 { t.Fatalf("Expected merger function called once, called: %v", mergerCount) } } func TestMergeListSourceError(t *testing.T) { source1Count := 0 source1 := cached.Func(func() ([]byte, string, error) { source1Count += 1 return nil, "", errors.New("source1 error") }) source2Count := 0 source2 := cached.Func(func() ([]byte, string, error) { source2Count += 1 return []byte("source2"), "source2", nil }) mergerCount := 0 merger := cached.MergeList(func(results []cached.Result[[]byte]) ([]byte, string, error) { mergerCount += 1 d := []string{} e := []string{} for _, result := range results { if result.Err != nil { return nil, "", result.Err } d = append(d, string(result.Value)) e = append(e, result.Etag) } return []byte("merged " + strings.Join(d, " and ")), "merged " + strings.Join(e, " and "), nil }, []cached.Value[[]byte]{ source1, source2, }) if _, _, err := merger.Get(); err == nil { t.Fatalf("expected error, none found") } if _, _, err := merger.Get(); err == nil { t.Fatalf("expected error, none found") } if source1Count != 2 { t.Fatalf("Expected source function called twice, called: %v", source1Count) } if source2Count != 2 { t.Fatalf("Expected source function called twice, called: %v", source2Count) } if mergerCount != 2 { t.Fatalf("Expected merger function called twice, called: %v", mergerCount) } } func TestMergeListAlternateSourceError(t *testing.T) { source1Count := 0 source1 := cached.Func(func() ([]byte, string, error) { source1Count += 1 if source1Count%2 == 0 { return nil, "", errors.New("source1 error") } else { return []byte("source1"), "source1", nil } }) source2Count := 0 source2 := cached.Func(func() ([]byte, string, error) { source2Count += 1 return []byte("source2"), "source2", nil }) mergerCount := 0 merger := cached.MergeList(func(results []cached.Result[[]byte]) ([]byte, string, error) { mergerCount += 1 d := []string{} e := []string{} for _, result := range results { if result.Err != nil { return nil, "", result.Err } d = append(d, string(result.Value)) e = append(e, result.Etag) } return []byte("merged " + strings.Join(d, " and ")), "merged " + strings.Join(e, " and "), nil }, []cached.Value[[]byte]{ source1, source2, }) result, etag, err := merger.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "merged source1 and source2"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "merged source1 and source2"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } if _, _, err := merger.Get(); err == nil { t.Fatalf("expected error, none found") } result, etag, err = merger.Get() if err != nil { t.Fatalf("unexpected error: %v", err) } if want := "merged source1 and source2"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "merged source1 and source2"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } if _, _, err := merger.Get(); err == nil { t.Fatalf("expected error, none found") } if source1Count != 4 { t.Fatalf("Expected source function called 4x, called: %v", source1Count) } if source2Count != 4 { t.Fatalf("Expected source function called 4x, called: %v", source2Count) } if mergerCount != 4 { t.Fatalf("Expected merger function called 4x, called: %v", mergerCount) } } func TestListDAG(t *testing.T) { source := cached.Func(func() ([]byte, string, error) { return []byte("source"), "source", nil }) transformer1 := cached.Transform(func(value []byte, etag string, err error) ([]byte, string, error) { if err != nil { return nil, "", err } return []byte("transformed1 " + string(value)), "transformed1 " + etag, nil }, source) transformer2 := cached.Transform(func(value []byte, etag string, err error) ([]byte, string, error) { if err != nil { return nil, "", err } return []byte("transformed2 " + string(value)), "transformed2 " + etag, nil }, source) merger := cached.MergeList(func(results []cached.Result[[]byte]) ([]byte, string, error) { d := []string{} e := []string{} for _, result := range results { if result.Err != nil { return nil, "", result.Err } d = append(d, string(result.Value)) e = append(e, result.Etag) } return []byte("merged " + strings.Join(d, " and ")), "merged " + strings.Join(e, " and "), nil }, []cached.Value[[]byte]{ transformer1, transformer2, }) result, etag, err := merger.Get() if err != nil { t.Fatalf("Unexpected error: %v", err) } if want := "merged transformed1 source and transformed2 source"; string(result) != want { t.Fatalf("expected data = %v, got %v", want, string(result)) } if want := "merged transformed1 source and transformed2 source"; etag != want { t.Fatalf("expected etag = %v, got %v", want, etag) } } func randomString(length uint) string { bytes := make([]byte, 6) rand.Read(bytes) return string(bytes) } func NewRandomSource() cached.Value[int64] { return cached.Once(cached.Func(func() (int64, string, error) { bytes := make([]byte, 6) rand.Read(bytes) return rand.Int63(), randomString(10), nil })) } func repeatedGet(data cached.Value[int64], end time.Time, wg *sync.WaitGroup) { for time.Now().Before(end) { _, _, _ = data.Get() } wg.Done() } func TestThreadSafe(t *testing.T) { end := time.Now().Add(time.Second) wg := sync.WaitGroup{} static := NewRandomSource() wg.Add(1) go repeatedGet(static, end, &wg) result := cached.Static(rand.Int63(), randomString(10)) wg.Add(1) go repeatedGet(result, end, &wg) replaceable := &cached.LastSuccess[int64]{} replaceable.Store(NewRandomSource()) wg.Add(1) go repeatedGet(replaceable, end, &wg) wg.Add(1) go func(r cached.Replaceable[int64], end time.Time, wg *sync.WaitGroup) { for time.Now().Before(end) { r.Store(NewRandomSource()) } wg.Done() }(replaceable, end, &wg) merger := cached.Merge(func(results map[string]cached.Result[int64]) (int64, string, error) { sum := int64(0) for _, result := range results { sum += result.Value } return sum, randomString(10), nil }, map[string]cached.Value[int64]{ "one": NewRandomSource(), "two": NewRandomSource(), }) wg.Add(1) go repeatedGet(merger, end, &wg) transformer := cached.Transform(func(value int64, etag string, err error) (int64, string, error) { return value + 5, randomString(10), nil }, NewRandomSource()) wg.Add(1) go repeatedGet(transformer, end, &wg) listmerger := cached.MergeList(func(results []cached.Result[int64]) (int64, string, error) { sum := int64(0) for i := range results { sum += results[i].Value } return sum, randomString(10), nil }, []cached.Value[int64]{static, result, replaceable, merger, transformer}) wg.Add(1) go repeatedGet(listmerger, end, &wg) wg.Wait() } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/common/000077500000000000000000000000001453663023200224675ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/common/common.go000066400000000000000000000261361453663023200243160ustar00rootroot00000000000000/* Copyright 2016 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package common import ( "net/http" "strings" "github.com/emicklei/go-restful/v3" "k8s.io/kube-openapi/pkg/spec3" "k8s.io/kube-openapi/pkg/validation/spec" ) const ( // TODO: Make this configurable. ExtensionPrefix = "x-kubernetes-" ExtensionV2Schema = ExtensionPrefix + "v2-schema" ) // OpenAPIDefinition describes single type. Normally these definitions are auto-generated using gen-openapi. type OpenAPIDefinition struct { Schema spec.Schema Dependencies []string } type ReferenceCallback func(path string) spec.Ref // GetOpenAPIDefinitions is collection of all definitions. type GetOpenAPIDefinitions func(ReferenceCallback) map[string]OpenAPIDefinition // OpenAPIDefinitionGetter gets openAPI definitions for a given type. If a type implements this interface, // the definition returned by it will be used, otherwise the auto-generated definitions will be used. See // GetOpenAPITypeFormat for more information about trade-offs of using this interface or GetOpenAPITypeFormat method when // possible. type OpenAPIDefinitionGetter interface { OpenAPIDefinition() *OpenAPIDefinition } type OpenAPIV3DefinitionGetter interface { OpenAPIV3Definition() *OpenAPIDefinition } type PathHandler interface { Handle(path string, handler http.Handler) } type PathHandlerByGroupVersion interface { Handle(path string, handler http.Handler) HandlePrefix(path string, handler http.Handler) } // Config is set of configuration for openAPI spec generation. type Config struct { // List of supported protocols such as https, http, etc. ProtocolList []string // Info is general information about the API. Info *spec.Info // DefaultResponse will be used if an operation does not have any responses listed. It // will show up as ... "responses" : {"default" : $DefaultResponse} in the spec. DefaultResponse *spec.Response // ResponseDefinitions will be added to "responses" under the top-level swagger object. This is an object // that holds responses definitions that can be used across operations. This property does not define // global responses for all operations. For more info please refer: // https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#fixed-fields ResponseDefinitions map[string]spec.Response // CommonResponses will be added as a response to all operation specs. This is a good place to add common // responses such as authorization failed. CommonResponses map[int]spec.Response // List of webservice's path prefixes to ignore IgnorePrefixes []string // OpenAPIDefinitions should provide definition for all models used by routes. Failure to provide this map // or any of the models will result in spec generation failure. GetDefinitions GetOpenAPIDefinitions // Provides the definition for all models used by routes. One of GetDefinitions or Definitions must be defined to generate a spec. // This takes precedent over the GetDefinitions function Definitions map[string]OpenAPIDefinition // GetOperationIDAndTags returns operation id and tags for a restful route. It is an optional function to customize operation IDs. // // Deprecated: GetOperationIDAndTagsFromRoute should be used instead. This cannot be specified if using the new Route // interface set of funcs. GetOperationIDAndTags func(r *restful.Route) (string, []string, error) // GetOperationIDAndTagsFromRoute returns operation id and tags for a Route. It is an optional function to customize operation IDs. GetOperationIDAndTagsFromRoute func(r Route) (string, []string, error) // GetDefinitionName returns a friendly name for a definition base on the serving path. parameter `name` is the full name of the definition. // It is an optional function to customize model names. GetDefinitionName func(name string) (string, spec.Extensions) // PostProcessSpec runs after the spec is ready to serve. It allows a final modification to the spec before serving. PostProcessSpec func(*spec.Swagger) (*spec.Swagger, error) // SecurityDefinitions is list of all security definitions for OpenAPI service. If this is not nil, the user of config // is responsible to provide DefaultSecurity and (maybe) add unauthorized response to CommonResponses. SecurityDefinitions *spec.SecurityDefinitions // DefaultSecurity for all operations. This will pass as spec.SwaggerProps.Security to OpenAPI. // For most cases, this will be list of acceptable definitions in SecurityDefinitions. DefaultSecurity []map[string][]string } // OpenAPIV3Config is set of configuration for OpenAPI V3 spec generation. type OpenAPIV3Config struct { // Info is general information about the API. Info *spec.Info // DefaultResponse will be used if an operation does not have any responses listed. It // will show up as ... "responses" : {"default" : $DefaultResponse} in the spec. DefaultResponse *spec3.Response // ResponseDefinitions will be added to responses component. This is an object // that holds responses that can be used across operations. ResponseDefinitions map[string]*spec3.Response // CommonResponses will be added as a response to all operation specs. This is a good place to add common // responses such as authorization failed. CommonResponses map[int]*spec3.Response // List of webservice's path prefixes to ignore IgnorePrefixes []string // OpenAPIDefinitions should provide definition for all models used by routes. Failure to provide this map // or any of the models will result in spec generation failure. // One of GetDefinitions or Definitions must be defined to generate a spec. GetDefinitions GetOpenAPIDefinitions // Provides the definition for all models used by routes. One of GetDefinitions or Definitions must be defined to generate a spec. // This takes precedent over the GetDefinitions function Definitions map[string]OpenAPIDefinition // GetOperationIDAndTags returns operation id and tags for a restful route. It is an optional function to customize operation IDs. // // Deprecated: GetOperationIDAndTagsFromRoute should be used instead. This cannot be specified if using the new Route // interface set of funcs. GetOperationIDAndTags func(r *restful.Route) (string, []string, error) // GetOperationIDAndTagsFromRoute returns operation id and tags for a Route. It is an optional function to customize operation IDs. GetOperationIDAndTagsFromRoute func(r Route) (string, []string, error) // GetDefinitionName returns a friendly name for a definition base on the serving path. parameter `name` is the full name of the definition. // It is an optional function to customize model names. GetDefinitionName func(name string) (string, spec.Extensions) // PostProcessSpec runs after the spec is ready to serve. It allows a final modification to the spec before serving. PostProcessSpec func(*spec3.OpenAPI) (*spec3.OpenAPI, error) // SecuritySchemes is list of all security schemes for OpenAPI service. SecuritySchemes spec3.SecuritySchemes // DefaultSecurity for all operations. DefaultSecurity []map[string][]string } type typeInfo struct { name string format string zero interface{} } var schemaTypeFormatMap = map[string]typeInfo{ "uint": {"integer", "int32", 0.}, "uint8": {"integer", "byte", 0.}, "uint16": {"integer", "int32", 0.}, "uint32": {"integer", "int64", 0.}, "uint64": {"integer", "int64", 0.}, "int": {"integer", "int32", 0.}, "int8": {"integer", "byte", 0.}, "int16": {"integer", "int32", 0.}, "int32": {"integer", "int32", 0.}, "int64": {"integer", "int64", 0.}, "byte": {"integer", "byte", 0}, "float64": {"number", "double", 0.}, "float32": {"number", "float", 0.}, "bool": {"boolean", "", false}, "time.Time": {"string", "date-time", ""}, "string": {"string", "", ""}, "integer": {"integer", "", 0.}, "number": {"number", "", 0.}, "boolean": {"boolean", "", false}, "[]byte": {"string", "byte", ""}, // base64 encoded characters "interface{}": {"object", "", interface{}(nil)}, } // This function is a reference for converting go (or any custom type) to a simple open API type,format pair. There are // two ways to customize spec for a type. If you add it here, a type will be converted to a simple type and the type // comment (the comment that is added before type definition) will be lost. The spec will still have the property // comment. The second way is to implement OpenAPIDefinitionGetter interface. That function can customize the spec (so // the spec does not need to be simple type,format) or can even return a simple type,format (e.g. IntOrString). For simple // type formats, the benefit of adding OpenAPIDefinitionGetter interface is to keep both type and property documentation. // Example: // // type Sample struct { // ... // // port of the server // port IntOrString // ... // } // // // IntOrString documentation... // type IntOrString { ... } // // Adding IntOrString to this function: // // "port" : { // format: "string", // type: "int-or-string", // Description: "port of the server" // } // // Implement OpenAPIDefinitionGetter for IntOrString: // // "port" : { // $Ref: "#/definitions/IntOrString" // Description: "port of the server" // } // // ... // definitions: // // { // "IntOrString": { // format: "string", // type: "int-or-string", // Description: "IntOrString documentation..." // new // } // } func OpenAPITypeFormat(typeName string) (string, string) { mapped, ok := schemaTypeFormatMap[typeName] if !ok { return "", "" } return mapped.name, mapped.format } // Returns the zero-value for the given type along with true if the type // could be found. func OpenAPIZeroValue(typeName string) (interface{}, bool) { mapped, ok := schemaTypeFormatMap[typeName] if !ok { return nil, false } return mapped.zero, true } func EscapeJsonPointer(p string) string { // Escaping reference name using rfc6901 p = strings.Replace(p, "~", "~0", -1) p = strings.Replace(p, "/", "~1", -1) return p } func EmbedOpenAPIDefinitionIntoV2Extension(main OpenAPIDefinition, embedded OpenAPIDefinition) OpenAPIDefinition { if main.Schema.Extensions == nil { main.Schema.Extensions = make(map[string]interface{}) } main.Schema.Extensions[ExtensionV2Schema] = embedded.Schema return main } // GenerateOpenAPIV3OneOfSchema generate the set of schemas that MUST be assigned to SchemaProps.OneOf func GenerateOpenAPIV3OneOfSchema(types []string) (oneOf []spec.Schema) { for _, t := range types { oneOf = append(oneOf, spec.Schema{SchemaProps: spec.SchemaProps{Type: []string{t}}}) } return } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/common/doc.go000066400000000000000000000012571453663023200235700ustar00rootroot00000000000000/* Copyright 2016 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ // package common holds shared code and types between open API code // generator and spec generator. package common golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/common/interfaces.go000066400000000000000000000060161453663023200251440ustar00rootroot00000000000000package common // RouteContainer is the entrypoint for a service, which may contain multiple // routes under a common path with a common set of path parameters. type RouteContainer interface { // RootPath is the path that all contained routes are nested under. RootPath() string // PathParameters are common parameters defined in the root path. PathParameters() []Parameter // Routes are all routes exposed under the root path. Routes() []Route } // Route is a logical endpoint of a service. type Route interface { // Method defines the HTTP Method. Method() string // Path defines the route's endpoint. Path() string // OperationName defines a machine-readable ID for the route. OperationName() string // Parameters defines the list of accepted parameters. Parameters() []Parameter // Description is a human-readable route description. Description() string // Consumes defines the consumed content-types. Consumes() []string // Produces defines the produced content-types. Produces() []string // Metadata allows adding extensions to the generated spec. Metadata() map[string]interface{} // RequestPayloadSample defines an example request payload. Can return nil. RequestPayloadSample() interface{} // ResponsePayloadSample defines an example response payload. Can return nil. ResponsePayloadSample() interface{} // StatusCodeResponses defines a mapping of HTTP Status Codes to the specific response(s). // Multiple responses with the same HTTP Status Code are acceptable. StatusCodeResponses() []StatusCodeResponse } // StatusCodeResponse is an explicit response type with an HTTP Status Code. type StatusCodeResponse interface { // Code defines the HTTP Status Code. Code() int // Message returns the human-readable message. Message() string // Model defines an example payload for this response. Model() interface{} } // Parameter is a Route parameter. type Parameter interface { // Name defines the unique-per-route identifier. Name() string // Description is the human-readable description of the param. Description() string // Required defines if this parameter must be provided. Required() bool // Kind defines the type of the parameter itself. Kind() ParameterKind // DataType defines the type of data the parameter carries. DataType() string // AllowMultiple defines if more than one value can be supplied for the parameter. AllowMultiple() bool } // ParameterKind is an enum of route parameter types. type ParameterKind int const ( // PathParameterKind indicates the request parameter type is "path". PathParameterKind = ParameterKind(iota) // QueryParameterKind indicates the request parameter type is "query". QueryParameterKind // BodyParameterKind indicates the request parameter type is "body". BodyParameterKind // HeaderParameterKind indicates the request parameter type is "header". HeaderParameterKind // FormParameterKind indicates the request parameter type is "form". FormParameterKind // UnknownParameterKind indicates the request parameter type has not been specified. UnknownParameterKind ) golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/common/restfuladapter/000077500000000000000000000000001453663023200255145ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/common/restfuladapter/adapter.go000066400000000000000000000006571453663023200274730ustar00rootroot00000000000000package restfuladapter import ( "github.com/emicklei/go-restful/v3" "k8s.io/kube-openapi/pkg/common" ) // AdaptWebServices adapts a slice of restful.WebService into the common interfaces. func AdaptWebServices(webServices []*restful.WebService) []common.RouteContainer { var containers []common.RouteContainer for _, ws := range webServices { containers = append(containers, &WebServiceAdapter{ws}) } return containers } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/common/restfuladapter/param_adapter.go000066400000000000000000000022271453663023200306460ustar00rootroot00000000000000package restfuladapter import ( "encoding/json" "github.com/emicklei/go-restful/v3" "k8s.io/kube-openapi/pkg/common" ) var _ common.Parameter = &ParamAdapter{} type ParamAdapter struct { Param *restful.Parameter } func (r *ParamAdapter) MarshalJSON() ([]byte, error) { return json.Marshal(r.Param) } func (r *ParamAdapter) Name() string { return r.Param.Data().Name } func (r *ParamAdapter) Description() string { return r.Param.Data().Description } func (r *ParamAdapter) Required() bool { return r.Param.Data().Required } func (r *ParamAdapter) Kind() common.ParameterKind { switch r.Param.Kind() { case restful.PathParameterKind: return common.PathParameterKind case restful.QueryParameterKind: return common.QueryParameterKind case restful.BodyParameterKind: return common.BodyParameterKind case restful.HeaderParameterKind: return common.HeaderParameterKind case restful.FormParameterKind: return common.FormParameterKind default: return common.UnknownParameterKind } } func (r *ParamAdapter) DataType() string { return r.Param.Data().DataType } func (r *ParamAdapter) AllowMultiple() bool { return r.Param.Data().AllowMultiple } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/common/restfuladapter/response_error_adapter.go000066400000000000000000000010251453663023200326100ustar00rootroot00000000000000package restfuladapter import ( "github.com/emicklei/go-restful/v3" "k8s.io/kube-openapi/pkg/common" ) var _ common.StatusCodeResponse = &ResponseErrorAdapter{} // ResponseErrorAdapter adapts a restful.ResponseError to common.StatusCodeResponse. type ResponseErrorAdapter struct { Err *restful.ResponseError } func (r *ResponseErrorAdapter) Message() string { return r.Err.Message } func (r *ResponseErrorAdapter) Model() interface{} { return r.Err.Model } func (r *ResponseErrorAdapter) Code() int { return r.Err.Code } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/common/restfuladapter/route_adapter.go000066400000000000000000000027501453663023200307050ustar00rootroot00000000000000package restfuladapter import ( "github.com/emicklei/go-restful/v3" "k8s.io/kube-openapi/pkg/common" ) var _ common.Route = &RouteAdapter{} // RouteAdapter adapts a restful.Route to common.Route. type RouteAdapter struct { Route *restful.Route } func (r *RouteAdapter) StatusCodeResponses() []common.StatusCodeResponse { // go-restful uses the ResponseErrors field to contain both error and regular responses. var responses []common.StatusCodeResponse for _, res := range r.Route.ResponseErrors { localRes := res responses = append(responses, &ResponseErrorAdapter{&localRes}) } return responses } func (r *RouteAdapter) OperationName() string { return r.Route.Operation } func (r *RouteAdapter) Method() string { return r.Route.Method } func (r *RouteAdapter) Path() string { return r.Route.Path } func (r *RouteAdapter) Parameters() []common.Parameter { var params []common.Parameter for _, rParam := range r.Route.ParameterDocs { params = append(params, &ParamAdapter{rParam}) } return params } func (r *RouteAdapter) Description() string { return r.Route.Doc } func (r *RouteAdapter) Consumes() []string { return r.Route.Consumes } func (r *RouteAdapter) Produces() []string { return r.Route.Produces } func (r *RouteAdapter) Metadata() map[string]interface{} { return r.Route.Metadata } func (r *RouteAdapter) RequestPayloadSample() interface{} { return r.Route.ReadSample } func (r *RouteAdapter) ResponsePayloadSample() interface{} { return r.Route.WriteSample } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/common/restfuladapter/webservice_adapter.go000066400000000000000000000015011453663023200316760ustar00rootroot00000000000000package restfuladapter import ( "github.com/emicklei/go-restful/v3" "k8s.io/kube-openapi/pkg/common" ) var _ common.RouteContainer = &WebServiceAdapter{} // WebServiceAdapter adapts a restful.WebService to common.RouteContainer. type WebServiceAdapter struct { WebService *restful.WebService } func (r *WebServiceAdapter) RootPath() string { return r.WebService.RootPath() } func (r *WebServiceAdapter) PathParameters() []common.Parameter { var params []common.Parameter for _, rParam := range r.WebService.PathParameters() { params = append(params, &ParamAdapter{rParam}) } return params } func (r *WebServiceAdapter) Routes() []common.Route { var routes []common.Route for _, rRoute := range r.WebService.Routes() { localRoute := rRoute routes = append(routes, &RouteAdapter{&localRoute}) } return routes } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/000077500000000000000000000000001453663023200233505ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/README.md000066400000000000000000000033331453663023200246310ustar00rootroot00000000000000# Generate OpenAPI definitions - To generate definition for a specific type or package add "+k8s:openapi-gen=true" tag to the type/package comment lines. - To exclude a type or a member from a tagged package/type, add "+k8s:openapi-gen=false" tag to the comment lines. # OpenAPI Extensions OpenAPI spec can have extensions on types. To define one or more extensions on a type or its member add `+k8s:openapi-gen=x-kubernetes-$NAME:$VALUE` to the comment lines before type/member. A type/member can have multiple extensions. The rest of the line in the comment will be used as $VALUE so there is no need to escape or quote the value string. Extensions can be used to pass more information to client generators or documentation generators. For example a type might have a friendly name to be displayed in documentation or being used in a client's fluent interface. # Custom OpenAPI type definitions Custom types which otherwise don't map directly to OpenAPI can override their OpenAPI definition by implementing a function named "OpenAPIDefinition" with the following signature: ```go import openapi "k8s.io/kube-openapi/pkg/common" // ... type Time struct { time.Time } func (_ Time) OpenAPIDefinition() openapi.OpenAPIDefinition { return openapi.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"string"}, Format: "date-time", }, }, } } ``` Alternatively, the type can avoid the "openapi" import by defining the following methods. The following example produces the same OpenAPI definition as the example above: ```go func (_ Time) OpenAPISchemaType() []string { return []string{"string"} } func (_ Time) OpenAPISchemaFormat() string { return "date-time" } ``` golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/api_linter.go000066400000000000000000000137061453663023200260340ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package generators import ( "bytes" "fmt" "io" "os" "sort" "k8s.io/kube-openapi/pkg/generators/rules" "k8s.io/gengo/generator" "k8s.io/gengo/types" "k8s.io/klog/v2" ) const apiViolationFileType = "api-violation" type apiViolationFile struct { // Since our file actually is unrelated to the package structure, use a // path that hasn't been mangled by the framework. unmangledPath string } func (a apiViolationFile) AssembleFile(f *generator.File, path string) error { path = a.unmangledPath klog.V(2).Infof("Assembling file %q", path) if path == "-" { _, err := io.Copy(os.Stdout, &f.Body) return err } output, err := os.Create(path) if err != nil { return err } defer output.Close() _, err = io.Copy(output, &f.Body) return err } func (a apiViolationFile) VerifyFile(f *generator.File, path string) error { if path == "-" { // Nothing to verify against. return nil } path = a.unmangledPath formatted := f.Body.Bytes() existing, err := os.ReadFile(path) if err != nil { return fmt.Errorf("unable to read file %q for comparison: %v", path, err) } if bytes.Compare(formatted, existing) == 0 { return nil } // Be nice and find the first place where they differ // (Copied from gengo's default file type) i := 0 for i < len(formatted) && i < len(existing) && formatted[i] == existing[i] { i++ } eDiff, fDiff := existing[i:], formatted[i:] if len(eDiff) > 100 { eDiff = eDiff[:100] } if len(fDiff) > 100 { fDiff = fDiff[:100] } return fmt.Errorf("output for %q differs; first existing/expected diff: \n %q\n %q", path, string(eDiff), string(fDiff)) } func newAPIViolationGen() *apiViolationGen { return &apiViolationGen{ linter: newAPILinter(), } } type apiViolationGen struct { generator.DefaultGen linter *apiLinter } func (v *apiViolationGen) FileType() string { return apiViolationFileType } func (v *apiViolationGen) Filename() string { return "this file is ignored by the file assembler" } func (v *apiViolationGen) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { klog.V(5).Infof("validating API rules for type %v", t) if err := v.linter.validate(t); err != nil { return err } return nil } // Finalize prints the API rule violations to report file (if specified from // arguments) or stdout (default) func (v *apiViolationGen) Finalize(c *generator.Context, w io.Writer) error { // NOTE: we don't return error here because we assume that the report file will // get evaluated afterwards to determine if error should be raised. For example, // you can have make rules that compare the report file with existing known // violations (whitelist) and determine no error if no change is detected. v.linter.report(w) return nil } // apiLinter is the framework hosting multiple API rules and recording API rule // violations type apiLinter struct { // API rules that implement APIRule interface and output API rule violations rules []APIRule violations []apiViolation } // newAPILinter creates an apiLinter object with API rules in package rules. Please // add APIRule here when new API rule is implemented. func newAPILinter() *apiLinter { return &apiLinter{ rules: []APIRule{ &rules.NamesMatch{}, &rules.OmitEmptyMatchCase{}, &rules.ListTypeMissing{}, }, } } // apiViolation uniquely identifies single API rule violation type apiViolation struct { // Name of rule from APIRule.Name() rule string packageName string typeName string // Optional: name of field that violates API rule. Empty fieldName implies that // the entire type violates the rule. field string } // apiViolations implements sort.Interface for []apiViolation based on the fields: rule, // packageName, typeName and field. type apiViolations []apiViolation func (a apiViolations) Len() int { return len(a) } func (a apiViolations) Swap(i, j int) { a[i], a[j] = a[j], a[i] } func (a apiViolations) Less(i, j int) bool { if a[i].rule != a[j].rule { return a[i].rule < a[j].rule } if a[i].packageName != a[j].packageName { return a[i].packageName < a[j].packageName } if a[i].typeName != a[j].typeName { return a[i].typeName < a[j].typeName } return a[i].field < a[j].field } // APIRule is the interface for validating API rule on Go types type APIRule interface { // Validate evaluates API rule on type t and returns a list of field names in // the type that violate the rule. Empty field name [""] implies the entire // type violates the rule. Validate(t *types.Type) ([]string, error) // Name returns the name of APIRule Name() string } // validate runs all API rules on type t and records any API rule violation func (l *apiLinter) validate(t *types.Type) error { for _, r := range l.rules { klog.V(5).Infof("validating API rule %v for type %v", r.Name(), t) fields, err := r.Validate(t) if err != nil { return err } for _, field := range fields { l.violations = append(l.violations, apiViolation{ rule: r.Name(), packageName: t.Name.Package, typeName: t.Name.Name, field: field, }) } } return nil } // report prints any API rule violation to writer w and returns error if violation exists func (l *apiLinter) report(w io.Writer) error { sort.Sort(apiViolations(l.violations)) for _, v := range l.violations { fmt.Fprintf(w, "API rule violation: %s,%s,%s,%s\n", v.rule, v.packageName, v.typeName, v.field) } if len(l.violations) > 0 { return fmt.Errorf("API rule violations exist") } return nil } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/config.go000066400000000000000000000047351453663023200251550ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package generators import ( "fmt" "path/filepath" "k8s.io/gengo/args" "k8s.io/gengo/generator" "k8s.io/gengo/namer" "k8s.io/gengo/types" "k8s.io/klog/v2" generatorargs "k8s.io/kube-openapi/cmd/openapi-gen/args" ) type identityNamer struct{} func (_ identityNamer) Name(t *types.Type) string { return t.Name.String() } var _ namer.Namer = identityNamer{} // NameSystems returns the name system used by the generators in this package. func NameSystems() namer.NameSystems { return namer.NameSystems{ "raw": namer.NewRawNamer("", nil), "sorting_namer": identityNamer{}, } } // DefaultNameSystem returns the default name system for ordering the types to be // processed by the generators in this package. func DefaultNameSystem() string { return "sorting_namer" } func Packages(context *generator.Context, arguments *args.GeneratorArgs) generator.Packages { boilerplate, err := arguments.LoadGoBoilerplate() if err != nil { klog.Fatalf("Failed loading boilerplate: %v", err) } header := append([]byte(fmt.Sprintf("// +build !%s\n\n", arguments.GeneratedBuildTag)), boilerplate...) header = append(header, []byte( ` // This file was autogenerated by openapi-gen. Do not edit it manually! `)...) reportPath := "-" if customArgs, ok := arguments.CustomArgs.(*generatorargs.CustomArgs); ok { reportPath = customArgs.ReportFilename } context.FileTypes[apiViolationFileType] = apiViolationFile{ unmangledPath: reportPath, } return generator.Packages{ &generator.DefaultPackage{ PackageName: filepath.Base(arguments.OutputPackagePath), PackagePath: arguments.OutputPackagePath, HeaderText: header, GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) { return []generator.Generator{ newOpenAPIGen( arguments.OutputFileBaseName, arguments.OutputPackagePath, ), newAPIViolationGen(), } }, FilterFunc: apiTypeFilterFunc, }, } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/enum.go000066400000000000000000000107621453663023200246510ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package generators import ( "fmt" "regexp" "sort" "strings" "k8s.io/gengo/generator" "k8s.io/gengo/types" ) const tagEnumType = "enum" const enumTypeDescriptionHeader = "Possible enum values:" type enumValue struct { Name string Value string Comment string } type enumType struct { Name types.Name Values []*enumValue } // enumMap is a map from the name to the matching enum type. type enumMap map[types.Name]*enumType type enumContext struct { enumTypes enumMap } func newEnumContext(c *generator.Context) *enumContext { return &enumContext{enumTypes: parseEnums(c)} } // EnumType checks and finds the enumType for a given type. // If the given type is a known enum type, returns the enumType, true // Otherwise, returns nil, false func (ec *enumContext) EnumType(t *types.Type) (enum *enumType, isEnum bool) { // if t is a pointer, use its underlying type instead if t.Kind == types.Pointer { t = t.Elem } enum, ok := ec.enumTypes[t.Name] return enum, ok } // ValueStrings returns all possible values of the enum type as strings // the results are sorted and quoted as Go literals. func (et *enumType) ValueStrings() []string { var values []string for _, value := range et.Values { // use "%q" format to generate a Go literal of the string const value values = append(values, fmt.Sprintf("%q", value.Value)) } sort.Strings(values) return values } // DescriptionLines returns a description of the enum in this format: // // Possible enum values: // - `"value1"` description 1 // - `"value2"` description 2 func (et *enumType) DescriptionLines() []string { if len(et.Values) == 0 { return nil } var lines []string for _, value := range et.Values { lines = append(lines, value.Description()) } sort.Strings(lines) // Prepend an empty string to initiate a new paragraph. return append([]string{"", enumTypeDescriptionHeader}, lines...) } func parseEnums(c *generator.Context) enumMap { // First, find the builtin "string" type stringType := c.Universe.Type(types.Name{Name: "string"}) // find all enum types. enumTypes := make(enumMap) for _, p := range c.Universe { for _, t := range p.Types { if isEnumType(stringType, t) { if _, ok := enumTypes[t.Name]; !ok { enumTypes[t.Name] = &enumType{ Name: t.Name, } } } } } // find all enum values from constants, and try to match each with its type. for _, p := range c.Universe { for _, c := range p.Constants { enumType := c.Underlying if _, ok := enumTypes[enumType.Name]; ok { value := &enumValue{ Name: c.Name.Name, Value: *c.ConstValue, Comment: strings.Join(c.CommentLines, " "), } enumTypes[enumType.Name].appendValue(value) } } } return enumTypes } func (et *enumType) appendValue(value *enumValue) { et.Values = append(et.Values, value) } // Description returns the description line for the enumValue // with the format: // - `"FooValue"` is the Foo value func (ev *enumValue) Description() string { comment := strings.TrimSpace(ev.Comment) // The comment should starts with the type name, trim it first. comment = strings.TrimPrefix(comment, ev.Name) // Trim the possible space after previous step. comment = strings.TrimSpace(comment) // The comment may be multiline, cascade all consecutive whitespaces. comment = whitespaceRegex.ReplaceAllString(comment, " ") return fmt.Sprintf(" - `%q` %s", ev.Value, comment) } // isEnumType checks if a given type is an enum by the definition // An enum type should be an alias of string and has tag '+enum' in its comment. // Additionally, pass the type of builtin 'string' to check against. func isEnumType(stringType *types.Type, t *types.Type) bool { return t.Kind == types.Alias && t.Underlying == stringType && hasEnumTag(t) } func hasEnumTag(t *types.Type) bool { return types.ExtractCommentTags("+", t.CommentLines)[tagEnumType] != nil } // whitespaceRegex is the regex for consecutive whitespaces. var whitespaceRegex = regexp.MustCompile(`\s+`) golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/enum_test.go000066400000000000000000000102401453663023200256770ustar00rootroot00000000000000/* Copyright 2022 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package generators import ( "reflect" "sort" "testing" "k8s.io/gengo/generator" "k8s.io/gengo/types" ) func TestParseEnums(t *testing.T) { for _, tc := range []struct { name string universe types.Universe expected map[string][]string }{ { name: "value in different package", universe: types.Universe{ "foo": &types.Package{ Name: "foo", Types: map[string]*types.Type{ "Foo": { Name: types.Name{ Package: "foo", Name: "Foo", }, Kind: types.Alias, Underlying: types.String, CommentLines: []string{"+enum"}, }, }, }, "bar": &types.Package{ Name: "bar", Constants: map[string]*types.Type{ "Bar": { Name: types.Name{ Package: "bar", Name: "Bar", }, Kind: types.Alias, Underlying: &types.Type{ Name: types.Name{ Package: "foo", Name: "Foo", }, }, ConstValue: &[]string{"bar"}[0], }, }, }, }, expected: map[string][]string{ "foo.Foo": {"bar"}, }, }, { name: "value in same package", universe: types.Universe{ "foo": &types.Package{ Name: "foo", Types: map[string]*types.Type{ "Foo": { Name: types.Name{ Package: "foo", Name: "Foo", }, Kind: types.Alias, Underlying: types.String, CommentLines: []string{"+enum"}, }, }, Constants: map[string]*types.Type{ "Bar": { Name: types.Name{ Package: "foo", Name: "Bar", }, Kind: types.Alias, Underlying: &types.Type{ Name: types.Name{ Package: "foo", Name: "Foo", }, }, ConstValue: &[]string{"bar"}[0], }, }, }, }, expected: map[string][]string{ "foo.Foo": {"bar"}, }, }, { name: "values in same and different packages", universe: types.Universe{ "foo": &types.Package{ Name: "foo", Types: map[string]*types.Type{ "Foo": { Name: types.Name{ Package: "foo", Name: "Foo", }, Kind: types.Alias, Underlying: types.String, CommentLines: []string{"+enum"}, }, }, Constants: map[string]*types.Type{ "FooSame": { Name: types.Name{ Package: "foo", Name: "FooSame", }, Kind: types.Alias, Underlying: &types.Type{ Name: types.Name{ Package: "foo", Name: "Foo", }, }, ConstValue: &[]string{"same"}[0], }, }, }, "bar": &types.Package{ Name: "bar", Constants: map[string]*types.Type{ "FooDifferent": { Name: types.Name{ Package: "bar", Name: "FooDifferent", }, Kind: types.Alias, Underlying: &types.Type{ Name: types.Name{ Package: "foo", Name: "Foo", }, }, ConstValue: &[]string{"different"}[0], }, }, }, }, expected: map[string][]string{ "foo.Foo": {"different", "same"}, }, }, } { t.Run(tc.name, func(t *testing.T) { enums := parseEnums(&generator.Context{Universe: tc.universe}) actual := make(map[string][]string) for _, enum := range enums { values := make([]string, len(enum.Values)) for i := range values { values[i] = enum.Values[i].Value } sort.Strings(values) actual[enum.Name.String()] = values } if !reflect.DeepEqual(tc.expected, actual) { t.Errorf("expected: %#v, got %#v", tc.expected, actual) } }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/extension.go000066400000000000000000000130071453663023200257140ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package generators import ( "fmt" "sort" "strings" "k8s.io/gengo/examples/set-gen/sets" "k8s.io/gengo/types" ) const extensionPrefix = "x-kubernetes-" // extensionAttributes encapsulates common traits for particular extensions. type extensionAttributes struct { xName string kind types.Kind allowedValues sets.String enforceArray bool } // Extension tag to openapi extension attributes var tagToExtension = map[string]extensionAttributes{ "patchMergeKey": { xName: "x-kubernetes-patch-merge-key", kind: types.Slice, }, "patchStrategy": { xName: "x-kubernetes-patch-strategy", kind: types.Slice, allowedValues: sets.NewString("merge", "retainKeys"), }, "listMapKey": { xName: "x-kubernetes-list-map-keys", kind: types.Slice, enforceArray: true, }, "listType": { xName: "x-kubernetes-list-type", kind: types.Slice, allowedValues: sets.NewString("atomic", "set", "map"), }, "mapType": { xName: "x-kubernetes-map-type", kind: types.Map, allowedValues: sets.NewString("atomic", "granular"), }, "structType": { xName: "x-kubernetes-map-type", kind: types.Struct, allowedValues: sets.NewString("atomic", "granular"), }, "validations": { xName: "x-kubernetes-validations", kind: types.Slice, }, } // Extension encapsulates information necessary to generate an OpenAPI extension. type extension struct { idlTag string // Example: listType xName string // Example: x-kubernetes-list-type values []string // Example: [atomic] } func (e extension) hasAllowedValues() bool { return tagToExtension[e.idlTag].allowedValues.Len() > 0 } func (e extension) allowedValues() sets.String { return tagToExtension[e.idlTag].allowedValues } func (e extension) hasKind() bool { return len(tagToExtension[e.idlTag].kind) > 0 } func (e extension) kind() types.Kind { return tagToExtension[e.idlTag].kind } func (e extension) validateAllowedValues() error { // allowedValues not set means no restrictions on values. if !e.hasAllowedValues() { return nil } // Check for missing value. if len(e.values) == 0 { return fmt.Errorf("%s needs a value, none given.", e.idlTag) } // For each extension value, validate that it is allowed. allowedValues := e.allowedValues() if !allowedValues.HasAll(e.values...) { return fmt.Errorf("%v not allowed for %s. Allowed values: %v", e.values, e.idlTag, allowedValues.List()) } return nil } func (e extension) validateType(kind types.Kind) error { // If this extension class has no kind, then don't validate the type. if !e.hasKind() { return nil } if kind != e.kind() { return fmt.Errorf("tag %s on type %v; only allowed on type %v", e.idlTag, kind, e.kind()) } return nil } func (e extension) hasMultipleValues() bool { return len(e.values) > 1 } func (e extension) isAlwaysArrayFormat() bool { return tagToExtension[e.idlTag].enforceArray } // Returns sorted list of map keys. Needed for deterministic testing. func sortedMapKeys(m map[string][]string) []string { keys := make([]string, len(m)) i := 0 for k := range m { keys[i] = k i++ } sort.Strings(keys) return keys } // Parses comments to return openapi extensions. Returns a list of // extensions which parsed correctly, as well as a list of the // parse errors. Validating extensions is performed separately. // NOTE: Non-empty errors does not mean extensions is empty. func parseExtensions(comments []string) ([]extension, []error) { extensions := []extension{} errors := []error{} // First, generate extensions from "+k8s:openapi-gen=x-kubernetes-*" annotations. values := getOpenAPITagValue(comments) for _, val := range values { // Example: x-kubernetes-member-tag:member_test if strings.HasPrefix(val, extensionPrefix) { parts := strings.SplitN(val, ":", 2) if len(parts) != 2 { errors = append(errors, fmt.Errorf("invalid extension value: %v", val)) continue } e := extension{ idlTag: tagName, // Example: k8s:openapi-gen xName: parts[0], // Example: x-kubernetes-member-tag values: []string{parts[1]}, // Example: member_test } extensions = append(extensions, e) } } // Next, generate extensions from "idlTags" (e.g. +listType) tagValues := types.ExtractCommentTags("+", comments) for _, idlTag := range sortedMapKeys(tagValues) { xAttrs, exists := tagToExtension[idlTag] if !exists { continue } values := tagValues[idlTag] e := extension{ idlTag: idlTag, // listType xName: xAttrs.xName, // x-kubernetes-list-type values: values, // [atomic] } extensions = append(extensions, e) } return extensions, errors } func validateMemberExtensions(extensions []extension, m *types.Member) []error { errors := []error{} for _, e := range extensions { if err := e.validateAllowedValues(); err != nil { errors = append(errors, err) } if err := e.validateType(m.Type.Kind); err != nil { errors = append(errors, err) } } return errors } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/extension_test.go000066400000000000000000000276041453663023200267630ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package generators import ( "reflect" "strings" "testing" "k8s.io/gengo/examples/set-gen/sets" "k8s.io/gengo/types" ) func TestSingleTagExtension(t *testing.T) { // Comments only contain one tag extension and one value. var tests = []struct { comments []string extensionTag string extensionName string extensionValues []string }{ { comments: []string{"+patchMergeKey=name"}, extensionTag: "patchMergeKey", extensionName: "x-kubernetes-patch-merge-key", extensionValues: []string{"name"}, }, { comments: []string{"+patchStrategy=merge"}, extensionTag: "patchStrategy", extensionName: "x-kubernetes-patch-strategy", extensionValues: []string{"merge"}, }, { comments: []string{"+listType=atomic"}, extensionTag: "listType", extensionName: "x-kubernetes-list-type", extensionValues: []string{"atomic"}, }, { comments: []string{"+listMapKey=port"}, extensionTag: "listMapKey", extensionName: "x-kubernetes-list-map-keys", extensionValues: []string{"port"}, }, { comments: []string{"+mapType=granular"}, extensionTag: "mapType", extensionName: "x-kubernetes-map-type", extensionValues: []string{"granular"}, }, { comments: []string{"+k8s:openapi-gen=x-kubernetes-member-tag:member_test"}, extensionTag: "k8s:openapi-gen", extensionName: "x-kubernetes-member-tag", extensionValues: []string{"member_test"}, }, { comments: []string{"+k8s:openapi-gen=x-kubernetes-member-tag:member_test:member_test2"}, extensionTag: "k8s:openapi-gen", extensionName: "x-kubernetes-member-tag", extensionValues: []string{"member_test:member_test2"}, }, { // Test that poorly formatted extensions aren't added. comments: []string{ "+k8s:openapi-gen=x-kubernetes-no-value", "+k8s:openapi-gen=x-kubernetes-member-success:success", "+k8s:openapi-gen=x-kubernetes-wrong-separator;error", }, extensionTag: "k8s:openapi-gen", extensionName: "x-kubernetes-member-success", extensionValues: []string{"success"}, }, } for _, test := range tests { extensions, _ := parseExtensions(test.comments) actual := extensions[0] if actual.idlTag != test.extensionTag { t.Errorf("Extension Tag: expected (%s), actual (%s)\n", test.extensionTag, actual.idlTag) } if actual.xName != test.extensionName { t.Errorf("Extension Name: expected (%s), actual (%s)\n", test.extensionName, actual.xName) } if !reflect.DeepEqual(actual.values, test.extensionValues) { t.Errorf("Extension Values: expected (%s), actual (%s)\n", test.extensionValues, actual.values) } if actual.hasMultipleValues() { t.Errorf("%s: hasMultipleValues() should be false\n", actual.xName) } } } func TestMultipleTagExtensions(t *testing.T) { var tests = []struct { comments []string extensionTag string extensionName string extensionValues []string }{ { comments: []string{ "+listMapKey=port", "+listMapKey=protocol", }, extensionTag: "listMapKey", extensionName: "x-kubernetes-list-map-keys", extensionValues: []string{"port", "protocol"}, }, } for _, test := range tests { extensions, errors := parseExtensions(test.comments) if len(errors) > 0 { t.Errorf("Unexpected errors: %v\n", errors) } actual := extensions[0] if actual.idlTag != test.extensionTag { t.Errorf("Extension Tag: expected (%s), actual (%s)\n", test.extensionTag, actual.idlTag) } if actual.xName != test.extensionName { t.Errorf("Extension Name: expected (%s), actual (%s)\n", test.extensionName, actual.xName) } if !reflect.DeepEqual(actual.values, test.extensionValues) { t.Errorf("Extension Values: expected (%s), actual (%s)\n", test.extensionValues, actual.values) } if !actual.hasMultipleValues() { t.Errorf("%s: hasMultipleValues() should be true\n", actual.xName) } } } func TestExtensionParseErrors(t *testing.T) { var tests = []struct { comments []string errorMessage string }{ { // Missing extension value should be an error. comments: []string{ "+k8s:openapi-gen=x-kubernetes-no-value", }, errorMessage: "x-kubernetes-no-value", }, { // Wrong separator should be an error. comments: []string{ "+k8s:openapi-gen=x-kubernetes-wrong-separator;error", }, errorMessage: "x-kubernetes-wrong-separator;error", }, } for _, test := range tests { _, errors := parseExtensions(test.comments) if len(errors) == 0 { t.Errorf("Expected errors while parsing: %v\n", test.comments) } error := errors[0] if !strings.Contains(error.Error(), test.errorMessage) { t.Errorf("Error (%v) should contain substring (%s)\n", error, test.errorMessage) } } } func TestExtensionAllowedValues(t *testing.T) { var methodTests = []struct { e extension allowedValues sets.String }{ { e: extension{ idlTag: "patchStrategy", }, allowedValues: sets.NewString("merge", "retainKeys"), }, { e: extension{ idlTag: "patchMergeKey", }, allowedValues: nil, }, { e: extension{ idlTag: "listType", }, allowedValues: sets.NewString("atomic", "set", "map"), }, { e: extension{ idlTag: "listMapKey", }, allowedValues: nil, }, { e: extension{ idlTag: "mapType", }, allowedValues: sets.NewString("atomic", "granular"), }, { e: extension{ idlTag: "structType", }, allowedValues: sets.NewString("atomic", "granular"), }, { e: extension{ idlTag: "k8s:openapi-gen", }, allowedValues: nil, }, } for _, test := range methodTests { if test.allowedValues != nil { if !test.e.hasAllowedValues() { t.Errorf("hasAllowedValues() expected (true), but received: false") } if !reflect.DeepEqual(test.allowedValues, test.e.allowedValues()) { t.Errorf("allowedValues() expected (%v), but received: %v", test.allowedValues, test.e.allowedValues()) } } if test.allowedValues == nil && test.e.hasAllowedValues() { t.Errorf("hasAllowedValues() expected (false), but received: true") } } var successTests = []struct { e extension }{ { e: extension{ idlTag: "patchStrategy", xName: "x-kubernetes-patch-strategy", values: []string{"merge"}, }, }, { // Validate multiple values. e: extension{ idlTag: "patchStrategy", xName: "x-kubernetes-patch-strategy", values: []string{"merge", "retainKeys"}, }, }, { e: extension{ idlTag: "patchMergeKey", xName: "x-kubernetes-patch-merge-key", values: []string{"key1"}, }, }, { e: extension{ idlTag: "listType", xName: "x-kubernetes-list-type", values: []string{"atomic"}, }, }, { e: extension{ idlTag: "mapType", xName: "x-kubernetes-map-type", values: []string{"atomic"}, }, }, { e: extension{ idlTag: "structType", xName: "x-kubernetes-map-type", values: []string{"granular"}, }, }, } for _, test := range successTests { actualErr := test.e.validateAllowedValues() if actualErr != nil { t.Errorf("Expected no error for (%v), but received: %v\n", test.e, actualErr) } } var failureTests = []struct { e extension }{ { // Every value must be allowed. e: extension{ idlTag: "patchStrategy", xName: "x-kubernetes-patch-strategy", values: []string{"disallowed", "merge"}, }, }, { e: extension{ idlTag: "patchStrategy", xName: "x-kubernetes-patch-strategy", values: []string{"foo"}, }, }, { e: extension{ idlTag: "listType", xName: "x-kubernetes-list-type", values: []string{"not-allowed"}, }, }, { e: extension{ idlTag: "mapType", xName: "x-kubernetes-map-type", values: []string{"something-pretty-wrong"}, }, }, { e: extension{ idlTag: "structType", xName: "x-kubernetes-map-type", values: []string{"not-quite-right"}, }, }, } for _, test := range failureTests { actualErr := test.e.validateAllowedValues() if actualErr == nil { t.Errorf("Expected error, but received none: %v\n", test.e) } } } func TestExtensionKind(t *testing.T) { var methodTests = []struct { e extension kind types.Kind }{ { e: extension{ idlTag: "patchStrategy", }, kind: types.Slice, }, { e: extension{ idlTag: "patchMergeKey", }, kind: types.Slice, }, { e: extension{ idlTag: "listType", }, kind: types.Slice, }, { e: extension{ idlTag: "mapType", }, kind: types.Map, }, { e: extension{ idlTag: "structType", }, kind: types.Struct, }, { e: extension{ idlTag: "listMapKey", }, kind: types.Slice, }, { e: extension{ idlTag: "k8s:openapi-gen", }, kind: "", }, } for _, test := range methodTests { if len(test.kind) > 0 { if !test.e.hasKind() { t.Errorf("%v: hasKind() expected (true), but received: false", test.e) } if test.kind != test.e.kind() { t.Errorf("%v: kind() expected (%v), but received: %v", test.e, test.kind, test.e.kind()) } } else { if test.e.hasKind() { t.Errorf("%v: hasKind() expected (false), but received: true", test.e) } } } } func TestValidateMemberExtensions(t *testing.T) { patchStrategyExtension := extension{ idlTag: "patchStrategy", xName: "x-kubernetes-patch-strategy", values: []string{"merge"}, } patchMergeKeyExtension := extension{ idlTag: "patchMergeKey", xName: "x-kubernetes-patch-merge-key", values: []string{"key1", "key2"}, } listTypeExtension := extension{ idlTag: "listType", xName: "x-kubernetes-list-type", values: []string{"atomic"}, } listMapKeysExtension := extension{ idlTag: "listMapKey", xName: "x-kubernetes-map-keys", values: []string{"key1"}, } genExtension := extension{ idlTag: "k8s:openapi-gen", xName: "x-kubernetes-member-type", values: []string{"value1"}, } sliceField := types.Member{ Name: "Containers", Type: &types.Type{ Kind: types.Slice, }, } mapField := types.Member{ Name: "Containers", Type: &types.Type{ Kind: types.Map, }, } var successTests = []struct { extensions []extension member types.Member }{ // Test single member extension { extensions: []extension{patchStrategyExtension}, member: sliceField, }, // Test multiple member extensions { extensions: []extension{ patchMergeKeyExtension, listTypeExtension, listMapKeysExtension, genExtension, // Should not generate errors during type validation }, member: sliceField, }, } for _, test := range successTests { errors := validateMemberExtensions(test.extensions, &test.member) if len(errors) > 0 { t.Errorf("validateMemberExtensions: %v should have produced no errors. Errors: %v", test.extensions, errors) } } var failureTests = []struct { extensions []extension member types.Member }{ // Test single member extension { extensions: []extension{patchStrategyExtension}, member: mapField, }, // Test multiple member extensions { extensions: []extension{ patchMergeKeyExtension, listTypeExtension, listMapKeysExtension, }, member: mapField, }, } for _, test := range failureTests { errors := validateMemberExtensions(test.extensions, &test.member) if len(errors) != len(test.extensions) { t.Errorf("validateMemberExtensions: %v should have produced all errors. Errors: %v", test.extensions, errors) } } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/openapi.go000066400000000000000000000633201453663023200253360ustar00rootroot00000000000000/* Copyright 2016 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package generators import ( "bytes" "encoding/json" "fmt" "io" "path/filepath" "reflect" "sort" "strings" defaultergen "k8s.io/gengo/examples/defaulter-gen/generators" "k8s.io/gengo/generator" "k8s.io/gengo/namer" "k8s.io/gengo/types" openapi "k8s.io/kube-openapi/pkg/common" "k8s.io/klog/v2" ) // This is the comment tag that carries parameters for open API generation. const tagName = "k8s:openapi-gen" const tagOptional = "optional" const tagDefault = "default" // Known values for the tag. const ( tagValueTrue = "true" tagValueFalse = "false" ) // Used for temporary validation of patch struct tags. // TODO: Remove patch struct tag validation because they we are now consuming OpenAPI on server. var tempPatchTags = [...]string{ "patchMergeKey", "patchStrategy", } func getOpenAPITagValue(comments []string) []string { return types.ExtractCommentTags("+", comments)[tagName] } func getSingleTagsValue(comments []string, tag string) (string, error) { tags, ok := types.ExtractCommentTags("+", comments)[tag] if !ok || len(tags) == 0 { return "", nil } if len(tags) > 1 { return "", fmt.Errorf("multiple values are not allowed for tag %s", tag) } return tags[0], nil } func hasOpenAPITagValue(comments []string, value string) bool { tagValues := getOpenAPITagValue(comments) for _, val := range tagValues { if val == value { return true } } return false } // hasOptionalTag returns true if the member has +optional in its comments or // omitempty in its json tags. func hasOptionalTag(m *types.Member) bool { hasOptionalCommentTag := types.ExtractCommentTags( "+", m.CommentLines)[tagOptional] != nil hasOptionalJsonTag := strings.Contains( reflect.StructTag(m.Tags).Get("json"), "omitempty") return hasOptionalCommentTag || hasOptionalJsonTag } func apiTypeFilterFunc(c *generator.Context, t *types.Type) bool { // There is a conflict between this codegen and codecgen, we should avoid types generated for codecgen if strings.HasPrefix(t.Name.Name, "codecSelfer") { return false } pkg := c.Universe.Package(t.Name.Package) if hasOpenAPITagValue(pkg.Comments, tagValueTrue) { return !hasOpenAPITagValue(t.CommentLines, tagValueFalse) } if hasOpenAPITagValue(t.CommentLines, tagValueTrue) { return true } return false } const ( specPackagePath = "k8s.io/kube-openapi/pkg/validation/spec" openAPICommonPackagePath = "k8s.io/kube-openapi/pkg/common" ) // openApiGen produces a file with auto-generated OpenAPI functions. type openAPIGen struct { generator.DefaultGen // TargetPackage is the package that will get GetOpenAPIDefinitions function returns all open API definitions. targetPackage string imports namer.ImportTracker } func newOpenAPIGen(sanitizedName string, targetPackage string) generator.Generator { return &openAPIGen{ DefaultGen: generator.DefaultGen{ OptionalName: sanitizedName, }, imports: generator.NewImportTrackerForPackage(targetPackage), targetPackage: targetPackage, } } const nameTmpl = "schema_$.type|private$" func (g *openAPIGen) Namers(c *generator.Context) namer.NameSystems { // Have the raw namer for this file track what it imports. return namer.NameSystems{ "raw": namer.NewRawNamer(g.targetPackage, g.imports), "private": &namer.NameStrategy{ Join: func(pre string, in []string, post string) string { return strings.Join(in, "_") }, PrependPackageNames: 4, // enough to fully qualify from k8s.io/api/... }, } } func (g *openAPIGen) isOtherPackage(pkg string) bool { if pkg == g.targetPackage { return false } if strings.HasSuffix(pkg, "\""+g.targetPackage+"\"") { return false } return true } func (g *openAPIGen) Imports(c *generator.Context) []string { importLines := []string{} for _, singleImport := range g.imports.ImportLines() { importLines = append(importLines, singleImport) } return importLines } func argsFromType(t *types.Type) generator.Args { return generator.Args{ "type": t, "ReferenceCallback": types.Ref(openAPICommonPackagePath, "ReferenceCallback"), "OpenAPIDefinition": types.Ref(openAPICommonPackagePath, "OpenAPIDefinition"), "SpecSchemaType": types.Ref(specPackagePath, "Schema"), } } func (g *openAPIGen) Init(c *generator.Context, w io.Writer) error { sw := generator.NewSnippetWriter(w, c, "$", "$") sw.Do("func GetOpenAPIDefinitions(ref $.ReferenceCallback|raw$) map[string]$.OpenAPIDefinition|raw$ {\n", argsFromType(nil)) sw.Do("return map[string]$.OpenAPIDefinition|raw${\n", argsFromType(nil)) for _, t := range c.Order { err := newOpenAPITypeWriter(sw, c).generateCall(t) if err != nil { return err } } sw.Do("}\n", nil) sw.Do("}\n\n", nil) return sw.Error() } func (g *openAPIGen) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { klog.V(5).Infof("generating for type %v", t) sw := generator.NewSnippetWriter(w, c, "$", "$") err := newOpenAPITypeWriter(sw, c).generate(t) if err != nil { return err } return sw.Error() } func getJsonTags(m *types.Member) []string { jsonTag := reflect.StructTag(m.Tags).Get("json") if jsonTag == "" { return []string{} } return strings.Split(jsonTag, ",") } func getReferableName(m *types.Member) string { jsonTags := getJsonTags(m) if len(jsonTags) > 0 { if jsonTags[0] == "-" { return "" } else { return jsonTags[0] } } else { return m.Name } } func shouldInlineMembers(m *types.Member) bool { jsonTags := getJsonTags(m) return len(jsonTags) > 1 && jsonTags[1] == "inline" } type openAPITypeWriter struct { *generator.SnippetWriter context *generator.Context refTypes map[string]*types.Type enumContext *enumContext GetDefinitionInterface *types.Type } func newOpenAPITypeWriter(sw *generator.SnippetWriter, c *generator.Context) openAPITypeWriter { return openAPITypeWriter{ SnippetWriter: sw, context: c, refTypes: map[string]*types.Type{}, enumContext: newEnumContext(c), } } func methodReturnsValue(mt *types.Type, pkg, name string) bool { if len(mt.Signature.Parameters) != 0 || len(mt.Signature.Results) != 1 { return false } r := mt.Signature.Results[0] return r.Name.Name == name && r.Name.Package == pkg } func hasOpenAPIV3DefinitionMethod(t *types.Type) bool { for mn, mt := range t.Methods { if mn != "OpenAPIV3Definition" { continue } return methodReturnsValue(mt, openAPICommonPackagePath, "OpenAPIDefinition") } return false } func hasOpenAPIDefinitionMethod(t *types.Type) bool { for mn, mt := range t.Methods { if mn != "OpenAPIDefinition" { continue } return methodReturnsValue(mt, openAPICommonPackagePath, "OpenAPIDefinition") } return false } func hasOpenAPIDefinitionMethods(t *types.Type) bool { var hasSchemaTypeMethod, hasOpenAPISchemaFormat bool for mn, mt := range t.Methods { switch mn { case "OpenAPISchemaType": hasSchemaTypeMethod = methodReturnsValue(mt, "", "[]string") case "OpenAPISchemaFormat": hasOpenAPISchemaFormat = methodReturnsValue(mt, "", "string") } } return hasSchemaTypeMethod && hasOpenAPISchemaFormat } func hasOpenAPIV3OneOfMethod(t *types.Type) bool { for mn, mt := range t.Methods { if mn != "OpenAPIV3OneOfTypes" { continue } return methodReturnsValue(mt, "", "[]string") } return false } // typeShortName returns short package name (e.g. the name x appears in package x definition) dot type name. func typeShortName(t *types.Type) string { return filepath.Base(t.Name.Package) + "." + t.Name.Name } func (g openAPITypeWriter) generateMembers(t *types.Type, required []string) ([]string, error) { var err error for t.Kind == types.Pointer { // fast-forward to effective type containing members t = t.Elem } for _, m := range t.Members { if hasOpenAPITagValue(m.CommentLines, tagValueFalse) { continue } if shouldInlineMembers(&m) { required, err = g.generateMembers(m.Type, required) if err != nil { return required, err } continue } name := getReferableName(&m) if name == "" { continue } if !hasOptionalTag(&m) { required = append(required, name) } if err = g.generateProperty(&m, t); err != nil { klog.Errorf("Error when generating: %v, %v\n", name, m) return required, err } } return required, nil } func (g openAPITypeWriter) generateCall(t *types.Type) error { // Only generate for struct type and ignore the rest switch t.Kind { case types.Struct: args := argsFromType(t) g.Do("\"$.$\": ", t.Name) hasV2Definition := hasOpenAPIDefinitionMethod(t) hasV2DefinitionTypeAndFormat := hasOpenAPIDefinitionMethods(t) hasV3Definition := hasOpenAPIV3DefinitionMethod(t) switch { case hasV2DefinitionTypeAndFormat: g.Do(nameTmpl+"(ref),\n", args) case hasV2Definition && hasV3Definition: g.Do("common.EmbedOpenAPIDefinitionIntoV2Extension($.type|raw${}.OpenAPIV3Definition(), $.type|raw${}.OpenAPIDefinition()),\n", args) case hasV2Definition: g.Do("$.type|raw${}.OpenAPIDefinition(),\n", args) case hasV3Definition: g.Do("$.type|raw${}.OpenAPIV3Definition(),\n", args) default: g.Do(nameTmpl+"(ref),\n", args) } } return g.Error() } func (g openAPITypeWriter) generate(t *types.Type) error { // Only generate for struct type and ignore the rest switch t.Kind { case types.Struct: hasV2Definition := hasOpenAPIDefinitionMethod(t) hasV2DefinitionTypeAndFormat := hasOpenAPIDefinitionMethods(t) hasV3OneOfTypes := hasOpenAPIV3OneOfMethod(t) hasV3Definition := hasOpenAPIV3DefinitionMethod(t) if hasV2Definition || (hasV3Definition && !hasV2DefinitionTypeAndFormat) { // already invoked directly return nil } args := argsFromType(t) g.Do("func "+nameTmpl+"(ref $.ReferenceCallback|raw$) $.OpenAPIDefinition|raw$ {\n", args) switch { case hasV2DefinitionTypeAndFormat && hasV3Definition: g.Do("return common.EmbedOpenAPIDefinitionIntoV2Extension($.type|raw${}.OpenAPIV3Definition(), $.OpenAPIDefinition|raw${\n"+ "Schema: spec.Schema{\n"+ "SchemaProps: spec.SchemaProps{\n", args) g.generateDescription(t.CommentLines) g.Do("Type:$.type|raw${}.OpenAPISchemaType(),\n"+ "Format:$.type|raw${}.OpenAPISchemaFormat(),\n"+ "},\n"+ "},\n"+ "})\n}\n\n", args) return nil case hasV2DefinitionTypeAndFormat && hasV3OneOfTypes: // generate v3 def. g.Do("return common.EmbedOpenAPIDefinitionIntoV2Extension($.OpenAPIDefinition|raw${\n"+ "Schema: spec.Schema{\n"+ "SchemaProps: spec.SchemaProps{\n", args) g.generateDescription(t.CommentLines) g.Do("OneOf:common.GenerateOpenAPIV3OneOfSchema($.type|raw${}.OpenAPIV3OneOfTypes()),\n"+ "Format:$.type|raw${}.OpenAPISchemaFormat(),\n"+ "},\n"+ "},\n"+ "},", args) // generate v2 def. g.Do("$.OpenAPIDefinition|raw${\n"+ "Schema: spec.Schema{\n"+ "SchemaProps: spec.SchemaProps{\n", args) g.generateDescription(t.CommentLines) g.Do("Type:$.type|raw${}.OpenAPISchemaType(),\n"+ "Format:$.type|raw${}.OpenAPISchemaFormat(),\n"+ "},\n"+ "},\n"+ "})\n}\n\n", args) return nil case hasV2DefinitionTypeAndFormat: g.Do("return $.OpenAPIDefinition|raw${\n"+ "Schema: spec.Schema{\n"+ "SchemaProps: spec.SchemaProps{\n", args) g.generateDescription(t.CommentLines) g.Do("Type:$.type|raw${}.OpenAPISchemaType(),\n"+ "Format:$.type|raw${}.OpenAPISchemaFormat(),\n"+ "},\n"+ "},\n"+ "}\n}\n\n", args) return nil case hasV3OneOfTypes: // having v3 oneOf types without custom v2 type or format does not make sense. return fmt.Errorf("type %q has v3 one of types but not v2 type or format", t.Name) } g.Do("return $.OpenAPIDefinition|raw${\nSchema: spec.Schema{\nSchemaProps: spec.SchemaProps{\n", args) g.generateDescription(t.CommentLines) g.Do("Type: []string{\"object\"},\n", nil) // write members into a temporary buffer, in order to postpone writing out the Properties field. We only do // that if it is not empty. propertiesBuf := bytes.Buffer{} bsw := g bsw.SnippetWriter = generator.NewSnippetWriter(&propertiesBuf, g.context, "$", "$") required, err := bsw.generateMembers(t, []string{}) if err != nil { return err } if propertiesBuf.Len() > 0 { g.Do("Properties: map[string]$.SpecSchemaType|raw${\n", args) g.Do(strings.Replace(propertiesBuf.String(), "$", "$\"$\"$", -1), nil) // escape $ (used as delimiter of the templates) g.Do("},\n", nil) } if len(required) > 0 { g.Do("Required: []string{\"$.$\"},\n", strings.Join(required, "\",\"")) } g.Do("},\n", nil) if err := g.generateStructExtensions(t); err != nil { return err } g.Do("},\n", nil) // Map order is undefined, sort them or we may get a different file generated each time. keys := []string{} for k := range g.refTypes { keys = append(keys, k) } sort.Strings(keys) deps := []string{} for _, k := range keys { v := g.refTypes[k] if t, _ := openapi.OpenAPITypeFormat(v.String()); t != "" { // This is a known type, we do not need a reference to it // Will eliminate special case of time.Time continue } deps = append(deps, k) } if len(deps) > 0 { g.Do("Dependencies: []string{\n", args) for _, k := range deps { g.Do("\"$.$\",", k) } g.Do("},\n", nil) } g.Do("}\n}\n\n", nil) } return nil } func (g openAPITypeWriter) generateStructExtensions(t *types.Type) error { extensions, errors := parseExtensions(t.CommentLines) // Initially, we will only log struct extension errors. if len(errors) > 0 { for _, e := range errors { klog.Errorf("[%s]: %s\n", t.String(), e) } } unions, errors := parseUnions(t) if len(errors) > 0 { for _, e := range errors { klog.Errorf("[%s]: %s\n", t.String(), e) } } // TODO(seans3): Validate struct extensions here. g.emitExtensions(extensions, unions) return nil } func (g openAPITypeWriter) generateMemberExtensions(m *types.Member, parent *types.Type) error { extensions, parseErrors := parseExtensions(m.CommentLines) validationErrors := validateMemberExtensions(extensions, m) errors := append(parseErrors, validationErrors...) // Initially, we will only log member extension errors. if len(errors) > 0 { errorPrefix := fmt.Sprintf("[%s] %s:", parent.String(), m.String()) for _, e := range errors { klog.V(2).Infof("%s %s\n", errorPrefix, e) } } g.emitExtensions(extensions, nil) return nil } func (g openAPITypeWriter) emitExtensions(extensions []extension, unions []union) { // If any extensions exist, then emit code to create them. if len(extensions) == 0 && len(unions) == 0 { return } g.Do("VendorExtensible: spec.VendorExtensible{\nExtensions: spec.Extensions{\n", nil) for _, extension := range extensions { g.Do("\"$.$\": ", extension.xName) if extension.hasMultipleValues() || extension.isAlwaysArrayFormat() { g.Do("[]interface{}{\n", nil) } for _, value := range extension.values { g.Do("\"$.$\",\n", value) } if extension.hasMultipleValues() || extension.isAlwaysArrayFormat() { g.Do("},\n", nil) } } if len(unions) > 0 { g.Do("\"x-kubernetes-unions\": []interface{}{\n", nil) for _, u := range unions { u.emit(g) } g.Do("},\n", nil) } g.Do("},\n},\n", nil) } // TODO(#44005): Move this validation outside of this generator (probably to policy verifier) func (g openAPITypeWriter) validatePatchTags(m *types.Member, parent *types.Type) error { // TODO: Remove patch struct tag validation because they we are now consuming OpenAPI on server. for _, tagKey := range tempPatchTags { structTagValue := reflect.StructTag(m.Tags).Get(tagKey) commentTagValue, err := getSingleTagsValue(m.CommentLines, tagKey) if err != nil { return err } if structTagValue != commentTagValue { return fmt.Errorf("Tags in comment and struct should match for member (%s) of (%s)", m.Name, parent.Name.String()) } } return nil } func defaultFromComments(comments []string, commentPath string, t *types.Type) (interface{}, *types.Name, error) { var tag string for { var err error tag, err = getSingleTagsValue(comments, tagDefault) if err != nil { return nil, nil, err } if t == nil || len(tag) > 0 { break } comments = t.CommentLines commentPath = t.Name.Package switch t.Kind { case types.Pointer: t = t.Elem case types.Alias: t = t.Underlying default: t = nil } } if tag == "" { return nil, nil, nil } var i interface{} if id, ok := defaultergen.ParseSymbolReference(tag, commentPath); ok { klog.Errorf("%v, %v", id, commentPath) return nil, &id, nil } else if err := json.Unmarshal([]byte(tag), &i); err != nil { return nil, nil, fmt.Errorf("failed to unmarshal default: %v", err) } return i, nil, nil } func implementsCustomUnmarshalling(t *types.Type) bool { switch t.Kind { case types.Pointer: unmarshaller, isUnmarshaller := t.Elem.Methods["UnmarshalJSON"] return isUnmarshaller && unmarshaller.Signature.Receiver.Kind == types.Pointer case types.Struct: _, isUnmarshaller := t.Methods["UnmarshalJSON"] return isUnmarshaller default: return false } } func mustEnforceDefault(t *types.Type, omitEmpty bool) (interface{}, error) { // Treat types with custom unmarshalling as a value // (Can be alias, struct, or pointer) if implementsCustomUnmarshalling(t) { // Since Go JSON deserializer always feeds `null` when present // to structs with custom UnmarshalJSON, the zero value for // these structs is also null. // // In general, Kubernetes API types with custom marshalling should // marshal their empty values to `null`. return nil, nil } switch t.Kind { case types.Alias: return mustEnforceDefault(t.Underlying, omitEmpty) case types.Pointer, types.Map, types.Slice, types.Array, types.Interface: return nil, nil case types.Struct: if len(t.Members) == 1 && t.Members[0].Embedded { // Treat a struct with a single embedded member the same as an alias return mustEnforceDefault(t.Members[0].Type, omitEmpty) } return map[string]interface{}{}, nil case types.Builtin: if !omitEmpty { if zero, ok := openapi.OpenAPIZeroValue(t.String()); ok { return zero, nil } else { return nil, fmt.Errorf("please add type %v to getOpenAPITypeFormat function", t) } } return nil, nil default: return nil, fmt.Errorf("not sure how to enforce default for %v", t.Kind) } } func (g openAPITypeWriter) generateDefault(comments []string, t *types.Type, omitEmpty bool, commentOwningType *types.Type) error { def, ref, err := defaultFromComments(comments, commentOwningType.Name.Package, t) if err != nil { return err } if enforced, err := mustEnforceDefault(t, omitEmpty); err != nil { return err } else if enforced != nil { if def == nil { def = enforced } else if !reflect.DeepEqual(def, enforced) { enforcedJson, _ := json.Marshal(enforced) return fmt.Errorf("invalid default value (%#v) for non-pointer/non-omitempty. If specified, must be: %v", def, string(enforcedJson)) } } if def != nil { g.Do("Default: $.$,\n", fmt.Sprintf("%#v", def)) } else if ref != nil { g.Do("Default: $.|raw$,\n", &types.Type{Name: *ref}) } return nil } func (g openAPITypeWriter) generateDescription(CommentLines []string) { var buffer bytes.Buffer delPrevChar := func() { if buffer.Len() > 0 { buffer.Truncate(buffer.Len() - 1) // Delete the last " " or "\n" } } for _, line := range CommentLines { // Ignore all lines after --- if line == "---" { break } line = strings.TrimRight(line, " ") leading := strings.TrimLeft(line, " ") switch { case len(line) == 0: // Keep paragraphs delPrevChar() buffer.WriteString("\n\n") case strings.HasPrefix(leading, "TODO"): // Ignore one line TODOs case strings.HasPrefix(leading, "+"): // Ignore instructions to go2idl default: if strings.HasPrefix(line, " ") || strings.HasPrefix(line, "\t") { delPrevChar() line = "\n" + line + "\n" // Replace it with newline. This is useful when we have a line with: "Example:\n\tJSON-something..." } else { line += " " } buffer.WriteString(line) } } postDoc := strings.TrimLeft(buffer.String(), "\n") postDoc = strings.TrimRight(postDoc, "\n") postDoc = strings.Replace(postDoc, "\\\"", "\"", -1) // replace user's \" to " postDoc = strings.Replace(postDoc, "\"", "\\\"", -1) // Escape " postDoc = strings.Replace(postDoc, "\n", "\\n", -1) postDoc = strings.Replace(postDoc, "\t", "\\t", -1) postDoc = strings.Trim(postDoc, " ") if postDoc != "" { g.Do("Description: \"$.$\",\n", postDoc) } } func (g openAPITypeWriter) generateProperty(m *types.Member, parent *types.Type) error { name := getReferableName(m) if name == "" { return nil } if err := g.validatePatchTags(m, parent); err != nil { return err } g.Do("\"$.$\": {\n", name) if err := g.generateMemberExtensions(m, parent); err != nil { return err } g.Do("SchemaProps: spec.SchemaProps{\n", nil) var extraComments []string if enumType, isEnum := g.enumContext.EnumType(m.Type); isEnum { extraComments = enumType.DescriptionLines() } g.generateDescription(append(m.CommentLines, extraComments...)) jsonTags := getJsonTags(m) if len(jsonTags) > 1 && jsonTags[1] == "string" { g.generateSimpleProperty("string", "") g.Do("},\n},\n", nil) return nil } omitEmpty := strings.Contains(reflect.StructTag(m.Tags).Get("json"), "omitempty") if err := g.generateDefault(m.CommentLines, m.Type, omitEmpty, parent); err != nil { return fmt.Errorf("failed to generate default in %v: %v: %v", parent, m.Name, err) } t := resolveAliasAndPtrType(m.Type) // If we can get a openAPI type and format for this type, we consider it to be simple property typeString, format := openapi.OpenAPITypeFormat(t.String()) if typeString != "" { g.generateSimpleProperty(typeString, format) if enumType, isEnum := g.enumContext.EnumType(m.Type); isEnum { // original type is an enum, add "Enum: " and the values g.Do("Enum: []interface{}{$.$},\n", strings.Join(enumType.ValueStrings(), ", ")) } g.Do("},\n},\n", nil) return nil } switch t.Kind { case types.Builtin: return fmt.Errorf("please add type %v to getOpenAPITypeFormat function", t) case types.Map: if err := g.generateMapProperty(t); err != nil { return fmt.Errorf("failed to generate map property in %v: %v: %v", parent, m.Name, err) } case types.Slice, types.Array: if err := g.generateSliceProperty(t); err != nil { return fmt.Errorf("failed to generate slice property in %v: %v: %v", parent, m.Name, err) } case types.Struct, types.Interface: g.generateReferenceProperty(t) default: return fmt.Errorf("cannot generate spec for type %v", t) } g.Do("},\n},\n", nil) return g.Error() } func (g openAPITypeWriter) generateSimpleProperty(typeString, format string) { g.Do("Type: []string{\"$.$\"},\n", typeString) g.Do("Format: \"$.$\",\n", format) } func (g openAPITypeWriter) generateReferenceProperty(t *types.Type) { g.refTypes[t.Name.String()] = t g.Do("Ref: ref(\"$.$\"),\n", t.Name.String()) } func resolveAliasAndPtrType(t *types.Type) *types.Type { var prev *types.Type for prev != t { prev = t if t.Kind == types.Alias { t = t.Underlying } if t.Kind == types.Pointer { t = t.Elem } } return t } func (g openAPITypeWriter) generateMapProperty(t *types.Type) error { keyType := resolveAliasAndPtrType(t.Key) elemType := resolveAliasAndPtrType(t.Elem) // According to OpenAPI examples, only map from string is supported if keyType.Name.Name != "string" { return fmt.Errorf("map with non-string keys are not supported by OpenAPI in %v", t) } g.Do("Type: []string{\"object\"},\n", nil) g.Do("AdditionalProperties: &spec.SchemaOrBool{\nAllows: true,\nSchema: &spec.Schema{\nSchemaProps: spec.SchemaProps{\n", nil) if err := g.generateDefault(t.Elem.CommentLines, t.Elem, false, t.Elem); err != nil { return err } typeString, format := openapi.OpenAPITypeFormat(elemType.String()) if typeString != "" { g.generateSimpleProperty(typeString, format) g.Do("},\n},\n},\n", nil) return nil } switch elemType.Kind { case types.Builtin: return fmt.Errorf("please add type %v to getOpenAPITypeFormat function", elemType) case types.Struct: g.generateReferenceProperty(elemType) case types.Slice, types.Array: if err := g.generateSliceProperty(elemType); err != nil { return err } case types.Map: if err := g.generateMapProperty(elemType); err != nil { return err } default: return fmt.Errorf("map Element kind %v is not supported in %v", elemType.Kind, t.Name) } g.Do("},\n},\n},\n", nil) return nil } func (g openAPITypeWriter) generateSliceProperty(t *types.Type) error { elemType := resolveAliasAndPtrType(t.Elem) g.Do("Type: []string{\"array\"},\n", nil) g.Do("Items: &spec.SchemaOrArray{\nSchema: &spec.Schema{\nSchemaProps: spec.SchemaProps{\n", nil) if err := g.generateDefault(t.Elem.CommentLines, t.Elem, false, t.Elem); err != nil { return err } typeString, format := openapi.OpenAPITypeFormat(elemType.String()) if typeString != "" { g.generateSimpleProperty(typeString, format) g.Do("},\n},\n},\n", nil) return nil } switch elemType.Kind { case types.Builtin: return fmt.Errorf("please add type %v to getOpenAPITypeFormat function", elemType) case types.Struct: g.generateReferenceProperty(elemType) case types.Slice, types.Array: if err := g.generateSliceProperty(elemType); err != nil { return err } case types.Map: if err := g.generateMapProperty(elemType); err != nil { return err } default: return fmt.Errorf("slice Element kind %v is not supported in %v", elemType.Kind, t) } g.Do("},\n},\n},\n", nil) return nil } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/openapi_test.go000066400000000000000000001253511453663023200264000ustar00rootroot00000000000000/* Copyright 2016 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package generators import ( "bytes" "fmt" "path/filepath" "strings" "testing" "go/format" "github.com/stretchr/testify/assert" "k8s.io/gengo/generator" "k8s.io/gengo/namer" "k8s.io/gengo/parser" "k8s.io/gengo/types" ) func construct(t *testing.T, files map[string]string, testNamer namer.Namer) (*parser.Builder, types.Universe, []*types.Type) { b := parser.New() for name, src := range files { if err := b.AddFileForTest(filepath.Dir(name), name, []byte(src)); err != nil { t.Fatal(err) } } u, err := b.FindTypes() if err != nil { t.Fatal(err) } orderer := namer.Orderer{Namer: testNamer} o := orderer.OrderUniverse(u) return b, u, o } func testOpenAPITypeWriter(t *testing.T, code string) (error, error, *assert.Assertions, *bytes.Buffer, *bytes.Buffer, []string) { assert := assert.New(t) var testFiles = map[string]string{ "base/foo/bar.go": code, } outputPackage := "base/output" imports := generator.NewImportTrackerForPackage(outputPackage) rawNamer := namer.NewRawNamer(outputPackage, imports) namers := namer.NameSystems{ "raw": rawNamer, "private": &namer.NameStrategy{ Join: func(pre string, in []string, post string) string { return strings.Join(in, "_") }, PrependPackageNames: 4, // enough to fully qualify from k8s.io/api/... }, } builder, universe, _ := construct(t, testFiles, rawNamer) context, err := generator.NewContext(builder, namers, "raw") if err != nil { t.Fatal(err) } blahT := universe.Type(types.Name{Package: "base/foo", Name: "Blah"}) callBuffer := &bytes.Buffer{} callSW := generator.NewSnippetWriter(callBuffer, context, "$", "$") callError := newOpenAPITypeWriter(callSW, context).generateCall(blahT) funcBuffer := &bytes.Buffer{} funcSW := generator.NewSnippetWriter(funcBuffer, context, "$", "$") funcError := newOpenAPITypeWriter(funcSW, context).generate(blahT) return callError, funcError, assert, callBuffer, funcBuffer, imports.ImportLines() } func TestSimple(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo // Blah is a test. // +k8s:openapi-gen=true // +k8s:openapi-gen=x-kubernetes-type-tag:type_test type Blah struct { // A simple string String string // A simple int Int int `+"`"+`json:",omitempty"`+"`"+` // An int considered string simple int IntString int `+"`"+`json:",string"`+"`"+` // A simple int64 Int64 int64 // A simple int32 Int32 int32 // A simple int16 Int16 int16 // A simple int8 Int8 int8 // A simple int Uint uint // A simple int64 Uint64 uint64 // A simple int32 Uint32 uint32 // A simple int16 Uint16 uint16 // A simple int8 Uint8 uint8 // A simple byte Byte byte // A simple boolean Bool bool // A simple float64 Float64 float64 // A simple float32 Float32 float32 // a base64 encoded characters ByteArray []byte // a member with an extension // +k8s:openapi-gen=x-kubernetes-member-tag:member_test WithExtension string // a member with struct tag as extension // +patchStrategy=merge // +patchMergeKey=pmk WithStructTagExtension string `+"`"+`patchStrategy:"merge" patchMergeKey:"pmk"`+"`"+` // a member with a list type // +listType=atomic // +default=["foo", "bar"] WithListType []string // a member with a map type // +listType=atomic // +default={"foo": "bar", "fizz": "buzz"} Map map[string]string // a member with a string pointer // +default="foo" StringPointer *string // an int member with a default // +default=1 OmittedInt int `+"`"+`json:"omitted,omitempty"`+"`"+` } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": schema_base_foo_Blah(ref), `, callBuffer.String()) assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Blah is a test.", Type: []string{"object"}, Properties: map[string]spec.Schema{ "String": { SchemaProps: spec.SchemaProps{ Description: "A simple string", Default: "", Type: []string{"string"}, Format: "", }, }, "Int64": { SchemaProps: spec.SchemaProps{ Description: "A simple int64", Default: 0, Type: []string{"integer"}, Format: "int64", }, }, "Int32": { SchemaProps: spec.SchemaProps{ Description: "A simple int32", Default: 0, Type: []string{"integer"}, Format: "int32", }, }, "Int16": { SchemaProps: spec.SchemaProps{ Description: "A simple int16", Default: 0, Type: []string{"integer"}, Format: "int32", }, }, "Int8": { SchemaProps: spec.SchemaProps{ Description: "A simple int8", Default: 0, Type: []string{"integer"}, Format: "byte", }, }, "Uint": { SchemaProps: spec.SchemaProps{ Description: "A simple int", Default: 0, Type: []string{"integer"}, Format: "int32", }, }, "Uint64": { SchemaProps: spec.SchemaProps{ Description: "A simple int64", Default: 0, Type: []string{"integer"}, Format: "int64", }, }, "Uint32": { SchemaProps: spec.SchemaProps{ Description: "A simple int32", Default: 0, Type: []string{"integer"}, Format: "int64", }, }, "Uint16": { SchemaProps: spec.SchemaProps{ Description: "A simple int16", Default: 0, Type: []string{"integer"}, Format: "int32", }, }, "Uint8": { SchemaProps: spec.SchemaProps{ Description: "A simple int8", Default: 0, Type: []string{"integer"}, Format: "byte", }, }, "Byte": { SchemaProps: spec.SchemaProps{ Description: "A simple byte", Default: 0, Type: []string{"integer"}, Format: "byte", }, }, "Bool": { SchemaProps: spec.SchemaProps{ Description: "A simple boolean", Default: false, Type: []string{"boolean"}, Format: "", }, }, "Float64": { SchemaProps: spec.SchemaProps{ Description: "A simple float64", Default: 0, Type: []string{"number"}, Format: "double", }, }, "Float32": { SchemaProps: spec.SchemaProps{ Description: "A simple float32", Default: 0, Type: []string{"number"}, Format: "float", }, }, "ByteArray": { SchemaProps: spec.SchemaProps{ Description: "a base64 encoded characters", Type: []string{"string"}, Format: "byte", }, }, "WithExtension": { VendorExtensible: spec.VendorExtensible{ Extensions: spec.Extensions{ "x-kubernetes-member-tag": "member_test", }, }, SchemaProps: spec.SchemaProps{ Description: "a member with an extension", Default: "", Type: []string{"string"}, Format: "", }, }, "WithStructTagExtension": { VendorExtensible: spec.VendorExtensible{ Extensions: spec.Extensions{ "x-kubernetes-patch-merge-key": "pmk", "x-kubernetes-patch-strategy": "merge", }, }, SchemaProps: spec.SchemaProps{ Description: "a member with struct tag as extension", Default: "", Type: []string{"string"}, Format: "", }, }, "WithListType": { VendorExtensible: spec.VendorExtensible{ Extensions: spec.Extensions{ "x-kubernetes-list-type": "atomic", }, }, SchemaProps: spec.SchemaProps{ Description: "a member with a list type", Default: []interface {}{"foo", "bar"}, Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Default: "", Type: []string{"string"}, Format: "", }, }, }, }, }, "Map": { VendorExtensible: spec.VendorExtensible{ Extensions: spec.Extensions{ "x-kubernetes-list-type": "atomic", }, }, SchemaProps: spec.SchemaProps{ Description: "a member with a map type", Default: map[string]interface {}{"fizz":"buzz", "foo":"bar"}, Type: []string{"object"}, AdditionalProperties: &spec.SchemaOrBool{ Allows: true, Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Default: "", Type: []string{"string"}, Format: "", }, }, }, }, }, "StringPointer": { SchemaProps: spec.SchemaProps{ Description: "a member with a string pointer", Default: "foo", Type: []string{"string"}, Format: "", }, }, "omitted": { SchemaProps: spec.SchemaProps{ Description: "an int member with a default", Default: 1, Type: []string{"integer"}, Format: "int32", }, }, }, Required: []string{"String","Int64","Int32","Int16","Int8","Uint","Uint64","Uint32","Uint16","Uint8","Byte","Bool","Float64","Float32","ByteArray","WithExtension","WithStructTagExtension","WithListType","Map","StringPointer"}, }, VendorExtensible: spec.VendorExtensible{ Extensions: spec.Extensions{ "x-kubernetes-type-tag": "type_test", }, }, }, } } `, funcBuffer.String()) } func TestEmptyProperties(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo // Blah demonstrate a struct without fields. type Blah struct { } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": schema_base_foo_Blah(ref), `, callBuffer.String()) assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Blah demonstrate a struct without fields.", Type: []string{"object"}, }, }, } } `, funcBuffer.String()) } func TestNestedStruct(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo // Nested is used as struct field type Nested struct { // A simple string String string } // Blah demonstrate a struct with struct field. type Blah struct { // A struct field Field Nested } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": schema_base_foo_Blah(ref), `, callBuffer.String()) assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Blah demonstrate a struct with struct field.", Type: []string{"object"}, Properties: map[string]spec.Schema{ "Field": { SchemaProps: spec.SchemaProps{ Description: "A struct field", Default: map[string]interface {}{}, Ref: ref("base/foo.Nested"), }, }, }, Required: []string{"Field"}, }, }, Dependencies: []string{ "base/foo.Nested",}, } } `, funcBuffer.String()) } func TestNestedStructPointer(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo // Nested is used as struct pointer field type Nested struct { // A simple string String string } // Blah demonstrate a struct with struct pointer field. type Blah struct { // A struct pointer field Field *Nested } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": schema_base_foo_Blah(ref), `, callBuffer.String()) assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Blah demonstrate a struct with struct pointer field.", Type: []string{"object"}, Properties: map[string]spec.Schema{ "Field": { SchemaProps: spec.SchemaProps{ Description: "A struct pointer field", Ref: ref("base/foo.Nested"), }, }, }, Required: []string{"Field"}, }, }, Dependencies: []string{ "base/foo.Nested",}, } } `, funcBuffer.String()) } func TestEmbeddedStruct(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo // Nested is used as embedded struct field type Nested struct { // A simple string String string } // Blah demonstrate a struct with embedded struct field. type Blah struct { // An embedded struct field Nested } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": schema_base_foo_Blah(ref), `, callBuffer.String()) assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Blah demonstrate a struct with embedded struct field.", Type: []string{"object"}, Properties: map[string]spec.Schema{ "Nested": { SchemaProps: spec.SchemaProps{ Description: "An embedded struct field", Default: map[string]interface {}{}, Ref: ref("base/foo.Nested"), }, }, }, Required: []string{"Nested"}, }, }, Dependencies: []string{ "base/foo.Nested",}, } } `, funcBuffer.String()) } func TestSingleEmbeddedStruct(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo import "time" // Nested is used as embedded struct field type Nested struct { // A simple string time.Duration } // Blah demonstrate a struct with embedded struct field. type Blah struct { // An embedded struct field // +default="10ms" Nested `+"`"+`json:"nested,omitempty" protobuf:"bytes,5,opt,name=nested"`+"`"+` } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": schema_base_foo_Blah(ref), `, callBuffer.String()) assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Blah demonstrate a struct with embedded struct field.", Type: []string{"object"}, Properties: map[string]spec.Schema{ "nested": { SchemaProps: spec.SchemaProps{ Description: "An embedded struct field", Default: "10ms", Ref: ref("base/foo.Nested"), }, }, }, }, }, Dependencies: []string{ "base/foo.Nested",}, } } `, funcBuffer.String()) } func TestEmbeddedInlineStruct(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo // Nested is used as embedded inline struct field type Nested struct { // A simple string String string } // Blah demonstrate a struct with embedded inline struct field. type Blah struct { // An embedded inline struct field Nested `+"`"+`json:",inline,omitempty"`+"`"+` } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": schema_base_foo_Blah(ref), `, callBuffer.String()) assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Blah demonstrate a struct with embedded inline struct field.", Type: []string{"object"}, Properties: map[string]spec.Schema{ "String": { SchemaProps: spec.SchemaProps{ Description: "A simple string", Default: "", Type: []string{"string"}, Format: "", }, }, }, Required: []string{"String"}, }, }, } } `, funcBuffer.String()) } func TestEmbeddedInlineStructPointer(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo // Nested is used as embedded inline struct pointer field. type Nested struct { // A simple string String string } // Blah demonstrate a struct with embedded inline struct pointer field. type Blah struct { // An embedded inline struct pointer field *Nested `+"`"+`json:",inline,omitempty"`+"`"+` } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": schema_base_foo_Blah(ref), `, callBuffer.String()) assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Blah demonstrate a struct with embedded inline struct pointer field.", Type: []string{"object"}, Properties: map[string]spec.Schema{ "String": { SchemaProps: spec.SchemaProps{ Description: "A simple string", Default: "", Type: []string{"string"}, Format: "", }, }, }, Required: []string{"String"}, }, }, } } `, funcBuffer.String()) } func TestNestedMapString(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo // Map sample tests openAPIGen.generateMapProperty method. type Blah struct { // A sample String to String map StringToArray map[string]map[string]string } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": schema_base_foo_Blah(ref), `, callBuffer.String()) assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Map sample tests openAPIGen.generateMapProperty method.", Type: []string{"object"}, Properties: map[string]spec.Schema{ "StringToArray": { SchemaProps: spec.SchemaProps{ Description: "A sample String to String map", Type: []string{"object"}, AdditionalProperties: &spec.SchemaOrBool{ Allows: true, Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"object"}, AdditionalProperties: &spec.SchemaOrBool{ Allows: true, Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Default: "", Type: []string{"string"}, Format: "", }, }, }, }, }, }, }, }, }, Required: []string{"StringToArray"}, }, }, } } `, funcBuffer.String()) } func TestNestedMapInt(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo // Map sample tests openAPIGen.generateMapProperty method. type Blah struct { // A sample String to String map StringToArray map[string]map[string]int } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": schema_base_foo_Blah(ref), `, callBuffer.String()) assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Map sample tests openAPIGen.generateMapProperty method.", Type: []string{"object"}, Properties: map[string]spec.Schema{ "StringToArray": { SchemaProps: spec.SchemaProps{ Description: "A sample String to String map", Type: []string{"object"}, AdditionalProperties: &spec.SchemaOrBool{ Allows: true, Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"object"}, AdditionalProperties: &spec.SchemaOrBool{ Allows: true, Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Default: 0, Type: []string{"integer"}, Format: "int32", }, }, }, }, }, }, }, }, }, Required: []string{"StringToArray"}, }, }, } } `, funcBuffer.String()) } func TestNestedMapBoolean(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo // Map sample tests openAPIGen.generateMapProperty method. type Blah struct { // A sample String to String map StringToArray map[string]map[string]bool } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": schema_base_foo_Blah(ref), `, callBuffer.String()) assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Map sample tests openAPIGen.generateMapProperty method.", Type: []string{"object"}, Properties: map[string]spec.Schema{ "StringToArray": { SchemaProps: spec.SchemaProps{ Description: "A sample String to String map", Type: []string{"object"}, AdditionalProperties: &spec.SchemaOrBool{ Allows: true, Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"object"}, AdditionalProperties: &spec.SchemaOrBool{ Allows: true, Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Default: false, Type: []string{"boolean"}, Format: "", }, }, }, }, }, }, }, }, }, Required: []string{"StringToArray"}, }, }, } } `, funcBuffer.String()) } func TestFailingSample1(t *testing.T) { _, funcErr, assert, _, _, _ := testOpenAPITypeWriter(t, ` package foo // Map sample tests openAPIGen.generateMapProperty method. type Blah struct { // A sample String to String map StringToArray map[string]map[string]map[int]string } `) if assert.Error(funcErr, "An error was expected") { assert.Equal(funcErr, fmt.Errorf("failed to generate map property in base/foo.Blah: StringToArray: map with non-string keys are not supported by OpenAPI in map[int]string")) } } func TestFailingSample2(t *testing.T) { _, funcErr, assert, _, _, _ := testOpenAPITypeWriter(t, ` package foo // Map sample tests openAPIGen.generateMapProperty method. type Blah struct { // A sample String to String map StringToArray map[int]string } `) if assert.Error(funcErr, "An error was expected") { assert.Equal(funcErr, fmt.Errorf("failed to generate map property in base/foo.Blah: StringToArray: map with non-string keys are not supported by OpenAPI in map[int]string")) } } func TestFailingDefaultEnforced(t *testing.T) { tests := []struct { definition string expectedError error }{ { definition: ` package foo type Blah struct { // +default=5 Int int } `, expectedError: fmt.Errorf("failed to generate default in base/foo.Blah: Int: invalid default value (5) for non-pointer/non-omitempty. If specified, must be: 0"), }, { definition: ` package foo type Blah struct { // +default={"foo": 5} Struct struct{ foo int } } `, expectedError: fmt.Errorf(`failed to generate default in base/foo.Blah: Struct: invalid default value (map[string]interface {}{"foo":5}) for non-pointer/non-omitempty. If specified, must be: {}`), }, { definition: ` package foo type Blah struct { List []Item } // +default="foo" type Item string `, expectedError: fmt.Errorf(`failed to generate slice property in base/foo.Blah: List: invalid default value ("foo") for non-pointer/non-omitempty. If specified, must be: ""`), }, { definition: ` package foo type Blah struct { Map map[string]Item } // +default="foo" type Item string `, expectedError: fmt.Errorf(`failed to generate map property in base/foo.Blah: Map: invalid default value ("foo") for non-pointer/non-omitempty. If specified, must be: ""`), }, } for i, test := range tests { t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { _, funcErr, assert, _, _, _ := testOpenAPITypeWriter(t, test.definition) if assert.Error(funcErr, "An error was expected") { assert.Equal(funcErr, test.expectedError) } }) } } func TestCustomDef(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo import openapi "k8s.io/kube-openapi/pkg/common" type Blah struct { } func (_ Blah) OpenAPIDefinition() openapi.OpenAPIDefinition { return openapi.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"string"}, Format: "date-time", }, }, } } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": foo.Blah{}.OpenAPIDefinition(), `, callBuffer.String()) assert.Equal(``, funcBuffer.String()) } func TestCustomDefV3(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo import openapi "k8s.io/kube-openapi/pkg/common" type Blah struct { } func (_ Blah) OpenAPIV3Definition() openapi.OpenAPIDefinition { return openapi.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"string"}, Format: "date-time", }, }, } } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": foo.Blah{}.OpenAPIV3Definition(), `, callBuffer.String()) assert.Equal(``, funcBuffer.String()) } func TestCustomDefV2AndV3(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo import openapi "k8s.io/kube-openapi/pkg/common" type Blah struct { } func (_ Blah) OpenAPIV3Definition() openapi.OpenAPIDefinition { return openapi.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"string"}, Format: "date-time", }, }, } } func (_ Blah) OpenAPIDefinition() openapi.OpenAPIDefinition { return openapi.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"string"}, Format: "date-time", }, }, } } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": common.EmbedOpenAPIDefinitionIntoV2Extension(foo.Blah{}.OpenAPIV3Definition(), foo.Blah{}.OpenAPIDefinition()), `, callBuffer.String()) assert.Equal(``, funcBuffer.String()) } func TestCustomDefs(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo // Blah is a custom type type Blah struct { } func (_ Blah) OpenAPISchemaType() []string { return []string{"string"} } func (_ Blah) OpenAPISchemaFormat() string { return "date-time" } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": schema_base_foo_Blah(ref), `, callBuffer.String()) assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Blah is a custom type", Type:foo.Blah{}.OpenAPISchemaType(), Format:foo.Blah{}.OpenAPISchemaFormat(), }, }, } } `, funcBuffer.String()) } func TestCustomDefsV3(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo import openapi "k8s.io/kube-openapi/pkg/common" // Blah is a custom type type Blah struct { } func (_ Blah) OpenAPIV3Definition() openapi.OpenAPIDefinition { return openapi.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"string"}, Format: "date-time", }, }, } } func (_ Blah) OpenAPISchemaType() []string { return []string{"string"} } func (_ Blah) OpenAPISchemaFormat() string { return "date-time" } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": schema_base_foo_Blah(ref), `, callBuffer.String()) assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.EmbedOpenAPIDefinitionIntoV2Extension(foo.Blah{}.OpenAPIV3Definition(), common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Blah is a custom type", Type:foo.Blah{}.OpenAPISchemaType(), Format:foo.Blah{}.OpenAPISchemaFormat(), }, }, }) } `, funcBuffer.String()) } func TestV3OneOfTypes(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo // Blah is a custom type type Blah struct { } func (_ Blah) OpenAPISchemaType() []string { return []string{"string"} } func (_ Blah) OpenAPISchemaFormat() string { return "date-time" } func (_ Blah) OpenAPIV3OneOfTypes() []string { return []string{"string", "number"} } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": schema_base_foo_Blah(ref), `, callBuffer.String()) assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.EmbedOpenAPIDefinitionIntoV2Extension(common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Blah is a custom type", OneOf:common.GenerateOpenAPIV3OneOfSchema(foo.Blah{}.OpenAPIV3OneOfTypes()), Format:foo.Blah{}.OpenAPISchemaFormat(), }, }, },common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Blah is a custom type", Type:foo.Blah{}.OpenAPISchemaType(), Format:foo.Blah{}.OpenAPISchemaFormat(), }, }, }) } `, funcBuffer.String()) } func TestPointer(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo // PointerSample demonstrate pointer's properties type Blah struct { // A string pointer StringPointer *string // A struct pointer StructPointer *Blah // A slice pointer SlicePointer *[]string // A map pointer MapPointer *map[string]string } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": schema_base_foo_Blah(ref), `, callBuffer.String()) assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "PointerSample demonstrate pointer's properties", Type: []string{"object"}, Properties: map[string]spec.Schema{ "StringPointer": { SchemaProps: spec.SchemaProps{ Description: "A string pointer", Type: []string{"string"}, Format: "", }, }, "StructPointer": { SchemaProps: spec.SchemaProps{ Description: "A struct pointer", Ref: ref("base/foo.Blah"), }, }, "SlicePointer": { SchemaProps: spec.SchemaProps{ Description: "A slice pointer", Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Default: "", Type: []string{"string"}, Format: "", }, }, }, }, }, "MapPointer": { SchemaProps: spec.SchemaProps{ Description: "A map pointer", Type: []string{"object"}, AdditionalProperties: &spec.SchemaOrBool{ Allows: true, Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Default: "", Type: []string{"string"}, Format: "", }, }, }, }, }, }, Required: []string{"StringPointer","StructPointer","SlicePointer","MapPointer"}, }, }, Dependencies: []string{ "base/foo.Blah",}, } } `, funcBuffer.String()) } func TestNestedLists(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo // Blah is a test. // +k8s:openapi-gen=true // +k8s:openapi-gen=x-kubernetes-type-tag:type_test type Blah struct { // Nested list NestedList [][]int64 } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": schema_base_foo_Blah(ref), `, callBuffer.String()) assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Blah is a test.", Type: []string{"object"}, Properties: map[string]spec.Schema{ "NestedList": { SchemaProps: spec.SchemaProps{ Description: "Nested list", Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Default: 0, Type: []string{"integer"}, Format: "int64", }, }, }, }, }, }, }, }, }, Required: []string{"NestedList"}, }, VendorExtensible: spec.VendorExtensible{ Extensions: spec.Extensions{ "x-kubernetes-type-tag": "type_test", }, }, }, } } `, funcBuffer.String()) } func TestNestListOfMaps(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo // Blah is a test. // +k8s:openapi-gen=true // +k8s:openapi-gen=x-kubernetes-type-tag:type_test type Blah struct { // Nested list of maps NestedListOfMaps [][]map[string]string } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": schema_base_foo_Blah(ref), `, callBuffer.String()) assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Blah is a test.", Type: []string{"object"}, Properties: map[string]spec.Schema{ "NestedListOfMaps": { SchemaProps: spec.SchemaProps{ Description: "Nested list of maps", Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"object"}, AdditionalProperties: &spec.SchemaOrBool{ Allows: true, Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Default: "", Type: []string{"string"}, Format: "", }, }, }, }, }, }, }, }, }, }, }, }, Required: []string{"NestedListOfMaps"}, }, VendorExtensible: spec.VendorExtensible{ Extensions: spec.Extensions{ "x-kubernetes-type-tag": "type_test", }, }, }, } } `, funcBuffer.String()) } func TestExtensions(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo // Blah is a test. // +k8s:openapi-gen=true // +k8s:openapi-gen=x-kubernetes-type-tag:type_test type Blah struct { // a member with a list type with two map keys // +listType=map // +listMapKey=port // +listMapKey=protocol WithListField []string // another member with a list type with one map key // +listType=map // +listMapKey=port WithListField2 []string } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": schema_base_foo_Blah(ref), `, callBuffer.String()) assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Blah is a test.", Type: []string{"object"}, Properties: map[string]spec.Schema{ "WithListField": { VendorExtensible: spec.VendorExtensible{ Extensions: spec.Extensions{ "x-kubernetes-list-map-keys": []interface{}{ "port", "protocol", }, "x-kubernetes-list-type": "map", }, }, SchemaProps: spec.SchemaProps{ Description: "a member with a list type with two map keys", Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Default: "", Type: []string{"string"}, Format: "", }, }, }, }, }, "WithListField2": { VendorExtensible: spec.VendorExtensible{ Extensions: spec.Extensions{ "x-kubernetes-list-map-keys": []interface{}{ "port", }, "x-kubernetes-list-type": "map", }, }, SchemaProps: spec.SchemaProps{ Description: "another member with a list type with one map key", Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Default: "", Type: []string{"string"}, Format: "", }, }, }, }, }, }, Required: []string{"WithListField","WithListField2"}, }, VendorExtensible: spec.VendorExtensible{ Extensions: spec.Extensions{ "x-kubernetes-type-tag": "type_test", }, }, }, } } `, funcBuffer.String()) } func TestUnion(t *testing.T) { callErr, funcErr, assert, callBuffer, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo // Blah is a test. // +k8s:openapi-gen=true // +k8s:openapi-gen=x-kubernetes-type-tag:type_test // +union type Blah struct { // +unionDiscriminator Discriminator *string `+"`"+`json:"discriminator"`+"`"+` // +optional Numeric int `+"`"+`json:"numeric"`+"`"+` // +optional String string `+"`"+`json:"string"`+"`"+` // +optional Float float64 `+"`"+`json:"float"`+"`"+` } `) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } assert.Equal(`"base/foo.Blah": schema_base_foo_Blah(ref), `, callBuffer.String()) assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Blah is a test.", Type: []string{"object"}, Properties: map[string]spec.Schema{ "discriminator": { SchemaProps: spec.SchemaProps{ Type: []string{"string"}, Format: "", }, }, "numeric": { SchemaProps: spec.SchemaProps{ Default: 0, Type: []string{"integer"}, Format: "int32", }, }, "string": { SchemaProps: spec.SchemaProps{ Default: "", Type: []string{"string"}, Format: "", }, }, "float": { SchemaProps: spec.SchemaProps{ Default: 0, Type: []string{"number"}, Format: "double", }, }, }, Required: []string{"discriminator"}, }, VendorExtensible: spec.VendorExtensible{ Extensions: spec.Extensions{ "x-kubernetes-type-tag": "type_test", "x-kubernetes-unions": []interface{}{ map[string]interface{}{ "discriminator": "discriminator", "fields-to-discriminateBy": map[string]interface{}{ "float": "Float", "numeric": "Numeric", "string": "String", }, }, }, }, }, }, } } `, funcBuffer.String()) } func TestEnum(t *testing.T) { callErr, funcErr, assert, _, funcBuffer, _ := testOpenAPITypeWriter(t, ` package foo // EnumType is the enumType. // +enum type EnumType string // EnumA is a. const EnumA EnumType = "a" // EnumB is b. const EnumB EnumType = "b" // Blah is a test. // +k8s:openapi-gen=true // +k8s:openapi-gen=x-kubernetes-type-tag:type_test type Blah struct { // Value is the value. Value EnumType NoCommentEnum EnumType // +optional OptionalEnum *EnumType }`) if callErr != nil { t.Fatal(callErr) } if funcErr != nil { t.Fatal(funcErr) } _ = assert assert.Equal(`func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Description: "Blah is a test.", Type: []string{"object"}, Properties: map[string]spec.Schema{ "Value": { SchemaProps: spec.SchemaProps{`+"\n"+ "Description: \"Value is the value.\\n\\nPossible enum values:\\n - `\\\"a\\\"` is a.\\n - `\\\"b\\\"` is b.\","+` Default: "", Type: []string{"string"}, Format: "", Enum: []interface{}{"a", "b"}, }, }, "NoCommentEnum": { SchemaProps: spec.SchemaProps{`+"\n"+ "Description: \"Possible enum values:\\n - `\\\"a\\\"` is a.\\n - `\\\"b\\\"` is b.\","+` Default: "", Type: []string{"string"}, Format: "", Enum: []interface{}{"a", "b"}, }, }, "OptionalEnum": { SchemaProps: spec.SchemaProps{`+"\n"+ "Description: \"Possible enum values:\\n - `\\\"a\\\"` is a.\\n - `\\\"b\\\"` is b.\","+` Type: []string{"string"}, Format: "", Enum: []interface{}{"a", "b"}, }, }, }, Required: []string{"Value","NoCommentEnum"}, }, VendorExtensible: spec.VendorExtensible{ Extensions: spec.Extensions{ "x-kubernetes-type-tag": "type_test", }, }, }, } } `, funcBuffer.String()) } func TestSymbolReference(t *testing.T) { callErr, funcErr, assert, _, funcBuffer, imports := testOpenAPITypeWriter(t, ` package foo // +k8s:openapi-gen=true type Blah struct { // +default="A Default Value" // +optional Value *string // User constant local to the output package fully qualified // +default=ref(base/output.MyConst) // +optional FullyQualifiedOutputValue *string // Local to types but not to output // +default=ref(MyConst) // +optional LocalValue *string // +default=ref(base/foo.MyConst) // +optional FullyQualifiedLocalValue *string // +default=ref(k8s.io/api/v1.TerminationPathDefault) // +optional FullyQualifiedExternalValue *string } `) assert.NoError(funcErr) assert.NoError(callErr) assert.ElementsMatch(imports, []string{`v1 "k8s.io/api/v1"`, `foo "base/foo"`, `common "k8s.io/kube-openapi/pkg/common"`, `spec "k8s.io/kube-openapi/pkg/validation/spec"`}) if formatted, err := format.Source(funcBuffer.Bytes()); err != nil { t.Fatal(err) } else { assert.Equal(string(formatted), `func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"object"}, Properties: map[string]spec.Schema{ "Value": { SchemaProps: spec.SchemaProps{ Default: "A Default Value", Type: []string{"string"}, Format: "", }, }, "FullyQualifiedOutputValue": { SchemaProps: spec.SchemaProps{ Description: "User constant local to the output package fully qualified", Default: MyConst, Type: []string{"string"}, Format: "", }, }, "LocalValue": { SchemaProps: spec.SchemaProps{ Description: "Local to types but not to output", Default: foo.MyConst, Type: []string{"string"}, Format: "", }, }, "FullyQualifiedLocalValue": { SchemaProps: spec.SchemaProps{ Default: foo.MyConst, Type: []string{"string"}, Format: "", }, }, "FullyQualifiedExternalValue": { SchemaProps: spec.SchemaProps{ Default: v1.TerminationPathDefault, Type: []string{"string"}, Format: "", }, }, }, }, }, } } `) } } // Show that types with unmarshalJSON in their hierarchy do not have struct // defaults enforced, and that aliases and embededd types are respected func TestMustEnforceDefaultStruct(t *testing.T) { callErr, funcErr, assert, _, funcBuffer, imports := testOpenAPITypeWriter(t, ` package foo type Time struct { value interface{} } type TimeWithoutUnmarshal struct { value interface{} } func (_ TimeWithoutUnmarshal) OpenAPISchemaType() []string { return []string{"string"} } func (_ TimeWithoutUnmarshal) OpenAPISchemaFormat() string { return "date-time" } func (_ Time) UnmarshalJSON([]byte) error { return nil } func (_ Time) OpenAPISchemaType() []string { return []string{"string"} } func (_ Time) OpenAPISchemaFormat() string { return "date-time" } // Time with UnmarshalJSON defined on pointer instead of struct type MicroTime struct { value interface{} } func (t *MicroTime) UnmarshalJSON([]byte) error { return nil } func (_ MicroTime) OpenAPISchemaType() []string { return []string{"string"} } func (_ MicroTime) OpenAPISchemaFormat() string { return "date-time" } type Int64 int64 type Duration struct { Int64 } func (_ Duration) OpenAPISchemaType() []string { return []string{"string"} } func (_ Duration) OpenAPISchemaFormat() string { return "" } type NothingSpecial struct { Field string } // +k8s:openapi-gen=true type Blah struct { Embedded Duration PointerUnmarshal MicroTime StructUnmarshal Time NoUnmarshal TimeWithoutUnmarshal Regular NothingSpecial } `) assert.NoError(funcErr) assert.NoError(callErr) assert.ElementsMatch(imports, []string{`foo "base/foo"`, `common "k8s.io/kube-openapi/pkg/common"`, `spec "k8s.io/kube-openapi/pkg/validation/spec"`}) if formatted, err := format.Source(funcBuffer.Bytes()); err != nil { t.Fatal(err) } else { assert.Equal(string(formatted), `func schema_base_foo_Blah(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"object"}, Properties: map[string]spec.Schema{ "Embedded": { SchemaProps: spec.SchemaProps{ Default: 0, Ref: ref("base/foo.Duration"), }, }, "PointerUnmarshal": { SchemaProps: spec.SchemaProps{ Ref: ref("base/foo.MicroTime"), }, }, "StructUnmarshal": { SchemaProps: spec.SchemaProps{ Ref: ref("base/foo.Time"), }, }, "NoUnmarshal": { SchemaProps: spec.SchemaProps{ Default: map[string]interface{}{}, Ref: ref("base/foo.TimeWithoutUnmarshal"), }, }, "Regular": { SchemaProps: spec.SchemaProps{ Default: map[string]interface{}{}, Ref: ref("base/foo.NothingSpecial"), }, }, }, Required: []string{"Embedded", "PointerUnmarshal", "StructUnmarshal", "NoUnmarshal", "Regular"}, }, }, Dependencies: []string{ "base/foo.Duration", "base/foo.MicroTime", "base/foo.NothingSpecial", "base/foo.Time", "base/foo.TimeWithoutUnmarshal"}, } } `) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/rules/000077500000000000000000000000001453663023200245025ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/rules/OWNERS000066400000000000000000000000541453663023200254410ustar00rootroot00000000000000reviewers: - roycaihw approvers: - roycaihw golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/rules/doc.go000066400000000000000000000017011453663023200255750ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ // Package rules contains API rules that are enforced in OpenAPI spec generation // as part of the machinery. Files under this package implement APIRule interface // which evaluates Go type and produces list of API rule violations. // // Implementations of APIRule should be added to API linter under openAPIGen code- // generator to get integrated in the generation process. package rules golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/rules/idl_tag.go000066400000000000000000000024261453663023200264400ustar00rootroot00000000000000package rules import ( "k8s.io/gengo/types" ) const ListTypeIDLTag = "listType" // ListTypeMissing implements APIRule interface. // A list type is required for inlined list. type ListTypeMissing struct{} // Name returns the name of APIRule func (l *ListTypeMissing) Name() string { return "list_type_missing" } // Validate evaluates API rule on type t and returns a list of field names in // the type that violate the rule. Empty field name [""] implies the entire // type violates the rule. func (l *ListTypeMissing) Validate(t *types.Type) ([]string, error) { fields := make([]string, 0) switch t.Kind { case types.Struct: for _, m := range t.Members { hasListType := types.ExtractCommentTags("+", m.CommentLines)[ListTypeIDLTag] != nil if m.Name == "Items" && m.Type.Kind == types.Slice && hasNamedMember(t, "ListMeta") { if hasListType { fields = append(fields, m.Name) } continue } // All slice fields must have a list-type tag except []byte if m.Type.Kind == types.Slice && m.Type.Elem != types.Byte && !hasListType { fields = append(fields, m.Name) continue } } } return fields, nil } func hasNamedMember(t *types.Type, name string) bool { for _, m := range t.Members { if m.Name == name { return true } } return false } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/rules/idl_tag_test.go000066400000000000000000000051561453663023200275020ustar00rootroot00000000000000package rules import ( "reflect" "testing" "k8s.io/gengo/types" ) func TestListTypeMissing(t *testing.T) { tcs := []struct { // name of test case name string t *types.Type // expected list of violation fields expected []string }{ { name: "none", t: &types.Type{}, expected: []string{}, }, { name: "simple missing", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "Containers", Type: &types.Type{ Kind: types.Slice, }, }, }, }, expected: []string{"Containers"}, }, { name: "simple passing", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "Containers", Type: &types.Type{ Kind: types.Slice, }, CommentLines: []string{"+listType=map"}, }, }, }, expected: []string{}, }, { name: "list Items field should not be annotated", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "Items", Type: &types.Type{ Kind: types.Slice, }, CommentLines: []string{"+listType=map"}, }, { Name: "ListMeta", Embedded: true, Type: &types.Type{ Kind: types.Struct, }, }, }, }, expected: []string{"Items"}, }, { name: "list Items field without annotation should pass validation", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "Items", Type: &types.Type{ Kind: types.Slice, }, }, { Name: "ListMeta", Embedded: true, Type: &types.Type{ Kind: types.Struct, }, }, }, }, expected: []string{}, }, { name: "a list that happens to be called Items (i.e. nested, not top-level list) needs annotations", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "Items", Type: &types.Type{ Kind: types.Slice, }, }, }, }, expected: []string{"Items"}, }, { name: "a byte-slice field without annotation should pass validation", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "ByteSliceField", Type: &types.Type{ Kind: types.Slice, Elem: types.Byte, }, }, }, }, expected: []string{}, }, } rule := &ListTypeMissing{} for _, tc := range tcs { if violations, _ := rule.Validate(tc.t); !reflect.DeepEqual(violations, tc.expected) { t.Errorf("unexpected validation result: test name %q, want: %v, got: %v", tc.name, tc.expected, violations) } } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/rules/names_match.go000066400000000000000000000127301453663023200273130ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package rules import ( "reflect" "strings" "k8s.io/kube-openapi/pkg/util/sets" "k8s.io/gengo/types" ) var ( // Blacklist of JSON tags that should skip match evaluation jsonTagBlacklist = sets.NewString( // Omitted field is ignored by the package "-", ) // Blacklist of JSON names that should skip match evaluation jsonNameBlacklist = sets.NewString( // Empty name is used for inline struct field (e.g. metav1.TypeMeta) "", // Special case for object and list meta "metadata", ) // List of substrings that aren't allowed in Go name and JSON name disallowedNameSubstrings = sets.NewString( // Underscore is not allowed in either name "_", // Dash is not allowed in either name. Note that since dash is a valid JSON tag, this should be checked // after JSON tag blacklist check. "-", ) ) /* NamesMatch implements APIRule interface. Go field names must be CamelCase. JSON field names must be camelCase. Other than capitalization of the initial letter, the two should almost always match. No underscores nor dashes in either. This rule verifies the convention "Other than capitalization of the initial letter, the two should almost always match." Examples (also in unit test): Go name | JSON name | match podSpec false PodSpec podSpec true PodSpec PodSpec false podSpec podSpec false PodSpec spec false Spec podSpec false JSONSpec jsonSpec true JSONSpec jsonspec false HTTPJSONSpec httpJSONSpec true NOTE: this validator cannot tell two sequential all-capital words from one word, therefore the case below is also considered matched. HTTPJSONSpec httpjsonSpec true NOTE: JSON names in jsonNameBlacklist should skip evaluation true podSpec true podSpec - true podSpec metadata true */ type NamesMatch struct{} // Name returns the name of APIRule func (n *NamesMatch) Name() string { return "names_match" } // Validate evaluates API rule on type t and returns a list of field names in // the type that violate the rule. Empty field name [""] implies the entire // type violates the rule. func (n *NamesMatch) Validate(t *types.Type) ([]string, error) { fields := make([]string, 0) // Only validate struct type and ignore the rest switch t.Kind { case types.Struct: for _, m := range t.Members { goName := m.Name jsonTag, ok := reflect.StructTag(m.Tags).Lookup("json") // Distinguish empty JSON tag and missing JSON tag. Empty JSON tag / name is // allowed (in JSON name blacklist) but missing JSON tag is invalid. if !ok { fields = append(fields, goName) continue } if jsonTagBlacklist.Has(jsonTag) { continue } jsonName := strings.Split(jsonTag, ",")[0] if !namesMatch(goName, jsonName) { fields = append(fields, goName) } } } return fields, nil } // namesMatch evaluates if goName and jsonName match the API rule // TODO: Use an off-the-shelf CamelCase solution instead of implementing this logic. The following existing // // packages have been tried out: // github.com/markbates/inflect // github.com/segmentio/go-camelcase // github.com/iancoleman/strcase // github.com/fatih/camelcase // Please see https://github.com/kubernetes/kube-openapi/pull/83#issuecomment-400842314 for more details // about why they don't satisfy our need. What we need can be a function that detects an acronym at the // beginning of a string. func namesMatch(goName, jsonName string) bool { if jsonNameBlacklist.Has(jsonName) { return true } if !isAllowedName(goName) || !isAllowedName(jsonName) { return false } if strings.ToLower(goName) != strings.ToLower(jsonName) { return false } // Go field names must be CamelCase. JSON field names must be camelCase. if !isCapital(goName[0]) || isCapital(jsonName[0]) { return false } for i := 0; i < len(goName); i++ { if goName[i] == jsonName[i] { // goName[0:i-1] is uppercase and jsonName[0:i-1] is lowercase, goName[i:] // and jsonName[i:] should match; // goName[i] should be lowercase if i is equal to 1, e.g.: // goName | jsonName // PodSpec podSpec // or uppercase if i is greater than 1, e.g.: // goname | jsonName // JSONSpec jsonSpec // This is to rule out cases like: // goname | jsonName // JSONSpec jsonspec return goName[i:] == jsonName[i:] && (i == 1 || isCapital(goName[i])) } } return true } // isCapital returns true if one character is capital func isCapital(b byte) bool { return b >= 'A' && b <= 'Z' } // isAllowedName checks the list of disallowedNameSubstrings and returns true if name doesn't contain // any disallowed substring. func isAllowedName(name string) bool { for _, substr := range disallowedNameSubstrings.UnsortedList() { if strings.Contains(name, substr) { return false } } return true } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/rules/names_match_test.go000066400000000000000000000160301453663023200303470ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package rules import ( "reflect" "testing" "k8s.io/gengo/types" ) func TestNamesMatch(t *testing.T) { tcs := []struct { // name of test case name string t *types.Type // expected list of violation fields expected []string }{ // The comments are in format of {goName, jsonName, match}, // {"PodSpec", "podSpec", true}, { name: "simple", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "PodSpec", Tags: `json:"podSpec"`, }, }, }, expected: []string{}, }, // {"PodSpec", "podSpec", true}, { name: "multiple_json_tags", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "PodSpec", Tags: `json:"podSpec,omitempty"`, }, }, }, expected: []string{}, }, // {"PodSpec", "podSpec", true}, { name: "protobuf_tag", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "PodSpec", Tags: `json:"podSpec,omitempty" protobuf:"bytes,1,opt,name=podSpec"`, }, }, }, expected: []string{}, }, // {"", "podSpec", false}, { name: "empty", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "", Tags: `json:"podSpec"`, }, }, }, expected: []string{""}, }, // {"PodSpec", "PodSpec", false}, { name: "CamelCase_CamelCase", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "PodSpec", Tags: `json:"PodSpec"`, }, }, }, expected: []string{"PodSpec"}, }, // {"podSpec", "podSpec", false}, { name: "camelCase_camelCase", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "podSpec", Tags: `json:"podSpec"`, }, }, }, expected: []string{"podSpec"}, }, // {"PodSpec", "spec", false}, { name: "short_json_name", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "PodSpec", Tags: `json:"spec"`, }, }, }, expected: []string{"PodSpec"}, }, // {"Spec", "podSpec", false}, { name: "long_json_name", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "Spec", Tags: `json:"podSpec"`, }, }, }, expected: []string{"Spec"}, }, // {"JSONSpec", "jsonSpec", true}, { name: "acronym", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "JSONSpec", Tags: `json:"jsonSpec"`, }, }, }, expected: []string{}, }, // {"JSONSpec", "jsonspec", false}, { name: "acronym_invalid", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "JSONSpec", Tags: `json:"jsonspec"`, }, }, }, expected: []string{"JSONSpec"}, }, // {"HTTPJSONSpec", "httpJSONSpec", true}, { name: "multiple_acronym", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "HTTPJSONSpec", Tags: `json:"httpJSONSpec"`, }, }, }, expected: []string{}, }, // // NOTE: this validator cannot tell two sequential all-capital words from one word, // // therefore the case below is also considered matched. // {"HTTPJSONSpec", "httpjsonSpec", true}, { name: "multiple_acronym_as_one", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "HTTPJSONSpec", Tags: `json:"httpjsonSpec"`, }, }, }, expected: []string{}, }, // NOTE: JSON tags in jsonTagBlacklist should skip evaluation { name: "blacklist_tag_dash", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "podSpec", Tags: `json:"-"`, }, }, }, expected: []string{}, }, // {"PodSpec", "-", false}, { name: "invalid_json_name_dash", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "PodSpec", Tags: `json:"-,"`, }, }, }, expected: []string{"PodSpec"}, }, // NOTE: JSON names in jsonNameBlacklist should skip evaluation // {"", "", true}, { name: "unspecified", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "", Tags: `json:""`, }, }, }, expected: []string{}, }, // {"podSpec", "", true}, { name: "blacklist_empty", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "podSpec", Tags: `json:""`, }, }, }, expected: []string{}, }, // {"podSpec", "metadata", true}, { name: "blacklist_metadata", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "podSpec", Tags: `json:"metadata"`, }, }, }, expected: []string{}, }, { name: "non_struct", t: &types.Type{ Kind: types.Map, }, expected: []string{}, }, { name: "no_json_tag", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "PodSpec", Tags: `podSpec`, }, }, }, expected: []string{"PodSpec"}, }, // NOTE: this is to expand test coverage // {"S", "s", true}, { name: "single_character", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "S", Tags: `json:"s"`, }, }, }, expected: []string{}, }, // NOTE: names with disallowed substrings should fail evaluation // {"Pod-Spec", "pod-Spec", false}, { name: "disallowed_substring_dash", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "Pod-Spec", Tags: `json:"pod-Spec"`, }, }, }, expected: []string{"Pod-Spec"}, }, // {"Pod_Spec", "pod_Spec", false}, { name: "disallowed_substring_underscore", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "Pod_Spec", Tags: `json:"pod_Spec"`, }, }, }, expected: []string{"Pod_Spec"}, }, } n := &NamesMatch{} for _, tc := range tcs { if violations, _ := n.Validate(tc.t); !reflect.DeepEqual(violations, tc.expected) { t.Errorf("unexpected validation result: test name %v, want: %v, got: %v", tc.name, tc.expected, violations) } } } // TestRuleName tests the Name of API rule. This is to expand test coverage func TestRuleName(t *testing.T) { ruleName := "names_match" n := &NamesMatch{} if n.Name() != ruleName { t.Errorf("unexpected API rule name: want: %v, got: %v", ruleName, n.Name()) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/rules/omitempty_match_case.go000066400000000000000000000030221453663023200312240ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package rules import ( "reflect" "strings" "k8s.io/gengo/types" ) // OmitEmptyMatchCase implements APIRule interface. // "omitempty" must appear verbatim (no case variants). type OmitEmptyMatchCase struct{} func (n *OmitEmptyMatchCase) Name() string { return "omitempty_match_case" } func (n *OmitEmptyMatchCase) Validate(t *types.Type) ([]string, error) { fields := make([]string, 0) // Only validate struct type and ignore the rest switch t.Kind { case types.Struct: for _, m := range t.Members { goName := m.Name jsonTag, ok := reflect.StructTag(m.Tags).Lookup("json") if !ok { continue } parts := strings.Split(jsonTag, ",") if len(parts) < 2 { // no tags other than name continue } if parts[0] == "-" { // not serialized continue } for _, part := range parts[1:] { if strings.EqualFold(part, "omitempty") && part != "omitempty" { fields = append(fields, goName) } } } } return fields, nil } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/rules/omitempty_match_case_test.go000066400000000000000000000042271453663023200322730ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package rules import ( "reflect" "testing" "k8s.io/gengo/types" ) func TestOmitEmptyMatchCase(t *testing.T) { tcs := []struct { // name of test case name string t *types.Type // expected list of violation fields expected []string }{ { name: "simple", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "PodSpec", Tags: `json:"podSpec"`, }, }, }, expected: []string{}, }, { name: "unserialized", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "PodSpec", Tags: `json:"-,inline"`, }, }, }, expected: []string{}, }, { name: "named_omitEmpty", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "OmitEmpty", Tags: `json:"omitEmpty,inline"`, }, }, }, expected: []string{}, }, { name: "valid", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "PodSpec", Tags: `json:"podSpec,omitempty"`, }, }, }, expected: []string{}, }, { name: "invalid", t: &types.Type{ Kind: types.Struct, Members: []types.Member{ { Name: "PodSpec", Tags: `json:"podSpec,omitEmpty"`, }, }, }, expected: []string{"PodSpec"}, }, } n := &OmitEmptyMatchCase{} for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { if violations, _ := n.Validate(tc.t); !reflect.DeepEqual(violations, tc.expected) { t.Errorf("unexpected validation result: want: %v, got: %v", tc.expected, violations) } }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/generators/union.go000066400000000000000000000142131453663023200250300ustar00rootroot00000000000000/* Copyright 2016 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package generators import ( "fmt" "sort" "k8s.io/gengo/types" ) const tagUnionMember = "union" const tagUnionDeprecated = "unionDeprecated" const tagUnionDiscriminator = "unionDiscriminator" type union struct { discriminator string fieldsToDiscriminated map[string]string } // emit prints the union, can be called on a nil union (emits nothing) func (u *union) emit(g openAPITypeWriter) { if u == nil { return } g.Do("map[string]interface{}{\n", nil) if u.discriminator != "" { g.Do("\"discriminator\": \"$.$\",\n", u.discriminator) } g.Do("\"fields-to-discriminateBy\": map[string]interface{}{\n", nil) keys := []string{} for field := range u.fieldsToDiscriminated { keys = append(keys, field) } sort.Strings(keys) for _, field := range keys { g.Do("\"$.$\": ", field) g.Do("\"$.$\",\n", u.fieldsToDiscriminated[field]) } g.Do("},\n", nil) g.Do("},\n", nil) } // Sets the discriminator if it's not set yet, otherwise return an error func (u *union) setDiscriminator(value string) []error { errors := []error{} if u.discriminator != "" { errors = append(errors, fmt.Errorf("at least two discriminators found: %v and %v", value, u.discriminator)) } u.discriminator = value return errors } // Add a new member to the union func (u *union) addMember(jsonName, variableName string) { if _, ok := u.fieldsToDiscriminated[jsonName]; ok { panic(fmt.Errorf("same field (%v) found multiple times", jsonName)) } u.fieldsToDiscriminated[jsonName] = variableName } // Makes sure that the union is valid, specifically looking for re-used discriminated func (u *union) isValid() []error { errors := []error{} // Case 1: discriminator but no fields if u.discriminator != "" && len(u.fieldsToDiscriminated) == 0 { errors = append(errors, fmt.Errorf("discriminator set with no fields in union")) } // Case 2: two fields have the same discriminated value discriminated := map[string]struct{}{} for _, d := range u.fieldsToDiscriminated { if _, ok := discriminated[d]; ok { errors = append(errors, fmt.Errorf("discriminated value is used twice: %v", d)) } discriminated[d] = struct{}{} } // Case 3: a field is both discriminator AND part of the union if u.discriminator != "" { if _, ok := u.fieldsToDiscriminated[u.discriminator]; ok { errors = append(errors, fmt.Errorf("%v can't be both discriminator and part of the union", u.discriminator)) } } return errors } // Find unions either directly on the members (or inlined members, not // going across types) or on the type itself, or on embedded types. func parseUnions(t *types.Type) ([]union, []error) { errors := []error{} unions := []union{} su, err := parseUnionStruct(t) if su != nil { unions = append(unions, *su) } errors = append(errors, err...) eu, err := parseEmbeddedUnion(t) unions = append(unions, eu...) errors = append(errors, err...) mu, err := parseUnionMembers(t) if mu != nil { unions = append(unions, *mu) } errors = append(errors, err...) return unions, errors } // Find unions in embedded types, unions shouldn't go across types. func parseEmbeddedUnion(t *types.Type) ([]union, []error) { errors := []error{} unions := []union{} for _, m := range t.Members { if hasOpenAPITagValue(m.CommentLines, tagValueFalse) { continue } if !shouldInlineMembers(&m) { continue } u, err := parseUnions(m.Type) unions = append(unions, u...) errors = append(errors, err...) } return unions, errors } // Look for union tag on a struct, and then include all the fields // (except the discriminator if there is one). The struct shouldn't have // embedded types. func parseUnionStruct(t *types.Type) (*union, []error) { errors := []error{} if types.ExtractCommentTags("+", t.CommentLines)[tagUnionMember] == nil { return nil, nil } u := &union{fieldsToDiscriminated: map[string]string{}} for _, m := range t.Members { jsonName := getReferableName(&m) if jsonName == "" { continue } if shouldInlineMembers(&m) { errors = append(errors, fmt.Errorf("union structures can't have embedded fields: %v.%v", t.Name, m.Name)) continue } if types.ExtractCommentTags("+", m.CommentLines)[tagUnionDeprecated] != nil { errors = append(errors, fmt.Errorf("union struct can't have unionDeprecated members: %v.%v", t.Name, m.Name)) continue } if types.ExtractCommentTags("+", m.CommentLines)[tagUnionDiscriminator] != nil { errors = append(errors, u.setDiscriminator(jsonName)...) } else { if !hasOptionalTag(&m) { errors = append(errors, fmt.Errorf("union members must be optional: %v.%v", t.Name, m.Name)) } u.addMember(jsonName, m.Name) } } return u, errors } // Find unions specifically on members. func parseUnionMembers(t *types.Type) (*union, []error) { errors := []error{} u := &union{fieldsToDiscriminated: map[string]string{}} for _, m := range t.Members { jsonName := getReferableName(&m) if jsonName == "" { continue } if shouldInlineMembers(&m) { continue } if types.ExtractCommentTags("+", m.CommentLines)[tagUnionDiscriminator] != nil { errors = append(errors, u.setDiscriminator(jsonName)...) } if types.ExtractCommentTags("+", m.CommentLines)[tagUnionMember] != nil { errors = append(errors, fmt.Errorf("union tag is not accepted on struct members: %v.%v", t.Name, m.Name)) continue } if types.ExtractCommentTags("+", m.CommentLines)[tagUnionDeprecated] != nil { if !hasOptionalTag(&m) { errors = append(errors, fmt.Errorf("union members must be optional: %v.%v", t.Name, m.Name)) } u.addMember(jsonName, m.Name) } } if len(u.fieldsToDiscriminated) == 0 { return nil, nil } return u, append(errors, u.isValid()...) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/handler/000077500000000000000000000000001453663023200226145ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/handler/default_pruning.go000066400000000000000000000126151453663023200263360ustar00rootroot00000000000000/* Copyright 2020 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package handler import "k8s.io/kube-openapi/pkg/validation/spec" // PruneDefaults remove all the defaults recursively from all the // schemas in the definitions, and does not modify the definitions in // place. func PruneDefaults(definitions spec.Definitions) spec.Definitions { definitionsCloned := false for k, v := range definitions { if s := PruneDefaultsSchema(&v); s != &v { if !definitionsCloned { definitionsCloned = true orig := definitions definitions = make(spec.Definitions, len(orig)) for k2, v2 := range orig { definitions[k2] = v2 } } definitions[k] = *s } } return definitions } // PruneDefaultsSchema remove all the defaults recursively from the // schema in place. func PruneDefaultsSchema(schema *spec.Schema) *spec.Schema { if schema == nil { return nil } orig := schema clone := func() { if orig == schema { schema = &spec.Schema{} *schema = *orig } } if schema.Default != nil { clone() schema.Default = nil } definitionsCloned := false for k, v := range schema.Definitions { if s := PruneDefaultsSchema(&v); s != &v { if !definitionsCloned { definitionsCloned = true clone() schema.Definitions = make(spec.Definitions, len(orig.Definitions)) for k2, v2 := range orig.Definitions { schema.Definitions[k2] = v2 } } schema.Definitions[k] = *s } } propertiesCloned := false for k, v := range schema.Properties { if s := PruneDefaultsSchema(&v); s != &v { if !propertiesCloned { propertiesCloned = true clone() schema.Properties = make(map[string]spec.Schema, len(orig.Properties)) for k2, v2 := range orig.Properties { schema.Properties[k2] = v2 } } schema.Properties[k] = *s } } patternPropertiesCloned := false for k, v := range schema.PatternProperties { if s := PruneDefaultsSchema(&v); s != &v { if !patternPropertiesCloned { patternPropertiesCloned = true clone() schema.PatternProperties = make(map[string]spec.Schema, len(orig.PatternProperties)) for k2, v2 := range orig.PatternProperties { schema.PatternProperties[k2] = v2 } } schema.PatternProperties[k] = *s } } dependenciesCloned := false for k, v := range schema.Dependencies { if s := PruneDefaultsSchema(v.Schema); s != v.Schema { if !dependenciesCloned { dependenciesCloned = true clone() schema.Dependencies = make(spec.Dependencies, len(orig.Dependencies)) for k2, v2 := range orig.Dependencies { schema.Dependencies[k2] = v2 } } v.Schema = s schema.Dependencies[k] = v } } allOfCloned := false for i := range schema.AllOf { if s := PruneDefaultsSchema(&schema.AllOf[i]); s != &schema.AllOf[i] { if !allOfCloned { allOfCloned = true clone() schema.AllOf = make([]spec.Schema, len(orig.AllOf)) copy(schema.AllOf, orig.AllOf) } schema.AllOf[i] = *s } } anyOfCloned := false for i := range schema.AnyOf { if s := PruneDefaultsSchema(&schema.AnyOf[i]); s != &schema.AnyOf[i] { if !anyOfCloned { anyOfCloned = true clone() schema.AnyOf = make([]spec.Schema, len(orig.AnyOf)) copy(schema.AnyOf, orig.AnyOf) } schema.AnyOf[i] = *s } } oneOfCloned := false for i := range schema.OneOf { if s := PruneDefaultsSchema(&schema.OneOf[i]); s != &schema.OneOf[i] { if !oneOfCloned { oneOfCloned = true clone() schema.OneOf = make([]spec.Schema, len(orig.OneOf)) copy(schema.OneOf, orig.OneOf) } schema.OneOf[i] = *s } } if schema.Not != nil { if s := PruneDefaultsSchema(schema.Not); s != schema.Not { clone() schema.Not = s } } if schema.AdditionalProperties != nil && schema.AdditionalProperties.Schema != nil { if s := PruneDefaultsSchema(schema.AdditionalProperties.Schema); s != schema.AdditionalProperties.Schema { clone() schema.AdditionalProperties = &spec.SchemaOrBool{Schema: s, Allows: schema.AdditionalProperties.Allows} } } if schema.AdditionalItems != nil && schema.AdditionalItems.Schema != nil { if s := PruneDefaultsSchema(schema.AdditionalItems.Schema); s != schema.AdditionalItems.Schema { clone() schema.AdditionalItems = &spec.SchemaOrBool{Schema: s, Allows: schema.AdditionalItems.Allows} } } if schema.Items != nil { if schema.Items.Schema != nil { if s := PruneDefaultsSchema(schema.Items.Schema); s != schema.Items.Schema { clone() schema.Items = &spec.SchemaOrArray{Schema: s} } } else { itemsCloned := false for i := range schema.Items.Schemas { if s := PruneDefaultsSchema(&schema.Items.Schemas[i]); s != &schema.Items.Schemas[i] { if !itemsCloned { clone() schema.Items = &spec.SchemaOrArray{ Schemas: make([]spec.Schema, len(orig.Items.Schemas)), } itemsCloned = true copy(schema.Items.Schemas, orig.Items.Schemas) } schema.Items.Schemas[i] = *s } } } } return schema } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/handler/default_pruning_test.go000066400000000000000000000077261453663023200274040ustar00rootroot00000000000000/* Copyright 2020 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package handler_test import ( "encoding/json" "reflect" "testing" "k8s.io/kube-openapi/pkg/handler" "k8s.io/kube-openapi/pkg/validation/spec" ) func TestDefaultPruning(t *testing.T) { def := spec.Definitions{ "foo": spec.Schema{ SchemaProps: spec.SchemaProps{ Default: 0, AllOf: []spec.Schema{{SchemaProps: spec.SchemaProps{Default: "default-string", Title: "Field"}}}, AnyOf: []spec.Schema{{SchemaProps: spec.SchemaProps{Default: "default-string", Title: "Field"}}}, OneOf: []spec.Schema{{SchemaProps: spec.SchemaProps{Default: "default-string", Title: "Field"}}}, Not: &spec.Schema{SchemaProps: spec.SchemaProps{Default: "default-string", Title: "Field"}}, Properties: map[string]spec.Schema{ "foo": {SchemaProps: spec.SchemaProps{Default: "default-string", Title: "Field"}}, }, AdditionalProperties: &spec.SchemaOrBool{Schema: &spec.Schema{SchemaProps: spec.SchemaProps{Default: "default-string", Title: "Field"}}}, PatternProperties: map[string]spec.Schema{ "foo": {SchemaProps: spec.SchemaProps{Default: "default-string", Title: "Field"}}, }, Dependencies: spec.Dependencies{ "foo": spec.SchemaOrStringArray{Schema: &spec.Schema{SchemaProps: spec.SchemaProps{Default: "default-string", Title: "Field"}}}, }, AdditionalItems: &spec.SchemaOrBool{ Schema: &spec.Schema{SchemaProps: spec.SchemaProps{Default: "default-string", Title: "Field"}}, }, Definitions: spec.Definitions{ "bar": spec.Schema{SchemaProps: spec.SchemaProps{Default: "default-string", Title: "Field"}}, }, }, }, } jsonDef, err := json.Marshal(def) if err != nil { t.Fatalf("Failed to marshal definition: %v", err) } wanted := spec.Definitions{ "foo": spec.Schema{ SchemaProps: spec.SchemaProps{ AllOf: []spec.Schema{{SchemaProps: spec.SchemaProps{Title: "Field"}}}, AnyOf: []spec.Schema{{SchemaProps: spec.SchemaProps{Title: "Field"}}}, OneOf: []spec.Schema{{SchemaProps: spec.SchemaProps{Title: "Field"}}}, Not: &spec.Schema{SchemaProps: spec.SchemaProps{Title: "Field"}}, Properties: map[string]spec.Schema{ "foo": {SchemaProps: spec.SchemaProps{Title: "Field"}}, }, AdditionalProperties: &spec.SchemaOrBool{Schema: &spec.Schema{SchemaProps: spec.SchemaProps{Title: "Field"}}}, PatternProperties: map[string]spec.Schema{ "foo": {SchemaProps: spec.SchemaProps{Title: "Field"}}, }, Dependencies: spec.Dependencies{ "foo": spec.SchemaOrStringArray{Schema: &spec.Schema{SchemaProps: spec.SchemaProps{Title: "Field"}}}, }, AdditionalItems: &spec.SchemaOrBool{ Schema: &spec.Schema{SchemaProps: spec.SchemaProps{Title: "Field"}}, }, Definitions: spec.Definitions{ "bar": spec.Schema{SchemaProps: spec.SchemaProps{Title: "Field"}}, }, }, }, } got := handler.PruneDefaults(def) if !reflect.DeepEqual(got, wanted) { gotJSON, _ := json.Marshal(got) wantedJSON, _ := json.Marshal(wanted) t.Fatalf("got: %v\nwanted %v", string(gotJSON), string(wantedJSON)) } // Make sure that def hasn't been changed. newDef, _ := json.Marshal(def) if string(newDef) != string(jsonDef) { t.Fatalf("prune removed defaults from initial config:\nBefore: %v\nAfter: %v", string(jsonDef), string(newDef)) } // Make sure that no-op doesn't change the object. if reflect.ValueOf(handler.PruneDefaults(got)).Pointer() != reflect.ValueOf(got).Pointer() { t.Fatal("no-op prune returned new object") } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/handler/handler.go000066400000000000000000000161031453663023200245610ustar00rootroot00000000000000/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package handler import ( "bytes" "crypto/sha512" "fmt" "net/http" "strconv" "time" "github.com/NYTimes/gziphandler" "github.com/emicklei/go-restful/v3" "github.com/golang/protobuf/proto" openapi_v2 "github.com/google/gnostic-models/openapiv2" "github.com/google/uuid" "github.com/munnerz/goautoneg" klog "k8s.io/klog/v2" "k8s.io/kube-openapi/pkg/builder" "k8s.io/kube-openapi/pkg/cached" "k8s.io/kube-openapi/pkg/common" "k8s.io/kube-openapi/pkg/common/restfuladapter" "k8s.io/kube-openapi/pkg/validation/spec" ) const ( subTypeProtobufDeprecated = "com.github.proto-openapi.spec.v2@v1.0+protobuf" subTypeProtobuf = "com.github.proto-openapi.spec.v2.v1.0+protobuf" subTypeJSON = "json" ) func computeETag(data []byte) string { if data == nil { return "" } return fmt.Sprintf("%X", sha512.Sum512(data)) } type timedSpec struct { spec []byte lastModified time.Time } // OpenAPIService is the service responsible for serving OpenAPI spec. It has // the ability to safely change the spec while serving it. type OpenAPIService struct { specCache cached.LastSuccess[*spec.Swagger] jsonCache cached.Value[timedSpec] protoCache cached.Value[timedSpec] } // NewOpenAPIService builds an OpenAPIService starting with the given spec. func NewOpenAPIService(swagger *spec.Swagger) *OpenAPIService { return NewOpenAPIServiceLazy(cached.Static(swagger, uuid.New().String())) } // NewOpenAPIServiceLazy builds an OpenAPIService from lazy spec. func NewOpenAPIServiceLazy(swagger cached.Value[*spec.Swagger]) *OpenAPIService { o := &OpenAPIService{} o.UpdateSpecLazy(swagger) o.jsonCache = cached.Transform[*spec.Swagger](func(spec *spec.Swagger, etag string, err error) (timedSpec, string, error) { if err != nil { return timedSpec{}, "", err } json, err := spec.MarshalJSON() if err != nil { return timedSpec{}, "", err } return timedSpec{spec: json, lastModified: time.Now()}, computeETag(json), nil }, &o.specCache) o.protoCache = cached.Transform(func(ts timedSpec, etag string, err error) (timedSpec, string, error) { if err != nil { return timedSpec{}, "", err } proto, err := ToProtoBinary(ts.spec) if err != nil { return timedSpec{}, "", err } // We can re-use the same etag as json because of the Vary header. return timedSpec{spec: proto, lastModified: ts.lastModified}, etag, nil }, o.jsonCache) return o } func (o *OpenAPIService) UpdateSpec(swagger *spec.Swagger) error { o.UpdateSpecLazy(cached.Static(swagger, uuid.New().String())) return nil } func (o *OpenAPIService) UpdateSpecLazy(swagger cached.Value[*spec.Swagger]) { o.specCache.Store(swagger) } func ToProtoBinary(json []byte) ([]byte, error) { document, err := openapi_v2.ParseDocument(json) if err != nil { return nil, err } return proto.Marshal(document) } // RegisterOpenAPIVersionedService registers a handler to provide access to provided swagger spec. // // Deprecated: use OpenAPIService.RegisterOpenAPIVersionedService instead. func RegisterOpenAPIVersionedService(spec *spec.Swagger, servePath string, handler common.PathHandler) *OpenAPIService { o := NewOpenAPIService(spec) o.RegisterOpenAPIVersionedService(servePath, handler) return o } // RegisterOpenAPIVersionedService registers a handler to provide access to provided swagger spec. func (o *OpenAPIService) RegisterOpenAPIVersionedService(servePath string, handler common.PathHandler) { accepted := []struct { Type string SubType string ReturnedContentType string GetDataAndEtag cached.Value[timedSpec] }{ {"application", subTypeJSON, "application/" + subTypeJSON, o.jsonCache}, {"application", subTypeProtobufDeprecated, "application/" + subTypeProtobuf, o.protoCache}, {"application", subTypeProtobuf, "application/" + subTypeProtobuf, o.protoCache}, } handler.Handle(servePath, gziphandler.GzipHandler(http.HandlerFunc( func(w http.ResponseWriter, r *http.Request) { decipherableFormats := r.Header.Get("Accept") if decipherableFormats == "" { decipherableFormats = "*/*" } clauses := goautoneg.ParseAccept(decipherableFormats) w.Header().Add("Vary", "Accept") for _, clause := range clauses { for _, accepts := range accepted { if clause.Type != accepts.Type && clause.Type != "*" { continue } if clause.SubType != accepts.SubType && clause.SubType != "*" { continue } // serve the first matching media type in the sorted clause list ts, etag, err := accepts.GetDataAndEtag.Get() if err != nil { klog.Errorf("Error in OpenAPI handler: %s", err) // only return a 503 if we have no older cache data to serve if ts.spec == nil { w.WriteHeader(http.StatusServiceUnavailable) return } } // Set Content-Type header in the reponse w.Header().Set("Content-Type", accepts.ReturnedContentType) // ETag must be enclosed in double quotes: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag w.Header().Set("Etag", strconv.Quote(etag)) // ServeContent will take care of caching using eTag. http.ServeContent(w, r, servePath, ts.lastModified, bytes.NewReader(ts.spec)) return } } // Return 406 for not acceptable format w.WriteHeader(406) return }), )) } // BuildAndRegisterOpenAPIVersionedService builds the spec and registers a handler to provide access to it. // Use this method if your OpenAPI spec is static. If you want to update the spec, use BuildOpenAPISpec then RegisterOpenAPIVersionedService. // // Deprecated: BuildAndRegisterOpenAPIVersionedServiceFromRoutes should be used instead. func BuildAndRegisterOpenAPIVersionedService(servePath string, webServices []*restful.WebService, config *common.Config, handler common.PathHandler) (*OpenAPIService, error) { return BuildAndRegisterOpenAPIVersionedServiceFromRoutes(servePath, restfuladapter.AdaptWebServices(webServices), config, handler) } // BuildAndRegisterOpenAPIVersionedServiceFromRoutes builds the spec and registers a handler to provide access to it. // Use this method if your OpenAPI spec is static. If you want to update the spec, use BuildOpenAPISpec then RegisterOpenAPIVersionedService. func BuildAndRegisterOpenAPIVersionedServiceFromRoutes(servePath string, routeContainers []common.RouteContainer, config *common.Config, handler common.PathHandler) (*OpenAPIService, error) { spec, err := builder.BuildOpenAPISpecFromRoutes(routeContainers, config) if err != nil { return nil, err } o := NewOpenAPIService(spec) o.RegisterOpenAPIVersionedService(servePath, handler) return o, nil } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/handler/handler_test.go000066400000000000000000000201511453663023200256160ustar00rootroot00000000000000package handler import ( json "encoding/json" "fmt" "io" "mime" "net/http" "net/http/httptest" "os" "reflect" "testing" "k8s.io/kube-openapi/pkg/cached" "k8s.io/kube-openapi/pkg/validation/spec" ) var returnedSwagger = []byte(`{ "swagger": "2.0", "info": { "title": "Kubernetes", "version": "v1.11.0" }}`) func TestRegisterOpenAPIVersionedService(t *testing.T) { var s spec.Swagger err := s.UnmarshalJSON(returnedSwagger) if err != nil { t.Errorf("Unexpected error in unmarshalling SwaggerJSON: %v", err) } returnedJSON := normalizeSwaggerOrDie(returnedSwagger) var decodedJSON map[string]interface{} if err := json.Unmarshal(returnedJSON, &decodedJSON); err != nil { t.Fatal(err) } returnedPb, err := ToProtoBinary(returnedJSON) if err != nil { t.Errorf("Unexpected error in preparing returnedPb: %v", err) } mux := http.NewServeMux() o := NewOpenAPIService(&s) o.RegisterOpenAPIVersionedService("/openapi/v2", mux) server := httptest.NewServer(mux) defer server.Close() client := server.Client() tcs := []struct { acceptHeader string respStatus int responseContentTypeHeader string respBody []byte }{ {"", 200, "application/json", returnedJSON}, {"*/*", 200, "application/json", returnedJSON}, {"application/*", 200, "application/json", returnedJSON}, {"application/json", 200, "application/json", returnedJSON}, {"test/test", 406, "", []byte{}}, {"application/test", 406, "", []byte{}}, {"application/test, */*", 200, "application/json", returnedJSON}, {"application/test, application/json", 200, "application/json", returnedJSON}, {"application/com.github.proto-openapi.spec.v2.v1.0+protobuf", 200, "application/com.github.proto-openapi.spec.v2.v1.0+protobuf", returnedPb}, {"application/json, application/com.github.proto-openapi.spec.v2.v1.0+protobuf", 200, "application/json", returnedJSON}, {"application/com.github.proto-openapi.spec.v2.v1.0+protobuf, application/json", 200, "application/com.github.proto-openapi.spec.v2.v1.0+protobuf", returnedPb}, {"application/com.github.proto-openapi.spec.v2.v1.0+protobuf; q=0.5, application/json", 200, "application/json", returnedJSON}, {"application/com.github.proto-openapi.spec.v2@v1.0+protobuf", 200, "application/com.github.proto-openapi.spec.v2.v1.0+protobuf", returnedPb}, {"application/json, application/com.github.proto-openapi.spec.v2@v1.0+protobuf", 200, "application/json", returnedJSON}, {"application/com.github.proto-openapi.spec.v2@v1.0+protobuf, application/json", 200, "application/com.github.proto-openapi.spec.v2.v1.0+protobuf", returnedPb}, {"application/com.github.proto-openapi.spec.v2@v1.0+protobuf; q=0.5, application/json", 200, "application/json", returnedJSON}, } for _, tc := range tcs { req, err := http.NewRequest("GET", server.URL+"/openapi/v2", nil) if err != nil { t.Errorf("Accept: %v: Unexpected error in creating new request: %v", tc.acceptHeader, err) } req.Header.Add("Accept", tc.acceptHeader) resp, err := client.Do(req) if err != nil { t.Errorf("Accept: %v: Unexpected error in serving HTTP request: %v", tc.acceptHeader, err) } if resp.StatusCode != tc.respStatus { t.Errorf("Accept: %v: Unexpected response status code, want: %v, got: %v", tc.acceptHeader, tc.respStatus, resp.StatusCode) } if tc.respStatus != 200 { continue } responseContentType := resp.Header.Get("Content-Type") if responseContentType != tc.responseContentTypeHeader { t.Errorf("Accept: %v: Unexpected content type in response, want: %v, got: %v", tc.acceptHeader, tc.responseContentTypeHeader, responseContentType) } _, _, err = mime.ParseMediaType(responseContentType) if err != nil { t.Errorf("Unexpected error in parsing response content type: %v, err: %v", responseContentType, err) } defer resp.Body.Close() body, err := io.ReadAll(resp.Body) if err != nil { t.Errorf("Accept: %v: Unexpected error in reading response body: %v", tc.acceptHeader, err) } if !reflect.DeepEqual(body, tc.respBody) { t.Errorf("Accept: %v: Response body mismatches, \nwant: %s, \ngot: %s", tc.acceptHeader, string(tc.respBody), string(body)) } } } var updatedSwagger = []byte(`{ "swagger": "2.0", "info": { "title": "Kubernetes", "version": "v1.12.0" }}`) func getJSONBodyOrDie(server *httptest.Server) []byte { return getBodyOrDie(server, "application/json") } func getProtoBodyOrDie(server *httptest.Server) []byte { return getBodyOrDie(server, "application/com.github.proto-openapi.spec.v2.v1.0+protobuf") } func getBodyOrDie(server *httptest.Server, acceptHeader string) []byte { req, err := http.NewRequest("GET", server.URL+"/openapi/v2", nil) if err != nil { panic(fmt.Errorf("Unexpected error in creating new request: %v", err)) } req.Header.Add("Accept", acceptHeader) resp, err := server.Client().Do(req) if err != nil { panic(fmt.Errorf("Unexpected error in serving HTTP request: %v", err)) } defer resp.Body.Close() body, err := io.ReadAll(resp.Body) if err != nil { panic(fmt.Errorf("Unexpected error in reading response body: %v", err)) } return body } func normalizeSwaggerOrDie(j []byte) []byte { var s spec.Swagger err := s.UnmarshalJSON(j) if err != nil { panic(fmt.Errorf("Unexpected error in unmarshalling SwaggerJSON: %v", err)) } rj, err := json.Marshal(s) if err != nil { panic(fmt.Errorf("Unexpected error in preparing returnedJSON: %v", err)) } return rj } func TestUpdateSpecLazy(t *testing.T) { returnedJSON := normalizeSwaggerOrDie(returnedSwagger) var s spec.Swagger err := s.UnmarshalJSON(returnedJSON) if err != nil { t.Errorf("Unexpected error in unmarshalling SwaggerJSON: %v", err) } mux := http.NewServeMux() o := NewOpenAPIService(&s) o.RegisterOpenAPIVersionedService("/openapi/v2", mux) server := httptest.NewServer(mux) defer server.Close() body := string(getJSONBodyOrDie(server)) if body != string(returnedJSON) { t.Errorf("Unexpected swagger received, got %q, expected %q", body, string(returnedSwagger)) } o.UpdateSpecLazy(cached.Func(func() (*spec.Swagger, string, error) { var s spec.Swagger err := s.UnmarshalJSON(updatedSwagger) if err != nil { t.Errorf("Unexpected error in unmarshalling SwaggerJSON: %v", err) } return &s, "SOMEHASH", nil })) updatedJSON := normalizeSwaggerOrDie(updatedSwagger) body = string(getJSONBodyOrDie(server)) if body != string(updatedJSON) { t.Errorf("Unexpected swagger received, got %q, expected %q", body, string(updatedJSON)) } } func TestToProtoBinary(t *testing.T) { bs, err := os.ReadFile("../../test/integration/testdata/aggregator/openapi.json") if err != nil { t.Fatal(err) } if _, err := ToProtoBinary(bs); err != nil { t.Fatal() } // TODO: add some kind of roundtrip test here } func TestConcurrentReadStaleCache(t *testing.T) { // Number of requests sent in parallel concurrency := 5 var s spec.Swagger err := s.UnmarshalJSON(returnedSwagger) if err != nil { t.Errorf("Unexpected error in unmarshalling SwaggerJSON: %v", err) } mux := http.NewServeMux() o := NewOpenAPIService(&s) o.RegisterOpenAPIVersionedService("/openapi/v2", mux) server := httptest.NewServer(mux) defer server.Close() returnedJSON := normalizeSwaggerOrDie(returnedSwagger) returnedPb, err := ToProtoBinary(returnedJSON) if err != nil { t.Errorf("Unexpected error in preparing returnedPb: %v", err) } jsonResultsChan := make(chan []byte) protoResultsChan := make(chan []byte) updateSpecChan := make(chan struct{}) for i := 0; i < concurrency; i++ { go func() { sc := s o.UpdateSpec(&sc) updateSpecChan <- struct{}{} }() go func() { jsonResultsChan <- getJSONBodyOrDie(server) }() go func() { protoResultsChan <- getProtoBodyOrDie(server) }() } for i := 0; i < concurrency; i++ { r := <-jsonResultsChan if !reflect.DeepEqual(r, returnedJSON) { t.Errorf("Returned and expected JSON do not match: got %v, want %v", string(r), string(returnedJSON)) } } for i := 0; i < concurrency; i++ { r := <-protoResultsChan if !reflect.DeepEqual(r, returnedPb) { t.Errorf("Returned and expected pb do not match: got %v, want %v", r, returnedPb) } } for i := 0; i < concurrency; i++ { <-updateSpecChan } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/handler3/000077500000000000000000000000001453663023200226775ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/handler3/handler.go000066400000000000000000000223051453663023200246450ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package handler3 import ( "bytes" "crypto/sha512" "encoding/json" "fmt" "net/http" "net/url" "path" "strconv" "strings" "sync" "time" "github.com/golang/protobuf/proto" openapi_v3 "github.com/google/gnostic-models/openapiv3" "github.com/google/uuid" "github.com/munnerz/goautoneg" "k8s.io/klog/v2" "k8s.io/kube-openapi/pkg/cached" "k8s.io/kube-openapi/pkg/common" "k8s.io/kube-openapi/pkg/spec3" ) const ( subTypeProtobufDeprecated = "com.github.proto-openapi.spec.v3@v1.0+protobuf" subTypeProtobuf = "com.github.proto-openapi.spec.v3.v1.0+protobuf" subTypeJSON = "json" ) // OpenAPIV3Discovery is the format of the Discovery document for OpenAPI V3 // It maps Discovery paths to their corresponding URLs with a hash parameter included type OpenAPIV3Discovery struct { Paths map[string]OpenAPIV3DiscoveryGroupVersion `json:"paths"` } // OpenAPIV3DiscoveryGroupVersion includes information about a group version and URL // for accessing the OpenAPI. The URL includes a hash parameter to support client side caching type OpenAPIV3DiscoveryGroupVersion struct { // Path is an absolute path of an OpenAPI V3 document in the form of /openapi/v3/apis/apps/v1?hash=014fbff9a07c ServerRelativeURL string `json:"serverRelativeURL"` } func ToV3ProtoBinary(json []byte) ([]byte, error) { document, err := openapi_v3.ParseDocument(json) if err != nil { return nil, err } return proto.Marshal(document) } type timedSpec struct { spec []byte lastModified time.Time } // This type is protected by the lock on OpenAPIService. type openAPIV3Group struct { specCache cached.LastSuccess[*spec3.OpenAPI] pbCache cached.Value[timedSpec] jsonCache cached.Value[timedSpec] } func newOpenAPIV3Group() *openAPIV3Group { o := &openAPIV3Group{} o.jsonCache = cached.Transform[*spec3.OpenAPI](func(spec *spec3.OpenAPI, etag string, err error) (timedSpec, string, error) { if err != nil { return timedSpec{}, "", err } json, err := json.Marshal(spec) if err != nil { return timedSpec{}, "", err } return timedSpec{spec: json, lastModified: time.Now()}, computeETag(json), nil }, &o.specCache) o.pbCache = cached.Transform(func(ts timedSpec, etag string, err error) (timedSpec, string, error) { if err != nil { return timedSpec{}, "", err } proto, err := ToV3ProtoBinary(ts.spec) if err != nil { return timedSpec{}, "", err } return timedSpec{spec: proto, lastModified: ts.lastModified}, etag, nil }, o.jsonCache) return o } func (o *openAPIV3Group) UpdateSpec(openapi cached.Value[*spec3.OpenAPI]) { o.specCache.Store(openapi) } // OpenAPIService is the service responsible for serving OpenAPI spec. It has // the ability to safely change the spec while serving it. type OpenAPIService struct { // Mutex protects the schema map. mutex sync.Mutex v3Schema map[string]*openAPIV3Group discoveryCache cached.LastSuccess[timedSpec] } func computeETag(data []byte) string { if data == nil { return "" } return fmt.Sprintf("%X", sha512.Sum512(data)) } func constructServerRelativeURL(gvString, etag string) string { u := url.URL{Path: path.Join("/openapi/v3", gvString)} query := url.Values{} query.Set("hash", etag) u.RawQuery = query.Encode() return u.String() } // NewOpenAPIService builds an OpenAPIService starting with the given spec. func NewOpenAPIService() *OpenAPIService { o := &OpenAPIService{} o.v3Schema = make(map[string]*openAPIV3Group) // We're not locked because we haven't shared the structure yet. o.discoveryCache.Store(o.buildDiscoveryCacheLocked()) return o } func (o *OpenAPIService) buildDiscoveryCacheLocked() cached.Value[timedSpec] { caches := make(map[string]cached.Value[timedSpec], len(o.v3Schema)) for gvName, group := range o.v3Schema { caches[gvName] = group.jsonCache } return cached.Merge(func(results map[string]cached.Result[timedSpec]) (timedSpec, string, error) { discovery := &OpenAPIV3Discovery{Paths: make(map[string]OpenAPIV3DiscoveryGroupVersion)} for gvName, result := range results { if result.Err != nil { return timedSpec{}, "", result.Err } discovery.Paths[gvName] = OpenAPIV3DiscoveryGroupVersion{ ServerRelativeURL: constructServerRelativeURL(gvName, result.Etag), } } j, err := json.Marshal(discovery) if err != nil { return timedSpec{}, "", err } return timedSpec{spec: j, lastModified: time.Now()}, computeETag(j), nil }, caches) } func (o *OpenAPIService) getSingleGroupBytes(getType string, group string) ([]byte, string, time.Time, error) { o.mutex.Lock() defer o.mutex.Unlock() v, ok := o.v3Schema[group] if !ok { return nil, "", time.Now(), fmt.Errorf("Cannot find CRD group %s", group) } switch getType { case subTypeJSON: ts, etag, err := v.jsonCache.Get() return ts.spec, etag, ts.lastModified, err case subTypeProtobuf, subTypeProtobufDeprecated: ts, etag, err := v.pbCache.Get() return ts.spec, etag, ts.lastModified, err default: return nil, "", time.Now(), fmt.Errorf("Invalid accept clause %s", getType) } } // UpdateGroupVersionLazy adds or updates an existing group with the new cached. func (o *OpenAPIService) UpdateGroupVersionLazy(group string, openapi cached.Value[*spec3.OpenAPI]) { o.mutex.Lock() defer o.mutex.Unlock() if _, ok := o.v3Schema[group]; !ok { o.v3Schema[group] = newOpenAPIV3Group() // Since there is a new item, we need to re-build the cache map. o.discoveryCache.Store(o.buildDiscoveryCacheLocked()) } o.v3Schema[group].UpdateSpec(openapi) } func (o *OpenAPIService) UpdateGroupVersion(group string, openapi *spec3.OpenAPI) { o.UpdateGroupVersionLazy(group, cached.Static(openapi, uuid.New().String())) } func (o *OpenAPIService) DeleteGroupVersion(group string) { o.mutex.Lock() defer o.mutex.Unlock() delete(o.v3Schema, group) // Rebuild the merge cache map since the items have changed. o.discoveryCache.Store(o.buildDiscoveryCacheLocked()) } func (o *OpenAPIService) HandleDiscovery(w http.ResponseWriter, r *http.Request) { ts, etag, err := o.discoveryCache.Get() if err != nil { klog.Errorf("Error serving discovery: %s", err) w.WriteHeader(http.StatusInternalServerError) return } w.Header().Set("Etag", strconv.Quote(etag)) w.Header().Set("Content-Type", "application/json") http.ServeContent(w, r, "/openapi/v3", ts.lastModified, bytes.NewReader(ts.spec)) } func (o *OpenAPIService) HandleGroupVersion(w http.ResponseWriter, r *http.Request) { url := strings.SplitAfterN(r.URL.Path, "/", 4) group := url[3] decipherableFormats := r.Header.Get("Accept") if decipherableFormats == "" { decipherableFormats = "*/*" } clauses := goautoneg.ParseAccept(decipherableFormats) w.Header().Add("Vary", "Accept") if len(clauses) == 0 { return } accepted := []struct { Type string SubType string ReturnedContentType string }{ {"application", subTypeJSON, "application/" + subTypeJSON}, {"application", subTypeProtobuf, "application/" + subTypeProtobuf}, {"application", subTypeProtobufDeprecated, "application/" + subTypeProtobuf}, } for _, clause := range clauses { for _, accepts := range accepted { if clause.Type != accepts.Type && clause.Type != "*" { continue } if clause.SubType != accepts.SubType && clause.SubType != "*" { continue } data, etag, lastModified, err := o.getSingleGroupBytes(accepts.SubType, group) if err != nil { return } // Set Content-Type header in the reponse w.Header().Set("Content-Type", accepts.ReturnedContentType) // ETag must be enclosed in double quotes: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag w.Header().Set("Etag", strconv.Quote(etag)) if hash := r.URL.Query().Get("hash"); hash != "" { if hash != etag { u := constructServerRelativeURL(group, etag) http.Redirect(w, r, u, 301) return } // The Vary header is required because the Accept header can // change the contents returned. This prevents clients from caching // protobuf as JSON and vice versa. w.Header().Set("Vary", "Accept") // Only set these headers when a hash is given. w.Header().Set("Cache-Control", "public, immutable") // Set the Expires directive to the maximum value of one year from the request, // effectively indicating that the cache never expires. w.Header().Set("Expires", time.Now().AddDate(1, 0, 0).Format(time.RFC1123)) } http.ServeContent(w, r, "", lastModified, bytes.NewReader(data)) return } } w.WriteHeader(406) return } func (o *OpenAPIService) RegisterOpenAPIV3VersionedService(servePath string, handler common.PathHandlerByGroupVersion) error { handler.Handle(servePath, http.HandlerFunc(o.HandleDiscovery)) handler.HandlePrefix(servePath+"/", http.HandlerFunc(o.HandleGroupVersion)) return nil } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/handler3/handler_test.go000066400000000000000000000413501453663023200257050ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package handler3 import ( "bytes" "fmt" "io" "mime" "net/http" "net/http/httptest" "reflect" "strconv" "testing" "time" "encoding/json" "k8s.io/kube-openapi/pkg/spec3" ) var returnedOpenAPI = []byte(`{ "openapi": "3.0", "info": { "title": "Kubernetes", "version": "v1.23.0" }, "paths": {}}`) func TestRegisterOpenAPIVersionedService(t *testing.T) { var s *spec3.OpenAPI buffer := new(bytes.Buffer) if err := json.Compact(buffer, returnedOpenAPI); err != nil { t.Errorf("%v", err) } compactOpenAPI := buffer.Bytes() var hash = computeETag(compactOpenAPI) var returnedGroupVersionListJSON = []byte(`{"paths":{"apis/apps/v1":{"serverRelativeURL":"/openapi/v3/apis/apps/v1?hash=` + hash + `"}}}`) json.Unmarshal(compactOpenAPI, &s) returnedJSON, err := json.Marshal(s) if err != nil { t.Fatalf("Unexpected error in preparing returnedJSON: %v", err) } returnedPb, err := ToV3ProtoBinary(compactOpenAPI) if err != nil { t.Fatalf("Unexpected error in preparing returnedPb: %v", err) } mux := http.NewServeMux() o := NewOpenAPIService() if err != nil { t.Fatal(err) } mux.Handle("/openapi/v3", http.HandlerFunc(o.HandleDiscovery)) mux.Handle("/openapi/v3/apis/apps/v1", http.HandlerFunc(o.HandleGroupVersion)) o.UpdateGroupVersion("apis/apps/v1", s) server := httptest.NewServer(mux) defer server.Close() client := server.Client() tcs := []struct { acceptHeader string respStatus int urlPath string respBody []byte expectedETag string sendETag bool responseContentTypeHeader string }{ { acceptHeader: "", respStatus: 200, urlPath: "openapi/v3", respBody: returnedGroupVersionListJSON, expectedETag: computeETag(returnedGroupVersionListJSON), responseContentTypeHeader: "application/json", }, { acceptHeader: "", respStatus: 304, urlPath: "openapi/v3", respBody: returnedGroupVersionListJSON, expectedETag: computeETag(returnedGroupVersionListJSON), sendETag: true, }, { acceptHeader: "", respStatus: 200, urlPath: "openapi/v3/apis/apps/v1", respBody: returnedJSON, expectedETag: computeETag(returnedJSON), responseContentTypeHeader: "application/json", }, { acceptHeader: "", respStatus: 304, urlPath: "openapi/v3/apis/apps/v1", respBody: returnedJSON, expectedETag: computeETag(returnedJSON), sendETag: true, }, { acceptHeader: "*/*", respStatus: 200, urlPath: "openapi/v3/apis/apps/v1", respBody: returnedJSON, expectedETag: computeETag(returnedJSON), responseContentTypeHeader: "application/json", }, { acceptHeader: "application/json", respStatus: 200, urlPath: "openapi/v3/apis/apps/v1", respBody: returnedJSON, expectedETag: computeETag(returnedJSON), responseContentTypeHeader: "application/json", }, { acceptHeader: "application/*", respStatus: 200, urlPath: "openapi/v3/apis/apps/v1", respBody: returnedJSON, expectedETag: computeETag(returnedJSON), responseContentTypeHeader: "application/json", }, { acceptHeader: "test/test", respStatus: 406, urlPath: "openapi/v3/apis/apps/v1", respBody: []byte{}, }, { acceptHeader: "application/test", respStatus: 406, urlPath: "openapi/v3/apis/apps/v1", respBody: []byte{}, }, { acceptHeader: "application/test, */*", respStatus: 200, urlPath: "openapi/v3/apis/apps/v1", respBody: returnedJSON, expectedETag: computeETag(returnedJSON), responseContentTypeHeader: "application/json", }, { acceptHeader: "application/com.github.proto-openapi.spec.v3.v1.0+protobuf", respStatus: 200, urlPath: "openapi/v3/apis/apps/v1", respBody: returnedPb, expectedETag: computeETag(returnedJSON), responseContentTypeHeader: "application/com.github.proto-openapi.spec.v3.v1.0+protobuf", }, { acceptHeader: "application/com.github.proto-openapi.spec.v3.v1.0+protobuf", respStatus: 304, urlPath: "openapi/v3/apis/apps/v1", respBody: returnedPb, expectedETag: computeETag(returnedJSON), sendETag: true, }, { acceptHeader: "application/json, application/com.github.proto-openapi.spec.v2.v1.0+protobuf", respStatus: 200, urlPath: "openapi/v3/apis/apps/v1", respBody: returnedJSON, expectedETag: computeETag(returnedJSON), responseContentTypeHeader: "application/json", }, { acceptHeader: "application/com.github.proto-openapi.spec.v3.v1.0+protobuf, application/json", respStatus: 200, urlPath: "openapi/v3/apis/apps/v1", respBody: returnedPb, expectedETag: computeETag(returnedJSON), responseContentTypeHeader: "application/com.github.proto-openapi.spec.v3.v1.0+protobuf", }, { acceptHeader: "application/com.github.proto-openapi.spec.v3.v1.0+protobuf, application/json", respStatus: 304, urlPath: "openapi/v3/apis/apps/v1", respBody: returnedPb, expectedETag: computeETag(returnedJSON), sendETag: true, }, { acceptHeader: "application/com.github.proto-openapi.spec.v3.v1.0+protobuf; q=0.5, application/json", respStatus: 200, urlPath: "openapi/v3/apis/apps/v1", respBody: returnedJSON, expectedETag: computeETag(returnedJSON), responseContentTypeHeader: "application/json", }, { acceptHeader: "application/com.github.proto-openapi.spec.v3@v1.0+protobuf", respStatus: 200, urlPath: "openapi/v3/apis/apps/v1", respBody: returnedPb, expectedETag: computeETag(returnedJSON), responseContentTypeHeader: "application/com.github.proto-openapi.spec.v3.v1.0+protobuf", }, { acceptHeader: "application/com.github.proto-openapi.spec.v3@v1.0+protobuf", respStatus: 304, urlPath: "openapi/v3/apis/apps/v1", respBody: returnedPb, expectedETag: computeETag(returnedJSON), sendETag: true, }, { acceptHeader: "application/com.github.proto-openapi.spec.v3@v1.0+protobuf, application/json", respStatus: 200, urlPath: "openapi/v3/apis/apps/v1", respBody: returnedPb, expectedETag: computeETag(returnedJSON), responseContentTypeHeader: "application/com.github.proto-openapi.spec.v3.v1.0+protobuf", }, { acceptHeader: "application/com.github.proto-openapi.spec.v3@v1.0+protobuf; q=0.5, application/json", respStatus: 200, urlPath: "openapi/v3/apis/apps/v1", respBody: returnedJSON, expectedETag: computeETag(returnedJSON), responseContentTypeHeader: "application/json", }, } for _, tc := range tcs { req, err := http.NewRequest("GET", server.URL+"/"+tc.urlPath, nil) if err != nil { t.Errorf("Accept: %v: Unexpected error in creating new request: %v", tc.acceptHeader, err) } req.Header.Add("Accept", tc.acceptHeader) if tc.sendETag { req.Header.Add("If-None-Match", strconv.Quote(tc.expectedETag)) } resp, err := client.Do(req) if err != nil { t.Errorf("Accept: %v: Unexpected error in serving HTTP request: %v", tc.acceptHeader, err) } defer resp.Body.Close() if resp.StatusCode != tc.respStatus { t.Errorf("Accept: %v: Unexpected response status code, want: %v, got: %v", tc.acceptHeader, tc.respStatus, resp.StatusCode) } if tc.respStatus == 304 { body, err := io.ReadAll(resp.Body) if err != nil { t.Errorf("Accept: %v: Unexpected error in reading response body: %v", tc.acceptHeader, err) } if len(body) != 0 { t.Errorf("Response Body length must be 0 if 304 is returned.") } } if tc.respStatus != 200 { continue } responseContentType := resp.Header.Get("Content-Type") if responseContentType != tc.responseContentTypeHeader { t.Errorf("Accept: %v: Unexpected content type in response, want: %v, got: %v", tc.acceptHeader, tc.responseContentTypeHeader, responseContentType) } _, _, err = mime.ParseMediaType(responseContentType) if err != nil { t.Errorf("Unexpected error in parsing response content type: %v, err: %v", responseContentType, err) } gotETag := resp.Header.Get("ETag") if strconv.Quote(tc.expectedETag) != gotETag { t.Errorf("Expect ETag %s, got %s", strconv.Quote(tc.expectedETag), gotETag) } body, err := io.ReadAll(resp.Body) if err != nil { t.Errorf("Accept: %v: Unexpected error in reading response body: %v", tc.acceptHeader, err) } if !reflect.DeepEqual(body, tc.respBody) { t.Errorf("Accept: %v: Response body mismatches, \nwant: %s, \ngot: %s", tc.acceptHeader, string(tc.respBody), string(body)) } } } func TestCacheBusting(t *testing.T) { var s *spec3.OpenAPI buffer := new(bytes.Buffer) if err := json.Compact(buffer, returnedOpenAPI); err != nil { t.Errorf("%v", err) } compactOpenAPI := buffer.Bytes() var hash = computeETag(compactOpenAPI) json.Unmarshal(compactOpenAPI, &s) returnedJSON, err := json.Marshal(s) if err != nil { t.Fatalf("Unexpected error in preparing returnedJSON: %v", err) } returnedPb, err := ToV3ProtoBinary(compactOpenAPI) if err != nil { t.Fatalf("Unexpected error in preparing returnedPb: %v", err) } mux := http.NewServeMux() o := NewOpenAPIService() if err != nil { t.Fatal(err) } mux.Handle("/openapi/v3", http.HandlerFunc(o.HandleDiscovery)) mux.Handle("/openapi/v3/apis/apps/v1", http.HandlerFunc(o.HandleGroupVersion)) o.UpdateGroupVersion("apis/apps/v1", s) server := httptest.NewServer(mux) defer server.Close() client := server.Client() tcs := []struct { acceptHeader string respStatus int urlPath string respBody []byte expectedHash string cacheControl string }{ // Correct hash should yield the proper expiry and Cache Control headers {"application/json", 200, "openapi/v3/apis/apps/v1?hash=" + hash, returnedJSON, hash, "public, immutable", }, {"application/com.github.proto-openapi.spec.v3.v1.0+protobuf", 200, "openapi/v3/apis/apps/v1?hash=" + hash, returnedPb, hash, "public, immutable", }, // Incorrect hash should redirect to the page with the correct hash {"application/json", 200, "openapi/v3/apis/apps/v1?hash=OUTDATEDHASH", returnedJSON, hash, "public, immutable", }, {"application/com.github.proto-openapi.spec.v3.v1.0+protobuf", 200, "openapi/v3/apis/apps/v1?hash=OUTDATEDHASH", returnedPb, hash, "public, immutable", }, // No hash should not return Cache Control information {"application/json", 200, "openapi/v3/apis/apps/v1", returnedJSON, "", "", }, {"application/com.github.proto-openapi.spec.v3.v1.0+protobuf", 200, "openapi/v3/apis/apps/v1", returnedPb, "", "", }, } for _, tc := range tcs { req, err := http.NewRequest("GET", server.URL+"/"+tc.urlPath, nil) if err != nil { t.Errorf("Accept: %v: Unexpected error in creating new request: %v", tc.acceptHeader, err) } req.Header.Add("Accept", tc.acceptHeader) resp, err := client.Do(req) if err != nil { t.Errorf("Accept: %v: Unexpected error in serving HTTP request: %v", tc.acceptHeader, err) } if resp.StatusCode != 200 { t.Errorf("Accept: Unexpected response status code, want: %v, got: %v", 200, resp.StatusCode) } if cacheControl := resp.Header.Get("Cache-Control"); cacheControl != tc.cacheControl { t.Errorf("Expected Cache Control %v, got %v", tc.cacheControl, cacheControl) } if tc.expectedHash != "" { if hash := resp.Request.URL.Query().Get("hash"); hash != tc.expectedHash { t.Errorf("Expected Hash: %s, got %s", tc.expectedHash, hash) } expires := resp.Header.Get("Expires") parsedTime, err := time.Parse(time.RFC1123, expires) if err != nil { t.Errorf("Could not parse cache expiry %v", expires) } difference := parsedTime.Sub(time.Now()).Hours() if difference <= 0 { t.Errorf("Expected cache expiry to be in the future") } } else { hash := resp.Request.URL.Query()["hash"] if len(hash) != 0 { t.Errorf("Expect no redirect and empty hash if the hash is not provide") } expires := resp.Header.Get("Expires") if expires != "" { t.Errorf("Expected an empty Expiry if hash is not provided, got %v", expires) } } defer resp.Body.Close() body, err := io.ReadAll(resp.Body) if err != nil { t.Errorf("Accept: %v: Unexpected error in reading response body: %v", tc.acceptHeader, err) } if !reflect.DeepEqual(body, tc.respBody) { t.Errorf("Accept: %v: Response body mismatches, \nwant: %s, \ngot: %s", tc.acceptHeader, string(tc.respBody), string(body)) } } } func openAPIOrDie(name string) *spec3.OpenAPI { openapi := fmt.Sprintf(`{ "openapi": "3.0", "info": { "title": "%s", "version": "v1.23.0" }, "paths": {}}`, name) spec := spec3.OpenAPI{} if err := json.Unmarshal([]byte(openapi), &spec); err != nil { panic(err) } return &spec } func getDiscovery(server *httptest.Server, path string) (*OpenAPIV3Discovery, string, error) { client := server.Client() req, err := http.NewRequest("GET", server.URL+"/"+path, nil) if err != nil { return nil, "", fmt.Errorf("error in creating new request: %v", err) } resp, err := client.Do(req) if err != nil { return nil, "", fmt.Errorf("error in serving HTTP request: %v", err) } if resp.StatusCode != 200 { return nil, "", fmt.Errorf("unexpected response status code, want: %v, got: %v", 200, resp.StatusCode) } body, err := io.ReadAll(resp.Body) if err != nil { return nil, "", fmt.Errorf("Failed to read request body: %v", err) } discovery := &OpenAPIV3Discovery{} if err := json.Unmarshal(body, &discovery); err != nil { return nil, "", fmt.Errorf("failed to unmarshal discovery: %v", err) } return discovery, resp.Header.Get("etag"), nil } func TestUpdateGroupVersion(t *testing.T) { mux := http.NewServeMux() o := NewOpenAPIService() mux.Handle("/openapi/v3", http.HandlerFunc(o.HandleDiscovery)) o.UpdateGroupVersion("apis/apps/v1", openAPIOrDie("apps-v1")) server := httptest.NewServer(mux) defer server.Close() discovery, discovery_etag, err := getDiscovery(server, "/openapi/v3") if err != nil { t.Fatalf("failed to get /openapi/v3: %v", err) } etag, ok := discovery.Paths["apis/apps/v1"] if !ok { t.Fatalf("missing apis/apps/v1") } // Update with the same thing, make sure we don't update anything. o.UpdateGroupVersion("apis/apps/v1", openAPIOrDie("apps-v1")) discovery, discovery_etag_updated, err := getDiscovery(server, "/openapi/v3") if err != nil { t.Fatalf("failed to get /openapi/v3: %v", err) } if len(discovery.Paths) != 1 { t.Fatalf("Invalid number of Paths, expected 1: %v", discovery.Paths) } etag_updated, ok := discovery.Paths["apis/apps/v1"] if !ok { t.Fatalf("missing apis/apps/v1") } if discovery_etag_updated != discovery_etag { t.Fatalf("No-op update shouldn't update OpenAPI Discovery etag") } if etag_updated != etag { t.Fatalf("No-op update shouldn't update OpenAPI etag") } // Add one more, make sure it's in the list o.UpdateGroupVersion("apis/something/v1", openAPIOrDie("something-v1")) discovery, _, err = getDiscovery(server, "/openapi/v3") if err != nil { t.Fatalf("failed to get /openapi/v3: %v", err) } if len(discovery.Paths) != 2 { t.Fatalf("Invalid number of Paths, expected 2: %v", discovery.Paths) } // And remove o.DeleteGroupVersion("apis/apps/v1") discovery, _, err = getDiscovery(server, "/openapi/v3") if err != nil { t.Fatalf("failed to get /openapi/v3: %v", err) } if len(discovery.Paths) != 1 { t.Fatalf("Invalid number of Paths, expected 2: %v", discovery.Paths) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/idl/000077500000000000000000000000001453663023200217475ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/idl/doc.go000066400000000000000000000116551453663023200230530ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ // The IDL package describes comment directives that may be applied to // API types and fields. package idl // ListType annotates a list to further describe its topology. It may // have 3 possible values: "atomic", "map", or "set". Note that there is // no default, and the generation step will fail if a list is found that // is missing the tag. // // This tag MUST only be used on lists, or the generation step will // fail. // // # Atomic // // Example: // // +listType=atomic // // Atomic lists will be entirely replaced when updated. This tag may be // used on any type of list (struct, scalar, ...). // // Using this tag will generate the following OpenAPI extension: // // "x-kubernetes-list-type": "atomic" // // # Map // // Example: // // +listType=map // // These lists are like maps in that their elements have a non-index key // used to identify them. Order is preserved upon merge. Using the map // tag on a list with non-struct elements will result in an error during // the generation step. // // Using this tag will generate the following OpenAPI extension: // // "x-kubernetes-list-type": "map" // // # Set // // Example: // // +listType=set // // Sets are lists that must not have multiple times the same value. Each // value must be a scalar (or another atomic type). // // Using this tag will generate the following OpenAPI extension: // // "x-kubernetes-list-type": "set" type ListType string // ListMapKey annotates map lists by specifying the key used as the index of the map. // // This tag MUST only be used on lists that have the listType=map // attribute, or the generation step will fail. Also, the value // specified for this attribute must be a scalar typed field of the // child structure (no nesting is supported). // // An example of how this can be used is shown in the ListType (map) example. // // Example: // // +listMapKey=name // // Using this tag will generate the following OpenAPI extension: // // "x-kubernetes-list-map-key": "name" type ListMapKey string // MapType annotates a map to further describe its topology. It may // have one of two values: `atomic` or `granular`. `atomic` means that the entire map is // considered as a whole; actors that wish to update the map can only // entirely replace it. `granular` means that specific values in the map can be // updated separately from other fields. // // By default, a map will be considered as a set of distinct values that // can be updated individually (i.e. the equivalent of `granular`). // This default will still generate an OpenAPI extension with key: "x-kubernetes-map-type". // // This tag MUST only be used on maps, or the generation step will fail. // // # Atomic // // Example: // // +mapType=atomic // // Atomic maps will be entirely replaced when updated. This tag may be // used on any map. // // Using this tag will generate the following OpenAPI extension: // // "x-kubernetes-map-type": "atomic" type MapType string // OpenAPIGen needs to be described. type OpenAPIGen string // Optional annotates a field to specify it may be omitted. // By default, fields will be marked as required if not otherwise specified. // // Example: // // +optional // // Additionally, the json struct tag directive "omitempty" can be used to imply // the same. // // Example: // // OptionalField `json:"optionalField,omitempty"` type Optional string // PatchMergeKey needs to be described. type PatchMergeKey string // PatchStrategy needs to be described. type PatchStrategy string // StructType annotates a struct to further describe its topology. It may // have one of two values: `atomic` or `granular`. `atomic` means that the entire struct is // considered as a whole; actors that wish to update the struct can only // entirely replace it. `granular` means that specific fields in the struct can be // updated separately from other fields. // // By default, a struct will be considered as a set of distinct values that // can be updated individually (`granular`). // This default will still generate an OpenAPI extension with key: "x-kubernetes-map-type". // // This tag MUST only be used on structs, or the generation step will fail. // // # Atomic // // Example: // // +structType=atomic // // Atomic structs will be entirely replaced when updated. This tag may be // used on any struct. // // Using this tag will generate the following OpenAPI extension: // // "x-kubernetes-map-type": "atomic" type StructType string // Union is TBD. type Union string golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/idl/listtype_test.go000066400000000000000000000027511453663023200252170ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package idl_test // This example shows how to use the listType map attribute and how to // specify a key to identify elements of the list. The listMapKey // attribute is used to specify that Name is the key of the map. func ExampleListType_map() { type SomeStruct struct { Name string Value string } type SomeAPI struct { // +listType=map // +listMapKey=name elements []SomeStruct } } // This example shows how to use the listType set attribute to specify // that this list should be treated as a set: items in the list can't be // duplicated. func ExampleListType_set() { type SomeAPI struct { // +listType=set keys []string } } // This example shows how to use the listType atomic attribute to // specify that this list should be treated as a whole. func ExampleListType_atomic() { type SomeStruct struct { Name string Value string } type SomeAPI struct { // +listType=atomic elements []SomeStruct } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/idl/maptype_test.go000066400000000000000000000014621453663023200250170ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package idl_test // This example shows how to use the mapType atomic attribute to // specify that this map should be treated as a whole. func ExampleMapType_atomic() { type SomeAPI struct { // +mapType=atomic elements map[string]string } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/idl/structtype_test.go000066400000000000000000000015621453663023200255670ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package idl_test // This example shows how to use the structType atomic attribute to // specify that this struct should be treated as a whole. func ExampleStructType_atomic() { type SomeStruct struct { Name string Value string } type SomeAPI struct { // +structType=atomic elements SomeStruct } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/000077500000000000000000000000001453663023200230135ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/flags.go000066400000000000000000000016141453663023200244400ustar00rootroot00000000000000/* Copyright 2022 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package internal // Used by tests to selectively disable experimental JSON unmarshaler var UseOptimizedJSONUnmarshaling bool = true var UseOptimizedJSONUnmarshalingV3 bool = true // Used by tests to selectively disable experimental JSON marshaler var UseOptimizedJSONMarshaling bool = true var UseOptimizedJSONMarshalingV3 bool = true golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/serialization.go000066400000000000000000000035721453663023200262260ustar00rootroot00000000000000/* Copyright 2023 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package internal import ( "github.com/go-openapi/jsonreference" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" ) // DeterministicMarshal calls the jsonv2 library with the deterministic // flag in order to have stable marshaling. func DeterministicMarshal(in any) ([]byte, error) { return jsonv2.MarshalOptions{Deterministic: true}.Marshal(jsonv2.EncodeOptions{}, in) } // JSONRefFromMap populates a json reference object if the map v contains a $ref key. func JSONRefFromMap(jsonRef *jsonreference.Ref, v map[string]interface{}) error { if v == nil { return nil } if vv, ok := v["$ref"]; ok { if str, ok := vv.(string); ok { ref, err := jsonreference.New(str) if err != nil { return err } *jsonRef = ref } } return nil } // SanitizeExtensions sanitizes the input map such that non extension // keys (non x-*, X-*) keys are dropped from the map. Returns the new // modified map, or nil if the map is now empty. func SanitizeExtensions(e map[string]interface{}) map[string]interface{} { for k := range e { if !IsExtensionKey(k) { delete(e, k) } } if len(e) == 0 { e = nil } return e } // IsExtensionKey returns true if the input string is of format x-* or X-* func IsExtensionKey(k string) bool { return len(k) > 1 && (k[0] == 'x' || k[0] == 'X') && k[1] == '-' } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/serialization_test.go000066400000000000000000000041301453663023200272540ustar00rootroot00000000000000/* Copyright 2023 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package internal import ( "github.com/go-openapi/jsonreference" "reflect" "testing" ) func TestJSONRefFromMap(t *testing.T) { testcases := []struct { name string fromMap map[string]interface{} expectNil bool expectRefString string }{ { name: "nil map", expectRefString: "", }, { name: "map with no $ref", fromMap: map[string]interface{}{"a": "b"}, expectRefString: "", }, { name: "ref path", fromMap: map[string]interface{}{"$ref": "#/path"}, expectRefString: "#/path", }, } for _, tc := range testcases { var tmp jsonreference.Ref err := JSONRefFromMap(&tmp, tc.fromMap) if err != nil { t.Errorf("Expect no error from JSONRefMap %s, got error %v", tc.name, err) } if tmp.String() != tc.expectRefString { t.Errorf("Expect jsonRef to be %s, got %s for %s", tc.expectRefString, tmp.String(), tc.name) } } } func TestSanitizeExtensions(t *testing.T) { testcases := []struct { in map[string]interface{} expected map[string]interface{} }{ { in: map[string]interface{}{"a": "b", "x-extension": "foo"}, expected: map[string]interface{}{"x-extension": "foo"}, }, { in: map[string]interface{}{"a": "b"}, expected: nil, }, { in: map[string]interface{}{}, expected: nil, }, } for _, tc := range testcases { e := SanitizeExtensions(tc.in) if !reflect.DeepEqual(tc.expected, e) { t.Errorf("Error: sanitize extensions does not match expected") } } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/000077500000000000000000000000001453663023200253445ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/000077500000000000000000000000001453663023200310765ustar00rootroot00000000000000README.md000066400000000000000000000003301453663023200322720ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experimentForked from: https://github.com/go-json-experiment/json Commit Hash: 540f014424240312547dcccddf11a8229ca0f463 This internal fork exists to prevent dependency issues with go-json-experiment until its API stabilizes. golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json/000077500000000000000000000000001453663023200320475ustar00rootroot00000000000000AUTHORS000066400000000000000000000002561453663023200330430ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json# This source code refers to The Go Authors for copyright purposes. # The master list of authors is in the main Go distribution, # visible at https://tip.golang.org/AUTHORS. CONTRIBUTORS000066400000000000000000000002531453663023200336500ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json# This source code was written by the Go contributors. # The master list of contributors is in the main Go distribution, # visible at https://tip.golang.org/CONTRIBUTORS. LICENSE000066400000000000000000000027071453663023200330030ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/jsonCopyright (c) 2020 The Go Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. README.md000066400000000000000000000470231453663023200332550ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json# JSON Serialization (v2) [![GoDev](https://img.shields.io/static/v1?label=godev&message=reference&color=00add8)](https://pkg.go.dev/github.com/go-json-experiment/json) [![Build Status](https://github.com/go-json-experiment/json/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/go-json-experiment/json/actions) This module hosts an experimental implementation of v2 `encoding/json`. The API is unstable and breaking changes will regularly be made. Do not depend on this in publicly available modules. ## Goals and objectives * **Mostly backwards compatible:** If possible, v2 should aim to be _mostly_ compatible with v1 in terms of both API and default behavior to ease migration. For example, the `Marshal` and `Unmarshal` functions are the most widely used declarations in the v1 package. It seems sensible for equivalent functionality in v2 to be named the same and have the same signature. Behaviorally, we should aim for 95% to 99% backwards compatibility. We do not aim for 100% compatibility since we want the freedom to break certain behaviors that are now considered to have been a mistake. We may provide options that can bring the v2 implementation to 100% compatibility, but it will not be the default. * **More flexible:** There is a [long list of feature requests](https://github.com/golang/go/issues?q=is%3Aissue+is%3Aopen+encoding%2Fjson+in%3Atitle). We should aim to provide the most flexible features that addresses most usages. We do not want to over fit the v2 API to handle every possible use case. Ideally, the features provided should be orthogonal in nature such that any combination of features results in as few surprising edge cases as possible. * **More performant:** JSON serialization is widely used and any bit of extra performance gains will be greatly appreciated. Some rarely used behaviors of v1 may be dropped in favor of better performance. For example, despite `Encoder` and `Decoder` operating on an `io.Writer` and `io.Reader`, they do not operate in a truly streaming manner, leading to a loss in performance. The v2 implementation should aim to be truly streaming by default (see [#33714](https://golang.org/issue/33714)). * **Easy to use (hard to misuse):** The v2 API should aim to make the common case easy and the less common case at least possible. The API should avoid behavior that goes contrary to user expectation, which may result in subtle bugs (see [#36225](https://golang.org/issue/36225)). * **v1 and v2 maintainability:** Since the v1 implementation must stay forever, it would be beneficial if v1 could be implemented under the hood with v2, allowing for less maintenance burden in the future. This probably implies that behavioral changes in v2 relative to v1 need to be exposed as options. * **Avoid unsafe:** Standard library packages generally avoid the use of package `unsafe` even if it could provide a performance boost. We aim to preserve this property. ## Expectations While this module aims to possibly be the v2 implementation of `encoding/json`, there is no guarantee that this outcome will occur. As with any major change to the Go standard library, this will eventually go through the [Go proposal process](https://github.com/golang/proposal#readme). At the present moment, this is still in the design and experimentation phase and is not ready for a formal proposal. There are several possible outcomes from this experiment: 1. We determine that a v2 `encoding/json` would not provide sufficient benefit over the existing v1 `encoding/json` package. Thus, we abandon this effort. 2. We propose a v2 `encoding/json` design, but it is rejected in favor of some other design that is considered superior. 3. We propose a v2 `encoding/json` design, but rather than adding an entirely new v2 `encoding/json` package, we decide to merge its functionality into the existing v1 `encoding/json` package. 4. We propose a v2 `encoding/json` design and it is accepted, resulting in its addition to the standard library. 5. Some other unforeseen outcome (among the infinite number of possibilities). ## Development This module is primarily developed by [@dsnet](https://github.com/dsnet), [@mvdan](https://github.com/mvdan), and [@johanbrandhorst](https://github.com/johanbrandhorst) with feedback provided by [@rogpeppe](https://github.com/rogpeppe), [@ChrisHines](https://github.com/ChrisHines), and [@rsc](https://github.com/rsc). Discussion about semantics occur semi-regularly, where a [record of past meetings can be found here](https://docs.google.com/document/d/1rovrOTd-wTawGMPPlPuKhwXaYBg9VszTXR9AQQL5LfI/edit?usp=sharing). ## Design overview This package aims to provide a clean separation between syntax and semantics. Syntax deals with the structural representation of JSON (as specified in [RFC 4627](https://tools.ietf.org/html/rfc4627), [RFC 7159](https://tools.ietf.org/html/rfc7159), [RFC 7493](https://tools.ietf.org/html/rfc7493), [RFC 8259](https://tools.ietf.org/html/rfc8259), and [RFC 8785](https://tools.ietf.org/html/rfc8785)). Semantics deals with the meaning of syntactic data as usable application data. The `Encoder` and `Decoder` types are streaming tokenizers concerned with the packing or parsing of JSON data. They operate on `Token` and `RawValue` types which represent the common data structures that are representable in JSON. `Encoder` and `Decoder` do not aim to provide any interpretation of the data. Functions like `Marshal`, `MarshalFull`, `MarshalNext`, `Unmarshal`, `UnmarshalFull`, and `UnmarshalNext` provide semantic meaning by correlating any arbitrary Go type with some JSON representation of that type (as stored in data types like `[]byte`, `io.Writer`, `io.Reader`, `Encoder`, or `Decoder`). ![API overview](api.png) This diagram provides a high-level overview of the v2 `json` package. Purple blocks represent types, while blue blocks represent functions or methods. The arrows and their direction represent the approximate flow of data. The bottom half of the diagram contains functionality that is only concerned with syntax, while the upper half contains functionality that assigns semantic meaning to syntactic data handled by the bottom half. In contrast to v1 `encoding/json`, options are represented as separate types rather than being setter methods on the `Encoder` or `Decoder` types. ## Behavior changes The v2 `json` package changes the default behavior of `Marshal` and `Unmarshal` relative to the v1 `json` package to be more sensible. Some of these behavior changes have options and workarounds to opt into behavior similar to what v1 provided. This table shows an overview of the changes: | v1 | v2 | Details | | -- | -- | ------- | | JSON object members are unmarshaled into a Go struct using a **case-insensitive name match**. | JSON object members are unmarshaled into a Go struct using a **case-sensitive name match**. | [CaseSensitivity](/diff_test.go#:~:text=TestCaseSensitivity) | | When marshaling a Go struct, a struct field marked as `omitempty` is omitted if **the field value is an empty Go value**, which is defined as false, 0, a nil pointer, a nil interface value, and any empty array, slice, map, or string. | When marshaling a Go struct, a struct field marked as `omitempty` is omitted if **the field value would encode as an empty JSON value**, which is defined as a JSON null, or an empty JSON string, object, or array. | [OmitEmptyOption](/diff_test.go#:~:text=TestOmitEmptyOption) | | The `string` option **does affect** Go bools. | The `string` option **does not affect** Go bools. | [StringOption](/diff_test.go#:~:text=TestStringOption) | | The `string` option **does not recursively affect** sub-values of the Go field value. | The `string` option **does recursively affect** sub-values of the Go field value. | [StringOption](/diff_test.go#:~:text=TestStringOption) | | The `string` option **sometimes accepts** a JSON null escaped within a JSON string. | The `string` option **never accepts** a JSON null escaped within a JSON string. | [StringOption](/diff_test.go#:~:text=TestStringOption) | | A nil Go slice is marshaled as a **JSON null**. | A nil Go slice is marshaled as an **empty JSON array**. | [NilSlicesAndMaps](/diff_test.go#:~:text=TestNilSlicesAndMaps) | | A nil Go map is marshaled as a **JSON null**. | A nil Go map is marshaled as an **empty JSON object**. | [NilSlicesAndMaps](/diff_test.go#:~:text=TestNilSlicesAndMaps) | | A Go array may be unmarshaled from a **JSON array of any length**. | A Go array must be unmarshaled from a **JSON array of the same length**. | [Arrays](/diff_test.go#:~:text=Arrays) | | A Go byte array is represented as a **JSON array of JSON numbers**. | A Go byte array is represented as a **Base64-encoded JSON string**. | [ByteArrays](/diff_test.go#:~:text=TestByteArrays) | | `MarshalJSON` and `UnmarshalJSON` methods declared on a pointer receiver are **inconsistently called**. | `MarshalJSON` and `UnmarshalJSON` methods declared on a pointer receiver are **consistently called**. | [PointerReceiver](/diff_test.go#:~:text=TestPointerReceiver) | | A Go map is marshaled in a **deterministic order**. | A Go map is marshaled in a **non-deterministic order**. | [MapDeterminism](/diff_test.go#:~:text=TestMapDeterminism) | | JSON strings are encoded **with HTML-specific characters being escaped**. | JSON strings are encoded **without any characters being escaped** (unless necessary). | [EscapeHTML](/diff_test.go#:~:text=TestEscapeHTML) | | When marshaling, invalid UTF-8 within a Go string **are silently replaced**. | When marshaling, invalid UTF-8 within a Go string **results in an error**. | [InvalidUTF8](/diff_test.go#:~:text=TestInvalidUTF8) | | When unmarshaling, invalid UTF-8 within a JSON string **are silently replaced**. | When unmarshaling, invalid UTF-8 within a JSON string **results in an error**. | [InvalidUTF8](/diff_test.go#:~:text=TestInvalidUTF8) | | When marshaling, **an error does not occur** if the output JSON value contains objects with duplicate names. | When marshaling, **an error does occur** if the output JSON value contains objects with duplicate names. | [DuplicateNames](/diff_test.go#:~:text=TestDuplicateNames) | | When unmarshaling, **an error does not occur** if the input JSON value contains objects with duplicate names. | When unmarshaling, **an error does occur** if the input JSON value contains objects with duplicate names. | [DuplicateNames](/diff_test.go#:~:text=TestDuplicateNames) | | Unmarshaling a JSON null into a non-empty Go value **inconsistently clears the value or does nothing**. | Unmarshaling a JSON null into a non-empty Go value **always clears the value**. | [MergeNull](/diff_test.go#:~:text=TestMergeNull) | | Unmarshaling a JSON value into a non-empty Go value **follows inconsistent and bizarre behavior**. | Unmarshaling a JSON value into a non-empty Go value **always merges if the input is an object, and otherwise replaces**. | [MergeComposite](/diff_test.go#:~:text=TestMergeComposite) | | A `time.Duration` is represented as a **JSON number containing the decimal number of nanoseconds**. | A `time.Duration` is represented as a **JSON string containing the formatted duration (e.g., "1h2m3.456s")**. | [TimeDurations](/diff_test.go#:~:text=TestTimeDurations) | | Unmarshaling a JSON number into a Go float beyond its representation **results in an error**. | Unmarshaling a JSON number into a Go float beyond its representation **uses the closest representable value (e.g., ±`math.MaxFloat`)**. | [MaxFloats](/diff_test.go#:~:text=TestMaxFloats) | | A Go struct with only unexported fields **can be serialized**. | A Go struct with only unexported fields **cannot be serialized**. | [EmptyStructs](/diff_test.go#:~:text=TestEmptyStructs) | | A Go struct that embeds an unexported struct type **can sometimes be serialized**. | A Go struct that embeds an unexported struct type **cannot be serialized**. | [EmbedUnexported](/diff_test.go#:~:text=TestEmbedUnexported) | See [diff_test.go](/diff_test.go) for details about every change. ## Performance One of the goals of the v2 module is to be more performant than v1. Each of the charts below show the performance across several different JSON implementations: * `JSONv1` is `encoding/json` at `v1.18.2` * `JSONv2` is `github.com/go-json-experiment/json` at `v0.0.0-20220524042235-dd8be80fc4a7` * `JSONIterator` is `github.com/json-iterator/go` at `v1.1.12` * `SegmentJSON` is `github.com/segmentio/encoding/json` at `v0.3.5` * `GoJSON` is `github.com/goccy/go-json` at `v0.9.7` * `SonicJSON` is `github.com/bytedance/sonic` at `v1.3.0` Benchmarks were run across various datasets: * `CanadaGeometry` is a GeoJSON (RFC 7946) representation of Canada. It contains many JSON arrays of arrays of two-element arrays of numbers. * `CITMCatalog` contains many JSON objects using numeric names. * `SyntheaFHIR` is sample JSON data from the healthcare industry. It contains many nested JSON objects with mostly string values, where the set of unique string values is relatively small. * `TwitterStatus` is the JSON response from the Twitter API. It contains a mix of all different JSON kinds, where string values are a mix of both single-byte ASCII and multi-byte Unicode. * `GolangSource` is a simple tree representing the Go source code. It contains many nested JSON objects, each with the same schema. * `StringUnicode` contains many strings with multi-byte Unicode runes. All of the implementations other than `JSONv1` and `JSONv2` make extensive use of `unsafe`. As such, we expect those to generally be faster, but at the cost of memory and type safety. `SonicJSON` goes a step even further and uses just-in-time compilation to generate machine code specialized for the Go type being marshaled or unmarshaled. Also, `SonicJSON` does not validate JSON strings for valid UTF-8, and so gains a notable performance boost on datasets with multi-byte Unicode. Benchmarks are performed based on the default marshal and unmarshal behavior of each package. Note that `JSONv2` aims to be safe and correct by default, which may not be the most performant strategy. `JSONv2` has several semantic changes relative to `JSONv1` that impacts performance: 1. When marshaling, `JSONv2` no longer sorts the keys of a Go map. This will improve performance. 2. When marshaling or unmarshaling, `JSONv2` always checks to make sure JSON object names are unique. This will hurt performance, but is more correct. 3. When marshaling or unmarshaling, `JSONv2` always shallow copies the underlying value for a Go interface and shallow copies the key and value for entries in a Go map. This is done to keep the value as addressable so that `JSONv2` can call methods and functions that operate on a pointer receiver. This will hurt performance, but is more correct. All of the charts are unit-less since the values are normalized relative to `JSONv1`, which is why `JSONv1` always has a value of 1. A lower value is better (i.e., runs faster). Benchmarks were performed on an AMD Ryzen 9 5900X. The code for the benchmarks is located at https://github.com/go-json-experiment/jsonbench. ### Marshal Performance #### Concrete types ![Benchmark Marshal Concrete](benchmark-marshal-concrete.png) * This compares marshal performance when serializing [from concrete types](/testdata_test.go). * The `JSONv1` implementation is close to optimal (without the use of `unsafe`). * Relative to `JSONv1`, `JSONv2` is generally as fast or slightly faster. * Relative to `JSONIterator`, `JSONv2` is up to 1.3x faster. * Relative to `SegmentJSON`, `JSONv2` is up to 1.8x slower. * Relative to `GoJSON`, `JSONv2` is up to 2.0x slower. * Relative to `SonicJSON`, `JSONv2` is about 1.8x to 3.2x slower (ignoring `StringUnicode` since `SonicJSON` does not validate UTF-8). * For `JSONv1` and `JSONv2`, marshaling from concrete types is mostly limited by the performance of Go reflection. #### Interface types ![Benchmark Marshal Interface](benchmark-marshal-interface.png) * This compares marshal performance when serializing from `any`, `map[string]any`, and `[]any` types. * Relative to `JSONv1`, `JSONv2` is about 1.5x to 4.2x faster. * Relative to `JSONIterator`, `JSONv2` is about 1.1x to 2.4x faster. * Relative to `SegmentJSON`, `JSONv2` is about 1.2x to 1.8x faster. * Relative to `GoJSON`, `JSONv2` is about 1.1x to 2.5x faster. * Relative to `SonicJSON`, `JSONv2` is up to 1.5x slower (ignoring `StringUnicode` since `SonicJSON` does not validate UTF-8). * `JSONv2` is faster than the alternatives. One advantange is because it does not sort the keys for a `map[string]any`, while alternatives (except `SonicJSON` and `JSONIterator`) do sort the keys. #### RawValue types ![Benchmark Marshal Rawvalue](benchmark-marshal-rawvalue.png) * This compares performance when marshaling from a `json.RawValue`. This mostly exercises the underlying encoder and hides the cost of Go reflection. * Relative to `JSONv1`, `JSONv2` is about 3.5x to 7.8x faster. * `JSONIterator` is blazingly fast because [it does not validate whether the raw value is valid](https://go.dev/play/p/bun9IXQCKRe) and simply copies it to the output. * Relative to `SegmentJSON`, `JSONv2` is about 1.5x to 2.7x faster. * Relative to `GoJSON`, `JSONv2` is up to 2.2x faster. * Relative to `SonicJSON`, `JSONv2` is up to 1.5x faster. * Aside from `JSONIterator`, `JSONv2` is generally the fastest. ### Unmarshal Performance #### Concrete types ![Benchmark Unmarshal Concrete](benchmark-unmarshal-concrete.png) * This compares unmarshal performance when deserializing [into concrete types](/testdata_test.go). * Relative to `JSONv1`, `JSONv2` is about 1.8x to 5.7x faster. * Relative to `JSONIterator`, `JSONv2` is about 1.1x to 1.6x slower. * Relative to `SegmentJSON`, `JSONv2` is up to 2.5x slower. * Relative to `GoJSON`, `JSONv2` is about 1.4x to 2.1x slower. * Relative to `SonicJSON`, `JSONv2` is up to 4.0x slower (ignoring `StringUnicode` since `SonicJSON` does not validate UTF-8). * For `JSONv1` and `JSONv2`, unmarshaling into concrete types is mostly limited by the performance of Go reflection. #### Interface types ![Benchmark Unmarshal Interface](benchmark-unmarshal-interface.png) * This compares unmarshal performance when deserializing into `any`, `map[string]any`, and `[]any` types. * Relative to `JSONv1`, `JSONv2` is about 1.tx to 4.3x faster. * Relative to `JSONIterator`, `JSONv2` is up to 1.5x faster. * Relative to `SegmentJSON`, `JSONv2` is about 1.5 to 3.7x faster. * Relative to `GoJSON`, `JSONv2` is up to 1.3x faster. * Relative to `SonicJSON`, `JSONv2` is up to 1.5x slower (ignoring `StringUnicode` since `SonicJSON` does not validate UTF-8). * Aside from `SonicJSON`, `JSONv2` is generally just as fast or faster than all the alternatives. #### RawValue types ![Benchmark Unmarshal Rawvalue](benchmark-unmarshal-rawvalue.png) * This compares performance when unmarshaling into a `json.RawValue`. This mostly exercises the underlying decoder and hides away most of the cost of Go reflection. * Relative to `JSONv1`, `JSONv2` is about 8.3x to 17.0x faster. * Relative to `JSONIterator`, `JSONv2` is up to 2.0x faster. * Relative to `SegmentJSON`, `JSONv2` is up to 1.6x faster or 1.7x slower. * Relative to `GoJSON`, `JSONv2` is up to 1.9x faster or 2.1x slower. * Relative to `SonicJSON`, `JSONv2` is up to 2.0x faster (ignoring `StringUnicode` since `SonicJSON` does not validate UTF-8). * `JSONv1` takes a [lexical scanning approach](https://talks.golang.org/2011/lex.slide#1), which performs a virtual function call for every byte of input. In contrast, `JSONv2` makes heavy use of iterative and linear parsing logic (with extra complexity to resume parsing when encountering segmented buffers). * `JSONv2` is comparable to the alternatives that use `unsafe`. Generally it is faster, but sometimes it is slower. arshal.go000066400000000000000000000552531453663023200336030ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "errors" "io" "reflect" "sync" ) // MarshalOptions configures how Go data is serialized as JSON data. // The zero value is equivalent to the default marshal settings. type MarshalOptions struct { requireKeyedLiterals nonComparable // Marshalers is a list of type-specific marshalers to use. Marshalers *Marshalers // StringifyNumbers specifies that numeric Go types should be serialized // as a JSON string containing the equivalent JSON number value. // // According to RFC 8259, section 6, a JSON implementation may choose to // limit the representation of a JSON number to an IEEE 754 binary64 value. // This may cause decoders to lose precision for int64 and uint64 types. // Escaping JSON numbers as a JSON string preserves the exact precision. StringifyNumbers bool // DiscardUnknownMembers specifies that marshaling should ignore any // JSON object members stored in Go struct fields dedicated to storing // unknown JSON object members. DiscardUnknownMembers bool // Deterministic specifies that the same input value will be serialized // as the exact same output bytes. Different processes of // the same program will serialize equal values to the same bytes, // but different versions of the same program are not guaranteed // to produce the exact same sequence of bytes. Deterministic bool // formatDepth is the depth at which we respect the format flag. formatDepth int // format is custom formatting for the value at the specified depth. format string } // Marshal serializes a Go value as a []byte with default options. // It is a thin wrapper over MarshalOptions.Marshal. func Marshal(in any) (out []byte, err error) { return MarshalOptions{}.Marshal(EncodeOptions{}, in) } // MarshalFull serializes a Go value into an io.Writer with default options. // It is a thin wrapper over MarshalOptions.MarshalFull. func MarshalFull(out io.Writer, in any) error { return MarshalOptions{}.MarshalFull(EncodeOptions{}, out, in) } // Marshal serializes a Go value as a []byte according to the provided // marshal and encode options. It does not terminate the output with a newline. // See MarshalNext for details about the conversion of a Go value into JSON. func (mo MarshalOptions) Marshal(eo EncodeOptions, in any) (out []byte, err error) { enc := getBufferedEncoder(eo) defer putBufferedEncoder(enc) enc.options.omitTopLevelNewline = true err = mo.MarshalNext(enc, in) // TODO(https://go.dev/issue/45038): Use bytes.Clone. return append([]byte(nil), enc.buf...), err } // MarshalFull serializes a Go value into an io.Writer according to the provided // marshal and encode options. It does not terminate the output with a newline. // See MarshalNext for details about the conversion of a Go value into JSON. func (mo MarshalOptions) MarshalFull(eo EncodeOptions, out io.Writer, in any) error { enc := getStreamingEncoder(out, eo) defer putStreamingEncoder(enc) enc.options.omitTopLevelNewline = true err := mo.MarshalNext(enc, in) return err } // MarshalNext encodes a Go value as the next JSON value according to // the provided marshal options. // // Type-specific marshal functions and methods take precedence // over the default representation of a value. // Functions or methods that operate on *T are only called when encoding // a value of type T (by taking its address) or a non-nil value of *T. // MarshalNext ensures that a value is always addressable // (by boxing it on the heap if necessary) so that // these functions and methods can be consistently called. For performance, // it is recommended that MarshalNext be passed a non-nil pointer to the value. // // The input value is encoded as JSON according the following rules: // // - If any type-specific functions in MarshalOptions.Marshalers match // the value type, then those functions are called to encode the value. // If all applicable functions return SkipFunc, // then the value is encoded according to subsequent rules. // // - If the value type implements MarshalerV2, // then the MarshalNextJSON method is called to encode the value. // // - If the value type implements MarshalerV1, // then the MarshalJSON method is called to encode the value. // // - If the value type implements encoding.TextMarshaler, // then the MarshalText method is called to encode the value and // subsequently encode its result as a JSON string. // // - Otherwise, the value is encoded according to the value's type // as described in detail below. // // Most Go types have a default JSON representation. // Certain types support specialized formatting according to // a format flag optionally specified in the Go struct tag // for the struct field that contains the current value // (see the “JSON Representation of Go structs†section for more details). // // The representation of each type is as follows: // // - A Go boolean is encoded as a JSON boolean (e.g., true or false). // It does not support any custom format flags. // // - A Go string is encoded as a JSON string. // It does not support any custom format flags. // // - A Go []byte or [N]byte is encoded as a JSON string containing // the binary value encoded using RFC 4648. // If the format is "base64" or unspecified, then this uses RFC 4648, section 4. // If the format is "base64url", then this uses RFC 4648, section 5. // If the format is "base32", then this uses RFC 4648, section 6. // If the format is "base32hex", then this uses RFC 4648, section 7. // If the format is "base16" or "hex", then this uses RFC 4648, section 8. // If the format is "array", then the bytes value is encoded as a JSON array // where each byte is recursively JSON-encoded as each JSON array element. // // - A Go integer is encoded as a JSON number without fractions or exponents. // If MarshalOptions.StringifyNumbers is specified, then the JSON number is // encoded within a JSON string. It does not support any custom format // flags. // // - A Go float is encoded as a JSON number. // If MarshalOptions.StringifyNumbers is specified, // then the JSON number is encoded within a JSON string. // If the format is "nonfinite", then NaN, +Inf, and -Inf are encoded as // the JSON strings "NaN", "Infinity", and "-Infinity", respectively. // Otherwise, the presence of non-finite numbers results in a SemanticError. // // - A Go map is encoded as a JSON object, where each Go map key and value // is recursively encoded as a name and value pair in the JSON object. // The Go map key must encode as a JSON string, otherwise this results // in a SemanticError. When encoding keys, MarshalOptions.StringifyNumbers // is automatically applied so that numeric keys encode as JSON strings. // The Go map is traversed in a non-deterministic order. // For deterministic encoding, consider using RawValue.Canonicalize. // If the format is "emitnull", then a nil map is encoded as a JSON null. // Otherwise by default, a nil map is encoded as an empty JSON object. // // - A Go struct is encoded as a JSON object. // See the “JSON Representation of Go structs†section // in the package-level documentation for more details. // // - A Go slice is encoded as a JSON array, where each Go slice element // is recursively JSON-encoded as the elements of the JSON array. // If the format is "emitnull", then a nil slice is encoded as a JSON null. // Otherwise by default, a nil slice is encoded as an empty JSON array. // // - A Go array is encoded as a JSON array, where each Go array element // is recursively JSON-encoded as the elements of the JSON array. // The JSON array length is always identical to the Go array length. // It does not support any custom format flags. // // - A Go pointer is encoded as a JSON null if nil, otherwise it is // the recursively JSON-encoded representation of the underlying value. // Format flags are forwarded to the encoding of the underlying value. // // - A Go interface is encoded as a JSON null if nil, otherwise it is // the recursively JSON-encoded representation of the underlying value. // It does not support any custom format flags. // // - A Go time.Time is encoded as a JSON string containing the timestamp // formatted in RFC 3339 with nanosecond resolution. // If the format matches one of the format constants declared // in the time package (e.g., RFC1123), then that format is used. // Otherwise, the format is used as-is with time.Time.Format if non-empty. // // - A Go time.Duration is encoded as a JSON string containing the duration // formatted according to time.Duration.String. // If the format is "nanos", it is encoded as a JSON number // containing the number of nanoseconds in the duration. // // - All other Go types (e.g., complex numbers, channels, and functions) // have no default representation and result in a SemanticError. // // JSON cannot represent cyclic data structures and // MarshalNext does not handle them. // Passing cyclic structures will result in an error. func (mo MarshalOptions) MarshalNext(out *Encoder, in any) error { v := reflect.ValueOf(in) if !v.IsValid() || (v.Kind() == reflect.Pointer && v.IsNil()) { return out.WriteToken(Null) } // Shallow copy non-pointer values to obtain an addressable value. // It is beneficial to performance to always pass pointers to avoid this. if v.Kind() != reflect.Pointer { v2 := reflect.New(v.Type()) v2.Elem().Set(v) v = v2 } va := addressableValue{v.Elem()} // dereferenced pointer is always addressable t := va.Type() // Lookup and call the marshal function for this type. marshal := lookupArshaler(t).marshal if mo.Marshalers != nil { marshal, _ = mo.Marshalers.lookup(marshal, t) } if err := marshal(mo, out, va); err != nil { if !out.options.AllowDuplicateNames { out.tokens.invalidateDisabledNamespaces() } return err } return nil } // UnmarshalOptions configures how JSON data is deserialized as Go data. // The zero value is equivalent to the default unmarshal settings. type UnmarshalOptions struct { requireKeyedLiterals nonComparable // Unmarshalers is a list of type-specific unmarshalers to use. Unmarshalers *Unmarshalers // StringifyNumbers specifies that numeric Go types can be deserialized // from either a JSON number or a JSON string containing a JSON number // without any surrounding whitespace. StringifyNumbers bool // RejectUnknownMembers specifies that unknown members should be rejected // when unmarshaling a JSON object, regardless of whether there is a field // to store unknown members. RejectUnknownMembers bool // formatDepth is the depth at which we respect the format flag. formatDepth int // format is custom formatting for the value at the specified depth. format string } // Unmarshal deserializes a Go value from a []byte with default options. // It is a thin wrapper over UnmarshalOptions.Unmarshal. func Unmarshal(in []byte, out any) error { return UnmarshalOptions{}.Unmarshal(DecodeOptions{}, in, out) } // UnmarshalFull deserializes a Go value from an io.Reader with default options. // It is a thin wrapper over UnmarshalOptions.UnmarshalFull. func UnmarshalFull(in io.Reader, out any) error { return UnmarshalOptions{}.UnmarshalFull(DecodeOptions{}, in, out) } // Unmarshal deserializes a Go value from a []byte according to the // provided unmarshal and decode options. The output must be a non-nil pointer. // The input must be a single JSON value with optional whitespace interspersed. // See UnmarshalNext for details about the conversion of JSON into a Go value. func (uo UnmarshalOptions) Unmarshal(do DecodeOptions, in []byte, out any) error { dec := getBufferedDecoder(in, do) defer putBufferedDecoder(dec) return uo.unmarshalFull(dec, out) } // UnmarshalFull deserializes a Go value from an io.Reader according to the // provided unmarshal and decode options. The output must be a non-nil pointer. // The input must be a single JSON value with optional whitespace interspersed. // It consumes the entirety of io.Reader until io.EOF is encountered. // See UnmarshalNext for details about the conversion of JSON into a Go value. func (uo UnmarshalOptions) UnmarshalFull(do DecodeOptions, in io.Reader, out any) error { dec := getStreamingDecoder(in, do) defer putStreamingDecoder(dec) return uo.unmarshalFull(dec, out) } func (uo UnmarshalOptions) unmarshalFull(in *Decoder, out any) error { switch err := uo.UnmarshalNext(in, out); err { case nil: return in.checkEOF() case io.EOF: return io.ErrUnexpectedEOF default: return err } } // UnmarshalNext decodes the next JSON value into a Go value according to // the provided unmarshal options. The output must be a non-nil pointer. // // Type-specific unmarshal functions and methods take precedence // over the default representation of a value. // Functions or methods that operate on *T are only called when decoding // a value of type T (by taking its address) or a non-nil value of *T. // UnmarshalNext ensures that a value is always addressable // (by boxing it on the heap if necessary) so that // these functions and methods can be consistently called. // // The input is decoded into the output according the following rules: // // - If any type-specific functions in UnmarshalOptions.Unmarshalers match // the value type, then those functions are called to decode the JSON // value. If all applicable functions return SkipFunc, // then the input is decoded according to subsequent rules. // // - If the value type implements UnmarshalerV2, // then the UnmarshalNextJSON method is called to decode the JSON value. // // - If the value type implements UnmarshalerV1, // then the UnmarshalJSON method is called to decode the JSON value. // // - If the value type implements encoding.TextUnmarshaler, // then the input is decoded as a JSON string and // the UnmarshalText method is called with the decoded string value. // This fails with a SemanticError if the input is not a JSON string. // // - Otherwise, the JSON value is decoded according to the value's type // as described in detail below. // // Most Go types have a default JSON representation. // Certain types support specialized formatting according to // a format flag optionally specified in the Go struct tag // for the struct field that contains the current value // (see the “JSON Representation of Go structs†section for more details). // A JSON null may be decoded into every supported Go value where // it is equivalent to storing the zero value of the Go value. // If the input JSON kind is not handled by the current Go value type, // then this fails with a SemanticError. Unless otherwise specified, // the decoded value replaces any pre-existing value. // // The representation of each type is as follows: // // - A Go boolean is decoded from a JSON boolean (e.g., true or false). // It does not support any custom format flags. // // - A Go string is decoded from a JSON string. // It does not support any custom format flags. // // - A Go []byte or [N]byte is decoded from a JSON string // containing the binary value encoded using RFC 4648. // If the format is "base64" or unspecified, then this uses RFC 4648, section 4. // If the format is "base64url", then this uses RFC 4648, section 5. // If the format is "base32", then this uses RFC 4648, section 6. // If the format is "base32hex", then this uses RFC 4648, section 7. // If the format is "base16" or "hex", then this uses RFC 4648, section 8. // If the format is "array", then the Go slice or array is decoded from a // JSON array where each JSON element is recursively decoded for each byte. // When decoding into a non-nil []byte, the slice length is reset to zero // and the decoded input is appended to it. // When decoding into a [N]byte, the input must decode to exactly N bytes, // otherwise it fails with a SemanticError. // // - A Go integer is decoded from a JSON number. // It may also be decoded from a JSON string containing a JSON number // if UnmarshalOptions.StringifyNumbers is specified. // It fails with a SemanticError if the JSON number // has a fractional or exponent component. // It also fails if it overflows the representation of the Go integer type. // It does not support any custom format flags. // // - A Go float is decoded from a JSON number. // It may also be decoded from a JSON string containing a JSON number // if UnmarshalOptions.StringifyNumbers is specified. // The JSON number is parsed as the closest representable Go float value. // If the format is "nonfinite", then the JSON strings // "NaN", "Infinity", and "-Infinity" are decoded as NaN, +Inf, and -Inf. // Otherwise, the presence of such strings results in a SemanticError. // // - A Go map is decoded from a JSON object, // where each JSON object name and value pair is recursively decoded // as the Go map key and value. When decoding keys, // UnmarshalOptions.StringifyNumbers is automatically applied so that // numeric keys can decode from JSON strings. Maps are not cleared. // If the Go map is nil, then a new map is allocated to decode into. // If the decoded key matches an existing Go map entry, the entry value // is reused by decoding the JSON object value into it. // The only supported format is "emitnull" and has no effect when decoding. // // - A Go struct is decoded from a JSON object. // See the “JSON Representation of Go structs†section // in the package-level documentation for more details. // // - A Go slice is decoded from a JSON array, where each JSON element // is recursively decoded and appended to the Go slice. // Before appending into a Go slice, a new slice is allocated if it is nil, // otherwise the slice length is reset to zero. // The only supported format is "emitnull" and has no effect when decoding. // // - A Go array is decoded from a JSON array, where each JSON array element // is recursively decoded as each corresponding Go array element. // Each Go array element is zeroed before decoding into it. // It fails with a SemanticError if the JSON array does not contain // the exact same number of elements as the Go array. // It does not support any custom format flags. // // - A Go pointer is decoded based on the JSON kind and underlying Go type. // If the input is a JSON null, then this stores a nil pointer. // Otherwise, it allocates a new underlying value if the pointer is nil, // and recursively JSON decodes into the underlying value. // Format flags are forwarded to the decoding of the underlying type. // // - A Go interface is decoded based on the JSON kind and underlying Go type. // If the input is a JSON null, then this stores a nil interface value. // Otherwise, a nil interface value of an empty interface type is initialized // with a zero Go bool, string, float64, map[string]any, or []any if the // input is a JSON boolean, string, number, object, or array, respectively. // If the interface value is still nil, then this fails with a SemanticError // since decoding could not determine an appropriate Go type to decode into. // For example, unmarshaling into a nil io.Reader fails since // there is no concrete type to populate the interface value with. // Otherwise an underlying value exists and it recursively decodes // the JSON input into it. It does not support any custom format flags. // // - A Go time.Time is decoded from a JSON string containing the time // formatted in RFC 3339 with nanosecond resolution. // If the format matches one of the format constants declared in // the time package (e.g., RFC1123), then that format is used for parsing. // Otherwise, the format is used as-is with time.Time.Parse if non-empty. // // - A Go time.Duration is decoded from a JSON string by // passing the decoded string to time.ParseDuration. // If the format is "nanos", it is instead decoded from a JSON number // containing the number of nanoseconds in the duration. // // - All other Go types (e.g., complex numbers, channels, and functions) // have no default representation and result in a SemanticError. // // In general, unmarshaling follows merge semantics (similar to RFC 7396) // where the decoded Go value replaces the destination value // for any JSON kind other than an object. // For JSON objects, the input object is merged into the destination value // where matching object members recursively apply merge semantics. func (uo UnmarshalOptions) UnmarshalNext(in *Decoder, out any) error { v := reflect.ValueOf(out) if !v.IsValid() || v.Kind() != reflect.Pointer || v.IsNil() { var t reflect.Type if v.IsValid() { t = v.Type() if t.Kind() == reflect.Pointer { t = t.Elem() } } err := errors.New("value must be passed as a non-nil pointer reference") return &SemanticError{action: "unmarshal", GoType: t, Err: err} } va := addressableValue{v.Elem()} // dereferenced pointer is always addressable t := va.Type() // Lookup and call the unmarshal function for this type. unmarshal := lookupArshaler(t).unmarshal if uo.Unmarshalers != nil { unmarshal, _ = uo.Unmarshalers.lookup(unmarshal, t) } if err := unmarshal(uo, in, va); err != nil { if !in.options.AllowDuplicateNames { in.tokens.invalidateDisabledNamespaces() } return err } return nil } // addressableValue is a reflect.Value that is guaranteed to be addressable // such that calling the Addr and Set methods do not panic. // // There is no compile magic that enforces this property, // but rather the need to construct this type makes it easier to examine each // construction site to ensure that this property is upheld. type addressableValue struct{ reflect.Value } // newAddressableValue constructs a new addressable value of type t. func newAddressableValue(t reflect.Type) addressableValue { return addressableValue{reflect.New(t).Elem()} } // All marshal and unmarshal behavior is implemented using these signatures. type ( marshaler = func(MarshalOptions, *Encoder, addressableValue) error unmarshaler = func(UnmarshalOptions, *Decoder, addressableValue) error ) type arshaler struct { marshal marshaler unmarshal unmarshaler nonDefault bool } var lookupArshalerCache sync.Map // map[reflect.Type]*arshaler func lookupArshaler(t reflect.Type) *arshaler { if v, ok := lookupArshalerCache.Load(t); ok { return v.(*arshaler) } fncs := makeDefaultArshaler(t) fncs = makeMethodArshaler(fncs, t) fncs = makeTimeArshaler(fncs, t) // Use the last stored so that duplicate arshalers can be garbage collected. v, _ := lookupArshalerCache.LoadOrStore(t, fncs) return v.(*arshaler) } arshal_any.go000066400000000000000000000136331453663023200344460ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2022 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import "reflect" // This files contains an optimized marshal and unmarshal implementation // for the any type. This type is often used when the Go program has // no knowledge of the JSON schema. This is a common enough occurrence // to justify the complexity of adding logic for this. func marshalValueAny(mo MarshalOptions, enc *Encoder, val any) error { switch val := val.(type) { case nil: return enc.WriteToken(Null) case bool: return enc.WriteToken(Bool(val)) case string: return enc.WriteToken(String(val)) case float64: return enc.WriteToken(Float(val)) case map[string]any: return marshalObjectAny(mo, enc, val) case []any: return marshalArrayAny(mo, enc, val) default: v := newAddressableValue(reflect.TypeOf(val)) v.Set(reflect.ValueOf(val)) marshal := lookupArshaler(v.Type()).marshal if mo.Marshalers != nil { marshal, _ = mo.Marshalers.lookup(marshal, v.Type()) } return marshal(mo, enc, v) } } func unmarshalValueAny(uo UnmarshalOptions, dec *Decoder) (any, error) { switch k := dec.PeekKind(); k { case '{': return unmarshalObjectAny(uo, dec) case '[': return unmarshalArrayAny(uo, dec) default: var flags valueFlags val, err := dec.readValue(&flags) if err != nil { return nil, err } switch val.Kind() { case 'n': return nil, nil case 'f': return false, nil case 't': return true, nil case '"': val = unescapeStringMayCopy(val, flags.isVerbatim()) if dec.stringCache == nil { dec.stringCache = new(stringCache) } return dec.stringCache.make(val), nil case '0': fv, _ := parseFloat(val, 64) // ignore error since readValue guarantees val is valid return fv, nil default: panic("BUG: invalid kind: " + k.String()) } } } func marshalObjectAny(mo MarshalOptions, enc *Encoder, obj map[string]any) error { // Check for cycles. if enc.tokens.depth() > startDetectingCyclesAfter { v := reflect.ValueOf(obj) if err := enc.seenPointers.visit(v); err != nil { return err } defer enc.seenPointers.leave(v) } // Optimize for marshaling an empty map without any preceding whitespace. if len(obj) == 0 && !enc.options.multiline && !enc.tokens.last.needObjectName() { enc.buf = enc.tokens.mayAppendDelim(enc.buf, '{') enc.buf = append(enc.buf, "{}"...) enc.tokens.last.increment() if enc.needFlush() { return enc.flush() } return nil } if err := enc.WriteToken(ObjectStart); err != nil { return err } // A Go map guarantees that each entry has a unique key // The only possibility of duplicates is due to invalid UTF-8. if !enc.options.AllowInvalidUTF8 { enc.tokens.last.disableNamespace() } if !mo.Deterministic || len(obj) <= 1 { for name, val := range obj { if err := enc.WriteToken(String(name)); err != nil { return err } if err := marshalValueAny(mo, enc, val); err != nil { return err } } } else { names := getStrings(len(obj)) var i int for name := range obj { (*names)[i] = name i++ } names.Sort() for _, name := range *names { if err := enc.WriteToken(String(name)); err != nil { return err } if err := marshalValueAny(mo, enc, obj[name]); err != nil { return err } } putStrings(names) } if err := enc.WriteToken(ObjectEnd); err != nil { return err } return nil } func unmarshalObjectAny(uo UnmarshalOptions, dec *Decoder) (map[string]any, error) { tok, err := dec.ReadToken() if err != nil { return nil, err } k := tok.Kind() switch k { case 'n': return nil, nil case '{': obj := make(map[string]any) // A Go map guarantees that each entry has a unique key // The only possibility of duplicates is due to invalid UTF-8. if !dec.options.AllowInvalidUTF8 { dec.tokens.last.disableNamespace() } for dec.PeekKind() != '}' { tok, err := dec.ReadToken() if err != nil { return obj, err } name := tok.String() // Manually check for duplicate names. if _, ok := obj[name]; ok { name := dec.previousBuffer() err := &SyntacticError{str: "duplicate name " + string(name) + " in object"} return obj, err.withOffset(dec.InputOffset() - int64(len(name))) } val, err := unmarshalValueAny(uo, dec) obj[name] = val if err != nil { return obj, err } } if _, err := dec.ReadToken(); err != nil { return obj, err } return obj, nil } return nil, &SemanticError{action: "unmarshal", JSONKind: k, GoType: mapStringAnyType} } func marshalArrayAny(mo MarshalOptions, enc *Encoder, arr []any) error { // Check for cycles. if enc.tokens.depth() > startDetectingCyclesAfter { v := reflect.ValueOf(arr) if err := enc.seenPointers.visit(v); err != nil { return err } defer enc.seenPointers.leave(v) } // Optimize for marshaling an empty slice without any preceding whitespace. if len(arr) == 0 && !enc.options.multiline && !enc.tokens.last.needObjectName() { enc.buf = enc.tokens.mayAppendDelim(enc.buf, '[') enc.buf = append(enc.buf, "[]"...) enc.tokens.last.increment() if enc.needFlush() { return enc.flush() } return nil } if err := enc.WriteToken(ArrayStart); err != nil { return err } for _, val := range arr { if err := marshalValueAny(mo, enc, val); err != nil { return err } } if err := enc.WriteToken(ArrayEnd); err != nil { return err } return nil } func unmarshalArrayAny(uo UnmarshalOptions, dec *Decoder) ([]any, error) { tok, err := dec.ReadToken() if err != nil { return nil, err } k := tok.Kind() switch k { case 'n': return nil, nil case '[': arr := []any{} for dec.PeekKind() != ']' { val, err := unmarshalValueAny(uo, dec) arr = append(arr, val) if err != nil { return arr, err } } if _, err := dec.ReadToken(); err != nil { return arr, err } return arr, nil } return nil, &SemanticError{action: "unmarshal", JSONKind: k, GoType: sliceAnyType} } arshal_default.go000066400000000000000000001316241453663023200353040ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "bytes" "encoding/base32" "encoding/base64" "encoding/hex" "errors" "fmt" "math" "reflect" "sort" "strconv" "sync" ) // optimizeCommon specifies whether to use optimizations targeted for certain // common patterns, rather than using the slower, but more general logic. // All tests should pass regardless of whether this is true or not. const optimizeCommon = true var ( // Most natural Go type that correspond with each JSON type. anyType = reflect.TypeOf((*any)(nil)).Elem() // JSON value boolType = reflect.TypeOf((*bool)(nil)).Elem() // JSON bool stringType = reflect.TypeOf((*string)(nil)).Elem() // JSON string float64Type = reflect.TypeOf((*float64)(nil)).Elem() // JSON number mapStringAnyType = reflect.TypeOf((*map[string]any)(nil)).Elem() // JSON object sliceAnyType = reflect.TypeOf((*[]any)(nil)).Elem() // JSON array bytesType = reflect.TypeOf((*[]byte)(nil)).Elem() emptyStructType = reflect.TypeOf((*struct{})(nil)).Elem() ) const startDetectingCyclesAfter = 1000 type seenPointers map[typedPointer]struct{} type typedPointer struct { typ reflect.Type ptr any // always stores unsafe.Pointer, but avoids depending on unsafe } // visit visits pointer p of type t, reporting an error if seen before. // If successfully visited, then the caller must eventually call leave. func (m *seenPointers) visit(v reflect.Value) error { p := typedPointer{v.Type(), v.UnsafePointer()} if _, ok := (*m)[p]; ok { return &SemanticError{action: "marshal", GoType: p.typ, Err: errors.New("encountered a cycle")} } if *m == nil { *m = make(map[typedPointer]struct{}) } (*m)[p] = struct{}{} return nil } func (m *seenPointers) leave(v reflect.Value) { p := typedPointer{v.Type(), v.UnsafePointer()} delete(*m, p) } func makeDefaultArshaler(t reflect.Type) *arshaler { switch t.Kind() { case reflect.Bool: return makeBoolArshaler(t) case reflect.String: return makeStringArshaler(t) case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: return makeIntArshaler(t) case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: return makeUintArshaler(t) case reflect.Float32, reflect.Float64: return makeFloatArshaler(t) case reflect.Map: return makeMapArshaler(t) case reflect.Struct: return makeStructArshaler(t) case reflect.Slice: fncs := makeSliceArshaler(t) if t.AssignableTo(bytesType) { return makeBytesArshaler(t, fncs) } return fncs case reflect.Array: fncs := makeArrayArshaler(t) if reflect.SliceOf(t.Elem()).AssignableTo(bytesType) { return makeBytesArshaler(t, fncs) } return fncs case reflect.Pointer: return makePointerArshaler(t) case reflect.Interface: return makeInterfaceArshaler(t) default: return makeInvalidArshaler(t) } } func makeBoolArshaler(t reflect.Type) *arshaler { var fncs arshaler fncs.marshal = func(mo MarshalOptions, enc *Encoder, va addressableValue) error { if mo.format != "" && mo.formatDepth == enc.tokens.depth() { return newInvalidFormatError("marshal", t, mo.format) } // Optimize for marshaling without preceding whitespace. if optimizeCommon && !enc.options.multiline && !enc.tokens.last.needObjectName() { enc.buf = enc.tokens.mayAppendDelim(enc.buf, 't') if va.Bool() { enc.buf = append(enc.buf, "true"...) } else { enc.buf = append(enc.buf, "false"...) } enc.tokens.last.increment() if enc.needFlush() { return enc.flush() } return nil } return enc.WriteToken(Bool(va.Bool())) } fncs.unmarshal = func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { if uo.format != "" && uo.formatDepth == dec.tokens.depth() { return newInvalidFormatError("unmarshal", t, uo.format) } tok, err := dec.ReadToken() if err != nil { return err } k := tok.Kind() switch k { case 'n': va.SetBool(false) return nil case 't', 'f': va.SetBool(tok.Bool()) return nil } return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t} } return &fncs } func makeStringArshaler(t reflect.Type) *arshaler { var fncs arshaler fncs.marshal = func(mo MarshalOptions, enc *Encoder, va addressableValue) error { if mo.format != "" && mo.formatDepth == enc.tokens.depth() { return newInvalidFormatError("marshal", t, mo.format) } return enc.WriteToken(String(va.String())) } fncs.unmarshal = func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { if uo.format != "" && uo.formatDepth == dec.tokens.depth() { return newInvalidFormatError("unmarshal", t, uo.format) } var flags valueFlags val, err := dec.readValue(&flags) if err != nil { return err } k := val.Kind() switch k { case 'n': va.SetString("") return nil case '"': val = unescapeStringMayCopy(val, flags.isVerbatim()) if dec.stringCache == nil { dec.stringCache = new(stringCache) } str := dec.stringCache.make(val) va.SetString(str) return nil } return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t} } return &fncs } var ( encodeBase16 = func(dst, src []byte) { hex.Encode(dst, src) } encodeBase32 = base32.StdEncoding.Encode encodeBase32Hex = base32.HexEncoding.Encode encodeBase64 = base64.StdEncoding.Encode encodeBase64URL = base64.URLEncoding.Encode encodedLenBase16 = hex.EncodedLen encodedLenBase32 = base32.StdEncoding.EncodedLen encodedLenBase32Hex = base32.HexEncoding.EncodedLen encodedLenBase64 = base64.StdEncoding.EncodedLen encodedLenBase64URL = base64.URLEncoding.EncodedLen decodeBase16 = hex.Decode decodeBase32 = base32.StdEncoding.Decode decodeBase32Hex = base32.HexEncoding.Decode decodeBase64 = base64.StdEncoding.Decode decodeBase64URL = base64.URLEncoding.Decode decodedLenBase16 = hex.DecodedLen decodedLenBase32 = base32.StdEncoding.WithPadding(base32.NoPadding).DecodedLen decodedLenBase32Hex = base32.HexEncoding.WithPadding(base32.NoPadding).DecodedLen decodedLenBase64 = base64.StdEncoding.WithPadding(base64.NoPadding).DecodedLen decodedLenBase64URL = base64.URLEncoding.WithPadding(base64.NoPadding).DecodedLen ) func makeBytesArshaler(t reflect.Type, fncs *arshaler) *arshaler { // NOTE: This handles both []byte and [N]byte. marshalDefault := fncs.marshal fncs.marshal = func(mo MarshalOptions, enc *Encoder, va addressableValue) error { encode, encodedLen := encodeBase64, encodedLenBase64 if mo.format != "" && mo.formatDepth == enc.tokens.depth() { switch mo.format { case "base64": encode, encodedLen = encodeBase64, encodedLenBase64 case "base64url": encode, encodedLen = encodeBase64URL, encodedLenBase64URL case "base32": encode, encodedLen = encodeBase32, encodedLenBase32 case "base32hex": encode, encodedLen = encodeBase32Hex, encodedLenBase32Hex case "base16", "hex": encode, encodedLen = encodeBase16, encodedLenBase16 case "array": mo.format = "" return marshalDefault(mo, enc, va) default: return newInvalidFormatError("marshal", t, mo.format) } } val := enc.UnusedBuffer() b := va.Bytes() n := len(`"`) + encodedLen(len(b)) + len(`"`) if cap(val) < n { val = make([]byte, n) } else { val = val[:n] } val[0] = '"' encode(val[len(`"`):len(val)-len(`"`)], b) val[len(val)-1] = '"' return enc.WriteValue(val) } unmarshalDefault := fncs.unmarshal fncs.unmarshal = func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { decode, decodedLen, encodedLen := decodeBase64, decodedLenBase64, encodedLenBase64 if uo.format != "" && uo.formatDepth == dec.tokens.depth() { switch uo.format { case "base64": decode, decodedLen, encodedLen = decodeBase64, decodedLenBase64, encodedLenBase64 case "base64url": decode, decodedLen, encodedLen = decodeBase64URL, decodedLenBase64URL, encodedLenBase64URL case "base32": decode, decodedLen, encodedLen = decodeBase32, decodedLenBase32, encodedLenBase32 case "base32hex": decode, decodedLen, encodedLen = decodeBase32Hex, decodedLenBase32Hex, encodedLenBase32Hex case "base16", "hex": decode, decodedLen, encodedLen = decodeBase16, decodedLenBase16, encodedLenBase16 case "array": uo.format = "" return unmarshalDefault(uo, dec, va) default: return newInvalidFormatError("unmarshal", t, uo.format) } } var flags valueFlags val, err := dec.readValue(&flags) if err != nil { return err } k := val.Kind() switch k { case 'n': va.Set(reflect.Zero(t)) return nil case '"': val = unescapeStringMayCopy(val, flags.isVerbatim()) // For base64 and base32, decodedLen computes the maximum output size // when given the original input size. To compute the exact size, // adjust the input size by excluding trailing padding characters. // This is unnecessary for base16, but also harmless. n := len(val) for n > 0 && val[n-1] == '=' { n-- } n = decodedLen(n) b := va.Bytes() if va.Kind() == reflect.Array { if n != len(b) { err := fmt.Errorf("decoded base64 length of %d mismatches array length of %d", n, len(b)) return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t, Err: err} } } else { if b == nil || cap(b) < n { b = make([]byte, n) } else { b = b[:n] } } n2, err := decode(b, val) if err == nil && len(val) != encodedLen(n2) { // TODO(https://go.dev/issue/53845): RFC 4648, section 3.3, // specifies that non-alphabet characters must be rejected. // Unfortunately, the "base32" and "base64" packages allow // '\r' and '\n' characters by default. err = errors.New("illegal data at input byte " + strconv.Itoa(bytes.IndexAny(val, "\r\n"))) } if err != nil { return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t, Err: err} } if va.Kind() == reflect.Slice { va.SetBytes(b) } return nil } return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t} } return fncs } func makeIntArshaler(t reflect.Type) *arshaler { var fncs arshaler bits := t.Bits() fncs.marshal = func(mo MarshalOptions, enc *Encoder, va addressableValue) error { if mo.format != "" && mo.formatDepth == enc.tokens.depth() { return newInvalidFormatError("marshal", t, mo.format) } // Optimize for marshaling without preceding whitespace or string escaping. if optimizeCommon && !enc.options.multiline && !mo.StringifyNumbers && !enc.tokens.last.needObjectName() { enc.buf = enc.tokens.mayAppendDelim(enc.buf, '0') enc.buf = strconv.AppendInt(enc.buf, va.Int(), 10) enc.tokens.last.increment() if enc.needFlush() { return enc.flush() } return nil } x := math.Float64frombits(uint64(va.Int())) return enc.writeNumber(x, rawIntNumber, mo.StringifyNumbers) } fncs.unmarshal = func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { if uo.format != "" && uo.formatDepth == dec.tokens.depth() { return newInvalidFormatError("unmarshal", t, uo.format) } var flags valueFlags val, err := dec.readValue(&flags) if err != nil { return err } k := val.Kind() switch k { case 'n': va.SetInt(0) return nil case '"': if !uo.StringifyNumbers { break } val = unescapeStringMayCopy(val, flags.isVerbatim()) fallthrough case '0': var negOffset int neg := val[0] == '-' if neg { negOffset = 1 } n, ok := parseDecUint(val[negOffset:]) maxInt := uint64(1) << (bits - 1) overflow := (neg && n > maxInt) || (!neg && n > maxInt-1) if !ok { if n != math.MaxUint64 { err := fmt.Errorf("cannot parse %q as signed integer: %w", val, strconv.ErrSyntax) return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t, Err: err} } overflow = true } if overflow { err := fmt.Errorf("cannot parse %q as signed integer: %w", val, strconv.ErrRange) return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t, Err: err} } if neg { va.SetInt(int64(-n)) } else { va.SetInt(int64(+n)) } return nil } return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t} } return &fncs } func makeUintArshaler(t reflect.Type) *arshaler { var fncs arshaler bits := t.Bits() fncs.marshal = func(mo MarshalOptions, enc *Encoder, va addressableValue) error { if mo.format != "" && mo.formatDepth == enc.tokens.depth() { return newInvalidFormatError("marshal", t, mo.format) } // Optimize for marshaling without preceding whitespace or string escaping. if optimizeCommon && !enc.options.multiline && !mo.StringifyNumbers && !enc.tokens.last.needObjectName() { enc.buf = enc.tokens.mayAppendDelim(enc.buf, '0') enc.buf = strconv.AppendUint(enc.buf, va.Uint(), 10) enc.tokens.last.increment() if enc.needFlush() { return enc.flush() } return nil } x := math.Float64frombits(va.Uint()) return enc.writeNumber(x, rawUintNumber, mo.StringifyNumbers) } fncs.unmarshal = func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { if uo.format != "" && uo.formatDepth == dec.tokens.depth() { return newInvalidFormatError("unmarshal", t, uo.format) } var flags valueFlags val, err := dec.readValue(&flags) if err != nil { return err } k := val.Kind() switch k { case 'n': va.SetUint(0) return nil case '"': if !uo.StringifyNumbers { break } val = unescapeStringMayCopy(val, flags.isVerbatim()) fallthrough case '0': n, ok := parseDecUint(val) maxUint := uint64(1) << bits overflow := n > maxUint-1 if !ok { if n != math.MaxUint64 { err := fmt.Errorf("cannot parse %q as unsigned integer: %w", val, strconv.ErrSyntax) return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t, Err: err} } overflow = true } if overflow { err := fmt.Errorf("cannot parse %q as unsigned integer: %w", val, strconv.ErrRange) return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t, Err: err} } va.SetUint(n) return nil } return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t} } return &fncs } func makeFloatArshaler(t reflect.Type) *arshaler { var fncs arshaler bits := t.Bits() fncs.marshal = func(mo MarshalOptions, enc *Encoder, va addressableValue) error { var allowNonFinite bool if mo.format != "" && mo.formatDepth == enc.tokens.depth() { if mo.format == "nonfinite" { allowNonFinite = true } else { return newInvalidFormatError("marshal", t, mo.format) } } fv := va.Float() if math.IsNaN(fv) || math.IsInf(fv, 0) { if !allowNonFinite { err := fmt.Errorf("invalid value: %v", fv) return &SemanticError{action: "marshal", GoType: t, Err: err} } return enc.WriteToken(Float(fv)) } // Optimize for marshaling without preceding whitespace or string escaping. if optimizeCommon && !enc.options.multiline && !mo.StringifyNumbers && !enc.tokens.last.needObjectName() { enc.buf = enc.tokens.mayAppendDelim(enc.buf, '0') enc.buf = appendNumber(enc.buf, fv, bits) enc.tokens.last.increment() if enc.needFlush() { return enc.flush() } return nil } return enc.writeNumber(fv, bits, mo.StringifyNumbers) } fncs.unmarshal = func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { var allowNonFinite bool if uo.format != "" && uo.formatDepth == dec.tokens.depth() { if uo.format == "nonfinite" { allowNonFinite = true } else { return newInvalidFormatError("unmarshal", t, uo.format) } } var flags valueFlags val, err := dec.readValue(&flags) if err != nil { return err } k := val.Kind() switch k { case 'n': va.SetFloat(0) return nil case '"': val = unescapeStringMayCopy(val, flags.isVerbatim()) if allowNonFinite { switch string(val) { case "NaN": va.SetFloat(math.NaN()) return nil case "Infinity": va.SetFloat(math.Inf(+1)) return nil case "-Infinity": va.SetFloat(math.Inf(-1)) return nil } } if !uo.StringifyNumbers { break } if n, err := consumeNumber(val); n != len(val) || err != nil { err := fmt.Errorf("cannot parse %q as JSON number: %w", val, strconv.ErrSyntax) return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t, Err: err} } fallthrough case '0': // NOTE: Floating-point parsing is by nature a lossy operation. // We never report an overflow condition since we can always // round the input to the closest representable finite value. // For extremely large numbers, the closest value is ±MaxFloat. fv, _ := parseFloat(val, bits) va.SetFloat(fv) return nil } return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t} } return &fncs } func makeMapArshaler(t reflect.Type) *arshaler { // NOTE: The logic below disables namespaces for tracking duplicate names // when handling map keys with a unique representation. // NOTE: Values retrieved from a map are not addressable, // so we shallow copy the values to make them addressable and // store them back into the map afterwards. var fncs arshaler var ( once sync.Once keyFncs *arshaler valFncs *arshaler ) init := func() { keyFncs = lookupArshaler(t.Key()) valFncs = lookupArshaler(t.Elem()) } fncs.marshal = func(mo MarshalOptions, enc *Encoder, va addressableValue) error { // Check for cycles. if enc.tokens.depth() > startDetectingCyclesAfter { if err := enc.seenPointers.visit(va.Value); err != nil { return err } defer enc.seenPointers.leave(va.Value) } if mo.format != "" && mo.formatDepth == enc.tokens.depth() { if mo.format == "emitnull" { if va.IsNil() { return enc.WriteToken(Null) } mo.format = "" } else { return newInvalidFormatError("marshal", t, mo.format) } } // Optimize for marshaling an empty map without any preceding whitespace. n := va.Len() if optimizeCommon && n == 0 && !enc.options.multiline && !enc.tokens.last.needObjectName() { enc.buf = enc.tokens.mayAppendDelim(enc.buf, '{') enc.buf = append(enc.buf, "{}"...) enc.tokens.last.increment() if enc.needFlush() { return enc.flush() } return nil } once.Do(init) if err := enc.WriteToken(ObjectStart); err != nil { return err } if n > 0 { // Handle maps with numeric key types by stringifying them. mko := mo mko.StringifyNumbers = true nonDefaultKey := keyFncs.nonDefault marshalKey := keyFncs.marshal marshalVal := valFncs.marshal if mo.Marshalers != nil { var ok bool marshalKey, ok = mo.Marshalers.lookup(marshalKey, t.Key()) marshalVal, _ = mo.Marshalers.lookup(marshalVal, t.Elem()) nonDefaultKey = nonDefaultKey || ok } k := newAddressableValue(t.Key()) v := newAddressableValue(t.Elem()) // A Go map guarantees that each entry has a unique key. // As such, disable the expensive duplicate name check if we know // that every Go key will serialize as a unique JSON string. if !nonDefaultKey && mapKeyWithUniqueRepresentation(k.Kind(), enc.options.AllowInvalidUTF8) { enc.tokens.last.disableNamespace() } switch { case !mo.Deterministic || n <= 1: for iter := va.Value.MapRange(); iter.Next(); { k.SetIterKey(iter) if err := marshalKey(mko, enc, k); err != nil { // TODO: If err is errMissingName, then wrap it as a // SemanticError since this key type cannot be serialized // as a JSON string. return err } v.SetIterValue(iter) if err := marshalVal(mo, enc, v); err != nil { return err } } case !nonDefaultKey && t.Key().Kind() == reflect.String: names := getStrings(n) for i, iter := 0, va.Value.MapRange(); i < n && iter.Next(); i++ { k.SetIterKey(iter) (*names)[i] = k.String() } names.Sort() for _, name := range *names { if err := enc.WriteToken(String(name)); err != nil { return err } // TODO(https://go.dev/issue/57061): Use v.SetMapIndexOf. k.SetString(name) v.Set(va.MapIndex(k.Value)) if err := marshalVal(mo, enc, v); err != nil { return err } } putStrings(names) default: type member struct { name string // unquoted name key addressableValue } members := make([]member, n) keys := reflect.MakeSlice(reflect.SliceOf(t.Key()), n, n) for i, iter := 0, va.Value.MapRange(); i < n && iter.Next(); i++ { // Marshal the member name. k := addressableValue{keys.Index(i)} // indexed slice element is always addressable k.SetIterKey(iter) if err := marshalKey(mko, enc, k); err != nil { // TODO: If err is errMissingName, then wrap it as a // SemanticError since this key type cannot be serialized // as a JSON string. return err } name := enc.unwriteOnlyObjectMemberName() members[i] = member{name, k} } // TODO: If AllowDuplicateNames is enabled, then sort according // to reflect.Value as well if the names are equal. // See internal/fmtsort. // TODO(https://go.dev/issue/47619): Use slices.SortFunc instead. sort.Slice(members, func(i, j int) bool { return lessUTF16(members[i].name, members[j].name) }) for _, member := range members { if err := enc.WriteToken(String(member.name)); err != nil { return err } // TODO(https://go.dev/issue/57061): Use v.SetMapIndexOf. v.Set(va.MapIndex(member.key.Value)) if err := marshalVal(mo, enc, v); err != nil { return err } } } } if err := enc.WriteToken(ObjectEnd); err != nil { return err } return nil } fncs.unmarshal = func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { if uo.format != "" && uo.formatDepth == dec.tokens.depth() { if uo.format == "emitnull" { uo.format = "" // only relevant for marshaling } else { return newInvalidFormatError("unmarshal", t, uo.format) } } tok, err := dec.ReadToken() if err != nil { return err } k := tok.Kind() switch k { case 'n': va.Set(reflect.Zero(t)) return nil case '{': once.Do(init) if va.IsNil() { va.Set(reflect.MakeMap(t)) } // Handle maps with numeric key types by stringifying them. uko := uo uko.StringifyNumbers = true nonDefaultKey := keyFncs.nonDefault unmarshalKey := keyFncs.unmarshal unmarshalVal := valFncs.unmarshal if uo.Unmarshalers != nil { var ok bool unmarshalKey, ok = uo.Unmarshalers.lookup(unmarshalKey, t.Key()) unmarshalVal, _ = uo.Unmarshalers.lookup(unmarshalVal, t.Elem()) nonDefaultKey = nonDefaultKey || ok } k := newAddressableValue(t.Key()) v := newAddressableValue(t.Elem()) // Manually check for duplicate entries by virtue of whether the // unmarshaled key already exists in the destination Go map. // Consequently, syntactically different names (e.g., "0" and "-0") // will be rejected as duplicates since they semantically refer // to the same Go value. This is an unusual interaction // between syntax and semantics, but is more correct. if !nonDefaultKey && mapKeyWithUniqueRepresentation(k.Kind(), dec.options.AllowInvalidUTF8) { dec.tokens.last.disableNamespace() } // In the rare case where the map is not already empty, // then we need to manually track which keys we already saw // since existing presence alone is insufficient to indicate // whether the input had a duplicate name. var seen reflect.Value if !dec.options.AllowDuplicateNames && va.Len() > 0 { seen = reflect.MakeMap(reflect.MapOf(k.Type(), emptyStructType)) } for dec.PeekKind() != '}' { k.Set(reflect.Zero(t.Key())) if err := unmarshalKey(uko, dec, k); err != nil { return err } if k.Kind() == reflect.Interface && !k.IsNil() && !k.Elem().Type().Comparable() { err := fmt.Errorf("invalid incomparable key type %v", k.Elem().Type()) return &SemanticError{action: "unmarshal", GoType: t, Err: err} } if v2 := va.MapIndex(k.Value); v2.IsValid() { if !dec.options.AllowDuplicateNames && (!seen.IsValid() || seen.MapIndex(k.Value).IsValid()) { // TODO: Unread the object name. name := dec.previousBuffer() err := &SyntacticError{str: "duplicate name " + string(name) + " in object"} return err.withOffset(dec.InputOffset() - int64(len(name))) } v.Set(v2) } else { v.Set(reflect.Zero(v.Type())) } err := unmarshalVal(uo, dec, v) va.SetMapIndex(k.Value, v.Value) if seen.IsValid() { seen.SetMapIndex(k.Value, reflect.Zero(emptyStructType)) } if err != nil { return err } } if _, err := dec.ReadToken(); err != nil { return err } return nil } return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t} } return &fncs } // mapKeyWithUniqueRepresentation reports whether all possible values of k // marshal to a different JSON value, and whether all possible JSON values // that can unmarshal into k unmarshal to different Go values. // In other words, the representation must be a bijective. func mapKeyWithUniqueRepresentation(k reflect.Kind, allowInvalidUTF8 bool) bool { switch k { case reflect.Bool, reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: return true case reflect.String: // For strings, we have to be careful since names with invalid UTF-8 // maybe unescape to the same Go string value. return !allowInvalidUTF8 default: // Floating-point kinds are not listed above since NaNs // can appear multiple times and all serialize as "NaN". return false } } func makeStructArshaler(t reflect.Type) *arshaler { // NOTE: The logic below disables namespaces for tracking duplicate names // and does the tracking locally with an efficient bit-set based on which // Go struct fields were seen. var fncs arshaler var ( once sync.Once fields structFields errInit *SemanticError ) init := func() { fields, errInit = makeStructFields(t) } fncs.marshal = func(mo MarshalOptions, enc *Encoder, va addressableValue) error { if mo.format != "" && mo.formatDepth == enc.tokens.depth() { return newInvalidFormatError("marshal", t, mo.format) } once.Do(init) if errInit != nil { err := *errInit // shallow copy SemanticError err.action = "marshal" return &err } if err := enc.WriteToken(ObjectStart); err != nil { return err } var seenIdxs uintSet prevIdx := -1 enc.tokens.last.disableNamespace() // we manually ensure unique names below for i := range fields.flattened { f := &fields.flattened[i] v := addressableValue{va.Field(f.index[0])} // addressable if struct value is addressable if len(f.index) > 1 { v = v.fieldByIndex(f.index[1:], false) if !v.IsValid() { continue // implies a nil inlined field } } // OmitZero skips the field if the Go value is zero, // which we can determine up front without calling the marshaler. if f.omitzero && ((f.isZero == nil && v.IsZero()) || (f.isZero != nil && f.isZero(v))) { continue } marshal := f.fncs.marshal nonDefault := f.fncs.nonDefault if mo.Marshalers != nil { var ok bool marshal, ok = mo.Marshalers.lookup(marshal, f.typ) nonDefault = nonDefault || ok } // OmitEmpty skips the field if the marshaled JSON value is empty, // which we can know up front if there are no custom marshalers, // otherwise we must marshal the value and unwrite it if empty. if f.omitempty && !nonDefault && f.isEmpty != nil && f.isEmpty(v) { continue // fast path for omitempty } // Write the object member name. // // The logic below is semantically equivalent to: // enc.WriteToken(String(f.name)) // but specialized and simplified because: // 1. The Encoder must be expecting an object name. // 2. The object namespace is guaranteed to be disabled. // 3. The object name is guaranteed to be valid and pre-escaped. // 4. There is no need to flush the buffer (for unwrite purposes). // 5. There is no possibility of an error occurring. if optimizeCommon { // Append any delimiters or optional whitespace. if enc.tokens.last.length() > 0 { enc.buf = append(enc.buf, ',') } if enc.options.multiline { enc.buf = enc.appendIndent(enc.buf, enc.tokens.needIndent('"')) } // Append the token to the output and to the state machine. n0 := len(enc.buf) // offset before calling appendString if enc.options.EscapeRune == nil { enc.buf = append(enc.buf, f.quotedName...) } else { enc.buf, _ = appendString(enc.buf, f.name, false, enc.options.EscapeRune) } if !enc.options.AllowDuplicateNames { enc.names.replaceLastQuotedOffset(n0) } enc.tokens.last.increment() } else { if err := enc.WriteToken(String(f.name)); err != nil { return err } } // Write the object member value. mo2 := mo if f.string { mo2.StringifyNumbers = true } if f.format != "" { mo2.formatDepth = enc.tokens.depth() mo2.format = f.format } if err := marshal(mo2, enc, v); err != nil { return err } // Try unwriting the member if empty (slow path for omitempty). if f.omitempty { var prevName *string if prevIdx >= 0 { prevName = &fields.flattened[prevIdx].name } if enc.unwriteEmptyObjectMember(prevName) { continue } } // Remember the previous written object member. // The set of seen fields only needs to be updated to detect // duplicate names with those from the inlined fallback. if !enc.options.AllowDuplicateNames && fields.inlinedFallback != nil { seenIdxs.insert(uint(f.id)) } prevIdx = f.id } if fields.inlinedFallback != nil && !(mo.DiscardUnknownMembers && fields.inlinedFallback.unknown) { var insertUnquotedName func([]byte) bool if !enc.options.AllowDuplicateNames { insertUnquotedName = func(name []byte) bool { // Check that the name from inlined fallback does not match // one of the previously marshaled names from known fields. if foldedFields := fields.byFoldedName[string(foldName(name))]; len(foldedFields) > 0 { if f := fields.byActualName[string(name)]; f != nil { return seenIdxs.insert(uint(f.id)) } for _, f := range foldedFields { if f.nocase { return seenIdxs.insert(uint(f.id)) } } } // Check that the name does not match any other name // previously marshaled from the inlined fallback. return enc.namespaces.last().insertUnquoted(name) } } if err := marshalInlinedFallbackAll(mo, enc, va, fields.inlinedFallback, insertUnquotedName); err != nil { return err } } if err := enc.WriteToken(ObjectEnd); err != nil { return err } return nil } fncs.unmarshal = func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { if uo.format != "" && uo.formatDepth == dec.tokens.depth() { return newInvalidFormatError("unmarshal", t, uo.format) } tok, err := dec.ReadToken() if err != nil { return err } k := tok.Kind() switch k { case 'n': va.Set(reflect.Zero(t)) return nil case '{': once.Do(init) if errInit != nil { err := *errInit // shallow copy SemanticError err.action = "unmarshal" return &err } var seenIdxs uintSet dec.tokens.last.disableNamespace() for dec.PeekKind() != '}' { // Process the object member name. var flags valueFlags val, err := dec.readValue(&flags) if err != nil { return err } name := unescapeStringMayCopy(val, flags.isVerbatim()) f := fields.byActualName[string(name)] if f == nil { for _, f2 := range fields.byFoldedName[string(foldName(name))] { if f2.nocase { f = f2 break } } if f == nil { if uo.RejectUnknownMembers && (fields.inlinedFallback == nil || fields.inlinedFallback.unknown) { return &SemanticError{action: "unmarshal", GoType: t, Err: fmt.Errorf("unknown name %s", val)} } if !dec.options.AllowDuplicateNames && !dec.namespaces.last().insertUnquoted(name) { // TODO: Unread the object name. err := &SyntacticError{str: "duplicate name " + string(val) + " in object"} return err.withOffset(dec.InputOffset() - int64(len(val))) } if fields.inlinedFallback == nil { // Skip unknown value since we have no place to store it. if err := dec.SkipValue(); err != nil { return err } } else { // Marshal into value capable of storing arbitrary object members. if err := unmarshalInlinedFallbackNext(uo, dec, va, fields.inlinedFallback, val, name); err != nil { return err } } continue } } if !dec.options.AllowDuplicateNames && !seenIdxs.insert(uint(f.id)) { // TODO: Unread the object name. err := &SyntacticError{str: "duplicate name " + string(val) + " in object"} return err.withOffset(dec.InputOffset() - int64(len(val))) } // Process the object member value. unmarshal := f.fncs.unmarshal if uo.Unmarshalers != nil { unmarshal, _ = uo.Unmarshalers.lookup(unmarshal, f.typ) } uo2 := uo if f.string { uo2.StringifyNumbers = true } if f.format != "" { uo2.formatDepth = dec.tokens.depth() uo2.format = f.format } v := addressableValue{va.Field(f.index[0])} // addressable if struct value is addressable if len(f.index) > 1 { v = v.fieldByIndex(f.index[1:], true) } if err := unmarshal(uo2, dec, v); err != nil { return err } } if _, err := dec.ReadToken(); err != nil { return err } return nil } return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t} } return &fncs } func (va addressableValue) fieldByIndex(index []int, mayAlloc bool) addressableValue { for _, i := range index { va = va.indirect(mayAlloc) if !va.IsValid() { return va } va = addressableValue{va.Field(i)} // addressable if struct value is addressable } return va } func (va addressableValue) indirect(mayAlloc bool) addressableValue { if va.Kind() == reflect.Pointer { if va.IsNil() { if !mayAlloc { return addressableValue{} } va.Set(reflect.New(va.Type().Elem())) } va = addressableValue{va.Elem()} // dereferenced pointer is always addressable } return va } func makeSliceArshaler(t reflect.Type) *arshaler { var fncs arshaler var ( once sync.Once valFncs *arshaler ) init := func() { valFncs = lookupArshaler(t.Elem()) } fncs.marshal = func(mo MarshalOptions, enc *Encoder, va addressableValue) error { // Check for cycles. if enc.tokens.depth() > startDetectingCyclesAfter { if err := enc.seenPointers.visit(va.Value); err != nil { return err } defer enc.seenPointers.leave(va.Value) } if mo.format != "" && mo.formatDepth == enc.tokens.depth() { if mo.format == "emitnull" { if va.IsNil() { return enc.WriteToken(Null) } mo.format = "" } else { return newInvalidFormatError("marshal", t, mo.format) } } // Optimize for marshaling an empty slice without any preceding whitespace. n := va.Len() if optimizeCommon && n == 0 && !enc.options.multiline && !enc.tokens.last.needObjectName() { enc.buf = enc.tokens.mayAppendDelim(enc.buf, '[') enc.buf = append(enc.buf, "[]"...) enc.tokens.last.increment() if enc.needFlush() { return enc.flush() } return nil } once.Do(init) if err := enc.WriteToken(ArrayStart); err != nil { return err } marshal := valFncs.marshal if mo.Marshalers != nil { marshal, _ = mo.Marshalers.lookup(marshal, t.Elem()) } for i := 0; i < n; i++ { v := addressableValue{va.Index(i)} // indexed slice element is always addressable if err := marshal(mo, enc, v); err != nil { return err } } if err := enc.WriteToken(ArrayEnd); err != nil { return err } return nil } emptySlice := reflect.MakeSlice(t, 0, 0) fncs.unmarshal = func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { if uo.format != "" && uo.formatDepth == dec.tokens.depth() { if uo.format == "emitnull" { uo.format = "" // only relevant for marshaling } else { return newInvalidFormatError("unmarshal", t, uo.format) } } tok, err := dec.ReadToken() if err != nil { return err } k := tok.Kind() switch k { case 'n': va.Set(reflect.Zero(t)) return nil case '[': once.Do(init) unmarshal := valFncs.unmarshal if uo.Unmarshalers != nil { unmarshal, _ = uo.Unmarshalers.lookup(unmarshal, t.Elem()) } mustZero := true // we do not know the cleanliness of unused capacity cap := va.Cap() if cap > 0 { va.SetLen(cap) } var i int for dec.PeekKind() != ']' { if i == cap { // TODO(https://go.dev/issue/48000): Use reflect.Value.Append. va.Set(reflect.Append(va.Value, reflect.Zero(t.Elem()))) cap = va.Cap() va.SetLen(cap) mustZero = false // append guarantees that unused capacity is zero-initialized } v := addressableValue{va.Index(i)} // indexed slice element is always addressable i++ if mustZero { v.Set(reflect.Zero(t.Elem())) } if err := unmarshal(uo, dec, v); err != nil { va.SetLen(i) return err } } if i == 0 { va.Set(emptySlice) } else { va.SetLen(i) } if _, err := dec.ReadToken(); err != nil { return err } return nil } return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t} } return &fncs } func makeArrayArshaler(t reflect.Type) *arshaler { var fncs arshaler var ( once sync.Once valFncs *arshaler ) init := func() { valFncs = lookupArshaler(t.Elem()) } n := t.Len() fncs.marshal = func(mo MarshalOptions, enc *Encoder, va addressableValue) error { if mo.format != "" && mo.formatDepth == enc.tokens.depth() { return newInvalidFormatError("marshal", t, mo.format) } once.Do(init) if err := enc.WriteToken(ArrayStart); err != nil { return err } marshal := valFncs.marshal if mo.Marshalers != nil { marshal, _ = mo.Marshalers.lookup(marshal, t.Elem()) } for i := 0; i < n; i++ { v := addressableValue{va.Index(i)} // indexed array element is addressable if array is addressable if err := marshal(mo, enc, v); err != nil { return err } } if err := enc.WriteToken(ArrayEnd); err != nil { return err } return nil } fncs.unmarshal = func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { if uo.format != "" && uo.formatDepth == dec.tokens.depth() { return newInvalidFormatError("unmarshal", t, uo.format) } tok, err := dec.ReadToken() if err != nil { return err } k := tok.Kind() switch k { case 'n': va.Set(reflect.Zero(t)) return nil case '[': once.Do(init) unmarshal := valFncs.unmarshal if uo.Unmarshalers != nil { unmarshal, _ = uo.Unmarshalers.lookup(unmarshal, t.Elem()) } var i int for dec.PeekKind() != ']' { if i >= n { err := errors.New("too many array elements") return &SemanticError{action: "unmarshal", GoType: t, Err: err} } v := addressableValue{va.Index(i)} // indexed array element is addressable if array is addressable v.Set(reflect.Zero(v.Type())) if err := unmarshal(uo, dec, v); err != nil { return err } i++ } if _, err := dec.ReadToken(); err != nil { return err } if i < n { err := errors.New("too few array elements") return &SemanticError{action: "unmarshal", GoType: t, Err: err} } return nil } return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t} } return &fncs } func makePointerArshaler(t reflect.Type) *arshaler { var fncs arshaler var ( once sync.Once valFncs *arshaler ) init := func() { valFncs = lookupArshaler(t.Elem()) } fncs.marshal = func(mo MarshalOptions, enc *Encoder, va addressableValue) error { // Check for cycles. if enc.tokens.depth() > startDetectingCyclesAfter { if err := enc.seenPointers.visit(va.Value); err != nil { return err } defer enc.seenPointers.leave(va.Value) } // NOTE: MarshalOptions.format is forwarded to underlying marshal. if va.IsNil() { return enc.WriteToken(Null) } once.Do(init) marshal := valFncs.marshal if mo.Marshalers != nil { marshal, _ = mo.Marshalers.lookup(marshal, t.Elem()) } v := addressableValue{va.Elem()} // dereferenced pointer is always addressable return marshal(mo, enc, v) } fncs.unmarshal = func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { // NOTE: UnmarshalOptions.format is forwarded to underlying unmarshal. if dec.PeekKind() == 'n' { if _, err := dec.ReadToken(); err != nil { return err } va.Set(reflect.Zero(t)) return nil } once.Do(init) unmarshal := valFncs.unmarshal if uo.Unmarshalers != nil { unmarshal, _ = uo.Unmarshalers.lookup(unmarshal, t.Elem()) } if va.IsNil() { va.Set(reflect.New(t.Elem())) } v := addressableValue{va.Elem()} // dereferenced pointer is always addressable return unmarshal(uo, dec, v) } return &fncs } func makeInterfaceArshaler(t reflect.Type) *arshaler { // NOTE: Values retrieved from an interface are not addressable, // so we shallow copy the values to make them addressable and // store them back into the interface afterwards. var fncs arshaler fncs.marshal = func(mo MarshalOptions, enc *Encoder, va addressableValue) error { if mo.format != "" && mo.formatDepth == enc.tokens.depth() { return newInvalidFormatError("marshal", t, mo.format) } if va.IsNil() { return enc.WriteToken(Null) } v := newAddressableValue(va.Elem().Type()) v.Set(va.Elem()) marshal := lookupArshaler(v.Type()).marshal if mo.Marshalers != nil { marshal, _ = mo.Marshalers.lookup(marshal, v.Type()) } // Optimize for the any type if there are no special options. if optimizeCommon && t == anyType && !mo.StringifyNumbers && mo.format == "" && (mo.Marshalers == nil || !mo.Marshalers.fromAny) { return marshalValueAny(mo, enc, va.Elem().Interface()) } return marshal(mo, enc, v) } fncs.unmarshal = func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { if uo.format != "" && uo.formatDepth == dec.tokens.depth() { return newInvalidFormatError("unmarshal", t, uo.format) } if dec.PeekKind() == 'n' { if _, err := dec.ReadToken(); err != nil { return err } va.Set(reflect.Zero(t)) return nil } var v addressableValue if va.IsNil() { // Optimize for the any type if there are no special options. // We do not care about stringified numbers since JSON strings // are always unmarshaled into an any value as Go strings. // Duplicate name check must be enforced since unmarshalValueAny // does not implement merge semantics. if optimizeCommon && t == anyType && uo.format == "" && (uo.Unmarshalers == nil || !uo.Unmarshalers.fromAny) && !dec.options.AllowDuplicateNames { v, err := unmarshalValueAny(uo, dec) // We must check for nil interface values up front. // See https://go.dev/issue/52310. if v != nil { va.Set(reflect.ValueOf(v)) } return err } k := dec.PeekKind() if !isAnyType(t) { err := errors.New("cannot derive concrete type for non-empty interface") return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t, Err: err} } switch k { case 'f', 't': v = newAddressableValue(boolType) case '"': v = newAddressableValue(stringType) case '0': v = newAddressableValue(float64Type) case '{': v = newAddressableValue(mapStringAnyType) case '[': v = newAddressableValue(sliceAnyType) default: // If k is invalid (e.g., due to an I/O or syntax error), then // that will be cached by PeekKind and returned by ReadValue. // If k is '}' or ']', then ReadValue must error since // those are invalid kinds at the start of a JSON value. _, err := dec.ReadValue() return err } } else { // Shallow copy the existing value to keep it addressable. // Any mutations at the top-level of the value will be observable // since we always store this value back into the interface value. v = newAddressableValue(va.Elem().Type()) v.Set(va.Elem()) } unmarshal := lookupArshaler(v.Type()).unmarshal if uo.Unmarshalers != nil { unmarshal, _ = uo.Unmarshalers.lookup(unmarshal, v.Type()) } err := unmarshal(uo, dec, v) va.Set(v.Value) return err } return &fncs } // isAnyType reports wether t is equivalent to the any interface type. func isAnyType(t reflect.Type) bool { // This is forward compatible if the Go language permits type sets within // ordinary interfaces where an interface with zero methods does not // necessarily mean it can hold every possible Go type. // See https://go.dev/issue/45346. return t == anyType || anyType.Implements(t) } func makeInvalidArshaler(t reflect.Type) *arshaler { var fncs arshaler fncs.marshal = func(mo MarshalOptions, enc *Encoder, va addressableValue) error { return &SemanticError{action: "marshal", GoType: t} } fncs.unmarshal = func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { return &SemanticError{action: "unmarshal", GoType: t} } return &fncs } func newInvalidFormatError(action string, t reflect.Type, format string) error { err := fmt.Errorf("invalid format flag: %q", format) return &SemanticError{action: action, GoType: t, Err: err} } arshal_funcs.go000066400000000000000000000336601453663023200347770ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "errors" "fmt" "reflect" "sync" ) // SkipFunc may be returned by MarshalFuncV2 and UnmarshalFuncV2 functions. // // Any function that returns SkipFunc must not cause observable side effects // on the provided Encoder or Decoder. For example, it is permissible to call // Decoder.PeekKind, but not permissible to call Decoder.ReadToken or // Encoder.WriteToken since such methods mutate the state. const SkipFunc = jsonError("skip function") // Marshalers is a list of functions that may override the marshal behavior // of specific types. Populate MarshalOptions.Marshalers to use it. // A nil *Marshalers is equivalent to an empty list. type Marshalers = typedMarshalers // NewMarshalers constructs a flattened list of marshal functions. // If multiple functions in the list are applicable for a value of a given type, // then those earlier in the list take precedence over those that come later. // If a function returns SkipFunc, then the next applicable function is called, // otherwise the default marshaling behavior is used. // // For example: // // m1 := NewMarshalers(f1, f2) // m2 := NewMarshalers(f0, m1, f3) // equivalent to m3 // m3 := NewMarshalers(f0, f1, f2, f3) // equivalent to m2 func NewMarshalers(ms ...*Marshalers) *Marshalers { return newMarshalers(ms...) } // Unmarshalers is a list of functions that may override the unmarshal behavior // of specific types. Populate UnmarshalOptions.Unmarshalers to use it. // A nil *Unmarshalers is equivalent to an empty list. type Unmarshalers = typedUnmarshalers // NewUnmarshalers constructs a flattened list of unmarshal functions. // If multiple functions in the list are applicable for a value of a given type, // then those earlier in the list take precedence over those that come later. // If a function returns SkipFunc, then the next applicable function is called, // otherwise the default unmarshaling behavior is used. // // For example: // // u1 := NewUnmarshalers(f1, f2) // u2 := NewUnmarshalers(f0, u1, f3) // equivalent to u3 // u3 := NewUnmarshalers(f0, f1, f2, f3) // equivalent to u2 func NewUnmarshalers(us ...*Unmarshalers) *Unmarshalers { return newUnmarshalers(us...) } type typedMarshalers = typedArshalers[MarshalOptions, Encoder] type typedUnmarshalers = typedArshalers[UnmarshalOptions, Decoder] type typedArshalers[Options, Coder any] struct { nonComparable fncVals []typedArshaler[Options, Coder] fncCache sync.Map // map[reflect.Type]arshaler // fromAny reports whether any of Go types used to represent arbitrary JSON // (i.e., any, bool, string, float64, map[string]any, or []any) matches // any of the provided type-specific arshalers. // // This bit of information is needed in arshal_default.go to determine // whether to use the specialized logic in arshal_any.go to handle // the any interface type. The logic in arshal_any.go does not support // type-specific arshal functions, so we must avoid using that logic // if this is true. fromAny bool } type typedMarshaler = typedArshaler[MarshalOptions, Encoder] type typedUnmarshaler = typedArshaler[UnmarshalOptions, Decoder] type typedArshaler[Options, Coder any] struct { typ reflect.Type fnc func(Options, *Coder, addressableValue) error maySkip bool } func newMarshalers(ms ...*Marshalers) *Marshalers { return newTypedArshalers(ms...) } func newUnmarshalers(us ...*Unmarshalers) *Unmarshalers { return newTypedArshalers(us...) } func newTypedArshalers[Options, Coder any](as ...*typedArshalers[Options, Coder]) *typedArshalers[Options, Coder] { var a typedArshalers[Options, Coder] for _, a2 := range as { if a2 != nil { a.fncVals = append(a.fncVals, a2.fncVals...) a.fromAny = a.fromAny || a2.fromAny } } if len(a.fncVals) == 0 { return nil } return &a } func (a *typedArshalers[Options, Coder]) lookup(fnc func(Options, *Coder, addressableValue) error, t reflect.Type) (func(Options, *Coder, addressableValue) error, bool) { if a == nil { return fnc, false } if v, ok := a.fncCache.Load(t); ok { if v == nil { return fnc, false } return v.(func(Options, *Coder, addressableValue) error), true } // Collect a list of arshalers that can be called for this type. // This list may be longer than 1 since some arshalers can be skipped. var fncs []func(Options, *Coder, addressableValue) error for _, fncVal := range a.fncVals { if !castableTo(t, fncVal.typ) { continue } fncs = append(fncs, fncVal.fnc) if !fncVal.maySkip { break // subsequent arshalers will never be called } } if len(fncs) == 0 { a.fncCache.Store(t, nil) // nil to indicate that no funcs found return fnc, false } // Construct an arshaler that may call every applicable arshaler. fncDefault := fnc fnc = func(o Options, c *Coder, v addressableValue) error { for _, fnc := range fncs { if err := fnc(o, c, v); err != SkipFunc { return err // may be nil or non-nil } } return fncDefault(o, c, v) } // Use the first stored so duplicate work can be garbage collected. v, _ := a.fncCache.LoadOrStore(t, fnc) return v.(func(Options, *Coder, addressableValue) error), true } // MarshalFuncV1 constructs a type-specific marshaler that // specifies how to marshal values of type T. // T can be any type except a named pointer. // The function is always provided with a non-nil pointer value // if T is an interface or pointer type. // // The function must marshal exactly one JSON value. // The value of T must not be retained outside the function call. // It may not return SkipFunc. func MarshalFuncV1[T any](fn func(T) ([]byte, error)) *Marshalers { t := reflect.TypeOf((*T)(nil)).Elem() assertCastableTo(t, true) typFnc := typedMarshaler{ typ: t, fnc: func(mo MarshalOptions, enc *Encoder, va addressableValue) error { val, err := fn(va.castTo(t).Interface().(T)) if err != nil { err = wrapSkipFunc(err, "marshal function of type func(T) ([]byte, error)") // TODO: Avoid wrapping semantic errors. return &SemanticError{action: "marshal", GoType: t, Err: err} } if err := enc.WriteValue(val); err != nil { // TODO: Avoid wrapping semantic or I/O errors. return &SemanticError{action: "marshal", JSONKind: RawValue(val).Kind(), GoType: t, Err: err} } return nil }, } return &Marshalers{fncVals: []typedMarshaler{typFnc}, fromAny: castableToFromAny(t)} } // MarshalFuncV2 constructs a type-specific marshaler that // specifies how to marshal values of type T. // T can be any type except a named pointer. // The function is always provided with a non-nil pointer value // if T is an interface or pointer type. // // The function must marshal exactly one JSON value by calling write methods // on the provided encoder. It may return SkipFunc such that marshaling can // move on to the next marshal function. However, no mutable method calls may // be called on the encoder if SkipFunc is returned. // The pointer to Encoder and the value of T must not be retained // outside the function call. func MarshalFuncV2[T any](fn func(MarshalOptions, *Encoder, T) error) *Marshalers { t := reflect.TypeOf((*T)(nil)).Elem() assertCastableTo(t, true) typFnc := typedMarshaler{ typ: t, fnc: func(mo MarshalOptions, enc *Encoder, va addressableValue) error { prevDepth, prevLength := enc.tokens.depthLength() err := fn(mo, enc, va.castTo(t).Interface().(T)) currDepth, currLength := enc.tokens.depthLength() if err == nil && (prevDepth != currDepth || prevLength+1 != currLength) { err = errors.New("must write exactly one JSON value") } if err != nil { if err == SkipFunc { if prevDepth == currDepth && prevLength == currLength { return SkipFunc } err = errors.New("must not write any JSON tokens when skipping") } // TODO: Avoid wrapping semantic or I/O errors. return &SemanticError{action: "marshal", GoType: t, Err: err} } return nil }, maySkip: true, } return &Marshalers{fncVals: []typedMarshaler{typFnc}, fromAny: castableToFromAny(t)} } // UnmarshalFuncV1 constructs a type-specific unmarshaler that // specifies how to unmarshal values of type T. // T must be an unnamed pointer or an interface type. // The function is always provided with a non-nil pointer value. // // The function must unmarshal exactly one JSON value. // The input []byte must not be mutated. // The input []byte and value T must not be retained outside the function call. // It may not return SkipFunc. func UnmarshalFuncV1[T any](fn func([]byte, T) error) *Unmarshalers { t := reflect.TypeOf((*T)(nil)).Elem() assertCastableTo(t, false) typFnc := typedUnmarshaler{ typ: t, fnc: func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { val, err := dec.ReadValue() if err != nil { return err // must be a syntactic or I/O error } err = fn(val, va.castTo(t).Interface().(T)) if err != nil { err = wrapSkipFunc(err, "unmarshal function of type func([]byte, T) error") // TODO: Avoid wrapping semantic, syntactic, or I/O errors. return &SemanticError{action: "unmarshal", JSONKind: val.Kind(), GoType: t, Err: err} } return nil }, } return &Unmarshalers{fncVals: []typedUnmarshaler{typFnc}, fromAny: castableToFromAny(t)} } // UnmarshalFuncV2 constructs a type-specific unmarshaler that // specifies how to unmarshal values of type T. // T must be an unnamed pointer or an interface type. // The function is always provided with a non-nil pointer value. // // The function must unmarshal exactly one JSON value by calling read methods // on the provided decoder. It may return SkipFunc such that unmarshaling can // move on to the next unmarshal function. However, no mutable method calls may // be called on the decoder if SkipFunc is returned. // The pointer to Decoder and the value of T must not be retained // outside the function call. func UnmarshalFuncV2[T any](fn func(UnmarshalOptions, *Decoder, T) error) *Unmarshalers { t := reflect.TypeOf((*T)(nil)).Elem() assertCastableTo(t, false) typFnc := typedUnmarshaler{ typ: t, fnc: func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { prevDepth, prevLength := dec.tokens.depthLength() err := fn(uo, dec, va.castTo(t).Interface().(T)) currDepth, currLength := dec.tokens.depthLength() if err == nil && (prevDepth != currDepth || prevLength+1 != currLength) { err = errors.New("must read exactly one JSON value") } if err != nil { if err == SkipFunc { if prevDepth == currDepth && prevLength == currLength { return SkipFunc } err = errors.New("must not read any JSON tokens when skipping") } // TODO: Avoid wrapping semantic, syntactic, or I/O errors. return &SemanticError{action: "unmarshal", GoType: t, Err: err} } return nil }, maySkip: true, } return &Unmarshalers{fncVals: []typedUnmarshaler{typFnc}, fromAny: castableToFromAny(t)} } // assertCastableTo asserts that "to" is a valid type to be casted to. // These are the Go types that type-specific arshalers may operate upon. // // Let AllTypes be the universal set of all possible Go types. // This function generally asserts that: // // len([from for from in AllTypes if castableTo(from, to)]) > 0 // // otherwise it panics. // // As a special-case if marshal is false, then we forbid any non-pointer or // non-interface type since it is almost always a bug trying to unmarshal // into something where the end-user caller did not pass in an addressable value // since they will not observe the mutations. func assertCastableTo(to reflect.Type, marshal bool) { switch to.Kind() { case reflect.Interface: return case reflect.Pointer: // Only allow unnamed pointers to be consistent with the fact that // taking the address of a value produces an unnamed pointer type. if to.Name() == "" { return } default: // Technically, non-pointer types are permissible for unmarshal. // However, they are often a bug since the receiver would be immutable. // Thus, only allow them for marshaling. if marshal { return } } if marshal { panic(fmt.Sprintf("input type %v must be an interface type, an unnamed pointer type, or a non-pointer type", to)) } else { panic(fmt.Sprintf("input type %v must be an interface type or an unnamed pointer type", to)) } } // castableTo checks whether values of type "from" can be casted to type "to". // Nil pointer or interface "from" values are never considered castable. // // This function must be kept in sync with addressableValue.castTo. func castableTo(from, to reflect.Type) bool { switch to.Kind() { case reflect.Interface: // TODO: This breaks when ordinary interfaces can have type sets // since interfaces now exist where only the value form of a type (T) // implements the interface, but not the pointer variant (*T). // See https://go.dev/issue/45346. return reflect.PointerTo(from).Implements(to) case reflect.Pointer: // Common case for unmarshaling. // From must be a concrete or interface type. return reflect.PointerTo(from) == to default: // Common case for marshaling. // From must be a concrete type. return from == to } } // castTo casts va to the specified type. // If the type is an interface, then the underlying type will always // be a non-nil pointer to a concrete type. // // Requirement: castableTo(va.Type(), to) must hold. func (va addressableValue) castTo(to reflect.Type) reflect.Value { switch to.Kind() { case reflect.Interface: return va.Addr().Convert(to) case reflect.Pointer: return va.Addr() default: return va.Value } } // castableToFromAny reports whether "to" can be casted to from any // of the dynamic types used to represent arbitrary JSON. func castableToFromAny(to reflect.Type) bool { for _, from := range []reflect.Type{anyType, boolType, stringType, float64Type, mapStringAnyType, sliceAnyType} { if castableTo(from, to) { return true } } return false } func wrapSkipFunc(err error, what string) error { if err == SkipFunc { return errors.New(what + " cannot be skipped") } return err } arshal_inlined.go000066400000000000000000000147151453663023200353030ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "bytes" "errors" "reflect" ) // This package supports "inlining" a Go struct field, where the contents // of the serialized field (which must be a JSON object) are treated as if // they are part of the parent Go struct (which represents a JSON object). // // Generally, inlined fields are of a Go struct type, where the fields of the // nested struct are virtually hoisted up to the parent struct using rules // similar to how Go embedding works (but operating within the JSON namespace). // // However, inlined fields may also be of a Go map type with a string key // or a RawValue. Such inlined fields are called "fallback" fields since they // represent any arbitrary JSON object member. Explicitly named fields take // precedence over the inlined fallback. Only one inlined fallback is allowed. var rawValueType = reflect.TypeOf((*RawValue)(nil)).Elem() // marshalInlinedFallbackAll marshals all the members in an inlined fallback. func marshalInlinedFallbackAll(mo MarshalOptions, enc *Encoder, va addressableValue, f *structField, insertUnquotedName func([]byte) bool) error { v := addressableValue{va.Field(f.index[0])} // addressable if struct value is addressable if len(f.index) > 1 { v = v.fieldByIndex(f.index[1:], false) if !v.IsValid() { return nil // implies a nil inlined field } } v = v.indirect(false) if !v.IsValid() { return nil } if v.Type() == rawValueType { b := v.Interface().(RawValue) if len(b) == 0 { // TODO: Should this be nil? What if it were all whitespace? return nil } dec := getBufferedDecoder(b, DecodeOptions{AllowDuplicateNames: true, AllowInvalidUTF8: true}) defer putBufferedDecoder(dec) tok, err := dec.ReadToken() if err != nil { return &SemanticError{action: "marshal", GoType: rawValueType, Err: err} } if tok.Kind() != '{' { err := errors.New("inlined raw value must be a JSON object") return &SemanticError{action: "marshal", JSONKind: tok.Kind(), GoType: rawValueType, Err: err} } for dec.PeekKind() != '}' { // Parse the JSON object name. var flags valueFlags val, err := dec.readValue(&flags) if err != nil { return &SemanticError{action: "marshal", GoType: rawValueType, Err: err} } if insertUnquotedName != nil { name := unescapeStringMayCopy(val, flags.isVerbatim()) if !insertUnquotedName(name) { return &SyntacticError{str: "duplicate name " + string(val) + " in object"} } } if err := enc.WriteValue(val); err != nil { return err } // Parse the JSON object value. val, err = dec.readValue(&flags) if err != nil { return &SemanticError{action: "marshal", GoType: rawValueType, Err: err} } if err := enc.WriteValue(val); err != nil { return err } } if _, err := dec.ReadToken(); err != nil { return &SemanticError{action: "marshal", GoType: rawValueType, Err: err} } if err := dec.checkEOF(); err != nil { return &SemanticError{action: "marshal", GoType: rawValueType, Err: err} } return nil } else { m := v // must be a map[string]V n := m.Len() if n == 0 { return nil } mk := newAddressableValue(stringType) mv := newAddressableValue(m.Type().Elem()) marshalKey := func(mk addressableValue) error { b, err := appendString(enc.UnusedBuffer(), mk.String(), !enc.options.AllowInvalidUTF8, nil) if err != nil { return err } if insertUnquotedName != nil { isVerbatim := bytes.IndexByte(b, '\\') < 0 name := unescapeStringMayCopy(b, isVerbatim) if !insertUnquotedName(name) { return &SyntacticError{str: "duplicate name " + string(b) + " in object"} } } return enc.WriteValue(b) } marshalVal := f.fncs.marshal if mo.Marshalers != nil { marshalVal, _ = mo.Marshalers.lookup(marshalVal, mv.Type()) } if !mo.Deterministic || n <= 1 { for iter := m.MapRange(); iter.Next(); { mk.SetIterKey(iter) if err := marshalKey(mk); err != nil { return err } mv.Set(iter.Value()) if err := marshalVal(mo, enc, mv); err != nil { return err } } } else { names := getStrings(n) for i, iter := 0, m.Value.MapRange(); i < n && iter.Next(); i++ { mk.SetIterKey(iter) (*names)[i] = mk.String() } names.Sort() for _, name := range *names { mk.SetString(name) if err := marshalKey(mk); err != nil { return err } // TODO(https://go.dev/issue/57061): Use mv.SetMapIndexOf. mv.Set(m.MapIndex(mk.Value)) if err := marshalVal(mo, enc, mv); err != nil { return err } } putStrings(names) } return nil } } // unmarshalInlinedFallbackNext unmarshals only the next member in an inlined fallback. func unmarshalInlinedFallbackNext(uo UnmarshalOptions, dec *Decoder, va addressableValue, f *structField, quotedName, unquotedName []byte) error { v := addressableValue{va.Field(f.index[0])} // addressable if struct value is addressable if len(f.index) > 1 { v = v.fieldByIndex(f.index[1:], true) } v = v.indirect(true) if v.Type() == rawValueType { b := v.Addr().Interface().(*RawValue) if len(*b) == 0 { // TODO: Should this be nil? What if it were all whitespace? *b = append(*b, '{') } else { *b = trimSuffixWhitespace(*b) if hasSuffixByte(*b, '}') { // TODO: When merging into an object for the first time, // should we verify that it is valid? *b = trimSuffixByte(*b, '}') *b = trimSuffixWhitespace(*b) if !hasSuffixByte(*b, ',') && !hasSuffixByte(*b, '{') { *b = append(*b, ',') } } else { err := errors.New("inlined raw value must be a JSON object") return &SemanticError{action: "unmarshal", GoType: rawValueType, Err: err} } } *b = append(*b, quotedName...) *b = append(*b, ':') rawValue, err := dec.ReadValue() if err != nil { return err } *b = append(*b, rawValue...) *b = append(*b, '}') return nil } else { name := string(unquotedName) // TODO: Intern this? m := v // must be a map[string]V if m.IsNil() { m.Set(reflect.MakeMap(m.Type())) } mk := reflect.ValueOf(name) mv := newAddressableValue(v.Type().Elem()) // TODO: Cache across calls? if v2 := m.MapIndex(mk); v2.IsValid() { mv.Set(v2) } unmarshal := f.fncs.unmarshal if uo.Unmarshalers != nil { unmarshal, _ = uo.Unmarshalers.lookup(unmarshal, mv.Type()) } err := unmarshal(uo, dec, mv) m.SetMapIndex(mk, mv.Value) if err != nil { return err } return nil } } arshal_methods.go000066400000000000000000000220121453663023200353110ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "encoding" "errors" "reflect" ) // Interfaces for custom serialization. var ( jsonMarshalerV1Type = reflect.TypeOf((*MarshalerV1)(nil)).Elem() jsonMarshalerV2Type = reflect.TypeOf((*MarshalerV2)(nil)).Elem() jsonUnmarshalerV1Type = reflect.TypeOf((*UnmarshalerV1)(nil)).Elem() jsonUnmarshalerV2Type = reflect.TypeOf((*UnmarshalerV2)(nil)).Elem() textMarshalerType = reflect.TypeOf((*encoding.TextMarshaler)(nil)).Elem() textUnmarshalerType = reflect.TypeOf((*encoding.TextUnmarshaler)(nil)).Elem() ) // MarshalerV1 is implemented by types that can marshal themselves. // It is recommended that types implement MarshalerV2 unless the implementation // is trying to avoid a hard dependency on the "jsontext" package. // // It is recommended that implementations return a buffer that is safe // for the caller to retain and potentially mutate. type MarshalerV1 interface { MarshalJSON() ([]byte, error) } // MarshalerV2 is implemented by types that can marshal themselves. // It is recommended that types implement MarshalerV2 instead of MarshalerV1 // since this is both more performant and flexible. // If a type implements both MarshalerV1 and MarshalerV2, // then MarshalerV2 takes precedence. In such a case, both implementations // should aim to have equivalent behavior for the default marshal options. // // The implementation must write only one JSON value to the Encoder and // must not retain the pointer to Encoder. type MarshalerV2 interface { MarshalNextJSON(MarshalOptions, *Encoder) error // TODO: Should users call the MarshalOptions.MarshalNext method or // should/can they call this method directly? Does it matter? } // UnmarshalerV1 is implemented by types that can unmarshal themselves. // It is recommended that types implement UnmarshalerV2 unless // the implementation is trying to avoid a hard dependency on this package. // // The input can be assumed to be a valid encoding of a JSON value // if called from unmarshal functionality in this package. // UnmarshalJSON must copy the JSON data if it is retained after returning. // It is recommended that UnmarshalJSON implement merge semantics when // unmarshaling into a pre-populated value. // // Implementations must not retain or mutate the input []byte. type UnmarshalerV1 interface { UnmarshalJSON([]byte) error } // UnmarshalerV2 is implemented by types that can unmarshal themselves. // It is recommended that types implement UnmarshalerV2 instead of UnmarshalerV1 // since this is both more performant and flexible. // If a type implements both UnmarshalerV1 and UnmarshalerV2, // then UnmarshalerV2 takes precedence. In such a case, both implementations // should aim to have equivalent behavior for the default unmarshal options. // // The implementation must read only one JSON value from the Decoder. // It is recommended that UnmarshalNextJSON implement merge semantics when // unmarshaling into a pre-populated value. // // Implementations must not retain the pointer to Decoder. type UnmarshalerV2 interface { UnmarshalNextJSON(UnmarshalOptions, *Decoder) error // TODO: Should users call the UnmarshalOptions.UnmarshalNext method or // should/can they call this method directly? Does it matter? } func makeMethodArshaler(fncs *arshaler, t reflect.Type) *arshaler { // Avoid injecting method arshaler on the pointer or interface version // to avoid ever calling the method on a nil pointer or interface receiver. // Let it be injected on the value receiver (which is always addressable). if t.Kind() == reflect.Pointer || t.Kind() == reflect.Interface { return fncs } // Handle custom marshaler. switch which, needAddr := implementsWhich(t, jsonMarshalerV2Type, jsonMarshalerV1Type, textMarshalerType); which { case jsonMarshalerV2Type: fncs.nonDefault = true fncs.marshal = func(mo MarshalOptions, enc *Encoder, va addressableValue) error { prevDepth, prevLength := enc.tokens.depthLength() err := va.addrWhen(needAddr).Interface().(MarshalerV2).MarshalNextJSON(mo, enc) currDepth, currLength := enc.tokens.depthLength() if (prevDepth != currDepth || prevLength+1 != currLength) && err == nil { err = errors.New("must write exactly one JSON value") } if err != nil { err = wrapSkipFunc(err, "marshal method") // TODO: Avoid wrapping semantic or I/O errors. return &SemanticError{action: "marshal", GoType: t, Err: err} } return nil } case jsonMarshalerV1Type: fncs.nonDefault = true fncs.marshal = func(mo MarshalOptions, enc *Encoder, va addressableValue) error { marshaler := va.addrWhen(needAddr).Interface().(MarshalerV1) val, err := marshaler.MarshalJSON() if err != nil { err = wrapSkipFunc(err, "marshal method") // TODO: Avoid wrapping semantic errors. return &SemanticError{action: "marshal", GoType: t, Err: err} } if err := enc.WriteValue(val); err != nil { // TODO: Avoid wrapping semantic or I/O errors. return &SemanticError{action: "marshal", JSONKind: RawValue(val).Kind(), GoType: t, Err: err} } return nil } case textMarshalerType: fncs.nonDefault = true fncs.marshal = func(mo MarshalOptions, enc *Encoder, va addressableValue) error { marshaler := va.addrWhen(needAddr).Interface().(encoding.TextMarshaler) s, err := marshaler.MarshalText() if err != nil { err = wrapSkipFunc(err, "marshal method") // TODO: Avoid wrapping semantic errors. return &SemanticError{action: "marshal", JSONKind: '"', GoType: t, Err: err} } val := enc.UnusedBuffer() val, err = appendString(val, string(s), true, nil) if err != nil { return &SemanticError{action: "marshal", JSONKind: '"', GoType: t, Err: err} } if err := enc.WriteValue(val); err != nil { // TODO: Avoid wrapping syntactic or I/O errors. return &SemanticError{action: "marshal", JSONKind: '"', GoType: t, Err: err} } return nil } } // Handle custom unmarshaler. switch which, needAddr := implementsWhich(t, jsonUnmarshalerV2Type, jsonUnmarshalerV1Type, textUnmarshalerType); which { case jsonUnmarshalerV2Type: fncs.nonDefault = true fncs.unmarshal = func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { prevDepth, prevLength := dec.tokens.depthLength() err := va.addrWhen(needAddr).Interface().(UnmarshalerV2).UnmarshalNextJSON(uo, dec) currDepth, currLength := dec.tokens.depthLength() if (prevDepth != currDepth || prevLength+1 != currLength) && err == nil { err = errors.New("must read exactly one JSON value") } if err != nil { err = wrapSkipFunc(err, "unmarshal method") // TODO: Avoid wrapping semantic, syntactic, or I/O errors. return &SemanticError{action: "unmarshal", GoType: t, Err: err} } return nil } case jsonUnmarshalerV1Type: fncs.nonDefault = true fncs.unmarshal = func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { val, err := dec.ReadValue() if err != nil { return err // must be a syntactic or I/O error } unmarshaler := va.addrWhen(needAddr).Interface().(UnmarshalerV1) if err := unmarshaler.UnmarshalJSON(val); err != nil { err = wrapSkipFunc(err, "unmarshal method") // TODO: Avoid wrapping semantic, syntactic, or I/O errors. return &SemanticError{action: "unmarshal", JSONKind: val.Kind(), GoType: t, Err: err} } return nil } case textUnmarshalerType: fncs.nonDefault = true fncs.unmarshal = func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { var flags valueFlags val, err := dec.readValue(&flags) if err != nil { return err // must be a syntactic or I/O error } if val.Kind() != '"' { err = errors.New("JSON value must be string type") return &SemanticError{action: "unmarshal", JSONKind: val.Kind(), GoType: t, Err: err} } s := unescapeStringMayCopy(val, flags.isVerbatim()) unmarshaler := va.addrWhen(needAddr).Interface().(encoding.TextUnmarshaler) if err := unmarshaler.UnmarshalText(s); err != nil { err = wrapSkipFunc(err, "unmarshal method") // TODO: Avoid wrapping semantic, syntactic, or I/O errors. return &SemanticError{action: "unmarshal", JSONKind: val.Kind(), GoType: t, Err: err} } return nil } } return fncs } // implementsWhich is like t.Implements(ifaceType) for a list of interfaces, // but checks whether either t or reflect.PointerTo(t) implements the interface. // It returns the first interface type that matches and whether a value of t // needs to be addressed first before it implements the interface. func implementsWhich(t reflect.Type, ifaceTypes ...reflect.Type) (which reflect.Type, needAddr bool) { for _, ifaceType := range ifaceTypes { switch { case t.Implements(ifaceType): return ifaceType, false case reflect.PointerTo(t).Implements(ifaceType): return ifaceType, true } } return nil, false } // addrWhen returns va.Addr if addr is specified, otherwise it returns itself. func (va addressableValue) addrWhen(addr bool) reflect.Value { if addr { return va.Addr() } return va.Value } arshal_test.go000066400000000000000000010220621453663023200346330ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "bytes" "encoding" "encoding/base32" "encoding/base64" "encoding/hex" "errors" "fmt" "io" "math" "net" "path" "reflect" "runtime" "strconv" "strings" "testing" "time" ) type testName struct { name string where pc } func name(s string) (t testName) { t.name = s runtime.Callers(2, t.where[:]) return t } type pc [1]uintptr func (pc pc) String() string { frames := runtime.CallersFrames(pc[:]) frame, _ := frames.Next() return fmt.Sprintf("%s:%d", path.Base(frame.File), frame.Line) } type ( jsonObject = map[string]any jsonArray = []any namedAny any namedBool bool namedString string namedBytes []byte namedInt64 int64 namedUint64 uint64 namedFloat64 float64 namedByte byte recursiveMap map[string]recursiveMap recursiveSlice []recursiveSlice recursivePointer struct{ P *recursivePointer } structEmpty struct{} structConflicting struct { A string `json:"conflict"` B string `json:"conflict"` } structNoneExported struct { unexported string } structUnexportedIgnored struct { ignored string `json:"-"` } structMalformedTag struct { Malformed string `json:"\""` } structUnexportedTag struct { unexported string `json:"name"` } structUnexportedEmbedded struct { namedString } structIgnoredUnexportedEmbedded struct { namedString `json:"-"` } structWeirdNames struct { Empty string `json:"''"` Comma string `json:"','"` Quote string `json:"'\"'"` } structNoCase struct { AaA string `json:",nocase"` AAa string `json:",nocase"` AAA string } structScalars struct { unexported bool Ignored bool `json:"-"` Bool bool String string Bytes []byte Int int64 Uint uint64 Float float64 } structSlices struct { unexported bool Ignored bool `json:"-"` SliceBool []bool SliceString []string SliceBytes [][]byte SliceInt []int64 SliceUint []uint64 SliceFloat []float64 } structMaps struct { unexported bool Ignored bool `json:"-"` MapBool map[string]bool MapString map[string]string MapBytes map[string][]byte MapInt map[string]int64 MapUint map[string]uint64 MapFloat map[string]float64 } structAll struct { Bool bool String string Bytes []byte Int int64 Uint uint64 Float float64 Map map[string]string StructScalars structScalars StructMaps structMaps StructSlices structSlices Slice []string Array [1]string Pointer *structAll Interface any } structStringifiedAll struct { Bool bool `json:",string"` String string `json:",string"` Bytes []byte `json:",string"` Int int64 `json:",string"` Uint uint64 `json:",string"` Float float64 `json:",string"` Map map[string]string `json:",string"` StructScalars structScalars `json:",string"` StructMaps structMaps `json:",string"` StructSlices structSlices `json:",string"` Slice []string `json:",string"` Array [1]string `json:",string"` Pointer *structStringifiedAll `json:",string"` Interface any `json:",string"` } structOmitZeroAll struct { Bool bool `json:",omitzero"` String string `json:",omitzero"` Bytes []byte `json:",omitzero"` Int int64 `json:",omitzero"` Uint uint64 `json:",omitzero"` Float float64 `json:",omitzero"` Map map[string]string `json:",omitzero"` StructScalars structScalars `json:",omitzero"` StructMaps structMaps `json:",omitzero"` StructSlices structSlices `json:",omitzero"` Slice []string `json:",omitzero"` Array [1]string `json:",omitzero"` Pointer *structOmitZeroAll `json:",omitzero"` Interface any `json:",omitzero"` } structOmitZeroMethodAll struct { ValueAlwaysZero valueAlwaysZero `json:",omitzero"` ValueNeverZero valueNeverZero `json:",omitzero"` PointerAlwaysZero pointerAlwaysZero `json:",omitzero"` PointerNeverZero pointerNeverZero `json:",omitzero"` PointerValueAlwaysZero *valueAlwaysZero `json:",omitzero"` PointerValueNeverZero *valueNeverZero `json:",omitzero"` PointerPointerAlwaysZero *pointerAlwaysZero `json:",omitzero"` PointerPointerNeverZero *pointerNeverZero `json:",omitzero"` PointerPointerValueAlwaysZero **valueAlwaysZero `json:",omitzero"` PointerPointerValueNeverZero **valueNeverZero `json:",omitzero"` PointerPointerPointerAlwaysZero **pointerAlwaysZero `json:",omitzero"` PointerPointerPointerNeverZero **pointerNeverZero `json:",omitzero"` } structOmitZeroMethodInterfaceAll struct { ValueAlwaysZero isZeroer `json:",omitzero"` ValueNeverZero isZeroer `json:",omitzero"` PointerValueAlwaysZero isZeroer `json:",omitzero"` PointerValueNeverZero isZeroer `json:",omitzero"` PointerPointerAlwaysZero isZeroer `json:",omitzero"` PointerPointerNeverZero isZeroer `json:",omitzero"` } structOmitEmptyAll struct { Bool bool `json:",omitempty"` PointerBool *bool `json:",omitempty"` String string `json:",omitempty"` StringEmpty stringMarshalEmpty `json:",omitempty"` StringNonEmpty stringMarshalNonEmpty `json:",omitempty"` PointerString *string `json:",omitempty"` PointerStringEmpty *stringMarshalEmpty `json:",omitempty"` PointerStringNonEmpty *stringMarshalNonEmpty `json:",omitempty"` Bytes []byte `json:",omitempty"` BytesEmpty bytesMarshalEmpty `json:",omitempty"` BytesNonEmpty bytesMarshalNonEmpty `json:",omitempty"` PointerBytes *[]byte `json:",omitempty"` PointerBytesEmpty *bytesMarshalEmpty `json:",omitempty"` PointerBytesNonEmpty *bytesMarshalNonEmpty `json:",omitempty"` Float float64 `json:",omitempty"` PointerFloat *float64 `json:",omitempty"` Map map[string]string `json:",omitempty"` MapEmpty mapMarshalEmpty `json:",omitempty"` MapNonEmpty mapMarshalNonEmpty `json:",omitempty"` PointerMap *map[string]string `json:",omitempty"` PointerMapEmpty *mapMarshalEmpty `json:",omitempty"` PointerMapNonEmpty *mapMarshalNonEmpty `json:",omitempty"` Slice []string `json:",omitempty"` SliceEmpty sliceMarshalEmpty `json:",omitempty"` SliceNonEmpty sliceMarshalNonEmpty `json:",omitempty"` PointerSlice *[]string `json:",omitempty"` PointerSliceEmpty *sliceMarshalEmpty `json:",omitempty"` PointerSliceNonEmpty *sliceMarshalNonEmpty `json:",omitempty"` Pointer *structOmitZeroEmptyAll `json:",omitempty"` Interface any `json:",omitempty"` } structOmitZeroEmptyAll struct { Bool bool `json:",omitzero,omitempty"` String string `json:",omitzero,omitempty"` Bytes []byte `json:",omitzero,omitempty"` Int int64 `json:",omitzero,omitempty"` Uint uint64 `json:",omitzero,omitempty"` Float float64 `json:",omitzero,omitempty"` Map map[string]string `json:",omitzero,omitempty"` Slice []string `json:",omitzero,omitempty"` Array [1]string `json:",omitzero,omitempty"` Pointer *structOmitZeroEmptyAll `json:",omitzero,omitempty"` Interface any `json:",omitzero,omitempty"` } structFormatBytes struct { Base16 []byte `json:",format:base16"` Base32 []byte `json:",format:base32"` Base32Hex []byte `json:",format:base32hex"` Base64 []byte `json:",format:base64"` Base64URL []byte `json:",format:base64url"` Array []byte `json:",format:array"` } structFormatFloats struct { NonFinite float64 `json:",format:nonfinite"` PointerNonFinite *float64 `json:",format:nonfinite"` } structFormatMaps struct { EmitNull map[string]string `json:",format:emitnull"` PointerEmitNull *map[string]string `json:",format:emitnull"` } structFormatSlices struct { EmitNull []string `json:",format:emitnull"` PointerEmitNull *[]string `json:",format:emitnull"` } structFormatInvalid struct { Bool bool `json:",omitzero,format:invalid"` String string `json:",omitzero,format:invalid"` Bytes []byte `json:",omitzero,format:invalid"` Int int64 `json:",omitzero,format:invalid"` Uint uint64 `json:",omitzero,format:invalid"` Float float64 `json:",omitzero,format:invalid"` Map map[string]string `json:",omitzero,format:invalid"` Struct structAll `json:",omitzero,format:invalid"` Slice []string `json:",omitzero,format:invalid"` Array [1]string `json:",omitzero,format:invalid"` Interface any `json:",omitzero,format:invalid"` } structTimeFormat struct { T1 time.Time T2 time.Time `json:",format:ANSIC"` T3 time.Time `json:",format:UnixDate"` T4 time.Time `json:",format:RubyDate"` T5 time.Time `json:",format:RFC822"` T6 time.Time `json:",format:RFC822Z"` T7 time.Time `json:",format:RFC850"` T8 time.Time `json:",format:RFC1123"` T9 time.Time `json:",format:RFC1123Z"` T10 time.Time `json:",format:RFC3339"` T11 time.Time `json:",format:RFC3339Nano"` T12 time.Time `json:",format:Kitchen"` T13 time.Time `json:",format:Stamp"` T14 time.Time `json:",format:StampMilli"` T15 time.Time `json:",format:StampMicro"` T16 time.Time `json:",format:StampNano"` T17 time.Time `json:",format:'2006-01-02'"` T18 time.Time `json:",format:'\"weird\"2006'"` } structInlined struct { X structInlinedL1 `json:",inline"` *StructEmbed2 // implicit inline } structInlinedL1 struct { X *structInlinedL2 `json:",inline"` StructEmbed1 `json:",inline"` } structInlinedL2 struct{ A, B, C string } StructEmbed1 struct{ C, D, E string } StructEmbed2 struct{ E, F, G string } structUnknownRawValue struct { A int `json:",omitzero"` X RawValue `json:",unknown"` B int `json:",omitzero"` } structInlineRawValue struct { A int `json:",omitzero"` X RawValue `json:",inline"` B int `json:",omitzero"` } structInlinePointerRawValue struct { A int `json:",omitzero"` X *RawValue `json:",inline"` B int `json:",omitzero"` } structInlinePointerInlineRawValue struct { X *struct { A int X RawValue `json:",inline"` } `json:",inline"` } structInlineInlinePointerRawValue struct { X struct { X *RawValue `json:",inline"` } `json:",inline"` } structInlineMapStringAny struct { A int `json:",omitzero"` X jsonObject `json:",inline"` B int `json:",omitzero"` } structInlinePointerMapStringAny struct { A int `json:",omitzero"` X *jsonObject `json:",inline"` B int `json:",omitzero"` } structInlinePointerInlineMapStringAny struct { X *struct { A int X jsonObject `json:",inline"` } `json:",inline"` } structInlineInlinePointerMapStringAny struct { X struct { X *jsonObject `json:",inline"` } `json:",inline"` } structInlineMapStringInt struct { X map[string]int `json:",inline"` } structNoCaseInlineRawValue struct { AAA string `json:",omitempty"` AaA string `json:",omitempty,nocase"` AAa string `json:",omitempty,nocase"` Aaa string `json:",omitempty"` X RawValue `json:",inline"` } structNoCaseInlineMapStringAny struct { AAA string `json:",omitempty"` AaA string `json:",omitempty,nocase"` AAa string `json:",omitempty,nocase"` Aaa string `json:",omitempty"` X jsonObject `json:",inline"` } allMethods struct { method string // the method that was called value []byte // the raw value to provide or store } allMethodsExceptJSONv2 struct { allMethods MarshalNextJSON struct{} // cancel out MarshalNextJSON method with collision UnmarshalNextJSON struct{} // cancel out UnmarshalNextJSON method with collision } allMethodsExceptJSONv1 struct { allMethods MarshalJSON struct{} // cancel out MarshalJSON method with collision UnmarshalJSON struct{} // cancel out UnmarshalJSON method with collision } allMethodsExceptText struct { allMethods MarshalText struct{} // cancel out MarshalText method with collision UnmarshalText struct{} // cancel out UnmarshalText method with collision } onlyMethodJSONv2 struct { allMethods MarshalJSON struct{} // cancel out MarshalJSON method with collision UnmarshalJSON struct{} // cancel out UnmarshalJSON method with collision MarshalText struct{} // cancel out MarshalText method with collision UnmarshalText struct{} // cancel out UnmarshalText method with collision } onlyMethodJSONv1 struct { allMethods MarshalNextJSON struct{} // cancel out MarshalNextJSON method with collision UnmarshalNextJSON struct{} // cancel out UnmarshalNextJSON method with collision MarshalText struct{} // cancel out MarshalText method with collision UnmarshalText struct{} // cancel out UnmarshalText method with collision } onlyMethodText struct { allMethods MarshalNextJSON struct{} // cancel out MarshalNextJSON method with collision UnmarshalNextJSON struct{} // cancel out UnmarshalNextJSON method with collision MarshalJSON struct{} // cancel out MarshalJSON method with collision UnmarshalJSON struct{} // cancel out UnmarshalJSON method with collision } structMethodJSONv2 struct{ value string } structMethodJSONv1 struct{ value string } structMethodText struct{ value string } marshalJSONv2Func func(MarshalOptions, *Encoder) error marshalJSONv1Func func() ([]byte, error) marshalTextFunc func() ([]byte, error) unmarshalJSONv2Func func(UnmarshalOptions, *Decoder) error unmarshalJSONv1Func func([]byte) error unmarshalTextFunc func([]byte) error nocaseString string stringMarshalEmpty string stringMarshalNonEmpty string bytesMarshalEmpty []byte bytesMarshalNonEmpty []byte mapMarshalEmpty map[string]string mapMarshalNonEmpty map[string]string sliceMarshalEmpty []string sliceMarshalNonEmpty []string valueAlwaysZero string valueNeverZero string pointerAlwaysZero string pointerNeverZero string valueStringer struct{} pointerStringer struct{} cyclicA struct { B1 cyclicB `json:",inline"` B2 cyclicB `json:",inline"` } cyclicB struct { F int A *cyclicA `json:",inline"` } ) func (p *allMethods) MarshalNextJSON(mo MarshalOptions, enc *Encoder) error { if got, want := "MarshalNextJSON", p.method; got != want { return fmt.Errorf("called wrong method: got %v, want %v", got, want) } return enc.WriteValue(p.value) } func (p *allMethods) MarshalJSON() ([]byte, error) { if got, want := "MarshalJSON", p.method; got != want { return nil, fmt.Errorf("called wrong method: got %v, want %v", got, want) } return p.value, nil } func (p *allMethods) MarshalText() ([]byte, error) { if got, want := "MarshalText", p.method; got != want { return nil, fmt.Errorf("called wrong method: got %v, want %v", got, want) } return p.value, nil } func (p *allMethods) UnmarshalNextJSON(uo UnmarshalOptions, dec *Decoder) error { p.method = "UnmarshalNextJSON" val, err := dec.ReadValue() p.value = val return err } func (p *allMethods) UnmarshalJSON(val []byte) error { p.method = "UnmarshalJSON" p.value = val return nil } func (p *allMethods) UnmarshalText(val []byte) error { p.method = "UnmarshalText" p.value = val return nil } func (s structMethodJSONv2) MarshalNextJSON(mo MarshalOptions, enc *Encoder) error { return enc.WriteToken(String(s.value)) } func (s *structMethodJSONv2) UnmarshalNextJSON(uo UnmarshalOptions, dec *Decoder) error { tok, err := dec.ReadToken() if err != nil { return err } if k := tok.Kind(); k != '"' { return &SemanticError{action: "unmarshal", JSONKind: k, GoType: structMethodJSONv2Type} } s.value = tok.String() return nil } func (s structMethodJSONv1) MarshalJSON() ([]byte, error) { return appendString(nil, s.value, false, nil) } func (s *structMethodJSONv1) UnmarshalJSON(b []byte) error { if k := RawValue(b).Kind(); k != '"' { return &SemanticError{action: "unmarshal", JSONKind: k, GoType: structMethodJSONv1Type} } b, _ = unescapeString(nil, b) s.value = string(b) return nil } func (s structMethodText) MarshalText() ([]byte, error) { return []byte(s.value), nil } func (s *structMethodText) UnmarshalText(b []byte) error { s.value = string(b) return nil } func (f marshalJSONv2Func) MarshalNextJSON(mo MarshalOptions, enc *Encoder) error { return f(mo, enc) } func (f marshalJSONv1Func) MarshalJSON() ([]byte, error) { return f() } func (f marshalTextFunc) MarshalText() ([]byte, error) { return f() } func (f unmarshalJSONv2Func) UnmarshalNextJSON(uo UnmarshalOptions, dec *Decoder) error { return f(uo, dec) } func (f unmarshalJSONv1Func) UnmarshalJSON(b []byte) error { return f(b) } func (f unmarshalTextFunc) UnmarshalText(b []byte) error { return f(b) } func (k nocaseString) MarshalText() ([]byte, error) { return []byte(strings.ToLower(string(k))), nil } func (k *nocaseString) UnmarshalText(b []byte) error { *k = nocaseString(strings.ToLower(string(b))) return nil } func (stringMarshalEmpty) MarshalJSON() ([]byte, error) { return []byte(`""`), nil } func (stringMarshalNonEmpty) MarshalJSON() ([]byte, error) { return []byte(`"value"`), nil } func (bytesMarshalEmpty) MarshalJSON() ([]byte, error) { return []byte(`[]`), nil } func (bytesMarshalNonEmpty) MarshalJSON() ([]byte, error) { return []byte(`["value"]`), nil } func (mapMarshalEmpty) MarshalJSON() ([]byte, error) { return []byte(`{}`), nil } func (mapMarshalNonEmpty) MarshalJSON() ([]byte, error) { return []byte(`{"key":"value"}`), nil } func (sliceMarshalEmpty) MarshalJSON() ([]byte, error) { return []byte(`[]`), nil } func (sliceMarshalNonEmpty) MarshalJSON() ([]byte, error) { return []byte(`["value"]`), nil } func (valueAlwaysZero) IsZero() bool { return true } func (valueNeverZero) IsZero() bool { return false } func (*pointerAlwaysZero) IsZero() bool { return true } func (*pointerNeverZero) IsZero() bool { return false } func (valueStringer) String() string { return "" } func (*pointerStringer) String() string { return "" } var ( namedBoolType = reflect.TypeOf((*namedBool)(nil)).Elem() intType = reflect.TypeOf((*int)(nil)).Elem() int8Type = reflect.TypeOf((*int8)(nil)).Elem() int16Type = reflect.TypeOf((*int16)(nil)).Elem() int32Type = reflect.TypeOf((*int32)(nil)).Elem() int64Type = reflect.TypeOf((*int64)(nil)).Elem() uintType = reflect.TypeOf((*uint)(nil)).Elem() uint8Type = reflect.TypeOf((*uint8)(nil)).Elem() uint16Type = reflect.TypeOf((*uint16)(nil)).Elem() uint32Type = reflect.TypeOf((*uint32)(nil)).Elem() uint64Type = reflect.TypeOf((*uint64)(nil)).Elem() sliceStringType = reflect.TypeOf((*[]string)(nil)).Elem() array1StringType = reflect.TypeOf((*[1]string)(nil)).Elem() array0ByteType = reflect.TypeOf((*[0]byte)(nil)).Elem() array1ByteType = reflect.TypeOf((*[1]byte)(nil)).Elem() array2ByteType = reflect.TypeOf((*[2]byte)(nil)).Elem() array3ByteType = reflect.TypeOf((*[3]byte)(nil)).Elem() array4ByteType = reflect.TypeOf((*[4]byte)(nil)).Elem() mapStringStringType = reflect.TypeOf((*map[string]string)(nil)).Elem() structAllType = reflect.TypeOf((*structAll)(nil)).Elem() structConflictingType = reflect.TypeOf((*structConflicting)(nil)).Elem() structNoneExportedType = reflect.TypeOf((*structNoneExported)(nil)).Elem() structMalformedTagType = reflect.TypeOf((*structMalformedTag)(nil)).Elem() structUnexportedTagType = reflect.TypeOf((*structUnexportedTag)(nil)).Elem() structUnexportedEmbeddedType = reflect.TypeOf((*structUnexportedEmbedded)(nil)).Elem() structUnknownRawValueType = reflect.TypeOf((*structUnknownRawValue)(nil)).Elem() allMethodsType = reflect.TypeOf((*allMethods)(nil)).Elem() allMethodsExceptJSONv2Type = reflect.TypeOf((*allMethodsExceptJSONv2)(nil)).Elem() allMethodsExceptJSONv1Type = reflect.TypeOf((*allMethodsExceptJSONv1)(nil)).Elem() allMethodsExceptTextType = reflect.TypeOf((*allMethodsExceptText)(nil)).Elem() onlyMethodJSONv2Type = reflect.TypeOf((*onlyMethodJSONv2)(nil)).Elem() onlyMethodJSONv1Type = reflect.TypeOf((*onlyMethodJSONv1)(nil)).Elem() onlyMethodTextType = reflect.TypeOf((*onlyMethodText)(nil)).Elem() structMethodJSONv2Type = reflect.TypeOf((*structMethodJSONv2)(nil)).Elem() structMethodJSONv1Type = reflect.TypeOf((*structMethodJSONv1)(nil)).Elem() structMethodTextType = reflect.TypeOf((*structMethodText)(nil)).Elem() marshalJSONv2FuncType = reflect.TypeOf((*marshalJSONv2Func)(nil)).Elem() marshalJSONv1FuncType = reflect.TypeOf((*marshalJSONv1Func)(nil)).Elem() marshalTextFuncType = reflect.TypeOf((*marshalTextFunc)(nil)).Elem() unmarshalJSONv2FuncType = reflect.TypeOf((*unmarshalJSONv2Func)(nil)).Elem() unmarshalJSONv1FuncType = reflect.TypeOf((*unmarshalJSONv1Func)(nil)).Elem() unmarshalTextFuncType = reflect.TypeOf((*unmarshalTextFunc)(nil)).Elem() nocaseStringType = reflect.TypeOf((*nocaseString)(nil)).Elem() ioReaderType = reflect.TypeOf((*io.Reader)(nil)).Elem() fmtStringerType = reflect.TypeOf((*fmt.Stringer)(nil)).Elem() chanStringType = reflect.TypeOf((*chan string)(nil)).Elem() ) func addr[T any](v T) *T { return &v } func mustParseTime(layout, value string) time.Time { t, err := time.Parse(layout, value) if err != nil { panic(err) } return t } func TestMarshal(t *testing.T) { tests := []struct { name testName mopts MarshalOptions eopts EncodeOptions in any want string wantErr error canonicalize bool // canonicalize the output before comparing? useWriter bool // call MarshalFull instead of Marshal }{{ name: name("Nil"), in: nil, want: `null`, }, { name: name("Bools"), in: []bool{false, true}, want: `[false,true]`, }, { name: name("Bools/Named"), in: []namedBool{false, true}, want: `[false,true]`, }, { name: name("Bools/NotStringified"), mopts: MarshalOptions{StringifyNumbers: true}, in: []bool{false, true}, want: `[false,true]`, }, { name: name("Bools/IgnoreInvalidFormat"), mopts: MarshalOptions{formatDepth: 1000, format: "invalid"}, in: true, want: `true`, }, { name: name("Strings"), in: []string{"", "hello", "世界"}, want: `["","hello","世界"]`, }, { name: name("Strings/Named"), in: []namedString{"", "hello", "世界"}, want: `["","hello","世界"]`, }, { name: name("Strings/IgnoreInvalidFormat"), mopts: MarshalOptions{formatDepth: 1000, format: "invalid"}, in: "string", want: `"string"`, }, { name: name("Bytes"), in: [][]byte{nil, {}, {1}, {1, 2}, {1, 2, 3}}, want: `["","","AQ==","AQI=","AQID"]`, }, { name: name("Bytes/Large"), in: []byte("the quick brown fox jumped over the lazy dog and ate the homework that I spent so much time on."), want: `"dGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cgYW5kIGF0ZSB0aGUgaG9tZXdvcmsgdGhhdCBJIHNwZW50IHNvIG11Y2ggdGltZSBvbi4="`, }, { name: name("Bytes/Named"), in: []namedBytes{nil, {}, {1}, {1, 2}, {1, 2, 3}}, want: `["","","AQ==","AQI=","AQID"]`, }, { name: name("Bytes/NotStringified"), mopts: MarshalOptions{StringifyNumbers: true}, in: [][]byte{nil, {}, {1}, {1, 2}, {1, 2, 3}}, want: `["","","AQ==","AQI=","AQID"]`, }, { // NOTE: []namedByte is not assignable to []byte, // so the following should be treated as a slice of uints. name: name("Bytes/Invariant"), in: [][]namedByte{nil, {}, {1}, {1, 2}, {1, 2, 3}}, want: `[[],[],[1],[1,2],[1,2,3]]`, }, { // NOTE: This differs in behavior from v1, // but keeps the representation of slices and arrays more consistent. name: name("Bytes/ByteArray"), in: [5]byte{'h', 'e', 'l', 'l', 'o'}, want: `"aGVsbG8="`, }, { // NOTE: []namedByte is not assignable to []byte, // so the following should be treated as an array of uints. name: name("Bytes/NamedByteArray"), in: [5]namedByte{'h', 'e', 'l', 'l', 'o'}, want: `[104,101,108,108,111]`, }, { name: name("Bytes/IgnoreInvalidFormat"), mopts: MarshalOptions{formatDepth: 1000, format: "invalid"}, in: []byte("hello"), want: `"aGVsbG8="`, }, { name: name("Ints"), in: []any{ int(0), int8(math.MinInt8), int16(math.MinInt16), int32(math.MinInt32), int64(math.MinInt64), namedInt64(-6464), }, want: `[0,-128,-32768,-2147483648,-9223372036854775808,-6464]`, }, { name: name("Ints/Stringified"), mopts: MarshalOptions{StringifyNumbers: true}, in: []any{ int(0), int8(math.MinInt8), int16(math.MinInt16), int32(math.MinInt32), int64(math.MinInt64), namedInt64(-6464), }, want: `["0","-128","-32768","-2147483648","-9223372036854775808","-6464"]`, }, { name: name("Ints/IgnoreInvalidFormat"), mopts: MarshalOptions{formatDepth: 1000, format: "invalid"}, in: int(0), want: `0`, }, { name: name("Uints"), in: []any{ uint(0), uint8(math.MaxUint8), uint16(math.MaxUint16), uint32(math.MaxUint32), uint64(math.MaxUint64), namedUint64(6464), }, want: `[0,255,65535,4294967295,18446744073709551615,6464]`, }, { name: name("Uints/Stringified"), mopts: MarshalOptions{StringifyNumbers: true}, in: []any{ uint(0), uint8(math.MaxUint8), uint16(math.MaxUint16), uint32(math.MaxUint32), uint64(math.MaxUint64), namedUint64(6464), }, want: `["0","255","65535","4294967295","18446744073709551615","6464"]`, }, { name: name("Uints/IgnoreInvalidFormat"), mopts: MarshalOptions{formatDepth: 1000, format: "invalid"}, in: uint(0), want: `0`, }, { name: name("Floats"), in: []any{ float32(math.MaxFloat32), float64(math.MaxFloat64), namedFloat64(64.64), }, want: `[3.4028235e+38,1.7976931348623157e+308,64.64]`, }, { name: name("Floats/Stringified"), mopts: MarshalOptions{StringifyNumbers: true}, in: []any{ float32(math.MaxFloat32), float64(math.MaxFloat64), namedFloat64(64.64), }, want: `["3.4028235e+38","1.7976931348623157e+308","64.64"]`, }, { name: name("Floats/Invalid/NaN"), mopts: MarshalOptions{StringifyNumbers: true}, in: math.NaN(), wantErr: &SemanticError{action: "marshal", GoType: float64Type, Err: fmt.Errorf("invalid value: %v", math.NaN())}, }, { name: name("Floats/Invalid/PositiveInfinity"), in: math.Inf(+1), wantErr: &SemanticError{action: "marshal", GoType: float64Type, Err: fmt.Errorf("invalid value: %v", math.Inf(+1))}, }, { name: name("Floats/Invalid/NegativeInfinity"), in: math.Inf(-1), wantErr: &SemanticError{action: "marshal", GoType: float64Type, Err: fmt.Errorf("invalid value: %v", math.Inf(-1))}, }, { name: name("Floats/IgnoreInvalidFormat"), mopts: MarshalOptions{formatDepth: 1000, format: "invalid"}, in: float64(0), want: `0`, }, { name: name("Maps/InvalidKey/Bool"), in: map[bool]string{false: "value"}, want: `{`, wantErr: errMissingName, }, { name: name("Maps/InvalidKey/NamedBool"), in: map[namedBool]string{false: "value"}, want: `{`, wantErr: errMissingName, }, { name: name("Maps/InvalidKey/Array"), in: map[[1]string]string{{"key"}: "value"}, want: `{`, wantErr: errMissingName, }, { name: name("Maps/InvalidKey/Channel"), in: map[chan string]string{make(chan string): "value"}, want: `{`, wantErr: &SemanticError{action: "marshal", GoType: chanStringType}, }, { name: name("Maps/ValidKey/Int"), in: map[int64]string{math.MinInt64: "MinInt64", 0: "Zero", math.MaxInt64: "MaxInt64"}, canonicalize: true, want: `{"-9223372036854775808":"MinInt64","0":"Zero","9223372036854775807":"MaxInt64"}`, }, { name: name("Maps/ValidKey/NamedInt"), in: map[namedInt64]string{math.MinInt64: "MinInt64", 0: "Zero", math.MaxInt64: "MaxInt64"}, canonicalize: true, want: `{"-9223372036854775808":"MinInt64","0":"Zero","9223372036854775807":"MaxInt64"}`, }, { name: name("Maps/ValidKey/Uint"), in: map[uint64]string{0: "Zero", math.MaxUint64: "MaxUint64"}, canonicalize: true, want: `{"0":"Zero","18446744073709551615":"MaxUint64"}`, }, { name: name("Maps/ValidKey/NamedUint"), in: map[namedUint64]string{0: "Zero", math.MaxUint64: "MaxUint64"}, canonicalize: true, want: `{"0":"Zero","18446744073709551615":"MaxUint64"}`, }, { name: name("Maps/ValidKey/Float"), in: map[float64]string{3.14159: "value"}, want: `{"3.14159":"value"}`, }, { name: name("Maps/InvalidKey/Float/NaN"), in: map[float64]string{math.NaN(): "NaN", math.NaN(): "NaN"}, want: `{`, wantErr: &SemanticError{action: "marshal", GoType: float64Type, Err: errors.New("invalid value: NaN")}, }, { name: name("Maps/ValidKey/Interface"), in: map[any]any{ "key": "key", namedInt64(-64): int32(-32), namedUint64(+64): uint32(+32), namedFloat64(64.64): float32(32.32), }, canonicalize: true, want: `{"-64":-32,"64":32,"64.64":32.32,"key":"key"}`, }, { name: name("Maps/DuplicateName/String/AllowInvalidUTF8+AllowDuplicateNames"), eopts: EncodeOptions{AllowInvalidUTF8: true, AllowDuplicateNames: true}, in: map[string]string{"\x80": "", "\x81": ""}, want: `{"�":"","�":""}`, }, { name: name("Maps/DuplicateName/String/AllowInvalidUTF8"), eopts: EncodeOptions{AllowInvalidUTF8: true}, in: map[string]string{"\x80": "", "\x81": ""}, want: `{"�":""`, wantErr: &SyntacticError{str: `duplicate name "�" in object`}, }, { name: name("Maps/DuplicateName/NoCaseString/AllowDuplicateNames"), eopts: EncodeOptions{AllowDuplicateNames: true}, in: map[nocaseString]string{"hello": "", "HELLO": ""}, want: `{"hello":"","hello":""}`, }, { name: name("Maps/DuplicateName/NoCaseString"), in: map[nocaseString]string{"hello": "", "HELLO": ""}, want: `{"hello":""`, wantErr: &SemanticError{action: "marshal", JSONKind: '"', GoType: reflect.TypeOf(nocaseString("")), Err: &SyntacticError{str: `duplicate name "hello" in object`}}, }, { name: name("Maps/InvalidValue/Channel"), in: map[string]chan string{ "key": nil, }, want: `{"key"`, wantErr: &SemanticError{action: "marshal", GoType: chanStringType}, }, { name: name("Maps/String/Deterministic"), mopts: MarshalOptions{Deterministic: true}, in: map[string]int{"a": 0, "b": 1, "c": 2}, want: `{"a":0,"b":1,"c":2}`, }, { name: name("Maps/String/Deterministic+AllowInvalidUTF8+RejectDuplicateNames"), mopts: MarshalOptions{Deterministic: true}, eopts: EncodeOptions{AllowInvalidUTF8: true, AllowDuplicateNames: false}, in: map[string]int{"\xff": 0, "\xfe": 1}, want: `{"�":1`, wantErr: &SyntacticError{str: `duplicate name "�" in object`}, }, { name: name("Maps/String/Deterministic+AllowInvalidUTF8+AllowDuplicateNames"), mopts: MarshalOptions{Deterministic: true}, eopts: EncodeOptions{AllowInvalidUTF8: true, AllowDuplicateNames: true}, in: map[string]int{"\xff": 0, "\xfe": 1}, want: `{"�":1,"�":0}`, }, { name: name("Maps/String/Deterministic+MarshalFuncs"), mopts: MarshalOptions{ Deterministic: true, Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v string) error { if p := enc.StackPointer(); p != "/X" { return fmt.Errorf("invalid stack pointer: got %s, want /X", p) } switch v { case "a": return enc.WriteToken(String("b")) case "b": return enc.WriteToken(String("a")) default: return fmt.Errorf("invalid value: %q", v) } }), }, in: map[namedString]map[string]int{"X": {"a": -1, "b": 1}}, want: `{"X":{"a":1,"b":-1}}`, }, { name: name("Maps/String/Deterministic+MarshalFuncs+RejectDuplicateNames"), mopts: MarshalOptions{ Deterministic: true, Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v string) error { if p := enc.StackPointer(); p != "/X" { return fmt.Errorf("invalid stack pointer: got %s, want /X", p) } switch v { case "a", "b": return enc.WriteToken(String("x")) default: return fmt.Errorf("invalid value: %q", v) } }), }, eopts: EncodeOptions{AllowDuplicateNames: false}, in: map[namedString]map[string]int{"X": {"a": 1, "b": 1}}, want: `{"X":{"x":1`, wantErr: &SyntacticError{str: `duplicate name "x" in object`}, }, { name: name("Maps/String/Deterministic+MarshalFuncs+AllowDuplicateNames"), mopts: MarshalOptions{ Deterministic: true, Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v string) error { if p := enc.StackPointer(); p != "/0" { return fmt.Errorf("invalid stack pointer: got %s, want /0", p) } switch v { case "a", "b": return enc.WriteToken(String("x")) default: return fmt.Errorf("invalid value: %q", v) } }), }, eopts: EncodeOptions{AllowDuplicateNames: true}, in: map[namedString]map[string]int{"X": {"a": 1, "b": 1}}, // NOTE: Since the names are identical, the exact values may be // non-deterministic since sort cannot distinguish between members. want: `{"X":{"x":1,"x":1}}`, }, { name: name("Maps/RecursiveMap"), in: recursiveMap{ "fizz": { "foo": {}, "bar": nil, }, "buzz": nil, }, canonicalize: true, want: `{"buzz":{},"fizz":{"bar":{},"foo":{}}}`, }, { name: name("Maps/CyclicMap"), in: func() recursiveMap { m := recursiveMap{"k": nil} m["k"] = m return m }(), want: strings.Repeat(`{"k":`, startDetectingCyclesAfter) + `{"k"`, wantErr: &SemanticError{action: "marshal", GoType: reflect.TypeOf(recursiveMap{}), Err: errors.New("encountered a cycle")}, }, { name: name("Maps/IgnoreInvalidFormat"), mopts: MarshalOptions{formatDepth: 1000, format: "invalid"}, in: map[string]string{}, want: `{}`, }, { name: name("Structs/Empty"), in: structEmpty{}, want: `{}`, }, { name: name("Structs/UnexportedIgnored"), in: structUnexportedIgnored{ignored: "ignored"}, want: `{}`, }, { name: name("Structs/IgnoredUnexportedEmbedded"), in: structIgnoredUnexportedEmbedded{namedString: "ignored"}, want: `{}`, }, { name: name("Structs/WeirdNames"), in: structWeirdNames{Empty: "empty", Comma: "comma", Quote: "quote"}, want: `{"":"empty",",":"comma","\"":"quote"}`, }, { name: name("Structs/EscapedNames"), eopts: EncodeOptions{EscapeRune: func(rune) bool { return true }}, in: structWeirdNames{Empty: "empty", Comma: "comma", Quote: "quote"}, want: `{"":"\u0065\u006d\u0070\u0074\u0079","\u002c":"\u0063\u006f\u006d\u006d\u0061","\u0022":"\u0071\u0075\u006f\u0074\u0065"}`, }, { name: name("Structs/NoCase"), in: structNoCase{AaA: "AaA", AAa: "AAa", AAA: "AAA"}, want: `{"AaA":"AaA","AAa":"AAa","AAA":"AAA"}`, }, { name: name("Structs/Normal"), eopts: EncodeOptions{Indent: "\t"}, in: structAll{ Bool: true, String: "hello", Bytes: []byte{1, 2, 3}, Int: -64, Uint: +64, Float: 3.14159, Map: map[string]string{"key": "value"}, StructScalars: structScalars{ Bool: true, String: "hello", Bytes: []byte{1, 2, 3}, Int: -64, Uint: +64, Float: 3.14159, }, StructMaps: structMaps{ MapBool: map[string]bool{"": true}, MapString: map[string]string{"": "hello"}, MapBytes: map[string][]byte{"": {1, 2, 3}}, MapInt: map[string]int64{"": -64}, MapUint: map[string]uint64{"": +64}, MapFloat: map[string]float64{"": 3.14159}, }, StructSlices: structSlices{ SliceBool: []bool{true}, SliceString: []string{"hello"}, SliceBytes: [][]byte{{1, 2, 3}}, SliceInt: []int64{-64}, SliceUint: []uint64{+64}, SliceFloat: []float64{3.14159}, }, Slice: []string{"fizz", "buzz"}, Array: [1]string{"goodbye"}, Pointer: new(structAll), Interface: (*structAll)(nil), }, want: `{ "Bool": true, "String": "hello", "Bytes": "AQID", "Int": -64, "Uint": 64, "Float": 3.14159, "Map": { "key": "value" }, "StructScalars": { "Bool": true, "String": "hello", "Bytes": "AQID", "Int": -64, "Uint": 64, "Float": 3.14159 }, "StructMaps": { "MapBool": { "": true }, "MapString": { "": "hello" }, "MapBytes": { "": "AQID" }, "MapInt": { "": -64 }, "MapUint": { "": 64 }, "MapFloat": { "": 3.14159 } }, "StructSlices": { "SliceBool": [ true ], "SliceString": [ "hello" ], "SliceBytes": [ "AQID" ], "SliceInt": [ -64 ], "SliceUint": [ 64 ], "SliceFloat": [ 3.14159 ] }, "Slice": [ "fizz", "buzz" ], "Array": [ "goodbye" ], "Pointer": { "Bool": false, "String": "", "Bytes": "", "Int": 0, "Uint": 0, "Float": 0, "Map": {}, "StructScalars": { "Bool": false, "String": "", "Bytes": "", "Int": 0, "Uint": 0, "Float": 0 }, "StructMaps": { "MapBool": {}, "MapString": {}, "MapBytes": {}, "MapInt": {}, "MapUint": {}, "MapFloat": {} }, "StructSlices": { "SliceBool": [], "SliceString": [], "SliceBytes": [], "SliceInt": [], "SliceUint": [], "SliceFloat": [] }, "Slice": [], "Array": [ "" ], "Pointer": null, "Interface": null }, "Interface": null }`, }, { name: name("Structs/Stringified"), eopts: EncodeOptions{Indent: "\t"}, in: structStringifiedAll{ Bool: true, String: "hello", Bytes: []byte{1, 2, 3}, Int: -64, // should be stringified Uint: +64, // should be stringified Float: 3.14159, // should be stringified Map: map[string]string{"key": "value"}, StructScalars: structScalars{ Bool: true, String: "hello", Bytes: []byte{1, 2, 3}, Int: -64, // should be stringified Uint: +64, // should be stringified Float: 3.14159, // should be stringified }, StructMaps: structMaps{ MapBool: map[string]bool{"": true}, MapString: map[string]string{"": "hello"}, MapBytes: map[string][]byte{"": {1, 2, 3}}, MapInt: map[string]int64{"": -64}, // should be stringified MapUint: map[string]uint64{"": +64}, // should be stringified MapFloat: map[string]float64{"": 3.14159}, // should be stringified }, StructSlices: structSlices{ SliceBool: []bool{true}, SliceString: []string{"hello"}, SliceBytes: [][]byte{{1, 2, 3}}, SliceInt: []int64{-64}, // should be stringified SliceUint: []uint64{+64}, // should be stringified SliceFloat: []float64{3.14159}, // should be stringified }, Slice: []string{"fizz", "buzz"}, Array: [1]string{"goodbye"}, Pointer: new(structStringifiedAll), // should be stringified Interface: (*structStringifiedAll)(nil), }, want: `{ "Bool": true, "String": "hello", "Bytes": "AQID", "Int": "-64", "Uint": "64", "Float": "3.14159", "Map": { "key": "value" }, "StructScalars": { "Bool": true, "String": "hello", "Bytes": "AQID", "Int": "-64", "Uint": "64", "Float": "3.14159" }, "StructMaps": { "MapBool": { "": true }, "MapString": { "": "hello" }, "MapBytes": { "": "AQID" }, "MapInt": { "": "-64" }, "MapUint": { "": "64" }, "MapFloat": { "": "3.14159" } }, "StructSlices": { "SliceBool": [ true ], "SliceString": [ "hello" ], "SliceBytes": [ "AQID" ], "SliceInt": [ "-64" ], "SliceUint": [ "64" ], "SliceFloat": [ "3.14159" ] }, "Slice": [ "fizz", "buzz" ], "Array": [ "goodbye" ], "Pointer": { "Bool": false, "String": "", "Bytes": "", "Int": "0", "Uint": "0", "Float": "0", "Map": {}, "StructScalars": { "Bool": false, "String": "", "Bytes": "", "Int": "0", "Uint": "0", "Float": "0" }, "StructMaps": { "MapBool": {}, "MapString": {}, "MapBytes": {}, "MapInt": {}, "MapUint": {}, "MapFloat": {} }, "StructSlices": { "SliceBool": [], "SliceString": [], "SliceBytes": [], "SliceInt": [], "SliceUint": [], "SliceFloat": [] }, "Slice": [], "Array": [ "" ], "Pointer": null, "Interface": null }, "Interface": null }`, }, { name: name("Structs/Stringified/Escaped"), eopts: EncodeOptions{Indent: "\t", EscapeRune: func(rune) bool { return true }}, in: structStringifiedAll{ Bool: true, String: "hello", Bytes: []byte{1, 2, 3}, Int: -64, // should be stringified and escaped Uint: +64, // should be stringified and escaped Float: 3.14159, // should be stringified and escaped }, want: `{ "\u0042\u006f\u006f\u006c": true, "\u0053\u0074\u0072\u0069\u006e\u0067": "\u0068\u0065\u006c\u006c\u006f", "\u0042\u0079\u0074\u0065\u0073": "\u0041\u0051\u0049\u0044", "\u0049\u006e\u0074": "\u002d\u0036\u0034", "\u0055\u0069\u006e\u0074": "\u0036\u0034", "\u0046\u006c\u006f\u0061\u0074": "\u0033\u002e\u0031\u0034\u0031\u0035\u0039", "\u004d\u0061\u0070": {}, "\u0053\u0074\u0072\u0075\u0063\u0074\u0053\u0063\u0061\u006c\u0061\u0072\u0073": { "\u0042\u006f\u006f\u006c": false, "\u0053\u0074\u0072\u0069\u006e\u0067": "", "\u0042\u0079\u0074\u0065\u0073": "", "\u0049\u006e\u0074": "\u0030", "\u0055\u0069\u006e\u0074": "\u0030", "\u0046\u006c\u006f\u0061\u0074": "\u0030" }, "\u0053\u0074\u0072\u0075\u0063\u0074\u004d\u0061\u0070\u0073": { "\u004d\u0061\u0070\u0042\u006f\u006f\u006c": {}, "\u004d\u0061\u0070\u0053\u0074\u0072\u0069\u006e\u0067": {}, "\u004d\u0061\u0070\u0042\u0079\u0074\u0065\u0073": {}, "\u004d\u0061\u0070\u0049\u006e\u0074": {}, "\u004d\u0061\u0070\u0055\u0069\u006e\u0074": {}, "\u004d\u0061\u0070\u0046\u006c\u006f\u0061\u0074": {} }, "\u0053\u0074\u0072\u0075\u0063\u0074\u0053\u006c\u0069\u0063\u0065\u0073": { "\u0053\u006c\u0069\u0063\u0065\u0042\u006f\u006f\u006c": [], "\u0053\u006c\u0069\u0063\u0065\u0053\u0074\u0072\u0069\u006e\u0067": [], "\u0053\u006c\u0069\u0063\u0065\u0042\u0079\u0074\u0065\u0073": [], "\u0053\u006c\u0069\u0063\u0065\u0049\u006e\u0074": [], "\u0053\u006c\u0069\u0063\u0065\u0055\u0069\u006e\u0074": [], "\u0053\u006c\u0069\u0063\u0065\u0046\u006c\u006f\u0061\u0074": [] }, "\u0053\u006c\u0069\u0063\u0065": [], "\u0041\u0072\u0072\u0061\u0079": [ "" ], "\u0050\u006f\u0069\u006e\u0074\u0065\u0072": null, "\u0049\u006e\u0074\u0065\u0072\u0066\u0061\u0063\u0065": null }`, }, { name: name("Structs/OmitZero/Zero"), in: structOmitZeroAll{}, want: `{}`, }, { name: name("Structs/OmitZero/NonZero"), eopts: EncodeOptions{Indent: "\t"}, in: structOmitZeroAll{ Bool: true, // not omitted since true is non-zero String: " ", // not omitted since non-empty string is non-zero Bytes: []byte{}, // not omitted since allocated slice is non-zero Int: 1, // not omitted since 1 is non-zero Uint: 1, // not omitted since 1 is non-zero Float: math.Copysign(0, -1), // not omitted since -0 is technically non-zero Map: map[string]string{}, // not omitted since allocated map is non-zero StructScalars: structScalars{unexported: true}, // not omitted since unexported is non-zero StructSlices: structSlices{Ignored: true}, // not omitted since Ignored is non-zero StructMaps: structMaps{MapBool: map[string]bool{}}, // not omitted since MapBool is non-zero Slice: []string{}, // not omitted since allocated slice is non-zero Array: [1]string{" "}, // not omitted since single array element is non-zero Pointer: new(structOmitZeroAll), // not omitted since pointer is non-zero (even if all fields of the struct value are zero) Interface: (*structOmitZeroAll)(nil), // not omitted since interface value is non-zero (even if interface value is a nil pointer) }, want: `{ "Bool": true, "String": " ", "Bytes": "", "Int": 1, "Uint": 1, "Float": -0, "Map": {}, "StructScalars": { "Bool": false, "String": "", "Bytes": "", "Int": 0, "Uint": 0, "Float": 0 }, "StructMaps": { "MapBool": {}, "MapString": {}, "MapBytes": {}, "MapInt": {}, "MapUint": {}, "MapFloat": {} }, "StructSlices": { "SliceBool": [], "SliceString": [], "SliceBytes": [], "SliceInt": [], "SliceUint": [], "SliceFloat": [] }, "Slice": [], "Array": [ " " ], "Pointer": {}, "Interface": null }`, }, { name: name("Structs/OmitZeroMethod/Zero"), in: structOmitZeroMethodAll{}, want: `{"ValueNeverZero":"","PointerNeverZero":""}`, }, { name: name("Structs/OmitZeroMethod/NonZero"), eopts: EncodeOptions{Indent: "\t"}, in: structOmitZeroMethodAll{ ValueAlwaysZero: valueAlwaysZero("nonzero"), ValueNeverZero: valueNeverZero("nonzero"), PointerAlwaysZero: pointerAlwaysZero("nonzero"), PointerNeverZero: pointerNeverZero("nonzero"), PointerValueAlwaysZero: addr(valueAlwaysZero("nonzero")), PointerValueNeverZero: addr(valueNeverZero("nonzero")), PointerPointerAlwaysZero: addr(pointerAlwaysZero("nonzero")), PointerPointerNeverZero: addr(pointerNeverZero("nonzero")), PointerPointerValueAlwaysZero: addr(addr(valueAlwaysZero("nonzero"))), // marshaled since **valueAlwaysZero does not implement IsZero PointerPointerValueNeverZero: addr(addr(valueNeverZero("nonzero"))), PointerPointerPointerAlwaysZero: addr(addr(pointerAlwaysZero("nonzero"))), // marshaled since **pointerAlwaysZero does not implement IsZero PointerPointerPointerNeverZero: addr(addr(pointerNeverZero("nonzero"))), }, want: `{ "ValueNeverZero": "nonzero", "PointerNeverZero": "nonzero", "PointerValueNeverZero": "nonzero", "PointerPointerNeverZero": "nonzero", "PointerPointerValueAlwaysZero": "nonzero", "PointerPointerValueNeverZero": "nonzero", "PointerPointerPointerAlwaysZero": "nonzero", "PointerPointerPointerNeverZero": "nonzero" }`, }, { name: name("Structs/OmitZeroMethod/Interface/Zero"), eopts: EncodeOptions{Indent: "\t"}, in: structOmitZeroMethodInterfaceAll{}, want: `{}`, }, { name: name("Structs/OmitZeroMethod/Interface/PartialZero"), eopts: EncodeOptions{Indent: "\t"}, in: structOmitZeroMethodInterfaceAll{ ValueAlwaysZero: valueAlwaysZero(""), ValueNeverZero: valueNeverZero(""), PointerValueAlwaysZero: (*valueAlwaysZero)(nil), PointerValueNeverZero: (*valueNeverZero)(nil), // nil pointer, so method not called PointerPointerAlwaysZero: (*pointerAlwaysZero)(nil), PointerPointerNeverZero: (*pointerNeverZero)(nil), // nil pointer, so method not called }, want: `{ "ValueNeverZero": "" }`, }, { name: name("Structs/OmitZeroMethod/Interface/NonZero"), eopts: EncodeOptions{Indent: "\t"}, in: structOmitZeroMethodInterfaceAll{ ValueAlwaysZero: valueAlwaysZero("nonzero"), ValueNeverZero: valueNeverZero("nonzero"), PointerValueAlwaysZero: addr(valueAlwaysZero("nonzero")), PointerValueNeverZero: addr(valueNeverZero("nonzero")), PointerPointerAlwaysZero: addr(pointerAlwaysZero("nonzero")), PointerPointerNeverZero: addr(pointerNeverZero("nonzero")), }, want: `{ "ValueNeverZero": "nonzero", "PointerValueNeverZero": "nonzero", "PointerPointerNeverZero": "nonzero" }`, }, { name: name("Structs/OmitEmpty/Zero"), eopts: EncodeOptions{Indent: "\t"}, in: structOmitEmptyAll{}, want: `{ "Bool": false, "StringNonEmpty": "value", "BytesNonEmpty": [ "value" ], "Float": 0, "MapNonEmpty": { "key": "value" }, "SliceNonEmpty": [ "value" ] }`, }, { name: name("Structs/OmitEmpty/EmptyNonZero"), eopts: EncodeOptions{Indent: "\t"}, in: structOmitEmptyAll{ String: string(""), StringEmpty: stringMarshalEmpty(""), StringNonEmpty: stringMarshalNonEmpty(""), PointerString: addr(string("")), PointerStringEmpty: addr(stringMarshalEmpty("")), PointerStringNonEmpty: addr(stringMarshalNonEmpty("")), Bytes: []byte(""), BytesEmpty: bytesMarshalEmpty([]byte("")), BytesNonEmpty: bytesMarshalNonEmpty([]byte("")), PointerBytes: addr([]byte("")), PointerBytesEmpty: addr(bytesMarshalEmpty([]byte(""))), PointerBytesNonEmpty: addr(bytesMarshalNonEmpty([]byte(""))), Map: map[string]string{}, MapEmpty: mapMarshalEmpty{}, MapNonEmpty: mapMarshalNonEmpty{}, PointerMap: addr(map[string]string{}), PointerMapEmpty: addr(mapMarshalEmpty{}), PointerMapNonEmpty: addr(mapMarshalNonEmpty{}), Slice: []string{}, SliceEmpty: sliceMarshalEmpty{}, SliceNonEmpty: sliceMarshalNonEmpty{}, PointerSlice: addr([]string{}), PointerSliceEmpty: addr(sliceMarshalEmpty{}), PointerSliceNonEmpty: addr(sliceMarshalNonEmpty{}), Pointer: &structOmitZeroEmptyAll{}, Interface: []string{}, }, want: `{ "Bool": false, "StringNonEmpty": "value", "PointerStringNonEmpty": "value", "BytesNonEmpty": [ "value" ], "PointerBytesNonEmpty": [ "value" ], "Float": 0, "MapNonEmpty": { "key": "value" }, "PointerMapNonEmpty": { "key": "value" }, "SliceNonEmpty": [ "value" ], "PointerSliceNonEmpty": [ "value" ] }`, }, { name: name("Structs/OmitEmpty/NonEmpty"), eopts: EncodeOptions{Indent: "\t"}, in: structOmitEmptyAll{ Bool: true, PointerBool: addr(true), String: string("value"), StringEmpty: stringMarshalEmpty("value"), StringNonEmpty: stringMarshalNonEmpty("value"), PointerString: addr(string("value")), PointerStringEmpty: addr(stringMarshalEmpty("value")), PointerStringNonEmpty: addr(stringMarshalNonEmpty("value")), Bytes: []byte("value"), BytesEmpty: bytesMarshalEmpty([]byte("value")), BytesNonEmpty: bytesMarshalNonEmpty([]byte("value")), PointerBytes: addr([]byte("value")), PointerBytesEmpty: addr(bytesMarshalEmpty([]byte("value"))), PointerBytesNonEmpty: addr(bytesMarshalNonEmpty([]byte("value"))), Float: math.Copysign(0, -1), PointerFloat: addr(math.Copysign(0, -1)), Map: map[string]string{"": ""}, MapEmpty: mapMarshalEmpty{"key": "value"}, MapNonEmpty: mapMarshalNonEmpty{"key": "value"}, PointerMap: addr(map[string]string{"": ""}), PointerMapEmpty: addr(mapMarshalEmpty{"key": "value"}), PointerMapNonEmpty: addr(mapMarshalNonEmpty{"key": "value"}), Slice: []string{""}, SliceEmpty: sliceMarshalEmpty{"value"}, SliceNonEmpty: sliceMarshalNonEmpty{"value"}, PointerSlice: addr([]string{""}), PointerSliceEmpty: addr(sliceMarshalEmpty{"value"}), PointerSliceNonEmpty: addr(sliceMarshalNonEmpty{"value"}), Pointer: &structOmitZeroEmptyAll{Float: math.Copysign(0, -1)}, Interface: []string{""}, }, want: `{ "Bool": true, "PointerBool": true, "String": "value", "StringNonEmpty": "value", "PointerString": "value", "PointerStringNonEmpty": "value", "Bytes": "dmFsdWU=", "BytesNonEmpty": [ "value" ], "PointerBytes": "dmFsdWU=", "PointerBytesNonEmpty": [ "value" ], "Float": -0, "PointerFloat": -0, "Map": { "": "" }, "MapNonEmpty": { "key": "value" }, "PointerMap": { "": "" }, "PointerMapNonEmpty": { "key": "value" }, "Slice": [ "" ], "SliceNonEmpty": [ "value" ], "PointerSlice": [ "" ], "PointerSliceNonEmpty": [ "value" ], "Pointer": { "Float": -0 }, "Interface": [ "" ] }`, }, { name: name("Structs/OmitEmpty/NonEmptyString"), in: struct { X string `json:",omitempty"` }{`"`}, want: `{"X":"\""}`, }, { name: name("Structs/OmitZeroEmpty/Zero"), in: structOmitZeroEmptyAll{}, want: `{}`, }, { name: name("Structs/OmitZeroEmpty/Empty"), in: structOmitZeroEmptyAll{ Bytes: []byte{}, Map: map[string]string{}, Slice: []string{}, Pointer: &structOmitZeroEmptyAll{}, Interface: []string{}, }, want: `{}`, }, { name: name("Structs/OmitEmpty/PathologicalDepth"), in: func() any { type X struct { X *X `json:",omitempty"` } var make func(int) *X make = func(n int) *X { if n == 0 { return nil } return &X{make(n - 1)} } return make(100) }(), want: `{}`, useWriter: true, }, { name: name("Structs/OmitEmpty/PathologicalBreadth"), in: func() any { var fields []reflect.StructField for i := 0; i < 100; i++ { fields = append(fields, reflect.StructField{ Name: fmt.Sprintf("X%d", i), Type: reflect.TypeOf(stringMarshalEmpty("")), Tag: `json:",omitempty"`, }) } return reflect.New(reflect.StructOf(fields)).Interface() }(), want: `{}`, useWriter: true, }, { name: name("Structs/OmitEmpty/PathologicalTree"), in: func() any { type X struct { XL, XR *X `json:",omitempty"` } var make func(int) *X make = func(n int) *X { if n == 0 { return nil } return &X{make(n - 1), make(n - 1)} } return make(8) }(), want: `{}`, useWriter: true, }, { name: name("Structs/OmitZeroEmpty/NonEmpty"), in: structOmitZeroEmptyAll{ Bytes: []byte("value"), Map: map[string]string{"": ""}, Slice: []string{""}, Pointer: &structOmitZeroEmptyAll{Bool: true}, Interface: []string{""}, }, want: `{"Bytes":"dmFsdWU=","Map":{"":""},"Slice":[""],"Pointer":{"Bool":true},"Interface":[""]}`, }, { name: name("Structs/Format/Bytes"), eopts: EncodeOptions{Indent: "\t"}, in: structFormatBytes{ Base16: []byte("\x01\x23\x45\x67\x89\xab\xcd\xef"), Base32: []byte("\x00D2\x14\xc7BT\xb65Ï„e:V\xd7\xc6u\xbew\xdf"), Base32Hex: []byte("\x00D2\x14\xc7BT\xb65Ï„e:V\xd7\xc6u\xbew\xdf"), Base64: []byte("\x00\x10\x83\x10Q\x87 \x92\x8b0ÓA\x14\x93QU\x97a\x96\x9bqן\x82\x18\xa3\x92Y\xa7\xa2\x9a\xab\xb2Û¯\xc3\x1c\xb3\xd3]\xb7ãž»\xf3ß¿"), Base64URL: []byte("\x00\x10\x83\x10Q\x87 \x92\x8b0ÓA\x14\x93QU\x97a\x96\x9bqן\x82\x18\xa3\x92Y\xa7\xa2\x9a\xab\xb2Û¯\xc3\x1c\xb3\xd3]\xb7ãž»\xf3ß¿"), Array: []byte{1, 2, 3, 4}, }, want: `{ "Base16": "0123456789abcdef", "Base32": "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567", "Base32Hex": "0123456789ABCDEFGHIJKLMNOPQRSTUV", "Base64": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", "Base64URL": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", "Array": [ 1, 2, 3, 4 ] }`}, { name: name("Structs/Format/Bytes/Array"), mopts: MarshalOptions{Marshalers: MarshalFuncV1(func(in byte) ([]byte, error) { if in > 3 { return []byte("true"), nil } else { return []byte("false"), nil } })}, in: struct { Array []byte `json:",format:array"` }{ Array: []byte{1, 6, 2, 5, 3, 4}, }, want: `{"Array":[false,true,false,true,false,true]}`, }, { name: name("Structs/Format/Floats"), eopts: EncodeOptions{Indent: "\t"}, in: []structFormatFloats{ {NonFinite: math.Pi, PointerNonFinite: addr(math.Pi)}, {NonFinite: math.NaN(), PointerNonFinite: addr(math.NaN())}, {NonFinite: math.Inf(-1), PointerNonFinite: addr(math.Inf(-1))}, {NonFinite: math.Inf(+1), PointerNonFinite: addr(math.Inf(+1))}, }, want: `[ { "NonFinite": 3.141592653589793, "PointerNonFinite": 3.141592653589793 }, { "NonFinite": "NaN", "PointerNonFinite": "NaN" }, { "NonFinite": "-Infinity", "PointerNonFinite": "-Infinity" }, { "NonFinite": "Infinity", "PointerNonFinite": "Infinity" } ]`, }, { name: name("Structs/Format/Maps"), eopts: EncodeOptions{Indent: "\t"}, in: []structFormatMaps{ {EmitNull: nil, PointerEmitNull: new(map[string]string)}, {EmitNull: map[string]string{}, PointerEmitNull: addr(map[string]string{})}, {EmitNull: map[string]string{"k": "v"}, PointerEmitNull: addr(map[string]string{"k": "v"})}, }, want: `[ { "EmitNull": null, "PointerEmitNull": null }, { "EmitNull": {}, "PointerEmitNull": {} }, { "EmitNull": { "k": "v" }, "PointerEmitNull": { "k": "v" } } ]`, }, { name: name("Structs/Format/Slices"), eopts: EncodeOptions{Indent: "\t"}, in: []structFormatSlices{ {EmitNull: nil, PointerEmitNull: new([]string)}, {EmitNull: []string{}, PointerEmitNull: addr([]string{})}, {EmitNull: []string{"v"}, PointerEmitNull: addr([]string{"v"})}, }, want: `[ { "EmitNull": null, "PointerEmitNull": null }, { "EmitNull": [], "PointerEmitNull": [] }, { "EmitNull": [ "v" ], "PointerEmitNull": [ "v" ] } ]`, }, { name: name("Structs/Format/Invalid/Bool"), in: structFormatInvalid{Bool: true}, want: `{"Bool"`, wantErr: &SemanticError{action: "marshal", GoType: boolType, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/String"), in: structFormatInvalid{String: "string"}, want: `{"String"`, wantErr: &SemanticError{action: "marshal", GoType: stringType, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/Bytes"), in: structFormatInvalid{Bytes: []byte("bytes")}, want: `{"Bytes"`, wantErr: &SemanticError{action: "marshal", GoType: bytesType, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/Int"), in: structFormatInvalid{Int: 1}, want: `{"Int"`, wantErr: &SemanticError{action: "marshal", GoType: int64Type, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/Uint"), in: structFormatInvalid{Uint: 1}, want: `{"Uint"`, wantErr: &SemanticError{action: "marshal", GoType: uint64Type, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/Float"), in: structFormatInvalid{Float: 1}, want: `{"Float"`, wantErr: &SemanticError{action: "marshal", GoType: float64Type, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/Map"), in: structFormatInvalid{Map: map[string]string{}}, want: `{"Map"`, wantErr: &SemanticError{action: "marshal", GoType: mapStringStringType, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/Struct"), in: structFormatInvalid{Struct: structAll{Bool: true}}, want: `{"Struct"`, wantErr: &SemanticError{action: "marshal", GoType: structAllType, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/Slice"), in: structFormatInvalid{Slice: []string{}}, want: `{"Slice"`, wantErr: &SemanticError{action: "marshal", GoType: sliceStringType, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/Array"), in: structFormatInvalid{Array: [1]string{"string"}}, want: `{"Array"`, wantErr: &SemanticError{action: "marshal", GoType: array1StringType, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/Interface"), in: structFormatInvalid{Interface: "anything"}, want: `{"Interface"`, wantErr: &SemanticError{action: "marshal", GoType: anyType, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Inline/Zero"), in: structInlined{}, want: `{"D":""}`, }, { name: name("Structs/Inline/Alloc"), in: structInlined{ X: structInlinedL1{ X: &structInlinedL2{}, StructEmbed1: StructEmbed1{}, }, StructEmbed2: &StructEmbed2{}, }, want: `{"A":"","B":"","D":"","E":"","F":"","G":""}`, }, { name: name("Structs/Inline/NonZero"), in: structInlined{ X: structInlinedL1{ X: &structInlinedL2{A: "A1", B: "B1", C: "C1"}, StructEmbed1: StructEmbed1{C: "C2", D: "D2", E: "E2"}, }, StructEmbed2: &StructEmbed2{E: "E3", F: "F3", G: "G3"}, }, want: `{"A":"A1","B":"B1","D":"D2","E":"E3","F":"F3","G":"G3"}`, }, { name: name("Structs/Inline/DualCycle"), in: cyclicA{ B1: cyclicB{F: 1}, // B1.F ignored since it conflicts with B2.F B2: cyclicB{F: 2}, // B2.F ignored since it conflicts with B1.F }, want: `{}`, }, { name: name("Structs/InlinedFallback/RawValue/Nil"), in: structInlineRawValue{X: RawValue(nil)}, want: `{}`, }, { name: name("Structs/InlinedFallback/RawValue/Empty"), in: structInlineRawValue{X: RawValue("")}, want: `{}`, }, { name: name("Structs/InlinedFallback/RawValue/NonEmptyN1"), in: structInlineRawValue{X: RawValue(` { "fizz" : "buzz" } `)}, want: `{"fizz":"buzz"}`, }, { name: name("Structs/InlinedFallback/RawValue/NonEmptyN2"), in: structInlineRawValue{X: RawValue(` { "fizz" : "buzz" , "foo" : "bar" } `)}, want: `{"fizz":"buzz","foo":"bar"}`, }, { name: name("Structs/InlinedFallback/RawValue/NonEmptyWithOthers"), in: structInlineRawValue{ A: 1, X: RawValue(` { "fizz" : "buzz" , "foo" : "bar" } `), B: 2, }, // NOTE: Inlined fallback fields are always serialized last. want: `{"A":1,"B":2,"fizz":"buzz","foo":"bar"}`, }, { name: name("Structs/InlinedFallback/RawValue/RejectDuplicateNames"), eopts: EncodeOptions{AllowDuplicateNames: false}, in: structInlineRawValue{X: RawValue(` { "fizz" : "buzz" , "fizz" : "buzz" } `)}, want: `{"fizz":"buzz"`, wantErr: &SyntacticError{str: `duplicate name "fizz" in object`}, }, { name: name("Structs/InlinedFallback/RawValue/AllowDuplicateNames"), eopts: EncodeOptions{AllowDuplicateNames: true}, in: structInlineRawValue{X: RawValue(` { "fizz" : "buzz" , "fizz" : "buzz" } `)}, want: `{"fizz":"buzz","fizz":"buzz"}`, }, { name: name("Structs/InlinedFallback/RawValue/RejectInvalidUTF8"), eopts: EncodeOptions{AllowInvalidUTF8: false}, in: structInlineRawValue{X: RawValue(`{"` + "\xde\xad\xbe\xef" + `":"value"}`)}, want: `{`, wantErr: &SyntacticError{str: "invalid UTF-8 within string"}, }, { name: name("Structs/InlinedFallback/RawValue/AllowInvalidUTF8"), eopts: EncodeOptions{AllowInvalidUTF8: true}, in: structInlineRawValue{X: RawValue(`{"` + "\xde\xad\xbe\xef" + `":"value"}`)}, want: `{"ޭ��":"value"}`, }, { name: name("Structs/InlinedFallback/RawValue/InvalidWhitespace"), in: structInlineRawValue{X: RawValue("\n\r\t ")}, want: `{`, wantErr: &SemanticError{action: "marshal", GoType: rawValueType, Err: io.EOF}, }, { name: name("Structs/InlinedFallback/RawValue/InvalidObject"), in: structInlineRawValue{X: RawValue(` true `)}, want: `{`, wantErr: &SemanticError{action: "marshal", JSONKind: 't', GoType: rawValueType, Err: errors.New("inlined raw value must be a JSON object")}, }, { name: name("Structs/InlinedFallback/RawValue/InvalidObjectName"), in: structInlineRawValue{X: RawValue(` { true : false } `)}, want: `{`, wantErr: &SemanticError{action: "marshal", GoType: rawValueType, Err: errMissingName.withOffset(int64(len(" { ")))}, }, { name: name("Structs/InlinedFallback/RawValue/InvalidObjectEnd"), in: structInlineRawValue{X: RawValue(` { "name" : false , } `)}, want: `{"name":false`, wantErr: &SemanticError{action: "marshal", GoType: rawValueType, Err: newInvalidCharacterError([]byte(","), "before next token").withOffset(int64(len(` { "name" : false `)))}, }, { name: name("Structs/InlinedFallback/RawValue/InvalidDualObject"), in: structInlineRawValue{X: RawValue(`{}{}`)}, want: `{`, wantErr: &SemanticError{action: "marshal", GoType: rawValueType, Err: newInvalidCharacterError([]byte("{"), "after top-level value")}, }, { name: name("Structs/InlinedFallback/RawValue/Nested/Nil"), in: structInlinePointerInlineRawValue{}, want: `{}`, }, { name: name("Structs/InlinedFallback/PointerRawValue/Nil"), in: structInlinePointerRawValue{}, want: `{}`, }, { name: name("Structs/InlinedFallback/PointerRawValue/NonEmpty"), in: structInlinePointerRawValue{X: addr(RawValue(` { "fizz" : "buzz" } `))}, want: `{"fizz":"buzz"}`, }, { name: name("Structs/InlinedFallback/PointerRawValue/Nested/Nil"), in: structInlineInlinePointerRawValue{}, want: `{}`, }, { name: name("Structs/InlinedFallback/MapStringAny/Nil"), in: structInlineMapStringAny{X: nil}, want: `{}`, }, { name: name("Structs/InlinedFallback/MapStringAny/Empty"), in: structInlineMapStringAny{X: make(jsonObject)}, want: `{}`, }, { name: name("Structs/InlinedFallback/MapStringAny/NonEmptyN1"), in: structInlineMapStringAny{X: jsonObject{"fizz": nil}}, want: `{"fizz":null}`, }, { name: name("Structs/InlinedFallback/MapStringAny/NonEmptyN2"), in: structInlineMapStringAny{X: jsonObject{"fizz": time.Time{}, "buzz": math.Pi}}, want: `{"buzz":3.141592653589793,"fizz":"0001-01-01T00:00:00Z"}`, canonicalize: true, }, { name: name("Structs/InlinedFallback/MapStringAny/NonEmptyWithOthers"), in: structInlineMapStringAny{ A: 1, X: jsonObject{"fizz": nil}, B: 2, }, // NOTE: Inlined fallback fields are always serialized last. want: `{"A":1,"B":2,"fizz":null}`, }, { name: name("Structs/InlinedFallback/MapStringAny/RejectInvalidUTF8"), eopts: EncodeOptions{AllowInvalidUTF8: false}, in: structInlineMapStringAny{X: jsonObject{"\xde\xad\xbe\xef": nil}}, want: `{`, wantErr: &SyntacticError{str: "invalid UTF-8 within string"}, }, { name: name("Structs/InlinedFallback/MapStringAny/AllowInvalidUTF8"), eopts: EncodeOptions{AllowInvalidUTF8: true}, in: structInlineMapStringAny{X: jsonObject{"\xde\xad\xbe\xef": nil}}, want: `{"ޭ��":null}`, }, { name: name("Structs/InlinedFallback/MapStringAny/InvalidValue"), eopts: EncodeOptions{AllowInvalidUTF8: true}, in: structInlineMapStringAny{X: jsonObject{"name": make(chan string)}}, want: `{"name"`, wantErr: &SemanticError{action: "marshal", GoType: chanStringType}, }, { name: name("Structs/InlinedFallback/MapStringAny/Nested/Nil"), in: structInlinePointerInlineMapStringAny{}, want: `{}`, }, { name: name("Structs/InlinedFallback/MapStringAny/MarshalFuncV1"), mopts: MarshalOptions{ Marshalers: MarshalFuncV1(func(v float64) ([]byte, error) { return []byte(fmt.Sprintf(`"%v"`, v)), nil }), }, in: structInlineMapStringAny{X: jsonObject{"fizz": 3.14159}}, want: `{"fizz":"3.14159"}`, }, { name: name("Structs/InlinedFallback/PointerMapStringAny/Nil"), in: structInlinePointerMapStringAny{X: nil}, want: `{}`, }, { name: name("Structs/InlinedFallback/PointerMapStringAny/NonEmpty"), in: structInlinePointerMapStringAny{X: addr(jsonObject{"name": "value"})}, want: `{"name":"value"}`, }, { name: name("Structs/InlinedFallback/PointerMapStringAny/Nested/Nil"), in: structInlineInlinePointerMapStringAny{}, want: `{}`, }, { name: name("Structs/InlinedFallback/MapStringInt"), in: structInlineMapStringInt{ X: map[string]int{"zero": 0, "one": 1, "two": 2}, }, want: `{"one":1,"two":2,"zero":0}`, canonicalize: true, }, { name: name("Structs/InlinedFallback/MapStringInt/Deterministic"), mopts: MarshalOptions{Deterministic: true}, in: structInlineMapStringInt{ X: map[string]int{"zero": 0, "one": 1, "two": 2}, }, want: `{"one":1,"two":2,"zero":0}`, }, { name: name("Structs/InlinedFallback/MapStringInt/Deterministic+AllowInvalidUTF8+RejectDuplicateNames"), mopts: MarshalOptions{Deterministic: true}, eopts: EncodeOptions{AllowInvalidUTF8: true, AllowDuplicateNames: false}, in: structInlineMapStringInt{ X: map[string]int{"\xff": 0, "\xfe": 1}, }, want: `{"�":1`, wantErr: &SyntacticError{str: `duplicate name "�" in object`}, }, { name: name("Structs/InlinedFallback/MapStringInt/Deterministic+AllowInvalidUTF8+AllowDuplicateNames"), mopts: MarshalOptions{Deterministic: true}, eopts: EncodeOptions{AllowInvalidUTF8: true, AllowDuplicateNames: true}, in: structInlineMapStringInt{ X: map[string]int{"\xff": 0, "\xfe": 1}, }, want: `{"�":1,"�":0}`, }, { name: name("Structs/InlinedFallback/MapStringInt/StringifiedNumbers"), mopts: MarshalOptions{StringifyNumbers: true}, in: structInlineMapStringInt{ X: map[string]int{"zero": 0, "one": 1, "two": 2}, }, want: `{"one":"1","two":"2","zero":"0"}`, canonicalize: true, }, { name: name("Structs/InlinedFallback/MapStringInt/MarshalFuncV1"), mopts: MarshalOptions{ Marshalers: NewMarshalers( // Marshalers do not affect the string key of inlined maps. MarshalFuncV1(func(v string) ([]byte, error) { return []byte(fmt.Sprintf(`"%q"`, strings.ToUpper(v))), nil }), MarshalFuncV1(func(v int) ([]byte, error) { return []byte(fmt.Sprintf(`"%v"`, v)), nil }), ), }, in: structInlineMapStringInt{ X: map[string]int{"zero": 0, "one": 1, "two": 2}, }, want: `{"one":"1","two":"2","zero":"0"}`, canonicalize: true, }, { name: name("Structs/InlinedFallback/DiscardUnknownMembers"), mopts: MarshalOptions{DiscardUnknownMembers: true}, in: structInlineRawValue{ A: 1, X: RawValue(` { "fizz" : "buzz" } `), B: 2, }, // NOTE: DiscardUnknownMembers has no effect since this is "inline". want: `{"A":1,"B":2,"fizz":"buzz"}`, }, { name: name("Structs/UnknownFallback/DiscardUnknownMembers"), mopts: MarshalOptions{DiscardUnknownMembers: true}, in: structUnknownRawValue{ A: 1, X: RawValue(` { "fizz" : "buzz" } `), B: 2, }, want: `{"A":1,"B":2}`, }, { name: name("Structs/UnknownFallback"), in: structUnknownRawValue{ A: 1, X: RawValue(` { "fizz" : "buzz" } `), B: 2, }, want: `{"A":1,"B":2,"fizz":"buzz"}`, }, { name: name("Structs/DuplicateName/NoCaseInlineRawValue/Other"), in: structNoCaseInlineRawValue{ X: RawValue(`{"dupe":"","dupe":""}`), }, want: `{"dupe":""`, wantErr: &SyntacticError{str: `duplicate name "dupe" in object`}, }, { name: name("Structs/DuplicateName/NoCaseInlineRawValue/Other/AllowDuplicateNames"), eopts: EncodeOptions{AllowDuplicateNames: true}, in: structNoCaseInlineRawValue{ X: RawValue(`{"dupe": "", "dupe": ""}`), }, want: `{"dupe":"","dupe":""}`, }, { name: name("Structs/DuplicateName/NoCaseInlineRawValue/ExactDifferent"), in: structNoCaseInlineRawValue{ X: RawValue(`{"Aaa": "", "AaA": "", "AAa": "", "AAA": ""}`), }, want: `{"Aaa":"","AaA":"","AAa":"","AAA":""}`, }, { name: name("Structs/DuplicateName/NoCaseInlineRawValue/ExactConflict"), in: structNoCaseInlineRawValue{ X: RawValue(`{"Aaa": "", "Aaa": ""}`), }, want: `{"Aaa":""`, wantErr: &SyntacticError{str: `duplicate name "Aaa" in object`}, }, { name: name("Structs/DuplicateName/NoCaseInlineRawValue/ExactConflict/AllowDuplicateNames"), eopts: EncodeOptions{AllowDuplicateNames: true}, in: structNoCaseInlineRawValue{ X: RawValue(`{"Aaa": "", "Aaa": ""}`), }, want: `{"Aaa":"","Aaa":""}`, }, { name: name("Structs/DuplicateName/NoCaseInlineRawValue/NoCaseConflict"), in: structNoCaseInlineRawValue{ X: RawValue(`{"Aaa": "", "AaA": "", "aaa": ""}`), }, want: `{"Aaa":"","AaA":""`, wantErr: &SyntacticError{str: `duplicate name "aaa" in object`}, }, { name: name("Structs/DuplicateName/NoCaseInlineRawValue/NoCaseConflict/AllowDuplicateNames"), eopts: EncodeOptions{AllowDuplicateNames: true}, in: structNoCaseInlineRawValue{ X: RawValue(`{"Aaa": "", "AaA": "", "aaa": ""}`), }, want: `{"Aaa":"","AaA":"","aaa":""}`, }, { name: name("Structs/DuplicateName/NoCaseInlineRawValue/ExactDifferentWithField"), in: structNoCaseInlineRawValue{ AAA: "x", AaA: "x", X: RawValue(`{"Aaa": ""}`), }, want: `{"AAA":"x","AaA":"x","Aaa":""}`, }, { name: name("Structs/DuplicateName/NoCaseInlineRawValue/ExactConflictWithField"), in: structNoCaseInlineRawValue{ AAA: "x", AaA: "x", X: RawValue(`{"AAA": ""}`), }, want: `{"AAA":"x","AaA":"x"`, wantErr: &SyntacticError{str: `duplicate name "AAA" in object`}, }, { name: name("Structs/DuplicateName/NoCaseInlineRawValue/NoCaseConflictWithField"), in: structNoCaseInlineRawValue{ AAA: "x", AaA: "x", X: RawValue(`{"aaa": ""}`), }, want: `{"AAA":"x","AaA":"x"`, wantErr: &SyntacticError{str: `duplicate name "aaa" in object`}, }, { name: name("Structs/DuplicateName/NoCaseInlineMapStringAny/ExactDifferent"), in: structNoCaseInlineMapStringAny{ X: jsonObject{"Aaa": "", "AaA": "", "AAa": "", "AAA": ""}, }, want: `{"AAA":"","AAa":"","AaA":"","Aaa":""}`, canonicalize: true, }, { name: name("Structs/DuplicateName/NoCaseInlineMapStringAny/ExactDifferentWithField"), in: structNoCaseInlineMapStringAny{ AAA: "x", AaA: "x", X: jsonObject{"Aaa": ""}, }, want: `{"AAA":"x","AaA":"x","Aaa":""}`, }, { name: name("Structs/DuplicateName/NoCaseInlineMapStringAny/ExactConflictWithField"), in: structNoCaseInlineMapStringAny{ AAA: "x", AaA: "x", X: jsonObject{"AAA": ""}, }, want: `{"AAA":"x","AaA":"x"`, wantErr: &SyntacticError{str: `duplicate name "AAA" in object`}, }, { name: name("Structs/DuplicateName/NoCaseInlineMapStringAny/NoCaseConflictWithField"), in: structNoCaseInlineMapStringAny{ AAA: "x", AaA: "x", X: jsonObject{"aaa": ""}, }, want: `{"AAA":"x","AaA":"x"`, wantErr: &SyntacticError{str: `duplicate name "aaa" in object`}, }, { name: name("Structs/Invalid/Conflicting"), in: structConflicting{}, want: ``, wantErr: &SemanticError{action: "marshal", GoType: structConflictingType, Err: errors.New("Go struct fields A and B conflict over JSON object name \"conflict\"")}, }, { name: name("Structs/Invalid/NoneExported"), in: structNoneExported{}, want: ``, wantErr: &SemanticError{action: "marshal", GoType: structNoneExportedType, Err: errors.New("Go struct has no exported fields")}, }, { name: name("Structs/Invalid/MalformedTag"), in: structMalformedTag{}, want: ``, wantErr: &SemanticError{action: "marshal", GoType: structMalformedTagType, Err: errors.New("Go struct field Malformed has malformed `json` tag: invalid character '\"' at start of option (expecting Unicode letter or single quote)")}, }, { name: name("Structs/Invalid/UnexportedTag"), in: structUnexportedTag{}, want: ``, wantErr: &SemanticError{action: "marshal", GoType: structUnexportedTagType, Err: errors.New("unexported Go struct field unexported cannot have non-ignored `json:\"name\"` tag")}, }, { name: name("Structs/Invalid/UnexportedEmbedded"), in: structUnexportedEmbedded{}, want: ``, wantErr: &SemanticError{action: "marshal", GoType: structUnexportedEmbeddedType, Err: errors.New("embedded Go struct field namedString of an unexported type must be explicitly ignored with a `json:\"-\"` tag")}, }, { name: name("Structs/IgnoreInvalidFormat"), mopts: MarshalOptions{formatDepth: 1000, format: "invalid"}, in: struct{}{}, want: `{}`, }, { name: name("Slices/Interface"), in: []any{ false, true, "hello", []byte("world"), int32(-32), namedInt64(-64), uint32(+32), namedUint64(+64), float32(32.32), namedFloat64(64.64), }, want: `[false,true,"hello","d29ybGQ=",-32,-64,32,64,32.32,64.64]`, }, { name: name("Slices/Invalid/Channel"), in: [](chan string){nil}, want: `[`, wantErr: &SemanticError{action: "marshal", GoType: chanStringType}, }, { name: name("Slices/RecursiveSlice"), in: recursiveSlice{ nil, {}, {nil}, {nil, {}}, }, want: `[[],[],[[]],[[],[]]]`, }, { name: name("Slices/CyclicSlice"), in: func() recursiveSlice { s := recursiveSlice{{}} s[0] = s return s }(), want: strings.Repeat(`[`, startDetectingCyclesAfter) + `[`, wantErr: &SemanticError{action: "marshal", GoType: reflect.TypeOf(recursiveSlice{}), Err: errors.New("encountered a cycle")}, }, { name: name("Slices/IgnoreInvalidFormat"), mopts: MarshalOptions{formatDepth: 1000, format: "invalid"}, in: []string{"hello", "goodbye"}, want: `["hello","goodbye"]`, }, { name: name("Arrays/Empty"), in: [0]struct{}{}, want: `[]`, }, { name: name("Arrays/Bool"), in: [2]bool{false, true}, want: `[false,true]`, }, { name: name("Arrays/String"), in: [2]string{"hello", "goodbye"}, want: `["hello","goodbye"]`, }, { name: name("Arrays/Bytes"), in: [2][]byte{[]byte("hello"), []byte("goodbye")}, want: `["aGVsbG8=","Z29vZGJ5ZQ=="]`, }, { name: name("Arrays/Int"), in: [2]int64{math.MinInt64, math.MaxInt64}, want: `[-9223372036854775808,9223372036854775807]`, }, { name: name("Arrays/Uint"), in: [2]uint64{0, math.MaxUint64}, want: `[0,18446744073709551615]`, }, { name: name("Arrays/Float"), in: [2]float64{-math.MaxFloat64, +math.MaxFloat64}, want: `[-1.7976931348623157e+308,1.7976931348623157e+308]`, }, { name: name("Arrays/Invalid/Channel"), in: new([1]chan string), want: `[`, wantErr: &SemanticError{action: "marshal", GoType: chanStringType}, }, { name: name("Arrays/IgnoreInvalidFormat"), mopts: MarshalOptions{formatDepth: 1000, format: "invalid"}, in: [2]string{"hello", "goodbye"}, want: `["hello","goodbye"]`, }, { name: name("Pointers/NilL0"), in: (*int)(nil), want: `null`, }, { name: name("Pointers/NilL1"), in: new(*int), want: `null`, }, { name: name("Pointers/Bool"), in: addr(addr(bool(true))), want: `true`, }, { name: name("Pointers/String"), in: addr(addr(string("string"))), want: `"string"`, }, { name: name("Pointers/Bytes"), in: addr(addr([]byte("bytes"))), want: `"Ynl0ZXM="`, }, { name: name("Pointers/Int"), in: addr(addr(int(-100))), want: `-100`, }, { name: name("Pointers/Uint"), in: addr(addr(uint(100))), want: `100`, }, { name: name("Pointers/Float"), in: addr(addr(float64(3.14159))), want: `3.14159`, }, { name: name("Pointers/CyclicPointer"), in: func() *recursivePointer { p := new(recursivePointer) p.P = p return p }(), want: strings.Repeat(`{"P":`, startDetectingCyclesAfter) + `{"P"`, wantErr: &SemanticError{action: "marshal", GoType: reflect.TypeOf((*recursivePointer)(nil)), Err: errors.New("encountered a cycle")}, }, { name: name("Pointers/IgnoreInvalidFormat"), mopts: MarshalOptions{formatDepth: 1000, format: "invalid"}, in: addr(addr(bool(true))), want: `true`, }, { name: name("Interfaces/Nil/Empty"), in: [1]any{nil}, want: `[null]`, }, { name: name("Interfaces/Nil/NonEmpty"), in: [1]io.Reader{nil}, want: `[null]`, }, { name: name("Interfaces/IgnoreInvalidFormat"), mopts: MarshalOptions{formatDepth: 1000, format: "invalid"}, in: [1]io.Reader{nil}, want: `[null]`, }, { name: name("Interfaces/Any"), in: struct{ X any }{[]any{nil, false, "", 0.0, map[string]any{}, []any{}, [8]byte{}}}, want: `{"X":[null,false,"",0,{},[],"AAAAAAAAAAA="]}`, }, { name: name("Interfaces/Any/Named"), in: struct{ X namedAny }{[]namedAny{nil, false, "", 0.0, map[string]namedAny{}, []namedAny{}, [8]byte{}}}, want: `{"X":[null,false,"",0,{},[],"AAAAAAAAAAA="]}`, }, { name: name("Interfaces/Any/Stringified"), mopts: MarshalOptions{StringifyNumbers: true}, in: struct{ X any }{0.0}, want: `{"X":"0"}`, }, { name: name("Interfaces/Any/MarshalFunc/Any"), mopts: MarshalOptions{Marshalers: MarshalFuncV1(func(v any) ([]byte, error) { return []byte(`"called"`), nil })}, in: struct{ X any }{[]any{nil, false, "", 0.0, map[string]any{}, []any{}}}, want: `"called"`, }, { name: name("Interfaces/Any/MarshalFunc/Bool"), mopts: MarshalOptions{Marshalers: MarshalFuncV1(func(v bool) ([]byte, error) { return []byte(`"called"`), nil })}, in: struct{ X any }{[]any{nil, false, "", 0.0, map[string]any{}, []any{}}}, want: `{"X":[null,"called","",0,{},[]]}`, }, { name: name("Interfaces/Any/MarshalFunc/String"), mopts: MarshalOptions{Marshalers: MarshalFuncV1(func(v string) ([]byte, error) { return []byte(`"called"`), nil })}, in: struct{ X any }{[]any{nil, false, "", 0.0, map[string]any{}, []any{}}}, want: `{"X":[null,false,"called",0,{},[]]}`, }, { name: name("Interfaces/Any/MarshalFunc/Float64"), mopts: MarshalOptions{Marshalers: MarshalFuncV1(func(v float64) ([]byte, error) { return []byte(`"called"`), nil })}, in: struct{ X any }{[]any{nil, false, "", 0.0, map[string]any{}, []any{}}}, want: `{"X":[null,false,"","called",{},[]]}`, }, { name: name("Interfaces/Any/MarshalFunc/MapStringAny"), mopts: MarshalOptions{Marshalers: MarshalFuncV1(func(v map[string]any) ([]byte, error) { return []byte(`"called"`), nil })}, in: struct{ X any }{[]any{nil, false, "", 0.0, map[string]any{}, []any{}}}, want: `{"X":[null,false,"",0,"called",[]]}`, }, { name: name("Interfaces/Any/MarshalFunc/SliceAny"), mopts: MarshalOptions{Marshalers: MarshalFuncV1(func(v []any) ([]byte, error) { return []byte(`"called"`), nil })}, in: struct{ X any }{[]any{nil, false, "", 0.0, map[string]any{}, []any{}}}, want: `{"X":"called"}`, }, { name: name("Interfaces/Any/MarshalFunc/Bytes"), mopts: MarshalOptions{Marshalers: MarshalFuncV1(func(v [8]byte) ([]byte, error) { return []byte(`"called"`), nil })}, in: struct{ X any }{[8]byte{}}, want: `{"X":"called"}`, }, { name: name("Interfaces/Any/Maps/Empty"), in: struct{ X any }{map[string]any{}}, want: `{"X":{}}`, }, { name: name("Interfaces/Any/Maps/Empty/Multiline"), eopts: EncodeOptions{multiline: true}, in: struct{ X any }{map[string]any{}}, want: "{\n\"X\": {}\n}", }, { name: name("Interfaces/Any/Maps/NonEmpty"), in: struct{ X any }{map[string]any{"fizz": "buzz"}}, want: `{"X":{"fizz":"buzz"}}`, }, { name: name("Interfaces/Any/Maps/Deterministic"), mopts: MarshalOptions{Deterministic: true}, in: struct{ X any }{map[string]any{"alpha": "", "bravo": ""}}, want: `{"X":{"alpha":"","bravo":""}}`, }, { name: name("Interfaces/Any/Maps/Deterministic+AllowInvalidUTF8+RejectDuplicateNames"), mopts: MarshalOptions{Deterministic: true}, eopts: EncodeOptions{AllowInvalidUTF8: true, AllowDuplicateNames: false}, in: struct{ X any }{map[string]any{"\xff": "", "\xfe": ""}}, want: `{"X":{"�":""`, wantErr: &SyntacticError{str: `duplicate name "�" in object`}, }, { name: name("Interfaces/Any/Maps/Deterministic+AllowInvalidUTF8+AllowDuplicateNames"), mopts: MarshalOptions{Deterministic: true}, eopts: EncodeOptions{AllowInvalidUTF8: true, AllowDuplicateNames: true}, in: struct{ X any }{map[string]any{"\xff": "alpha", "\xfe": "bravo"}}, want: `{"X":{"�":"bravo","�":"alpha"}}`, }, { name: name("Interfaces/Any/Maps/RejectInvalidUTF8"), in: struct{ X any }{map[string]any{"\xff": "", "\xfe": ""}}, want: `{"X":{`, wantErr: &SyntacticError{str: "invalid UTF-8 within string"}, }, { name: name("Interfaces/Any/Maps/AllowInvalidUTF8+RejectDuplicateNames"), eopts: EncodeOptions{AllowInvalidUTF8: true}, in: struct{ X any }{map[string]any{"\xff": "", "\xfe": ""}}, want: `{"X":{"�":""`, wantErr: &SyntacticError{str: `duplicate name "�" in object`}, }, { name: name("Interfaces/Any/Maps/AllowInvalidUTF8+AllowDuplicateNames"), eopts: EncodeOptions{AllowInvalidUTF8: true, AllowDuplicateNames: true}, in: struct{ X any }{map[string]any{"\xff": "", "\xfe": ""}}, want: `{"X":{"�":"","�":""}}`, }, { name: name("Interfaces/Any/Maps/Cyclic"), in: func() any { m := map[string]any{} m[""] = m return struct{ X any }{m} }(), want: `{"X"` + strings.Repeat(`:{""`, startDetectingCyclesAfter), wantErr: &SemanticError{action: "marshal", GoType: mapStringAnyType, Err: errors.New("encountered a cycle")}, }, { name: name("Interfaces/Any/Slices/Empty"), in: struct{ X any }{[]any{}}, want: `{"X":[]}`, }, { name: name("Interfaces/Any/Slices/Empty/Multiline"), eopts: EncodeOptions{multiline: true}, in: struct{ X any }{[]any{}}, want: "{\n\"X\": []\n}", }, { name: name("Interfaces/Any/Slices/NonEmpty"), in: struct{ X any }{[]any{"fizz", "buzz"}}, want: `{"X":["fizz","buzz"]}`, }, { name: name("Interfaces/Any/Slices/Cyclic"), in: func() any { s := make([]any, 1) s[0] = s return struct{ X any }{s} }(), want: `{"X":` + strings.Repeat(`[`, startDetectingCyclesAfter), wantErr: &SemanticError{action: "marshal", GoType: sliceAnyType, Err: errors.New("encountered a cycle")}, }, { name: name("Methods/NilPointer"), in: struct{ X *allMethods }{X: (*allMethods)(nil)}, // method should not be called want: `{"X":null}`, }, { // NOTE: Fixes https://github.com/dominikh/go-tools/issues/975. name: name("Methods/NilInterface"), in: struct{ X MarshalerV2 }{X: (*allMethods)(nil)}, // method should not be called want: `{"X":null}`, }, { name: name("Methods/AllMethods"), in: struct{ X *allMethods }{X: &allMethods{method: "MarshalNextJSON", value: []byte(`"hello"`)}}, want: `{"X":"hello"}`, }, { name: name("Methods/AllMethodsExceptJSONv2"), in: struct{ X *allMethodsExceptJSONv2 }{X: &allMethodsExceptJSONv2{allMethods: allMethods{method: "MarshalJSON", value: []byte(`"hello"`)}}}, want: `{"X":"hello"}`, }, { name: name("Methods/AllMethodsExceptJSONv1"), in: struct{ X *allMethodsExceptJSONv1 }{X: &allMethodsExceptJSONv1{allMethods: allMethods{method: "MarshalNextJSON", value: []byte(`"hello"`)}}}, want: `{"X":"hello"}`, }, { name: name("Methods/AllMethodsExceptText"), in: struct{ X *allMethodsExceptText }{X: &allMethodsExceptText{allMethods: allMethods{method: "MarshalNextJSON", value: []byte(`"hello"`)}}}, want: `{"X":"hello"}`, }, { name: name("Methods/OnlyMethodJSONv2"), in: struct{ X *onlyMethodJSONv2 }{X: &onlyMethodJSONv2{allMethods: allMethods{method: "MarshalNextJSON", value: []byte(`"hello"`)}}}, want: `{"X":"hello"}`, }, { name: name("Methods/OnlyMethodJSONv1"), in: struct{ X *onlyMethodJSONv1 }{X: &onlyMethodJSONv1{allMethods: allMethods{method: "MarshalJSON", value: []byte(`"hello"`)}}}, want: `{"X":"hello"}`, }, { name: name("Methods/OnlyMethodText"), in: struct{ X *onlyMethodText }{X: &onlyMethodText{allMethods: allMethods{method: "MarshalText", value: []byte(`hello`)}}}, want: `{"X":"hello"}`, }, { name: name("Methods/IP"), in: net.IPv4(192, 168, 0, 100), want: `"192.168.0.100"`, }, { // NOTE: Fixes https://go.dev/issue/46516. name: name("Methods/Anonymous"), in: struct{ X struct{ allMethods } }{X: struct{ allMethods }{allMethods{method: "MarshalNextJSON", value: []byte(`"hello"`)}}}, want: `{"X":"hello"}`, }, { // NOTE: Fixes https://go.dev/issue/22967. name: name("Methods/Addressable"), in: struct { V allMethods M map[string]allMethods I any }{ V: allMethods{method: "MarshalNextJSON", value: []byte(`"hello"`)}, M: map[string]allMethods{"K": {method: "MarshalNextJSON", value: []byte(`"hello"`)}}, I: allMethods{method: "MarshalNextJSON", value: []byte(`"hello"`)}, }, want: `{"V":"hello","M":{"K":"hello"},"I":"hello"}`, }, { // NOTE: Fixes https://go.dev/issue/29732. name: name("Methods/MapKey/JSONv2"), in: map[structMethodJSONv2]string{{"k1"}: "v1", {"k2"}: "v2"}, want: `{"k1":"v1","k2":"v2"}`, canonicalize: true, }, { // NOTE: Fixes https://go.dev/issue/29732. name: name("Methods/MapKey/JSONv1"), in: map[structMethodJSONv1]string{{"k1"}: "v1", {"k2"}: "v2"}, want: `{"k1":"v1","k2":"v2"}`, canonicalize: true, }, { name: name("Methods/MapKey/Text"), in: map[structMethodText]string{{"k1"}: "v1", {"k2"}: "v2"}, want: `{"k1":"v1","k2":"v2"}`, canonicalize: true, }, { name: name("Methods/Invalid/JSONv2/Error"), in: marshalJSONv2Func(func(MarshalOptions, *Encoder) error { return errors.New("some error") }), wantErr: &SemanticError{action: "marshal", GoType: marshalJSONv2FuncType, Err: errors.New("some error")}, }, { name: name("Methods/Invalid/JSONv2/TooFew"), in: marshalJSONv2Func(func(MarshalOptions, *Encoder) error { return nil // do nothing }), wantErr: &SemanticError{action: "marshal", GoType: marshalJSONv2FuncType, Err: errors.New("must write exactly one JSON value")}, }, { name: name("Methods/Invalid/JSONv2/TooMany"), in: marshalJSONv2Func(func(mo MarshalOptions, enc *Encoder) error { enc.WriteToken(Null) enc.WriteToken(Null) return nil }), want: `nullnull`, wantErr: &SemanticError{action: "marshal", GoType: marshalJSONv2FuncType, Err: errors.New("must write exactly one JSON value")}, }, { name: name("Methods/Invalid/JSONv2/SkipFunc"), in: marshalJSONv2Func(func(mo MarshalOptions, enc *Encoder) error { return SkipFunc }), wantErr: &SemanticError{action: "marshal", GoType: marshalJSONv2FuncType, Err: errors.New("marshal method cannot be skipped")}, }, { name: name("Methods/Invalid/JSONv1/Error"), in: marshalJSONv1Func(func() ([]byte, error) { return nil, errors.New("some error") }), wantErr: &SemanticError{action: "marshal", GoType: marshalJSONv1FuncType, Err: errors.New("some error")}, }, { name: name("Methods/Invalid/JSONv1/Syntax"), in: marshalJSONv1Func(func() ([]byte, error) { return []byte("invalid"), nil }), wantErr: &SemanticError{action: "marshal", JSONKind: 'i', GoType: marshalJSONv1FuncType, Err: newInvalidCharacterError([]byte("i"), "at start of value")}, }, { name: name("Methods/Invalid/JSONv1/SkipFunc"), in: marshalJSONv1Func(func() ([]byte, error) { return nil, SkipFunc }), wantErr: &SemanticError{action: "marshal", GoType: marshalJSONv1FuncType, Err: errors.New("marshal method cannot be skipped")}, }, { name: name("Methods/Invalid/Text/Error"), in: marshalTextFunc(func() ([]byte, error) { return nil, errors.New("some error") }), wantErr: &SemanticError{action: "marshal", JSONKind: '"', GoType: marshalTextFuncType, Err: errors.New("some error")}, }, { name: name("Methods/Invalid/Text/UTF8"), in: marshalTextFunc(func() ([]byte, error) { return []byte("\xde\xad\xbe\xef"), nil }), wantErr: &SemanticError{action: "marshal", JSONKind: '"', GoType: marshalTextFuncType, Err: &SyntacticError{str: "invalid UTF-8 within string"}}, }, { name: name("Methods/Invalid/Text/SkipFunc"), in: marshalTextFunc(func() ([]byte, error) { return nil, SkipFunc }), wantErr: &SemanticError{action: "marshal", JSONKind: '"', GoType: marshalTextFuncType, Err: errors.New("marshal method cannot be skipped")}, }, { name: name("Methods/Invalid/MapKey/JSONv2/Syntax"), in: map[any]string{ addr(marshalJSONv2Func(func(mo MarshalOptions, enc *Encoder) error { return enc.WriteToken(Null) })): "invalid", }, want: `{`, wantErr: &SemanticError{action: "marshal", GoType: marshalJSONv2FuncType, Err: errMissingName}, }, { name: name("Methods/Invalid/MapKey/JSONv1/Syntax"), in: map[any]string{ addr(marshalJSONv1Func(func() ([]byte, error) { return []byte(`null`), nil })): "invalid", }, want: `{`, wantErr: &SemanticError{action: "marshal", JSONKind: 'n', GoType: marshalJSONv1FuncType, Err: errMissingName}, }, { name: name("Functions/Bool/V1"), mopts: MarshalOptions{ Marshalers: MarshalFuncV1(func(bool) ([]byte, error) { return []byte(`"called"`), nil }), }, in: true, want: `"called"`, }, { name: name("Functions/NamedBool/V1/NoMatch"), mopts: MarshalOptions{ Marshalers: MarshalFuncV1(func(namedBool) ([]byte, error) { return nil, errors.New("must not be called") }), }, in: true, want: `true`, }, { name: name("Functions/NamedBool/V1/Match"), mopts: MarshalOptions{ Marshalers: MarshalFuncV1(func(namedBool) ([]byte, error) { return []byte(`"called"`), nil }), }, in: namedBool(true), want: `"called"`, }, { name: name("Functions/PointerBool/V1/Match"), mopts: MarshalOptions{ Marshalers: MarshalFuncV1(func(v *bool) ([]byte, error) { _ = *v // must be a non-nil pointer return []byte(`"called"`), nil }), }, in: true, want: `"called"`, }, { name: name("Functions/Bool/V2"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v bool) error { return enc.WriteToken(String("called")) }), }, in: true, want: `"called"`, }, { name: name("Functions/NamedBool/V2/NoMatch"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v namedBool) error { return errors.New("must not be called") }), }, in: true, want: `true`, }, { name: name("Functions/NamedBool/V2/Match"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v namedBool) error { return enc.WriteToken(String("called")) }), }, in: namedBool(true), want: `"called"`, }, { name: name("Functions/PointerBool/V2/Match"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v *bool) error { _ = *v // must be a non-nil pointer return enc.WriteToken(String("called")) }), }, in: true, want: `"called"`, }, { name: name("Functions/Bool/Empty1/NoMatch"), mopts: MarshalOptions{ Marshalers: new(Marshalers), }, in: true, want: `true`, }, { name: name("Functions/Bool/Empty2/NoMatch"), mopts: MarshalOptions{ Marshalers: NewMarshalers(), }, in: true, want: `true`, }, { name: name("Functions/Bool/V1/DirectError"), mopts: MarshalOptions{ Marshalers: MarshalFuncV1(func(bool) ([]byte, error) { return nil, errors.New("some error") }), }, in: true, wantErr: &SemanticError{action: "marshal", GoType: boolType, Err: errors.New("some error")}, }, { name: name("Functions/Bool/V1/SkipError"), mopts: MarshalOptions{ Marshalers: MarshalFuncV1(func(bool) ([]byte, error) { return nil, SkipFunc }), }, in: true, wantErr: &SemanticError{action: "marshal", GoType: boolType, Err: errors.New("marshal function of type func(T) ([]byte, error) cannot be skipped")}, }, { name: name("Functions/Bool/V1/InvalidValue"), mopts: MarshalOptions{ Marshalers: MarshalFuncV1(func(bool) ([]byte, error) { return []byte("invalid"), nil }), }, in: true, wantErr: &SemanticError{action: "marshal", JSONKind: 'i', GoType: boolType, Err: &SyntacticError{str: "invalid character 'i' at start of value"}}, }, { name: name("Functions/Bool/V2/DirectError"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v bool) error { return errors.New("some error") }), }, in: true, wantErr: &SemanticError{action: "marshal", GoType: boolType, Err: errors.New("some error")}, }, { name: name("Functions/Bool/V2/TooFew"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v bool) error { return nil }), }, in: true, wantErr: &SemanticError{action: "marshal", GoType: boolType, Err: errors.New("must write exactly one JSON value")}, }, { name: name("Functions/Bool/V2/TooMany"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v bool) error { enc.WriteValue([]byte(`"hello"`)) enc.WriteValue([]byte(`"world"`)) return nil }), }, in: true, want: `"hello""world"`, wantErr: &SemanticError{action: "marshal", GoType: boolType, Err: errors.New("must write exactly one JSON value")}, }, { name: name("Functions/Bool/V2/Skipped"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v bool) error { return SkipFunc }), }, in: true, want: `true`, }, { name: name("Functions/Bool/V2/ProcessBeforeSkip"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v bool) error { enc.WriteValue([]byte(`"hello"`)) return SkipFunc }), }, in: true, want: `"hello"`, wantErr: &SemanticError{action: "marshal", GoType: boolType, Err: errors.New("must not write any JSON tokens when skipping")}, }, { name: name("Functions/Bool/V2/WrappedSkipError"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v bool) error { return fmt.Errorf("wrap: %w", SkipFunc) }), }, in: true, wantErr: &SemanticError{action: "marshal", GoType: boolType, Err: fmt.Errorf("wrap: %w", SkipFunc)}, }, { name: name("Functions/Map/Key/NoCaseString/V1"), mopts: MarshalOptions{ Marshalers: MarshalFuncV1(func(v nocaseString) ([]byte, error) { return []byte(`"called"`), nil }), }, in: map[nocaseString]string{"hello": "world"}, want: `{"called":"world"}`, }, { name: name("Functions/Map/Key/PointerNoCaseString/V1"), mopts: MarshalOptions{ Marshalers: MarshalFuncV1(func(v *nocaseString) ([]byte, error) { _ = *v // must be a non-nil pointer return []byte(`"called"`), nil }), }, in: map[nocaseString]string{"hello": "world"}, want: `{"called":"world"}`, }, { name: name("Functions/Map/Key/TextMarshaler/V1"), mopts: MarshalOptions{ Marshalers: MarshalFuncV1(func(v encoding.TextMarshaler) ([]byte, error) { _ = *v.(*nocaseString) // must be a non-nil *nocaseString return []byte(`"called"`), nil }), }, in: map[nocaseString]string{"hello": "world"}, want: `{"called":"world"}`, }, { name: name("Functions/Map/Key/NoCaseString/V1/InvalidValue"), mopts: MarshalOptions{ Marshalers: MarshalFuncV1(func(v nocaseString) ([]byte, error) { return []byte(`null`), nil }), }, in: map[nocaseString]string{"hello": "world"}, want: `{`, wantErr: &SemanticError{action: "marshal", JSONKind: 'n', GoType: nocaseStringType, Err: errMissingName}, }, { name: name("Functions/Map/Key/NoCaseString/V2/InvalidKind"), mopts: MarshalOptions{ Marshalers: MarshalFuncV1(func(v nocaseString) ([]byte, error) { return []byte(`null`), nil }), }, in: map[nocaseString]string{"hello": "world"}, want: `{`, wantErr: &SemanticError{action: "marshal", JSONKind: 'n', GoType: nocaseStringType, Err: errMissingName}, }, { name: name("Functions/Map/Key/String/V1/DuplicateName"), mopts: MarshalOptions{ Marshalers: MarshalFuncV1(func(v string) ([]byte, error) { return []byte(`"name"`), nil }), }, in: map[string]string{"name1": "value", "name2": "value"}, want: `{"name":"name"`, wantErr: &SemanticError{action: "marshal", JSONKind: '"', GoType: stringType, Err: &SyntacticError{str: `duplicate name "name" in object`}}, }, { name: name("Functions/Map/Key/NoCaseString/V2"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v nocaseString) error { return enc.WriteValue([]byte(`"called"`)) }), }, in: map[nocaseString]string{"hello": "world"}, want: `{"called":"world"}`, }, { name: name("Functions/Map/Key/PointerNoCaseString/V2"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v *nocaseString) error { _ = *v // must be a non-nil pointer return enc.WriteValue([]byte(`"called"`)) }), }, in: map[nocaseString]string{"hello": "world"}, want: `{"called":"world"}`, }, { name: name("Functions/Map/Key/TextMarshaler/V2"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v encoding.TextMarshaler) error { _ = *v.(*nocaseString) // must be a non-nil *nocaseString return enc.WriteValue([]byte(`"called"`)) }), }, in: map[nocaseString]string{"hello": "world"}, want: `{"called":"world"}`, }, { name: name("Functions/Map/Key/NoCaseString/V2/InvalidToken"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v nocaseString) error { return enc.WriteToken(Null) }), }, in: map[nocaseString]string{"hello": "world"}, want: `{`, wantErr: &SemanticError{action: "marshal", GoType: nocaseStringType, Err: errMissingName}, }, { name: name("Functions/Map/Key/NoCaseString/V2/InvalidValue"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v nocaseString) error { return enc.WriteValue([]byte(`null`)) }), }, in: map[nocaseString]string{"hello": "world"}, want: `{`, wantErr: &SemanticError{action: "marshal", GoType: nocaseStringType, Err: errMissingName}, }, { name: name("Functions/Map/Value/NoCaseString/V1"), mopts: MarshalOptions{ Marshalers: MarshalFuncV1(func(v nocaseString) ([]byte, error) { return []byte(`"called"`), nil }), }, in: map[string]nocaseString{"hello": "world"}, want: `{"hello":"called"}`, }, { name: name("Functions/Map/Value/PointerNoCaseString/V1"), mopts: MarshalOptions{ Marshalers: MarshalFuncV1(func(v *nocaseString) ([]byte, error) { _ = *v // must be a non-nil pointer return []byte(`"called"`), nil }), }, in: map[string]nocaseString{"hello": "world"}, want: `{"hello":"called"}`, }, { name: name("Functions/Map/Value/TextMarshaler/V1"), mopts: MarshalOptions{ Marshalers: MarshalFuncV1(func(v encoding.TextMarshaler) ([]byte, error) { _ = *v.(*nocaseString) // must be a non-nil *nocaseString return []byte(`"called"`), nil }), }, in: map[string]nocaseString{"hello": "world"}, want: `{"hello":"called"}`, }, { name: name("Functions/Map/Value/NoCaseString/V2"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v nocaseString) error { return enc.WriteValue([]byte(`"called"`)) }), }, in: map[string]nocaseString{"hello": "world"}, want: `{"hello":"called"}`, }, { name: name("Functions/Map/Value/PointerNoCaseString/V2"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v *nocaseString) error { _ = *v // must be a non-nil pointer return enc.WriteValue([]byte(`"called"`)) }), }, in: map[string]nocaseString{"hello": "world"}, want: `{"hello":"called"}`, }, { name: name("Functions/Map/Value/TextMarshaler/V2"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v encoding.TextMarshaler) error { _ = *v.(*nocaseString) // must be a non-nil *nocaseString return enc.WriteValue([]byte(`"called"`)) }), }, in: map[string]nocaseString{"hello": "world"}, want: `{"hello":"called"}`, }, { name: name("Funtions/Struct/Fields"), mopts: MarshalOptions{ Marshalers: NewMarshalers( MarshalFuncV1(func(v bool) ([]byte, error) { return []byte(`"called1"`), nil }), MarshalFuncV1(func(v *string) ([]byte, error) { return []byte(`"called2"`), nil }), MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v []byte) error { return enc.WriteValue([]byte(`"called3"`)) }), MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v *int64) error { return enc.WriteValue([]byte(`"called4"`)) }), ), }, in: structScalars{}, want: `{"Bool":"called1","String":"called2","Bytes":"called3","Int":"called4","Uint":0,"Float":0}`, }, { name: name("Functions/Struct/OmitEmpty"), mopts: MarshalOptions{ Marshalers: NewMarshalers( MarshalFuncV1(func(v bool) ([]byte, error) { return []byte(`null`), nil }), MarshalFuncV1(func(v string) ([]byte, error) { return []byte(`"called1"`), nil }), MarshalFuncV1(func(v *stringMarshalNonEmpty) ([]byte, error) { return []byte(`""`), nil }), MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v bytesMarshalNonEmpty) error { return enc.WriteValue([]byte(`{}`)) }), MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v *float64) error { return enc.WriteValue([]byte(`[]`)) }), MarshalFuncV1(func(v mapMarshalNonEmpty) ([]byte, error) { return []byte(`"called2"`), nil }), MarshalFuncV1(func(v []string) ([]byte, error) { return []byte(`"called3"`), nil }), MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v *sliceMarshalNonEmpty) error { return enc.WriteValue([]byte(`"called4"`)) }), ), }, in: structOmitEmptyAll{}, want: `{"String":"called1","MapNonEmpty":"called2","Slice":"called3","SliceNonEmpty":"called4"}`, }, { name: name("Functions/Struct/OmitZero"), mopts: MarshalOptions{ Marshalers: NewMarshalers( MarshalFuncV1(func(v bool) ([]byte, error) { panic("should not be called") }), MarshalFuncV1(func(v *string) ([]byte, error) { panic("should not be called") }), MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v []byte) error { panic("should not be called") }), MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v *int64) error { panic("should not be called") }), ), }, in: structOmitZeroAll{}, want: `{}`, }, { name: name("Functions/Struct/Inlined"), mopts: MarshalOptions{ Marshalers: NewMarshalers( MarshalFuncV1(func(v structInlinedL1) ([]byte, error) { panic("should not be called") }), MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v *StructEmbed2) error { panic("should not be called") }), ), }, in: structInlined{}, want: `{"D":""}`, }, { name: name("Functions/Slice/Elem"), mopts: MarshalOptions{ Marshalers: MarshalFuncV1(func(v bool) ([]byte, error) { return []byte(`"` + strconv.FormatBool(v) + `"`), nil }), }, in: []bool{true, false}, want: `["true","false"]`, }, { name: name("Functions/Array/Elem"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v *bool) error { return enc.WriteValue([]byte(`"` + strconv.FormatBool(*v) + `"`)) }), }, in: [2]bool{true, false}, want: `["true","false"]`, }, { name: name("Functions/Pointer/Nil"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v *bool) error { panic("should not be called") }), }, in: struct{ X *bool }{nil}, want: `{"X":null}`, }, { name: name("Functions/Pointer/NonNil"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v *bool) error { return enc.WriteValue([]byte(`"called"`)) }), }, in: struct{ X *bool }{addr(false)}, want: `{"X":"called"}`, }, { name: name("Functions/Interface/Nil"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v fmt.Stringer) error { panic("should not be called") }), }, in: struct{ X fmt.Stringer }{nil}, want: `{"X":null}`, }, { name: name("Functions/Interface/NonNil/MatchInterface"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v fmt.Stringer) error { return enc.WriteValue([]byte(`"called"`)) }), }, in: struct{ X fmt.Stringer }{valueStringer{}}, want: `{"X":"called"}`, }, { name: name("Functions/Interface/NonNil/MatchConcrete"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v valueStringer) error { return enc.WriteValue([]byte(`"called"`)) }), }, in: struct{ X fmt.Stringer }{valueStringer{}}, want: `{"X":"called"}`, }, { name: name("Functions/Interface/NonNil/MatchPointer"), mopts: MarshalOptions{ Marshalers: MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v *valueStringer) error { return enc.WriteValue([]byte(`"called"`)) }), }, in: struct{ X fmt.Stringer }{valueStringer{}}, want: `{"X":"called"}`, }, { name: name("Functions/Interface/Any"), in: []any{ nil, // nil valueStringer{}, // T (*valueStringer)(nil), // *T addr(valueStringer{}), // *T (**valueStringer)(nil), // **T addr((*valueStringer)(nil)), // **T addr(addr(valueStringer{})), // **T pointerStringer{}, // T (*pointerStringer)(nil), // *T addr(pointerStringer{}), // *T (**pointerStringer)(nil), // **T addr((*pointerStringer)(nil)), // **T addr(addr(pointerStringer{})), // **T "LAST", }, want: `[null,{},null,{},null,null,{},{},null,{},null,null,{},"LAST"]`, mopts: MarshalOptions{ Marshalers: func() *Marshalers { type P [2]int type PV struct { P P V any } var lastChecks []func() error checkLast := func() error { for _, fn := range lastChecks { if err := fn(); err != nil { return err } } return SkipFunc } makeValueChecker := func(name string, want []PV) func(e *Encoder, v any) error { checkNext := func(e *Encoder, v any) error { p := P{len(e.tokens.stack), e.tokens.last.length()} rv := reflect.ValueOf(v) pv := PV{p, v} switch { case len(want) == 0: return fmt.Errorf("%s: %v: got more values than expected", name, p) case !rv.IsValid() || rv.Kind() != reflect.Pointer || rv.IsNil(): return fmt.Errorf("%s: %v: got %#v, want non-nil pointer type", name, p, v) case !reflect.DeepEqual(pv, want[0]): return fmt.Errorf("%s:\n\tgot %#v\n\twant %#v", name, pv, want[0]) default: want = want[1:] return SkipFunc } } lastChecks = append(lastChecks, func() error { if len(want) > 0 { return fmt.Errorf("%s: did not get enough values, want %d more", name, len(want)) } return nil }) return checkNext } makePositionChecker := func(name string, want []P) func(e *Encoder, v any) error { checkNext := func(e *Encoder, v any) error { p := P{len(e.tokens.stack), e.tokens.last.length()} switch { case len(want) == 0: return fmt.Errorf("%s: %v: got more values than wanted", name, p) case p != want[0]: return fmt.Errorf("%s: got %v, want %v", name, p, want[0]) default: want = want[1:] return SkipFunc } } lastChecks = append(lastChecks, func() error { if len(want) > 0 { return fmt.Errorf("%s: did not get enough values, want %d more", name, len(want)) } return nil }) return checkNext } wantAny := []PV{ {P{0, 0}, addr([]any{ nil, valueStringer{}, (*valueStringer)(nil), addr(valueStringer{}), (**valueStringer)(nil), addr((*valueStringer)(nil)), addr(addr(valueStringer{})), pointerStringer{}, (*pointerStringer)(nil), addr(pointerStringer{}), (**pointerStringer)(nil), addr((*pointerStringer)(nil)), addr(addr(pointerStringer{})), "LAST", })}, {P{1, 0}, addr(any(nil))}, {P{1, 1}, addr(any(valueStringer{}))}, {P{1, 1}, addr(valueStringer{})}, {P{1, 2}, addr(any((*valueStringer)(nil)))}, {P{1, 2}, addr((*valueStringer)(nil))}, {P{1, 3}, addr(any(addr(valueStringer{})))}, {P{1, 3}, addr(addr(valueStringer{}))}, {P{1, 3}, addr(valueStringer{})}, {P{1, 4}, addr(any((**valueStringer)(nil)))}, {P{1, 4}, addr((**valueStringer)(nil))}, {P{1, 5}, addr(any(addr((*valueStringer)(nil))))}, {P{1, 5}, addr(addr((*valueStringer)(nil)))}, {P{1, 5}, addr((*valueStringer)(nil))}, {P{1, 6}, addr(any(addr(addr(valueStringer{}))))}, {P{1, 6}, addr(addr(addr(valueStringer{})))}, {P{1, 6}, addr(addr(valueStringer{}))}, {P{1, 6}, addr(valueStringer{})}, {P{1, 7}, addr(any(pointerStringer{}))}, {P{1, 7}, addr(pointerStringer{})}, {P{1, 8}, addr(any((*pointerStringer)(nil)))}, {P{1, 8}, addr((*pointerStringer)(nil))}, {P{1, 9}, addr(any(addr(pointerStringer{})))}, {P{1, 9}, addr(addr(pointerStringer{}))}, {P{1, 9}, addr(pointerStringer{})}, {P{1, 10}, addr(any((**pointerStringer)(nil)))}, {P{1, 10}, addr((**pointerStringer)(nil))}, {P{1, 11}, addr(any(addr((*pointerStringer)(nil))))}, {P{1, 11}, addr(addr((*pointerStringer)(nil)))}, {P{1, 11}, addr((*pointerStringer)(nil))}, {P{1, 12}, addr(any(addr(addr(pointerStringer{}))))}, {P{1, 12}, addr(addr(addr(pointerStringer{})))}, {P{1, 12}, addr(addr(pointerStringer{}))}, {P{1, 12}, addr(pointerStringer{})}, {P{1, 13}, addr(any("LAST"))}, {P{1, 13}, addr("LAST")}, } checkAny := makeValueChecker("any", wantAny) anyMarshaler := MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v any) error { return checkAny(enc, v) }) var wantPointerAny []PV for _, v := range wantAny { if _, ok := v.V.(*any); ok { wantPointerAny = append(wantPointerAny, v) } } checkPointerAny := makeValueChecker("*any", wantPointerAny) pointerAnyMarshaler := MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v *any) error { return checkPointerAny(enc, v) }) checkNamedAny := makeValueChecker("namedAny", wantAny) namedAnyMarshaler := MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v namedAny) error { return checkNamedAny(enc, v) }) checkPointerNamedAny := makeValueChecker("*namedAny", nil) pointerNamedAnyMarshaler := MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v *namedAny) error { return checkPointerNamedAny(enc, v) }) type stringer = fmt.Stringer var wantStringer []PV for _, v := range wantAny { if _, ok := v.V.(stringer); ok { wantStringer = append(wantStringer, v) } } checkStringer := makeValueChecker("stringer", wantStringer) stringerMarshaler := MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v stringer) error { return checkStringer(enc, v) }) checkPointerStringer := makeValueChecker("*stringer", nil) pointerStringerMarshaler := MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v *stringer) error { return checkPointerStringer(enc, v) }) wantValueStringer := []P{{1, 1}, {1, 3}, {1, 6}} checkValueValueStringer := makePositionChecker("valueStringer", wantValueStringer) valueValueStringerMarshaler := MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v valueStringer) error { return checkValueValueStringer(enc, v) }) checkPointerValueStringer := makePositionChecker("*valueStringer", wantValueStringer) pointerValueStringerMarshaler := MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v *valueStringer) error { return checkPointerValueStringer(enc, v) }) wantPointerStringer := []P{{1, 7}, {1, 9}, {1, 12}} checkValuePointerStringer := makePositionChecker("pointerStringer", wantPointerStringer) valuePointerStringerMarshaler := MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v pointerStringer) error { return checkValuePointerStringer(enc, v) }) checkPointerPointerStringer := makePositionChecker("*pointerStringer", wantPointerStringer) pointerPointerStringerMarshaler := MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v *pointerStringer) error { return checkPointerPointerStringer(enc, v) }) lastMarshaler := MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v string) error { return checkLast() }) return NewMarshalers( anyMarshaler, pointerAnyMarshaler, namedAnyMarshaler, pointerNamedAnyMarshaler, // never called stringerMarshaler, pointerStringerMarshaler, // never called valueValueStringerMarshaler, pointerValueStringerMarshaler, valuePointerStringerMarshaler, pointerPointerStringerMarshaler, lastMarshaler, ) }(), }, }, { name: name("Functions/Precedence/V1First"), mopts: MarshalOptions{ Marshalers: NewMarshalers( MarshalFuncV1(func(bool) ([]byte, error) { return []byte(`"called"`), nil }), MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v bool) error { panic("should not be called") }), ), }, in: true, want: `"called"`, }, { name: name("Functions/Precedence/V2First"), mopts: MarshalOptions{ Marshalers: NewMarshalers( MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v bool) error { return enc.WriteToken(String("called")) }), MarshalFuncV1(func(bool) ([]byte, error) { panic("should not be called") }), ), }, in: true, want: `"called"`, }, { name: name("Functions/Precedence/V2Skipped"), mopts: MarshalOptions{ Marshalers: NewMarshalers( MarshalFuncV2(func(mo MarshalOptions, enc *Encoder, v bool) error { return SkipFunc }), MarshalFuncV1(func(bool) ([]byte, error) { return []byte(`"called"`), nil }), ), }, in: true, want: `"called"`, }, { name: name("Functions/Precedence/NestedFirst"), mopts: MarshalOptions{ Marshalers: NewMarshalers( NewMarshalers( MarshalFuncV1(func(bool) ([]byte, error) { return []byte(`"called"`), nil }), ), MarshalFuncV1(func(bool) ([]byte, error) { panic("should not be called") }), ), }, in: true, want: `"called"`, }, { name: name("Functions/Precedence/NestedLast"), mopts: MarshalOptions{ Marshalers: NewMarshalers( MarshalFuncV1(func(bool) ([]byte, error) { return []byte(`"called"`), nil }), NewMarshalers( MarshalFuncV1(func(bool) ([]byte, error) { panic("should not be called") }), ), ), }, in: true, want: `"called"`, }, { name: name("Duration/Zero"), in: struct { D1 time.Duration D2 time.Duration `json:",format:nanos"` }{0, 0}, want: `{"D1":"0s","D2":0}`, }, { name: name("Duration/Positive"), in: struct { D1 time.Duration D2 time.Duration `json:",format:nanos"` }{ 123456789123456789, 123456789123456789, }, want: `{"D1":"34293h33m9.123456789s","D2":123456789123456789}`, }, { name: name("Duration/Negative"), in: struct { D1 time.Duration D2 time.Duration `json:",format:nanos"` }{ -123456789123456789, -123456789123456789, }, want: `{"D1":"-34293h33m9.123456789s","D2":-123456789123456789}`, }, { name: name("Duration/Nanos/String"), in: struct { D1 time.Duration `json:",string,format:nanos"` D2 time.Duration `json:",string,format:nanos"` D3 time.Duration `json:",string,format:nanos"` }{ math.MinInt64, 0, math.MaxInt64, }, want: `{"D1":"-9223372036854775808","D2":"0","D3":"9223372036854775807"}`, }, { name: name("Duration/Format/Invalid"), in: struct { D time.Duration `json:",format:invalid"` }{}, want: `{"D"`, wantErr: &SemanticError{action: "marshal", GoType: timeDurationType, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Duration/IgnoreInvalidFormat"), mopts: MarshalOptions{formatDepth: 1000, format: "invalid"}, in: time.Duration(0), want: `"0s"`, }, { name: name("Time/Zero"), in: struct { T1 time.Time T2 time.Time `json:",format:RFC822"` T3 time.Time `json:",format:'2006-01-02'"` T4 time.Time `json:",omitzero"` T5 time.Time `json:",omitempty"` }{ time.Time{}, time.Time{}, time.Time{}, // This is zero according to time.Time.IsZero, // but non-zero according to reflect.Value.IsZero. time.Date(1, 1, 1, 0, 0, 0, 0, time.FixedZone("UTC", 0)), time.Time{}, }, want: `{"T1":"0001-01-01T00:00:00Z","T2":"01 Jan 01 00:00 UTC","T3":"0001-01-01","T5":"0001-01-01T00:00:00Z"}`, }, { name: name("Time/Format"), eopts: EncodeOptions{Indent: "\t"}, in: structTimeFormat{ time.Date(1234, 1, 2, 3, 4, 5, 6, time.UTC), time.Date(1234, 1, 2, 3, 4, 5, 6, time.UTC), time.Date(1234, 1, 2, 3, 4, 5, 6, time.UTC), time.Date(1234, 1, 2, 3, 4, 5, 6, time.UTC), time.Date(1234, 1, 2, 3, 4, 5, 6, time.UTC), time.Date(1234, 1, 2, 3, 4, 5, 6, time.UTC), time.Date(1234, 1, 2, 3, 4, 5, 6, time.UTC), time.Date(1234, 1, 2, 3, 4, 5, 6, time.UTC), time.Date(1234, 1, 2, 3, 4, 5, 6, time.UTC), time.Date(1234, 1, 2, 3, 4, 5, 6, time.UTC), time.Date(1234, 1, 2, 3, 4, 5, 6, time.UTC), time.Date(1234, 1, 2, 3, 4, 5, 6, time.UTC), time.Date(1234, 1, 2, 3, 4, 5, 6, time.UTC), time.Date(1234, 1, 2, 3, 4, 5, 6, time.UTC), time.Date(1234, 1, 2, 3, 4, 5, 6, time.UTC), time.Date(1234, 1, 2, 3, 4, 5, 6, time.UTC), time.Date(1234, 1, 2, 3, 4, 5, 6, time.UTC), time.Date(1234, 1, 2, 3, 4, 5, 6, time.UTC), }, want: `{ "T1": "1234-01-02T03:04:05.000000006Z", "T2": "Mon Jan 2 03:04:05 1234", "T3": "Mon Jan 2 03:04:05 UTC 1234", "T4": "Mon Jan 02 03:04:05 +0000 1234", "T5": "02 Jan 34 03:04 UTC", "T6": "02 Jan 34 03:04 +0000", "T7": "Monday, 02-Jan-34 03:04:05 UTC", "T8": "Mon, 02 Jan 1234 03:04:05 UTC", "T9": "Mon, 02 Jan 1234 03:04:05 +0000", "T10": "1234-01-02T03:04:05Z", "T11": "1234-01-02T03:04:05.000000006Z", "T12": "3:04AM", "T13": "Jan 2 03:04:05", "T14": "Jan 2 03:04:05.000", "T15": "Jan 2 03:04:05.000000", "T16": "Jan 2 03:04:05.000000006", "T17": "1234-01-02", "T18": "\"weird\"1234" }`, }, { name: name("Time/Format/Invalid"), in: struct { T time.Time `json:",format:UndefinedConstant"` }{}, want: `{"T"`, wantErr: &SemanticError{action: "marshal", GoType: timeTimeType, Err: errors.New(`undefined format layout: UndefinedConstant`)}, }, { name: name("Time/Format/YearOverflow"), in: struct { T1 time.Time T2 time.Time }{ time.Date(10000, 1, 1, 0, 0, 0, 0, time.UTC).Add(-time.Second), time.Date(10000, 1, 1, 0, 0, 0, 0, time.UTC), }, want: `{"T1":"9999-12-31T23:59:59Z","T2"`, wantErr: &SemanticError{action: "marshal", GoType: timeTimeType, Err: errors.New(`year outside of range [0,9999]`)}, }, { name: name("Time/Format/YearUnderflow"), in: struct { T1 time.Time T2 time.Time }{ time.Date(0, 1, 1, 0, 0, 0, 0, time.UTC), time.Date(0, 1, 1, 0, 0, 0, 0, time.UTC).Add(-time.Second), }, want: `{"T1":"0000-01-01T00:00:00Z","T2"`, wantErr: &SemanticError{action: "marshal", GoType: timeTimeType, Err: errors.New(`year outside of range [0,9999]`)}, }, { name: name("Time/Format/YearUnderflow"), in: struct{ T time.Time }{time.Date(-998, 1, 1, 0, 0, 0, 0, time.UTC).Add(-time.Second)}, want: `{"T"`, wantErr: &SemanticError{action: "marshal", GoType: timeTimeType, Err: errors.New(`year outside of range [0,9999]`)}, }, { name: name("Time/Format/ZoneExact"), in: struct{ T time.Time }{time.Date(2020, 1, 1, 0, 0, 0, 0, time.FixedZone("", 23*60*60+59*60))}, want: `{"T":"2020-01-01T00:00:00+23:59"}`, }, { name: name("Time/Format/ZoneHourOverflow"), in: struct{ T time.Time }{time.Date(2020, 1, 1, 0, 0, 0, 0, time.FixedZone("", 24*60*60))}, want: `{"T"`, wantErr: &SemanticError{action: "marshal", GoType: timeTimeType, Err: errors.New(`timezone hour outside of range [0,23]`)}, }, { name: name("Time/Format/ZoneHourOverflow"), in: struct{ T time.Time }{time.Date(2020, 1, 1, 0, 0, 0, 0, time.FixedZone("", 123*60*60))}, want: `{"T"`, wantErr: &SemanticError{action: "marshal", GoType: timeTimeType, Err: errors.New(`timezone hour outside of range [0,23]`)}, }, { name: name("Time/IgnoreInvalidFormat"), mopts: MarshalOptions{formatDepth: 1000, format: "invalid"}, in: time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC), want: `"2000-01-01T00:00:00Z"`, }} for _, tt := range tests { t.Run(tt.name.name, func(t *testing.T) { var got []byte var gotErr error if tt.useWriter { bb := new(struct{ bytes.Buffer }) // avoid optimizations with bytes.Buffer gotErr = tt.mopts.MarshalFull(tt.eopts, bb, tt.in) got = bb.Bytes() } else { got, gotErr = tt.mopts.Marshal(tt.eopts, tt.in) } if tt.canonicalize { (*RawValue)(&got).Canonicalize() } if string(got) != tt.want { t.Errorf("%s: Marshal output mismatch:\ngot %s\nwant %s", tt.name.where, got, tt.want) } if !reflect.DeepEqual(gotErr, tt.wantErr) { t.Errorf("%s: Marshal error mismatch:\ngot %v\nwant %v", tt.name.where, gotErr, tt.wantErr) } }) } } func TestUnmarshal(t *testing.T) { tests := []struct { name testName dopts DecodeOptions uopts UnmarshalOptions inBuf string inVal any want any wantErr error }{{ name: name("Nil"), inBuf: `null`, wantErr: &SemanticError{action: "unmarshal", Err: errors.New("value must be passed as a non-nil pointer reference")}, }, { name: name("NilPointer"), inBuf: `null`, inVal: (*string)(nil), want: (*string)(nil), wantErr: &SemanticError{action: "unmarshal", GoType: stringType, Err: errors.New("value must be passed as a non-nil pointer reference")}, }, { name: name("NonPointer"), inBuf: `null`, inVal: "unchanged", want: "unchanged", wantErr: &SemanticError{action: "unmarshal", GoType: stringType, Err: errors.New("value must be passed as a non-nil pointer reference")}, }, { name: name("Bools/TrailingJunk"), inBuf: `falsetrue`, inVal: addr(true), want: addr(false), wantErr: newInvalidCharacterError([]byte("t"), "after top-level value"), }, { name: name("Bools/Null"), inBuf: `null`, inVal: addr(true), want: addr(false), }, { name: name("Bools"), inBuf: `[null,false,true]`, inVal: new([]bool), want: addr([]bool{false, false, true}), }, { name: name("Bools/Named"), inBuf: `[null,false,true]`, inVal: new([]namedBool), want: addr([]namedBool{false, false, true}), }, { name: name("Bools/Invalid/StringifiedFalse"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"false"`, inVal: addr(true), want: addr(true), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: boolType}, }, { name: name("Bools/Invalid/StringifiedTrue"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"true"`, inVal: addr(true), want: addr(true), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: boolType}, }, { name: name("Bools/Invalid/Number"), inBuf: `0`, inVal: addr(true), want: addr(true), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: boolType}, }, { name: name("Bools/Invalid/String"), inBuf: `""`, inVal: addr(true), want: addr(true), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: boolType}, }, { name: name("Bools/Invalid/Object"), inBuf: `{}`, inVal: addr(true), want: addr(true), wantErr: &SemanticError{action: "unmarshal", JSONKind: '{', GoType: boolType}, }, { name: name("Bools/Invalid/Array"), inBuf: `[]`, inVal: addr(true), want: addr(true), wantErr: &SemanticError{action: "unmarshal", JSONKind: '[', GoType: boolType}, }, { name: name("Bools/IgnoreInvalidFormat"), uopts: UnmarshalOptions{formatDepth: 1000, format: "invalid"}, inBuf: `false`, inVal: addr(true), want: addr(false), }, { name: name("Strings/Null"), inBuf: `null`, inVal: addr("something"), want: addr(""), }, { name: name("Strings"), inBuf: `[null,"","hello","世界"]`, inVal: new([]string), want: addr([]string{"", "", "hello", "世界"}), }, { name: name("Strings/Escaped"), inBuf: `[null,"","\u0068\u0065\u006c\u006c\u006f","\u4e16\u754c"]`, inVal: new([]string), want: addr([]string{"", "", "hello", "世界"}), }, { name: name("Strings/Named"), inBuf: `[null,"","hello","世界"]`, inVal: new([]namedString), want: addr([]namedString{"", "", "hello", "世界"}), }, { name: name("Strings/Invalid/False"), inBuf: `false`, inVal: addr("nochange"), want: addr("nochange"), wantErr: &SemanticError{action: "unmarshal", JSONKind: 'f', GoType: stringType}, }, { name: name("Strings/Invalid/True"), inBuf: `true`, inVal: addr("nochange"), want: addr("nochange"), wantErr: &SemanticError{action: "unmarshal", JSONKind: 't', GoType: stringType}, }, { name: name("Strings/Invalid/Object"), inBuf: `{}`, inVal: addr("nochange"), want: addr("nochange"), wantErr: &SemanticError{action: "unmarshal", JSONKind: '{', GoType: stringType}, }, { name: name("Strings/Invalid/Array"), inBuf: `[]`, inVal: addr("nochange"), want: addr("nochange"), wantErr: &SemanticError{action: "unmarshal", JSONKind: '[', GoType: stringType}, }, { name: name("Strings/IgnoreInvalidFormat"), uopts: UnmarshalOptions{formatDepth: 1000, format: "invalid"}, inBuf: `"hello"`, inVal: addr("goodbye"), want: addr("hello"), }, { name: name("Bytes/Null"), inBuf: `null`, inVal: addr([]byte("something")), want: addr([]byte(nil)), }, { name: name("Bytes"), inBuf: `[null,"","AQ==","AQI=","AQID"]`, inVal: new([][]byte), want: addr([][]byte{nil, {}, {1}, {1, 2}, {1, 2, 3}}), }, { name: name("Bytes/Large"), inBuf: `"dGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cgYW5kIGF0ZSB0aGUgaG9tZXdvcmsgdGhhdCBJIHNwZW50IHNvIG11Y2ggdGltZSBvbi4="`, inVal: new([]byte), want: addr([]byte("the quick brown fox jumped over the lazy dog and ate the homework that I spent so much time on.")), }, { name: name("Bytes/Reuse"), inBuf: `"AQID"`, inVal: addr([]byte("changed")), want: addr([]byte{1, 2, 3}), }, { name: name("Bytes/Escaped"), inBuf: `[null,"","\u0041\u0051\u003d\u003d","\u0041\u0051\u0049\u003d","\u0041\u0051\u0049\u0044"]`, inVal: new([][]byte), want: addr([][]byte{nil, {}, {1}, {1, 2}, {1, 2, 3}}), }, { name: name("Bytes/Named"), inBuf: `[null,"","AQ==","AQI=","AQID"]`, inVal: new([]namedBytes), want: addr([]namedBytes{nil, {}, {1}, {1, 2}, {1, 2, 3}}), }, { name: name("Bytes/NotStringified"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `[null,"","AQ==","AQI=","AQID"]`, inVal: new([][]byte), want: addr([][]byte{nil, {}, {1}, {1, 2}, {1, 2, 3}}), }, { // NOTE: []namedByte is not assignable to []byte, // so the following should be treated as a slice of uints. name: name("Bytes/Invariant"), inBuf: `[null,[],[1],[1,2],[1,2,3]]`, inVal: new([][]namedByte), want: addr([][]namedByte{nil, {}, {1}, {1, 2}, {1, 2, 3}}), }, { // NOTE: This differs in behavior from v1, // but keeps the representation of slices and arrays more consistent. name: name("Bytes/ByteArray"), inBuf: `"aGVsbG8="`, inVal: new([5]byte), want: addr([5]byte{'h', 'e', 'l', 'l', 'o'}), }, { name: name("Bytes/ByteArray0/Valid"), inBuf: `""`, inVal: new([0]byte), want: addr([0]byte{}), }, { name: name("Bytes/ByteArray0/Invalid"), inBuf: `"A"`, inVal: new([0]byte), want: addr([0]byte{}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: array0ByteType, Err: func() error { _, err := base64.StdEncoding.Decode(make([]byte, 0), []byte("A")) return err }()}, }, { name: name("Bytes/ByteArray0/Overflow"), inBuf: `"AA=="`, inVal: new([0]byte), want: addr([0]byte{}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: array0ByteType, Err: errors.New("decoded base64 length of 1 mismatches array length of 0")}, }, { name: name("Bytes/ByteArray1/Valid"), inBuf: `"AQ=="`, inVal: new([1]byte), want: addr([1]byte{1}), }, { name: name("Bytes/ByteArray1/Invalid"), inBuf: `"$$=="`, inVal: new([1]byte), want: addr([1]byte{}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: array1ByteType, Err: func() error { _, err := base64.StdEncoding.Decode(make([]byte, 1), []byte("$$==")) return err }()}, }, { name: name("Bytes/ByteArray1/Underflow"), inBuf: `""`, inVal: new([1]byte), want: addr([1]byte{}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: array1ByteType, Err: errors.New("decoded base64 length of 0 mismatches array length of 1")}, }, { name: name("Bytes/ByteArray1/Overflow"), inBuf: `"AQI="`, inVal: new([1]byte), want: addr([1]byte{}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: array1ByteType, Err: errors.New("decoded base64 length of 2 mismatches array length of 1")}, }, { name: name("Bytes/ByteArray2/Valid"), inBuf: `"AQI="`, inVal: new([2]byte), want: addr([2]byte{1, 2}), }, { name: name("Bytes/ByteArray2/Invalid"), inBuf: `"$$$="`, inVal: new([2]byte), want: addr([2]byte{}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: array2ByteType, Err: func() error { _, err := base64.StdEncoding.Decode(make([]byte, 2), []byte("$$$=")) return err }()}, }, { name: name("Bytes/ByteArray2/Underflow"), inBuf: `"AQ=="`, inVal: new([2]byte), want: addr([2]byte{}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: array2ByteType, Err: errors.New("decoded base64 length of 1 mismatches array length of 2")}, }, { name: name("Bytes/ByteArray2/Overflow"), inBuf: `"AQID"`, inVal: new([2]byte), want: addr([2]byte{}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: array2ByteType, Err: errors.New("decoded base64 length of 3 mismatches array length of 2")}, }, { name: name("Bytes/ByteArray3/Valid"), inBuf: `"AQID"`, inVal: new([3]byte), want: addr([3]byte{1, 2, 3}), }, { name: name("Bytes/ByteArray3/Invalid"), inBuf: `"$$$$"`, inVal: new([3]byte), want: addr([3]byte{}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: array3ByteType, Err: func() error { _, err := base64.StdEncoding.Decode(make([]byte, 3), []byte("$$$$")) return err }()}, }, { name: name("Bytes/ByteArray3/Underflow"), inBuf: `"AQI="`, inVal: new([3]byte), want: addr([3]byte{}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: array3ByteType, Err: errors.New("decoded base64 length of 2 mismatches array length of 3")}, }, { name: name("Bytes/ByteArray3/Overflow"), inBuf: `"AQIDAQ=="`, inVal: new([3]byte), want: addr([3]byte{}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: array3ByteType, Err: errors.New("decoded base64 length of 4 mismatches array length of 3")}, }, { name: name("Bytes/ByteArray4/Valid"), inBuf: `"AQIDBA=="`, inVal: new([4]byte), want: addr([4]byte{1, 2, 3, 4}), }, { name: name("Bytes/ByteArray4/Invalid"), inBuf: `"$$$$$$=="`, inVal: new([4]byte), want: addr([4]byte{}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: array4ByteType, Err: func() error { _, err := base64.StdEncoding.Decode(make([]byte, 4), []byte("$$$$$$==")) return err }()}, }, { name: name("Bytes/ByteArray4/Underflow"), inBuf: `"AQID"`, inVal: new([4]byte), want: addr([4]byte{}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: array4ByteType, Err: errors.New("decoded base64 length of 3 mismatches array length of 4")}, }, { name: name("Bytes/ByteArray4/Overflow"), inBuf: `"AQIDBAU="`, inVal: new([4]byte), want: addr([4]byte{}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: array4ByteType, Err: errors.New("decoded base64 length of 5 mismatches array length of 4")}, }, { // NOTE: []namedByte is not assignable to []byte, // so the following should be treated as a array of uints. name: name("Bytes/NamedByteArray"), inBuf: `[104,101,108,108,111]`, inVal: new([5]namedByte), want: addr([5]namedByte{'h', 'e', 'l', 'l', 'o'}), }, { name: name("Bytes/Valid/Denormalized"), inBuf: `"AR=="`, inVal: new([]byte), want: addr([]byte{1}), }, { name: name("Bytes/Invalid/Unpadded1"), inBuf: `"AQ="`, inVal: addr([]byte("nochange")), want: addr([]byte("nochange")), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: func() error { _, err := base64.StdEncoding.Decode(make([]byte, 0), []byte("AQ=")) return err }()}, }, { name: name("Bytes/Invalid/Unpadded2"), inBuf: `"AQ"`, inVal: addr([]byte("nochange")), want: addr([]byte("nochange")), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: func() error { _, err := base64.StdEncoding.Decode(make([]byte, 0), []byte("AQ")) return err }()}, }, { name: name("Bytes/Invalid/Character"), inBuf: `"@@@@"`, inVal: addr([]byte("nochange")), want: addr([]byte("nochange")), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: func() error { _, err := base64.StdEncoding.Decode(make([]byte, 3), []byte("@@@@")) return err }()}, }, { name: name("Bytes/Invalid/Bool"), inBuf: `true`, inVal: addr([]byte("nochange")), want: addr([]byte("nochange")), wantErr: &SemanticError{action: "unmarshal", JSONKind: 't', GoType: bytesType}, }, { name: name("Bytes/Invalid/Number"), inBuf: `0`, inVal: addr([]byte("nochange")), want: addr([]byte("nochange")), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: bytesType}, }, { name: name("Bytes/Invalid/Object"), inBuf: `{}`, inVal: addr([]byte("nochange")), want: addr([]byte("nochange")), wantErr: &SemanticError{action: "unmarshal", JSONKind: '{', GoType: bytesType}, }, { name: name("Bytes/Invalid/Array"), inBuf: `[]`, inVal: addr([]byte("nochange")), want: addr([]byte("nochange")), wantErr: &SemanticError{action: "unmarshal", JSONKind: '[', GoType: bytesType}, }, { name: name("Bytes/IgnoreInvalidFormat"), uopts: UnmarshalOptions{formatDepth: 1000, format: "invalid"}, inBuf: `"aGVsbG8="`, inVal: new([]byte), want: addr([]byte("hello")), }, { name: name("Ints/Null"), inBuf: `null`, inVal: addr(int(1)), want: addr(int(0)), }, { name: name("Ints/Int"), inBuf: `1`, inVal: addr(int(0)), want: addr(int(1)), }, { name: name("Ints/Int8/MinOverflow"), inBuf: `-129`, inVal: addr(int8(-1)), want: addr(int8(-1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: int8Type, Err: fmt.Errorf(`cannot parse "-129" as signed integer: %w`, strconv.ErrRange)}, }, { name: name("Ints/Int8/Min"), inBuf: `-128`, inVal: addr(int8(0)), want: addr(int8(-128)), }, { name: name("Ints/Int8/Max"), inBuf: `127`, inVal: addr(int8(0)), want: addr(int8(127)), }, { name: name("Ints/Int8/MaxOverflow"), inBuf: `128`, inVal: addr(int8(-1)), want: addr(int8(-1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: int8Type, Err: fmt.Errorf(`cannot parse "128" as signed integer: %w`, strconv.ErrRange)}, }, { name: name("Ints/Int16/MinOverflow"), inBuf: `-32769`, inVal: addr(int16(-1)), want: addr(int16(-1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: int16Type, Err: fmt.Errorf(`cannot parse "-32769" as signed integer: %w`, strconv.ErrRange)}, }, { name: name("Ints/Int16/Min"), inBuf: `-32768`, inVal: addr(int16(0)), want: addr(int16(-32768)), }, { name: name("Ints/Int16/Max"), inBuf: `32767`, inVal: addr(int16(0)), want: addr(int16(32767)), }, { name: name("Ints/Int16/MaxOverflow"), inBuf: `32768`, inVal: addr(int16(-1)), want: addr(int16(-1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: int16Type, Err: fmt.Errorf(`cannot parse "32768" as signed integer: %w`, strconv.ErrRange)}, }, { name: name("Ints/Int32/MinOverflow"), inBuf: `-2147483649`, inVal: addr(int32(-1)), want: addr(int32(-1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: int32Type, Err: fmt.Errorf(`cannot parse "-2147483649" as signed integer: %w`, strconv.ErrRange)}, }, { name: name("Ints/Int32/Min"), inBuf: `-2147483648`, inVal: addr(int32(0)), want: addr(int32(-2147483648)), }, { name: name("Ints/Int32/Max"), inBuf: `2147483647`, inVal: addr(int32(0)), want: addr(int32(2147483647)), }, { name: name("Ints/Int32/MaxOverflow"), inBuf: `2147483648`, inVal: addr(int32(-1)), want: addr(int32(-1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: int32Type, Err: fmt.Errorf(`cannot parse "2147483648" as signed integer: %w`, strconv.ErrRange)}, }, { name: name("Ints/Int64/MinOverflow"), inBuf: `-9223372036854775809`, inVal: addr(int64(-1)), want: addr(int64(-1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: int64Type, Err: fmt.Errorf(`cannot parse "-9223372036854775809" as signed integer: %w`, strconv.ErrRange)}, }, { name: name("Ints/Int64/Min"), inBuf: `-9223372036854775808`, inVal: addr(int64(0)), want: addr(int64(-9223372036854775808)), }, { name: name("Ints/Int64/Max"), inBuf: `9223372036854775807`, inVal: addr(int64(0)), want: addr(int64(9223372036854775807)), }, { name: name("Ints/Int64/MaxOverflow"), inBuf: `9223372036854775808`, inVal: addr(int64(-1)), want: addr(int64(-1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: int64Type, Err: fmt.Errorf(`cannot parse "9223372036854775808" as signed integer: %w`, strconv.ErrRange)}, }, { name: name("Ints/Named"), inBuf: `-6464`, inVal: addr(namedInt64(0)), want: addr(namedInt64(-6464)), }, { name: name("Ints/Stringified"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"-6464"`, inVal: new(int), want: addr(int(-6464)), }, { name: name("Ints/Escaped"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"\u002d\u0036\u0034\u0036\u0034"`, inVal: new(int), want: addr(int(-6464)), }, { name: name("Ints/Valid/NegativeZero"), inBuf: `-0`, inVal: addr(int(1)), want: addr(int(0)), }, { name: name("Ints/Invalid/Fraction"), inBuf: `1.0`, inVal: addr(int(-1)), want: addr(int(-1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: intType, Err: fmt.Errorf(`cannot parse "1.0" as signed integer: %w`, strconv.ErrSyntax)}, }, { name: name("Ints/Invalid/Exponent"), inBuf: `1e0`, inVal: addr(int(-1)), want: addr(int(-1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: intType, Err: fmt.Errorf(`cannot parse "1e0" as signed integer: %w`, strconv.ErrSyntax)}, }, { name: name("Ints/Invalid/StringifiedFraction"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"1.0"`, inVal: addr(int(-1)), want: addr(int(-1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: intType, Err: fmt.Errorf(`cannot parse "1.0" as signed integer: %w`, strconv.ErrSyntax)}, }, { name: name("Ints/Invalid/StringifiedExponent"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"1e0"`, inVal: addr(int(-1)), want: addr(int(-1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: intType, Err: fmt.Errorf(`cannot parse "1e0" as signed integer: %w`, strconv.ErrSyntax)}, }, { name: name("Ints/Invalid/Overflow"), inBuf: `100000000000000000000000000000`, inVal: addr(int(-1)), want: addr(int(-1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: intType, Err: fmt.Errorf(`cannot parse "100000000000000000000000000000" as signed integer: %w`, strconv.ErrRange)}, }, { name: name("Ints/Invalid/OverflowSyntax"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"100000000000000000000000000000x"`, inVal: addr(int(-1)), want: addr(int(-1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: intType, Err: fmt.Errorf(`cannot parse "100000000000000000000000000000x" as signed integer: %w`, strconv.ErrSyntax)}, }, { name: name("Ints/Invalid/Whitespace"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"0 "`, inVal: addr(int(-1)), want: addr(int(-1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: intType, Err: fmt.Errorf(`cannot parse "0 " as signed integer: %w`, strconv.ErrSyntax)}, }, { name: name("Ints/Invalid/Bool"), inBuf: `true`, inVal: addr(int(-1)), want: addr(int(-1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: 't', GoType: intType}, }, { name: name("Ints/Invalid/String"), inBuf: `"0"`, inVal: addr(int(-1)), want: addr(int(-1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: intType}, }, { name: name("Ints/Invalid/Object"), inBuf: `{}`, inVal: addr(int(-1)), want: addr(int(-1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '{', GoType: intType}, }, { name: name("Ints/Invalid/Array"), inBuf: `[]`, inVal: addr(int(-1)), want: addr(int(-1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '[', GoType: intType}, }, { name: name("Ints/IgnoreInvalidFormat"), uopts: UnmarshalOptions{formatDepth: 1000, format: "invalid"}, inBuf: `1`, inVal: addr(int(0)), want: addr(int(1)), }, { name: name("Uints/Null"), inBuf: `null`, inVal: addr(uint(1)), want: addr(uint(0)), }, { name: name("Uints/Uint"), inBuf: `1`, inVal: addr(uint(0)), want: addr(uint(1)), }, { name: name("Uints/Uint8/Min"), inBuf: `0`, inVal: addr(uint8(1)), want: addr(uint8(0)), }, { name: name("Uints/Uint8/Max"), inBuf: `255`, inVal: addr(uint8(0)), want: addr(uint8(255)), }, { name: name("Uints/Uint8/MaxOverflow"), inBuf: `256`, inVal: addr(uint8(1)), want: addr(uint8(1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: uint8Type, Err: fmt.Errorf(`cannot parse "256" as unsigned integer: %w`, strconv.ErrRange)}, }, { name: name("Uints/Uint16/Min"), inBuf: `0`, inVal: addr(uint16(1)), want: addr(uint16(0)), }, { name: name("Uints/Uint16/Max"), inBuf: `65535`, inVal: addr(uint16(0)), want: addr(uint16(65535)), }, { name: name("Uints/Uint16/MaxOverflow"), inBuf: `65536`, inVal: addr(uint16(1)), want: addr(uint16(1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: uint16Type, Err: fmt.Errorf(`cannot parse "65536" as unsigned integer: %w`, strconv.ErrRange)}, }, { name: name("Uints/Uint32/Min"), inBuf: `0`, inVal: addr(uint32(1)), want: addr(uint32(0)), }, { name: name("Uints/Uint32/Max"), inBuf: `4294967295`, inVal: addr(uint32(0)), want: addr(uint32(4294967295)), }, { name: name("Uints/Uint32/MaxOverflow"), inBuf: `4294967296`, inVal: addr(uint32(1)), want: addr(uint32(1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: uint32Type, Err: fmt.Errorf(`cannot parse "4294967296" as unsigned integer: %w`, strconv.ErrRange)}, }, { name: name("Uints/Uint64/Min"), inBuf: `0`, inVal: addr(uint64(1)), want: addr(uint64(0)), }, { name: name("Uints/Uint64/Max"), inBuf: `18446744073709551615`, inVal: addr(uint64(0)), want: addr(uint64(18446744073709551615)), }, { name: name("Uints/Uint64/MaxOverflow"), inBuf: `18446744073709551616`, inVal: addr(uint64(1)), want: addr(uint64(1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: uint64Type, Err: fmt.Errorf(`cannot parse "18446744073709551616" as unsigned integer: %w`, strconv.ErrRange)}, }, { name: name("Uints/Named"), inBuf: `6464`, inVal: addr(namedUint64(0)), want: addr(namedUint64(6464)), }, { name: name("Uints/Stringified"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"6464"`, inVal: new(uint), want: addr(uint(6464)), }, { name: name("Uints/Escaped"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"\u0036\u0034\u0036\u0034"`, inVal: new(uint), want: addr(uint(6464)), }, { name: name("Uints/Invalid/NegativeOne"), inBuf: `-1`, inVal: addr(uint(1)), want: addr(uint(1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: uintType, Err: fmt.Errorf(`cannot parse "-1" as unsigned integer: %w`, strconv.ErrSyntax)}, }, { name: name("Uints/Invalid/NegativeZero"), inBuf: `-0`, inVal: addr(uint(1)), want: addr(uint(1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: uintType, Err: fmt.Errorf(`cannot parse "-0" as unsigned integer: %w`, strconv.ErrSyntax)}, }, { name: name("Uints/Invalid/Fraction"), inBuf: `1.0`, inVal: addr(uint(10)), want: addr(uint(10)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: uintType, Err: fmt.Errorf(`cannot parse "1.0" as unsigned integer: %w`, strconv.ErrSyntax)}, }, { name: name("Uints/Invalid/Exponent"), inBuf: `1e0`, inVal: addr(uint(10)), want: addr(uint(10)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: uintType, Err: fmt.Errorf(`cannot parse "1e0" as unsigned integer: %w`, strconv.ErrSyntax)}, }, { name: name("Uints/Invalid/StringifiedFraction"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"1.0"`, inVal: addr(uint(10)), want: addr(uint(10)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: uintType, Err: fmt.Errorf(`cannot parse "1.0" as unsigned integer: %w`, strconv.ErrSyntax)}, }, { name: name("Uints/Invalid/StringifiedExponent"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"1e0"`, inVal: addr(uint(10)), want: addr(uint(10)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: uintType, Err: fmt.Errorf(`cannot parse "1e0" as unsigned integer: %w`, strconv.ErrSyntax)}, }, { name: name("Uints/Invalid/Overflow"), inBuf: `100000000000000000000000000000`, inVal: addr(uint(1)), want: addr(uint(1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: uintType, Err: fmt.Errorf(`cannot parse "100000000000000000000000000000" as unsigned integer: %w`, strconv.ErrRange)}, }, { name: name("Uints/Invalid/OverflowSyntax"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"100000000000000000000000000000x"`, inVal: addr(uint(1)), want: addr(uint(1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: uintType, Err: fmt.Errorf(`cannot parse "100000000000000000000000000000x" as unsigned integer: %w`, strconv.ErrSyntax)}, }, { name: name("Uints/Invalid/Whitespace"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"0 "`, inVal: addr(uint(1)), want: addr(uint(1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: uintType, Err: fmt.Errorf(`cannot parse "0 " as unsigned integer: %w`, strconv.ErrSyntax)}, }, { name: name("Uints/Invalid/Bool"), inBuf: `true`, inVal: addr(uint(1)), want: addr(uint(1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: 't', GoType: uintType}, }, { name: name("Uints/Invalid/String"), inBuf: `"0"`, inVal: addr(uint(1)), want: addr(uint(1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: uintType}, }, { name: name("Uints/Invalid/Object"), inBuf: `{}`, inVal: addr(uint(1)), want: addr(uint(1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '{', GoType: uintType}, }, { name: name("Uints/Invalid/Array"), inBuf: `[]`, inVal: addr(uint(1)), want: addr(uint(1)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '[', GoType: uintType}, }, { name: name("Uints/IgnoreInvalidFormat"), uopts: UnmarshalOptions{formatDepth: 1000, format: "invalid"}, inBuf: `1`, inVal: addr(uint(0)), want: addr(uint(1)), }, { name: name("Floats/Null"), inBuf: `null`, inVal: addr(float64(64.64)), want: addr(float64(0)), }, { name: name("Floats/Float32/Pi"), inBuf: `3.14159265358979323846264338327950288419716939937510582097494459`, inVal: addr(float32(32.32)), want: addr(float32(math.Pi)), }, { name: name("Floats/Float32/Underflow"), inBuf: `-1e1000`, inVal: addr(float32(32.32)), want: addr(float32(-math.MaxFloat32)), }, { name: name("Floats/Float32/Overflow"), inBuf: `-1e1000`, inVal: addr(float32(32.32)), want: addr(float32(-math.MaxFloat32)), }, { name: name("Floats/Float64/Pi"), inBuf: `3.14159265358979323846264338327950288419716939937510582097494459`, inVal: addr(float64(64.64)), want: addr(float64(math.Pi)), }, { name: name("Floats/Float64/Underflow"), inBuf: `-1e1000`, inVal: addr(float64(64.64)), want: addr(float64(-math.MaxFloat64)), }, { name: name("Floats/Float64/Overflow"), inBuf: `-1e1000`, inVal: addr(float64(64.64)), want: addr(float64(-math.MaxFloat64)), }, { name: name("Floats/Named"), inBuf: `64.64`, inVal: addr(namedFloat64(0)), want: addr(namedFloat64(64.64)), }, { name: name("Floats/Stringified"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"64.64"`, inVal: new(float64), want: addr(float64(64.64)), }, { name: name("Floats/Escaped"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"\u0036\u0034\u002e\u0036\u0034"`, inVal: new(float64), want: addr(float64(64.64)), }, { name: name("Floats/Invalid/NaN"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"NaN"`, inVal: addr(float64(64.64)), want: addr(float64(64.64)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: float64Type, Err: fmt.Errorf(`cannot parse "NaN" as JSON number: %w`, strconv.ErrSyntax)}, }, { name: name("Floats/Invalid/Infinity"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"Infinity"`, inVal: addr(float64(64.64)), want: addr(float64(64.64)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: float64Type, Err: fmt.Errorf(`cannot parse "Infinity" as JSON number: %w`, strconv.ErrSyntax)}, }, { name: name("Floats/Invalid/Whitespace"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"1 "`, inVal: addr(float64(64.64)), want: addr(float64(64.64)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: float64Type, Err: fmt.Errorf(`cannot parse "1 " as JSON number: %w`, strconv.ErrSyntax)}, }, { name: name("Floats/Invalid/GoSyntax"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `"1p-2"`, inVal: addr(float64(64.64)), want: addr(float64(64.64)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: float64Type, Err: fmt.Errorf(`cannot parse "1p-2" as JSON number: %w`, strconv.ErrSyntax)}, }, { name: name("Floats/Invalid/Bool"), inBuf: `true`, inVal: addr(float64(64.64)), want: addr(float64(64.64)), wantErr: &SemanticError{action: "unmarshal", JSONKind: 't', GoType: float64Type}, }, { name: name("Floats/Invalid/String"), inBuf: `"0"`, inVal: addr(float64(64.64)), want: addr(float64(64.64)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: float64Type}, }, { name: name("Floats/Invalid/Object"), inBuf: `{}`, inVal: addr(float64(64.64)), want: addr(float64(64.64)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '{', GoType: float64Type}, }, { name: name("Floats/Invalid/Array"), inBuf: `[]`, inVal: addr(float64(64.64)), want: addr(float64(64.64)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '[', GoType: float64Type}, }, { name: name("Floats/IgnoreInvalidFormat"), uopts: UnmarshalOptions{formatDepth: 1000, format: "invalid"}, inBuf: `1`, inVal: addr(float64(0)), want: addr(float64(1)), }, { name: name("Maps/Null"), inBuf: `null`, inVal: addr(map[string]string{"key": "value"}), want: new(map[string]string), }, { name: name("Maps/InvalidKey/Bool"), inBuf: `{"true":"false"}`, inVal: new(map[bool]bool), want: addr(make(map[bool]bool)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: boolType}, }, { name: name("Maps/InvalidKey/NamedBool"), inBuf: `{"true":"false"}`, inVal: new(map[namedBool]bool), want: addr(make(map[namedBool]bool)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: namedBoolType}, }, { name: name("Maps/InvalidKey/Array"), inBuf: `{"key":"value"}`, inVal: new(map[[1]string]string), want: addr(make(map[[1]string]string)), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: array1StringType}, }, { name: name("Maps/InvalidKey/Channel"), inBuf: `{"key":"value"}`, inVal: new(map[chan string]string), want: addr(make(map[chan string]string)), wantErr: &SemanticError{action: "unmarshal", GoType: chanStringType}, }, { name: name("Maps/ValidKey/Int"), inBuf: `{"0":0,"-1":1,"2":2,"-3":3}`, inVal: new(map[int]int), want: addr(map[int]int{0: 0, -1: 1, 2: 2, -3: 3}), }, { name: name("Maps/ValidKey/NamedInt"), inBuf: `{"0":0,"-1":1,"2":2,"-3":3}`, inVal: new(map[namedInt64]int), want: addr(map[namedInt64]int{0: 0, -1: 1, 2: 2, -3: 3}), }, { name: name("Maps/ValidKey/Uint"), inBuf: `{"0":0,"1":1,"2":2,"3":3}`, inVal: new(map[uint]uint), want: addr(map[uint]uint{0: 0, 1: 1, 2: 2, 3: 3}), }, { name: name("Maps/ValidKey/NamedUint"), inBuf: `{"0":0,"1":1,"2":2,"3":3}`, inVal: new(map[namedUint64]uint), want: addr(map[namedUint64]uint{0: 0, 1: 1, 2: 2, 3: 3}), }, { name: name("Maps/ValidKey/Float"), inBuf: `{"1.234":1.234,"12.34":12.34,"123.4":123.4}`, inVal: new(map[float64]float64), want: addr(map[float64]float64{1.234: 1.234, 12.34: 12.34, 123.4: 123.4}), }, { name: name("Maps/DuplicateName/Int"), inBuf: `{"0":1,"-0":-1}`, inVal: new(map[int]int), want: addr(map[int]int{0: 1}), wantErr: (&SyntacticError{str: `duplicate name "-0" in object`}).withOffset(int64(len(`{"0":1,`))), }, { name: name("Maps/DuplicateName/Int/AllowDuplicateNames"), dopts: DecodeOptions{AllowDuplicateNames: true}, inBuf: `{"0":1,"-0":-1}`, inVal: new(map[int]int), want: addr(map[int]int{0: -1}), // latter takes precedence }, { name: name("Maps/DuplicateName/Int/OverwriteExisting"), inBuf: `{"-0":-1}`, inVal: addr(map[int]int{0: 1}), want: addr(map[int]int{0: -1}), }, { name: name("Maps/DuplicateName/Float"), inBuf: `{"1.0":"1.0","1":"1","1e0":"1e0"}`, inVal: new(map[float64]string), want: addr(map[float64]string{1: "1.0"}), wantErr: (&SyntacticError{str: `duplicate name "1" in object`}).withOffset(int64(len(`{"1.0":"1.0",`))), }, { name: name("Maps/DuplicateName/Float/AllowDuplicateNames"), dopts: DecodeOptions{AllowDuplicateNames: true}, inBuf: `{"1.0":"1.0","1":"1","1e0":"1e0"}`, inVal: new(map[float64]string), want: addr(map[float64]string{1: "1e0"}), // latter takes precedence }, { name: name("Maps/DuplicateName/Float/OverwriteExisting"), inBuf: `{"1.0":"1.0"}`, inVal: addr(map[float64]string{1: "1"}), want: addr(map[float64]string{1: "1.0"}), }, { name: name("Maps/DuplicateName/NoCaseString"), inBuf: `{"hello":"hello","HELLO":"HELLO"}`, inVal: new(map[nocaseString]string), want: addr(map[nocaseString]string{"hello": "hello"}), wantErr: (&SyntacticError{str: `duplicate name "HELLO" in object`}).withOffset(int64(len(`{"hello":"hello",`))), }, { name: name("Maps/DuplicateName/NoCaseString/AllowDuplicateNames"), dopts: DecodeOptions{AllowDuplicateNames: true}, inBuf: `{"hello":"hello","HELLO":"HELLO"}`, inVal: new(map[nocaseString]string), want: addr(map[nocaseString]string{"hello": "HELLO"}), // latter takes precedence }, { name: name("Maps/DuplicateName/NoCaseString/OverwriteExisting"), dopts: DecodeOptions{AllowDuplicateNames: true}, inBuf: `{"HELLO":"HELLO"}`, inVal: addr(map[nocaseString]string{"hello": "hello"}), want: addr(map[nocaseString]string{"hello": "HELLO"}), }, { name: name("Maps/ValidKey/Interface"), inBuf: `{"false":"false","true":"true","string":"string","0":"0","[]":"[]","{}":"{}"}`, inVal: new(map[any]string), want: addr(map[any]string{ "false": "false", "true": "true", "string": "string", "0": "0", "[]": "[]", "{}": "{}", }), }, { name: name("Maps/InvalidValue/Channel"), inBuf: `{"key":"value"}`, inVal: new(map[string]chan string), want: addr(map[string]chan string{ "key": nil, }), wantErr: &SemanticError{action: "unmarshal", GoType: chanStringType}, }, { name: name("Maps/RecursiveMap"), inBuf: `{"buzz":{},"fizz":{"bar":{},"foo":{}}}`, inVal: new(recursiveMap), want: addr(recursiveMap{ "fizz": { "foo": {}, "bar": {}, }, "buzz": {}, }), }, { // NOTE: The semantics differs from v1, // where existing map entries were not merged into. // See https://go.dev/issue/31924. name: name("Maps/Merge"), dopts: DecodeOptions{AllowDuplicateNames: true}, inBuf: `{"k1":{"k2":"v2"},"k2":{"k1":"v1"},"k2":{"k2":"v2"}}`, inVal: addr(map[string]map[string]string{ "k1": {"k1": "v1"}, }), want: addr(map[string]map[string]string{ "k1": {"k1": "v1", "k2": "v2"}, "k2": {"k1": "v1", "k2": "v2"}, }), }, { name: name("Maps/Invalid/Bool"), inBuf: `true`, inVal: addr(map[string]string{"key": "value"}), want: addr(map[string]string{"key": "value"}), wantErr: &SemanticError{action: "unmarshal", JSONKind: 't', GoType: mapStringStringType}, }, { name: name("Maps/Invalid/String"), inBuf: `""`, inVal: addr(map[string]string{"key": "value"}), want: addr(map[string]string{"key": "value"}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: mapStringStringType}, }, { name: name("Maps/Invalid/Number"), inBuf: `0`, inVal: addr(map[string]string{"key": "value"}), want: addr(map[string]string{"key": "value"}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: mapStringStringType}, }, { name: name("Maps/Invalid/Array"), inBuf: `[]`, inVal: addr(map[string]string{"key": "value"}), want: addr(map[string]string{"key": "value"}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '[', GoType: mapStringStringType}, }, { name: name("Maps/IgnoreInvalidFormat"), uopts: UnmarshalOptions{formatDepth: 1000, format: "invalid"}, inBuf: `{"hello":"goodbye"}`, inVal: addr(map[string]string{}), want: addr(map[string]string{"hello": "goodbye"}), }, { name: name("Structs/Null"), inBuf: `null`, inVal: addr(structAll{String: "something"}), want: addr(structAll{}), }, { name: name("Structs/Empty"), inBuf: `{}`, inVal: addr(structAll{ String: "hello", Map: map[string]string{}, Slice: []string{}, }), want: addr(structAll{ String: "hello", Map: map[string]string{}, Slice: []string{}, }), }, { name: name("Structs/Normal"), inBuf: `{ "Bool": true, "String": "hello", "Bytes": "AQID", "Int": -64, "Uint": 64, "Float": 3.14159, "Map": {"key": "value"}, "StructScalars": { "Bool": true, "String": "hello", "Bytes": "AQID", "Int": -64, "Uint": 64, "Float": 3.14159 }, "StructMaps": { "MapBool": {"": true}, "MapString": {"": "hello"}, "MapBytes": {"": "AQID"}, "MapInt": {"": -64}, "MapUint": {"": 64}, "MapFloat": {"": 3.14159} }, "StructSlices": { "SliceBool": [true], "SliceString": ["hello"], "SliceBytes": ["AQID"], "SliceInt": [-64], "SliceUint": [64], "SliceFloat": [3.14159] }, "Slice": ["fizz","buzz"], "Array": ["goodbye"], "Pointer": {}, "Interface": null }`, inVal: new(structAll), want: addr(structAll{ Bool: true, String: "hello", Bytes: []byte{1, 2, 3}, Int: -64, Uint: +64, Float: 3.14159, Map: map[string]string{"key": "value"}, StructScalars: structScalars{ Bool: true, String: "hello", Bytes: []byte{1, 2, 3}, Int: -64, Uint: +64, Float: 3.14159, }, StructMaps: structMaps{ MapBool: map[string]bool{"": true}, MapString: map[string]string{"": "hello"}, MapBytes: map[string][]byte{"": {1, 2, 3}}, MapInt: map[string]int64{"": -64}, MapUint: map[string]uint64{"": +64}, MapFloat: map[string]float64{"": 3.14159}, }, StructSlices: structSlices{ SliceBool: []bool{true}, SliceString: []string{"hello"}, SliceBytes: [][]byte{{1, 2, 3}}, SliceInt: []int64{-64}, SliceUint: []uint64{+64}, SliceFloat: []float64{3.14159}, }, Slice: []string{"fizz", "buzz"}, Array: [1]string{"goodbye"}, Pointer: new(structAll), }), }, { name: name("Structs/Merge"), inBuf: `{ "Bool": false, "String": "goodbye", "Int": -64, "Float": 3.14159, "Map": {"k2": "v2"}, "StructScalars": { "Bool": true, "String": "hello", "Bytes": "AQID", "Int": -64 }, "StructMaps": { "MapBool": {"": true}, "MapString": {"": "hello"}, "MapBytes": {"": "AQID"}, "MapInt": {"": -64}, "MapUint": {"": 64}, "MapFloat": {"": 3.14159} }, "StructSlices": { "SliceString": ["hello"], "SliceBytes": ["AQID"], "SliceInt": [-64], "SliceUint": [64] }, "Slice": ["fizz","buzz"], "Array": ["goodbye"], "Pointer": {}, "Interface": {"k2":"v2"} }`, inVal: addr(structAll{ Bool: true, String: "hello", Bytes: []byte{1, 2, 3}, Uint: +64, Float: math.NaN(), Map: map[string]string{"k1": "v1"}, StructScalars: structScalars{ String: "hello", Bytes: make([]byte, 2, 4), Uint: +64, Float: 3.14159, }, StructMaps: structMaps{ MapBool: map[string]bool{"": false}, MapBytes: map[string][]byte{"": {}}, MapInt: map[string]int64{"": 123}, MapFloat: map[string]float64{"": math.Inf(+1)}, }, StructSlices: structSlices{ SliceBool: []bool{true}, SliceBytes: [][]byte{nil, nil}, SliceInt: []int64{-123}, SliceUint: []uint64{+123}, SliceFloat: []float64{3.14159}, }, Slice: []string{"buzz", "fizz", "gizz"}, Array: [1]string{"hello"}, Pointer: new(structAll), Interface: map[string]string{"k1": "v1"}, }), want: addr(structAll{ Bool: false, String: "goodbye", Bytes: []byte{1, 2, 3}, Int: -64, Uint: +64, Float: 3.14159, Map: map[string]string{"k1": "v1", "k2": "v2"}, StructScalars: structScalars{ Bool: true, String: "hello", Bytes: []byte{1, 2, 3}, Int: -64, Uint: +64, Float: 3.14159, }, StructMaps: structMaps{ MapBool: map[string]bool{"": true}, MapString: map[string]string{"": "hello"}, MapBytes: map[string][]byte{"": {1, 2, 3}}, MapInt: map[string]int64{"": -64}, MapUint: map[string]uint64{"": +64}, MapFloat: map[string]float64{"": 3.14159}, }, StructSlices: structSlices{ SliceBool: []bool{true}, SliceString: []string{"hello"}, SliceBytes: [][]byte{{1, 2, 3}}, SliceInt: []int64{-64}, SliceUint: []uint64{+64}, SliceFloat: []float64{3.14159}, }, Slice: []string{"fizz", "buzz"}, Array: [1]string{"goodbye"}, Pointer: new(structAll), Interface: map[string]string{"k1": "v1", "k2": "v2"}, }), }, { name: name("Structs/Stringified/Normal"), inBuf: `{ "Bool": true, "String": "hello", "Bytes": "AQID", "Int": -64, "Uint": 64, "Float": 3.14159, "Map": {"key": "value"}, "StructScalars": { "Bool": true, "String": "hello", "Bytes": "AQID", "Int": -64, "Uint": 64, "Float": 3.14159 }, "StructMaps": { "MapBool": {"": true}, "MapString": {"": "hello"}, "MapBytes": {"": "AQID"}, "MapInt": {"": -64}, "MapUint": {"": 64}, "MapFloat": {"": 3.14159} }, "StructSlices": { "SliceBool": [true], "SliceString": ["hello"], "SliceBytes": ["AQID"], "SliceInt": [-64], "SliceUint": [64], "SliceFloat": [3.14159] }, "Slice": ["fizz","buzz"], "Array": ["goodbye"], "Pointer": {}, "Interface": null }`, inVal: new(structStringifiedAll), want: addr(structStringifiedAll{ Bool: true, String: "hello", Bytes: []byte{1, 2, 3}, Int: -64, // may be stringified Uint: +64, // may be stringified Float: 3.14159, // may be stringified Map: map[string]string{"key": "value"}, StructScalars: structScalars{ Bool: true, String: "hello", Bytes: []byte{1, 2, 3}, Int: -64, // may be stringified Uint: +64, // may be stringified Float: 3.14159, // may be stringified }, StructMaps: structMaps{ MapBool: map[string]bool{"": true}, MapString: map[string]string{"": "hello"}, MapBytes: map[string][]byte{"": {1, 2, 3}}, MapInt: map[string]int64{"": -64}, // may be stringified MapUint: map[string]uint64{"": +64}, // may be stringified MapFloat: map[string]float64{"": 3.14159}, // may be stringified }, StructSlices: structSlices{ SliceBool: []bool{true}, SliceString: []string{"hello"}, SliceBytes: [][]byte{{1, 2, 3}}, SliceInt: []int64{-64}, // may be stringified SliceUint: []uint64{+64}, // may be stringified SliceFloat: []float64{3.14159}, // may be stringified }, Slice: []string{"fizz", "buzz"}, Array: [1]string{"goodbye"}, Pointer: new(structStringifiedAll), // may be stringified }), }, { name: name("Structs/Stringified/String"), inBuf: `{ "Bool": true, "String": "hello", "Bytes": "AQID", "Int": "-64", "Uint": "64", "Float": "3.14159", "Map": {"key": "value"}, "StructScalars": { "Bool": true, "String": "hello", "Bytes": "AQID", "Int": "-64", "Uint": "64", "Float": "3.14159" }, "StructMaps": { "MapBool": {"": true}, "MapString": {"": "hello"}, "MapBytes": {"": "AQID"}, "MapInt": {"": "-64"}, "MapUint": {"": "64"}, "MapFloat": {"": "3.14159"} }, "StructSlices": { "SliceBool": [true], "SliceString": ["hello"], "SliceBytes": ["AQID"], "SliceInt": ["-64"], "SliceUint": ["64"], "SliceFloat": ["3.14159"] }, "Slice": ["fizz","buzz"], "Array": ["goodbye"], "Pointer": {}, "Interface": null }`, inVal: new(structStringifiedAll), want: addr(structStringifiedAll{ Bool: true, String: "hello", Bytes: []byte{1, 2, 3}, Int: -64, // may be stringified Uint: +64, // may be stringified Float: 3.14159, // may be stringified Map: map[string]string{"key": "value"}, StructScalars: structScalars{ Bool: true, String: "hello", Bytes: []byte{1, 2, 3}, Int: -64, // may be stringified Uint: +64, // may be stringified Float: 3.14159, // may be stringified }, StructMaps: structMaps{ MapBool: map[string]bool{"": true}, MapString: map[string]string{"": "hello"}, MapBytes: map[string][]byte{"": {1, 2, 3}}, MapInt: map[string]int64{"": -64}, // may be stringified MapUint: map[string]uint64{"": +64}, // may be stringified MapFloat: map[string]float64{"": 3.14159}, // may be stringified }, StructSlices: structSlices{ SliceBool: []bool{true}, SliceString: []string{"hello"}, SliceBytes: [][]byte{{1, 2, 3}}, SliceInt: []int64{-64}, // may be stringified SliceUint: []uint64{+64}, // may be stringified SliceFloat: []float64{3.14159}, // may be stringified }, Slice: []string{"fizz", "buzz"}, Array: [1]string{"goodbye"}, Pointer: new(structStringifiedAll), // may be stringified }), }, { name: name("Structs/Format/Bytes"), inBuf: `{ "Base16": "0123456789abcdef", "Base32": "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567", "Base32Hex": "0123456789ABCDEFGHIJKLMNOPQRSTUV", "Base64": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", "Base64URL": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", "Array": [1, 2, 3, 4] }`, inVal: new(structFormatBytes), want: addr(structFormatBytes{ Base16: []byte("\x01\x23\x45\x67\x89\xab\xcd\xef"), Base32: []byte("\x00D2\x14\xc7BT\xb65Ï„e:V\xd7\xc6u\xbew\xdf"), Base32Hex: []byte("\x00D2\x14\xc7BT\xb65Ï„e:V\xd7\xc6u\xbew\xdf"), Base64: []byte("\x00\x10\x83\x10Q\x87 \x92\x8b0ÓA\x14\x93QU\x97a\x96\x9bqן\x82\x18\xa3\x92Y\xa7\xa2\x9a\xab\xb2Û¯\xc3\x1c\xb3\xd3]\xb7ãž»\xf3ß¿"), Base64URL: []byte("\x00\x10\x83\x10Q\x87 \x92\x8b0ÓA\x14\x93QU\x97a\x96\x9bqן\x82\x18\xa3\x92Y\xa7\xa2\x9a\xab\xb2Û¯\xc3\x1c\xb3\xd3]\xb7ãž»\xf3ß¿"), Array: []byte{1, 2, 3, 4}, }), }, { name: name("Structs/Format/Bytes/Array"), uopts: UnmarshalOptions{Unmarshalers: UnmarshalFuncV1(func(b []byte, v *byte) error { if string(b) == "true" { *v = 1 } else { *v = 0 } return nil })}, inBuf: `{"Array":[false,true,false,true,false,true]}`, inVal: new(struct { Array []byte `json:",format:array"` }), want: addr(struct { Array []byte `json:",format:array"` }{ Array: []byte{0, 1, 0, 1, 0, 1}, }), }, { name: name("Structs/Format/Bytes/Invalid/Base16/WrongKind"), inBuf: `{"Base16": [1,2,3,4]}`, inVal: new(structFormatBytes), wantErr: &SemanticError{action: "unmarshal", JSONKind: '[', GoType: bytesType}, }, { name: name("Structs/Format/Bytes/Invalid/Base16/AllPadding"), inBuf: `{"Base16": "===="}`, inVal: new(structFormatBytes), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: func() error { _, err := hex.Decode(make([]byte, 2), []byte("=====")) return err }()}, }, { name: name("Structs/Format/Bytes/Invalid/Base16/EvenPadding"), inBuf: `{"Base16": "0123456789abcdef="}`, inVal: new(structFormatBytes), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: func() error { _, err := hex.Decode(make([]byte, 8), []byte("0123456789abcdef=")) return err }()}, }, { name: name("Structs/Format/Bytes/Invalid/Base16/OddPadding"), inBuf: `{"Base16": "0123456789abcdef0="}`, inVal: new(structFormatBytes), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: func() error { _, err := hex.Decode(make([]byte, 9), []byte("0123456789abcdef0=")) return err }()}, }, { name: name("Structs/Format/Bytes/Invalid/Base16/NonAlphabet/LineFeed"), inBuf: `{"Base16": "aa\naa"}`, inVal: new(structFormatBytes), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: func() error { _, err := hex.Decode(make([]byte, 9), []byte("aa\naa")) return err }()}, }, { name: name("Structs/Format/Bytes/Invalid/Base16/NonAlphabet/CarriageReturn"), inBuf: `{"Base16": "aa\raa"}`, inVal: new(structFormatBytes), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: func() error { _, err := hex.Decode(make([]byte, 9), []byte("aa\raa")) return err }()}, }, { name: name("Structs/Format/Bytes/Invalid/Base16/NonAlphabet/Space"), inBuf: `{"Base16": "aa aa"}`, inVal: new(structFormatBytes), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: func() error { _, err := hex.Decode(make([]byte, 9), []byte("aa aa")) return err }()}, }, { name: name("Structs/Format/Bytes/Invalid/Base32/Padding"), inBuf: `[ {"Base32": "NA======"}, {"Base32": "NBSQ===="}, {"Base32": "NBSWY==="}, {"Base32": "NBSWY3A="}, {"Base32": "NBSWY3DP"} ]`, inVal: new([]structFormatBytes), want: addr([]structFormatBytes{ {Base32: []byte("h")}, {Base32: []byte("he")}, {Base32: []byte("hel")}, {Base32: []byte("hell")}, {Base32: []byte("hello")}, }), }, { name: name("Structs/Format/Bytes/Invalid/Base32/Invalid/NoPadding"), inBuf: `[ {"Base32": "NA"}, {"Base32": "NBSQ"}, {"Base32": "NBSWY"}, {"Base32": "NBSWY3A"}, {"Base32": "NBSWY3DP"} ]`, inVal: new([]structFormatBytes), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: func() error { _, err := base32.StdEncoding.Decode(make([]byte, 1), []byte("NA")) return err }()}, }, { name: name("Structs/Format/Bytes/Invalid/Base32/WrongAlphabet"), inBuf: `{"Base32": "0123456789ABCDEFGHIJKLMNOPQRSTUV"}`, inVal: new(structFormatBytes), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: func() error { _, err := base32.StdEncoding.Decode(make([]byte, 20), []byte("0123456789ABCDEFGHIJKLMNOPQRSTUV")) return err }()}, }, { name: name("Structs/Format/Bytes/Invalid/Base32Hex/WrongAlphabet"), inBuf: `{"Base32Hex": "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"}`, inVal: new(structFormatBytes), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: func() error { _, err := base32.HexEncoding.Decode(make([]byte, 20), []byte("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567")) return err }()}, }, { name: name("Structs/Format/Bytes/Invalid/Base32/NonAlphabet/LineFeed"), inBuf: `{"Base32": "AAAA\nAAAA"}`, inVal: new(structFormatBytes), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: errors.New("illegal data at input byte 4")}, }, { name: name("Structs/Format/Bytes/Invalid/Base32/NonAlphabet/CarriageReturn"), inBuf: `{"Base32": "AAAA\rAAAA"}`, inVal: new(structFormatBytes), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: errors.New("illegal data at input byte 4")}, }, { name: name("Structs/Format/Bytes/Invalid/Base32/NonAlphabet/Space"), inBuf: `{"Base32": "AAAA AAAA"}`, inVal: new(structFormatBytes), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: base32.CorruptInputError(4)}, }, { name: name("Structs/Format/Bytes/Invalid/Base64/WrongAlphabet"), inBuf: `{"Base64": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"}`, inVal: new(structFormatBytes), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: func() error { _, err := base64.StdEncoding.Decode(make([]byte, 48), []byte("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_")) return err }()}, }, { name: name("Structs/Format/Bytes/Invalid/Base64URL/WrongAlphabet"), inBuf: `{"Base64URL": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"}`, inVal: new(structFormatBytes), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: func() error { _, err := base64.URLEncoding.Decode(make([]byte, 48), []byte("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")) return err }()}, }, { name: name("Structs/Format/Bytes/Invalid/Base64/NonAlphabet/LineFeed"), inBuf: `{"Base64": "aa=\n="}`, inVal: new(structFormatBytes), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: errors.New("illegal data at input byte 3")}, }, { name: name("Structs/Format/Bytes/Invalid/Base64/NonAlphabet/CarriageReturn"), inBuf: `{"Base64": "aa=\r="}`, inVal: new(structFormatBytes), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: errors.New("illegal data at input byte 3")}, }, { name: name("Structs/Format/Bytes/Invalid/Base64/NonAlphabet/Space"), inBuf: `{"Base64": "aa= ="}`, inVal: new(structFormatBytes), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: bytesType, Err: base64.CorruptInputError(2)}, }, { name: name("Structs/Format/Floats"), inBuf: `[ {"NonFinite": 3.141592653589793, "PointerNonFinite": 3.141592653589793}, {"NonFinite": "-Infinity", "PointerNonFinite": "-Infinity"}, {"NonFinite": "Infinity", "PointerNonFinite": "Infinity"} ]`, inVal: new([]structFormatFloats), want: addr([]structFormatFloats{ {NonFinite: math.Pi, PointerNonFinite: addr(math.Pi)}, {NonFinite: math.Inf(-1), PointerNonFinite: addr(math.Inf(-1))}, {NonFinite: math.Inf(+1), PointerNonFinite: addr(math.Inf(+1))}, }), }, { name: name("Structs/Format/Floats/NaN"), inBuf: `{"NonFinite": "NaN"}`, inVal: new(structFormatFloats), // Avoid checking want since reflect.DeepEqual fails for NaNs. }, { name: name("Structs/Format/Floats/Invalid/NaN"), inBuf: `{"NonFinite": "nan"}`, inVal: new(structFormatFloats), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: float64Type}, }, { name: name("Structs/Format/Floats/Invalid/PositiveInfinity"), inBuf: `{"NonFinite": "+Infinity"}`, inVal: new(structFormatFloats), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: float64Type}, }, { name: name("Structs/Format/Floats/Invalid/NegativeInfinitySpace"), inBuf: `{"NonFinite": "-Infinity "}`, inVal: new(structFormatFloats), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: float64Type}, }, { name: name("Structs/Format/Maps"), inBuf: `[ {"EmitNull": null, "PointerEmitNull": null}, {"EmitNull": {}, "PointerEmitNull": {}}, {"EmitNull": {"k": "v"}, "PointerEmitNull": {"k": "v"}} ]`, inVal: new([]structFormatMaps), want: addr([]structFormatMaps{ {EmitNull: nil, PointerEmitNull: nil}, {EmitNull: map[string]string{}, PointerEmitNull: addr(map[string]string{})}, {EmitNull: map[string]string{"k": "v"}, PointerEmitNull: addr(map[string]string{"k": "v"})}, }), }, { name: name("Structs/Format/Slices"), inBuf: `[ {"EmitNull": null, "PointerEmitNull": null}, {"EmitNull": [], "PointerEmitNull": []}, {"EmitNull": ["v"], "PointerEmitNull": ["v"]} ]`, inVal: new([]structFormatSlices), want: addr([]structFormatSlices{ {EmitNull: nil, PointerEmitNull: nil}, {EmitNull: []string{}, PointerEmitNull: addr([]string{})}, {EmitNull: []string{"v"}, PointerEmitNull: addr([]string{"v"})}, }), }, { name: name("Structs/Format/Invalid/Bool"), inBuf: `{"Bool":true}`, inVal: new(structFormatInvalid), wantErr: &SemanticError{action: "unmarshal", GoType: boolType, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/String"), inBuf: `{"String": "string"}`, inVal: new(structFormatInvalid), wantErr: &SemanticError{action: "unmarshal", GoType: stringType, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/Bytes"), inBuf: `{"Bytes": "bytes"}`, inVal: new(structFormatInvalid), wantErr: &SemanticError{action: "unmarshal", GoType: bytesType, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/Int"), inBuf: `{"Int": 1}`, inVal: new(structFormatInvalid), wantErr: &SemanticError{action: "unmarshal", GoType: int64Type, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/Uint"), inBuf: `{"Uint": 1}`, inVal: new(structFormatInvalid), wantErr: &SemanticError{action: "unmarshal", GoType: uint64Type, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/Float"), inBuf: `{"Float": 1}`, inVal: new(structFormatInvalid), wantErr: &SemanticError{action: "unmarshal", GoType: float64Type, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/Map"), inBuf: `{"Map":{}}`, inVal: new(structFormatInvalid), wantErr: &SemanticError{action: "unmarshal", GoType: mapStringStringType, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/Struct"), inBuf: `{"Struct": {}}`, inVal: new(structFormatInvalid), wantErr: &SemanticError{action: "unmarshal", GoType: structAllType, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/Slice"), inBuf: `{"Slice": {}}`, inVal: new(structFormatInvalid), wantErr: &SemanticError{action: "unmarshal", GoType: sliceStringType, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/Array"), inBuf: `{"Array": []}`, inVal: new(structFormatInvalid), wantErr: &SemanticError{action: "unmarshal", GoType: array1StringType, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Format/Invalid/Interface"), inBuf: `{"Interface": "anything"}`, inVal: new(structFormatInvalid), wantErr: &SemanticError{action: "unmarshal", GoType: anyType, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Structs/Inline/Zero"), inBuf: `{"D":""}`, inVal: new(structInlined), want: new(structInlined), }, { name: name("Structs/Inline/Alloc"), inBuf: `{"E":"","F":"","G":"","A":"","B":"","D":""}`, inVal: new(structInlined), want: addr(structInlined{ X: structInlinedL1{ X: &structInlinedL2{}, StructEmbed1: StructEmbed1{}, }, StructEmbed2: &StructEmbed2{}, }), }, { name: name("Structs/Inline/NonZero"), inBuf: `{"E":"E3","F":"F3","G":"G3","A":"A1","B":"B1","D":"D2"}`, inVal: new(structInlined), want: addr(structInlined{ X: structInlinedL1{ X: &structInlinedL2{A: "A1", B: "B1" /* C: "C1" */}, StructEmbed1: StructEmbed1{ /* C: "C2" */ D: "D2" /* E: "E2" */}, }, StructEmbed2: &StructEmbed2{E: "E3", F: "F3", G: "G3"}, }), }, { name: name("Structs/Inline/Merge"), inBuf: `{"E":"E3","F":"F3","G":"G3","A":"A1","B":"B1","D":"D2"}`, inVal: addr(structInlined{ X: structInlinedL1{ X: &structInlinedL2{B: "##", C: "C1"}, StructEmbed1: StructEmbed1{C: "C2", E: "E2"}, }, StructEmbed2: &StructEmbed2{E: "##", G: "G3"}, }), want: addr(structInlined{ X: structInlinedL1{ X: &structInlinedL2{A: "A1", B: "B1", C: "C1"}, StructEmbed1: StructEmbed1{C: "C2", D: "D2", E: "E2"}, }, StructEmbed2: &StructEmbed2{E: "E3", F: "F3", G: "G3"}, }), }, { name: name("Structs/InlinedFallback/RawValue/Noop"), inBuf: `{"A":1,"B":2}`, inVal: new(structInlineRawValue), want: addr(structInlineRawValue{A: 1, X: RawValue(nil), B: 2}), }, { name: name("Structs/InlinedFallback/RawValue/MergeN1/Nil"), inBuf: `{"A":1,"fizz":"buzz","B":2}`, inVal: new(structInlineRawValue), want: addr(structInlineRawValue{A: 1, X: RawValue(`{"fizz":"buzz"}`), B: 2}), }, { name: name("Structs/InlinedFallback/RawValue/MergeN1/Empty"), inBuf: `{"A":1,"fizz":"buzz","B":2}`, inVal: addr(structInlineRawValue{X: RawValue{}}), want: addr(structInlineRawValue{A: 1, X: RawValue(`{"fizz":"buzz"}`), B: 2}), }, { name: name("Structs/InlinedFallback/RawValue/MergeN1/Whitespace"), inBuf: `{"A":1,"fizz":"buzz","B":2}`, inVal: addr(structInlineRawValue{X: RawValue("\n\r\t ")}), want: addr(structInlineRawValue{A: 1, X: RawValue("")}), wantErr: &SemanticError{action: "unmarshal", GoType: rawValueType, Err: errors.New("inlined raw value must be a JSON object")}, }, { name: name("Structs/InlinedFallback/RawValue/MergeN1/Null"), inBuf: `{"A":1,"fizz":"buzz","B":2}`, inVal: addr(structInlineRawValue{X: RawValue("null")}), want: addr(structInlineRawValue{A: 1, X: RawValue("null")}), wantErr: &SemanticError{action: "unmarshal", GoType: rawValueType, Err: errors.New("inlined raw value must be a JSON object")}, }, { name: name("Structs/InlinedFallback/RawValue/MergeN1/ObjectN0"), inBuf: `{"A":1,"fizz":"buzz","B":2}`, inVal: addr(structInlineRawValue{X: RawValue(` { } `)}), want: addr(structInlineRawValue{A: 1, X: RawValue(` {"fizz":"buzz"}`), B: 2}), }, { name: name("Structs/InlinedFallback/RawValue/MergeN2/ObjectN1"), inBuf: `{"A":1,"fizz":"buzz","B":2,"foo": [ 1 , 2 , 3 ]}`, inVal: addr(structInlineRawValue{X: RawValue(` { "fizz" : "buzz" } `)}), want: addr(structInlineRawValue{A: 1, X: RawValue(` { "fizz" : "buzz","fizz":"buzz","foo":[ 1 , 2 , 3 ]}`), B: 2}), }, { name: name("Structs/InlinedFallback/RawValue/Merge/ObjectEnd"), inBuf: `{"A":1,"fizz":"buzz","B":2}`, inVal: addr(structInlineRawValue{X: RawValue(` } `)}), // NOTE: This produces invalid output, // but the value being merged into is already invalid. want: addr(structInlineRawValue{A: 1, X: RawValue(`,"fizz":"buzz"}`), B: 2}), }, { name: name("Structs/InlinedFallback/RawValue/MergeInvalidValue"), inBuf: `{"A":1,"fizz":nil,"B":2}`, inVal: new(structInlineRawValue), want: addr(structInlineRawValue{A: 1, X: RawValue(`{"fizz":`)}), wantErr: newInvalidCharacterError([]byte("i"), "within literal null (expecting 'u')").withOffset(int64(len(`{"A":1,"fizz":n`))), }, { name: name("Structs/InlinedFallback/RawValue/CaseSensitive"), inBuf: `{"A":1,"fizz":"buzz","B":2,"a":3}`, inVal: new(structInlineRawValue), want: addr(structInlineRawValue{A: 1, X: RawValue(`{"fizz":"buzz","a":3}`), B: 2}), }, { name: name("Structs/InlinedFallback/RawValue/RejectDuplicateNames"), dopts: DecodeOptions{AllowDuplicateNames: false}, inBuf: `{"A":1,"fizz":"buzz","B":2,"fizz":"buzz"}`, inVal: new(structInlineRawValue), want: addr(structInlineRawValue{A: 1, X: RawValue(`{"fizz":"buzz"}`), B: 2}), wantErr: (&SyntacticError{str: `duplicate name "fizz" in object`}).withOffset(int64(len(`{"A":1,"fizz":"buzz","B":2,`))), }, { name: name("Structs/InlinedFallback/RawValue/AllowDuplicateNames"), dopts: DecodeOptions{AllowDuplicateNames: true}, inBuf: `{"A":1,"fizz":"buzz","B":2,"fizz":"buzz"}`, inVal: new(structInlineRawValue), want: addr(structInlineRawValue{A: 1, X: RawValue(`{"fizz":"buzz","fizz":"buzz"}`), B: 2}), }, { name: name("Structs/InlinedFallback/RawValue/Nested/Noop"), inBuf: `{}`, inVal: new(structInlinePointerInlineRawValue), want: new(structInlinePointerInlineRawValue), }, { name: name("Structs/InlinedFallback/RawValue/Nested/Alloc"), inBuf: `{"A":1,"fizz":"buzz"}`, inVal: new(structInlinePointerInlineRawValue), want: addr(structInlinePointerInlineRawValue{ X: &struct { A int X RawValue `json:",inline"` }{A: 1, X: RawValue(`{"fizz":"buzz"}`)}, }), }, { name: name("Structs/InlinedFallback/RawValue/Nested/Merge"), inBuf: `{"fizz":"buzz"}`, inVal: addr(structInlinePointerInlineRawValue{ X: &struct { A int X RawValue `json:",inline"` }{A: 1}, }), want: addr(structInlinePointerInlineRawValue{ X: &struct { A int X RawValue `json:",inline"` }{A: 1, X: RawValue(`{"fizz":"buzz"}`)}, }), }, { name: name("Structs/InlinedFallback/PointerRawValue/Noop"), inBuf: `{"A":1,"B":2}`, inVal: new(structInlinePointerRawValue), want: addr(structInlinePointerRawValue{A: 1, X: nil, B: 2}), }, { name: name("Structs/InlinedFallback/PointerRawValue/Alloc"), inBuf: `{"A":1,"fizz":"buzz","B":2}`, inVal: new(structInlinePointerRawValue), want: addr(structInlinePointerRawValue{A: 1, X: addr(RawValue(`{"fizz":"buzz"}`)), B: 2}), }, { name: name("Structs/InlinedFallback/PointerRawValue/Merge"), inBuf: `{"A":1,"fizz":"buzz","B":2}`, inVal: addr(structInlinePointerRawValue{X: addr(RawValue(`{"fizz":"buzz"}`))}), want: addr(structInlinePointerRawValue{A: 1, X: addr(RawValue(`{"fizz":"buzz","fizz":"buzz"}`)), B: 2}), }, { name: name("Structs/InlinedFallback/PointerRawValue/Nested/Nil"), inBuf: `{"fizz":"buzz"}`, inVal: new(structInlineInlinePointerRawValue), want: addr(structInlineInlinePointerRawValue{ X: struct { X *RawValue `json:",inline"` }{X: addr(RawValue(`{"fizz":"buzz"}`))}, }), }, { name: name("Structs/InlinedFallback/MapStringAny/Noop"), inBuf: `{"A":1,"B":2}`, inVal: new(structInlineMapStringAny), want: addr(structInlineMapStringAny{A: 1, X: nil, B: 2}), }, { name: name("Structs/InlinedFallback/MapStringAny/MergeN1/Nil"), inBuf: `{"A":1,"fizz":"buzz","B":2}`, inVal: new(structInlineMapStringAny), want: addr(structInlineMapStringAny{A: 1, X: jsonObject{"fizz": "buzz"}, B: 2}), }, { name: name("Structs/InlinedFallback/MapStringAny/MergeN1/Empty"), inBuf: `{"A":1,"fizz":"buzz","B":2}`, inVal: addr(structInlineMapStringAny{X: jsonObject{}}), want: addr(structInlineMapStringAny{A: 1, X: jsonObject{"fizz": "buzz"}, B: 2}), }, { name: name("Structs/InlinedFallback/MapStringAny/MergeN1/ObjectN1"), inBuf: `{"A":1,"fizz":{"charlie":"DELTA","echo":"foxtrot"},"B":2}`, inVal: addr(structInlineMapStringAny{X: jsonObject{"fizz": jsonObject{ "alpha": "bravo", "charlie": "delta", }}}), want: addr(structInlineMapStringAny{A: 1, X: jsonObject{"fizz": jsonObject{ "alpha": "bravo", "charlie": "DELTA", "echo": "foxtrot", }}, B: 2}), }, { name: name("Structs/InlinedFallback/MapStringAny/MergeN2/ObjectN1"), inBuf: `{"A":1,"fizz":"buzz","B":2,"foo": [ 1 , 2 , 3 ]}`, inVal: addr(structInlineMapStringAny{X: jsonObject{"fizz": "wuzz"}}), want: addr(structInlineMapStringAny{A: 1, X: jsonObject{"fizz": "buzz", "foo": jsonArray{1.0, 2.0, 3.0}}, B: 2}), }, { name: name("Structs/InlinedFallback/MapStringAny/MergeInvalidValue"), inBuf: `{"A":1,"fizz":nil,"B":2}`, inVal: new(structInlineMapStringAny), want: addr(structInlineMapStringAny{A: 1, X: jsonObject{"fizz": nil}}), wantErr: newInvalidCharacterError([]byte("i"), "within literal null (expecting 'u')").withOffset(int64(len(`{"A":1,"fizz":n`))), }, { name: name("Structs/InlinedFallback/MapStringAny/MergeInvalidValue/Existing"), inBuf: `{"A":1,"fizz":nil,"B":2}`, inVal: addr(structInlineMapStringAny{A: 1, X: jsonObject{"fizz": true}}), want: addr(structInlineMapStringAny{A: 1, X: jsonObject{"fizz": true}}), wantErr: newInvalidCharacterError([]byte("i"), "within literal null (expecting 'u')").withOffset(int64(len(`{"A":1,"fizz":n`))), }, { name: name("Structs/InlinedFallback/MapStringAny/CaseSensitive"), inBuf: `{"A":1,"fizz":"buzz","B":2,"a":3}`, inVal: new(structInlineMapStringAny), want: addr(structInlineMapStringAny{A: 1, X: jsonObject{"fizz": "buzz", "a": 3.0}, B: 2}), }, { name: name("Structs/InlinedFallback/MapStringAny/RejectDuplicateNames"), dopts: DecodeOptions{AllowDuplicateNames: false}, inBuf: `{"A":1,"fizz":"buzz","B":2,"fizz":"buzz"}`, inVal: new(structInlineMapStringAny), want: addr(structInlineMapStringAny{A: 1, X: jsonObject{"fizz": "buzz"}, B: 2}), wantErr: (&SyntacticError{str: `duplicate name "fizz" in object`}).withOffset(int64(len(`{"A":1,"fizz":"buzz","B":2,`))), }, { name: name("Structs/InlinedFallback/MapStringAny/AllowDuplicateNames"), dopts: DecodeOptions{AllowDuplicateNames: true}, inBuf: `{"A":1,"fizz":{"one":1,"two":-2},"B":2,"fizz":{"two":2,"three":3}}`, inVal: new(structInlineMapStringAny), want: addr(structInlineMapStringAny{A: 1, X: jsonObject{"fizz": jsonObject{"one": 1.0, "two": 2.0, "three": 3.0}}, B: 2}), }, { name: name("Structs/InlinedFallback/MapStringAny/Nested/Noop"), inBuf: `{}`, inVal: new(structInlinePointerInlineMapStringAny), want: new(structInlinePointerInlineMapStringAny), }, { name: name("Structs/InlinedFallback/MapStringAny/Nested/Alloc"), inBuf: `{"A":1,"fizz":"buzz"}`, inVal: new(structInlinePointerInlineMapStringAny), want: addr(structInlinePointerInlineMapStringAny{ X: &struct { A int X jsonObject `json:",inline"` }{A: 1, X: jsonObject{"fizz": "buzz"}}, }), }, { name: name("Structs/InlinedFallback/MapStringAny/Nested/Merge"), inBuf: `{"fizz":"buzz"}`, inVal: addr(structInlinePointerInlineMapStringAny{ X: &struct { A int X jsonObject `json:",inline"` }{A: 1}, }), want: addr(structInlinePointerInlineMapStringAny{ X: &struct { A int X jsonObject `json:",inline"` }{A: 1, X: jsonObject{"fizz": "buzz"}}, }), }, { name: name("Structs/InlinedFallback/MapStringInt/UnmarshalFuncV1"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV1(func(b []byte, v *any) error { var err error *v, err = strconv.ParseFloat(string(bytes.Trim(b, `"`)), 64) return err }), }, inBuf: `{"D":"1.1","E":"2.2","F":"3.3"}`, inVal: new(structInlineMapStringAny), want: addr(structInlineMapStringAny{X: jsonObject{"D": 1.1, "E": 2.2, "F": 3.3}}), }, { name: name("Structs/InlinedFallback/PointerMapStringAny/Noop"), inBuf: `{"A":1,"B":2}`, inVal: new(structInlinePointerMapStringAny), want: addr(structInlinePointerMapStringAny{A: 1, X: nil, B: 2}), }, { name: name("Structs/InlinedFallback/PointerMapStringAny/Alloc"), inBuf: `{"A":1,"fizz":"buzz","B":2}`, inVal: new(structInlinePointerMapStringAny), want: addr(structInlinePointerMapStringAny{A: 1, X: addr(jsonObject{"fizz": "buzz"}), B: 2}), }, { name: name("Structs/InlinedFallback/PointerMapStringAny/Merge"), inBuf: `{"A":1,"fizz":"wuzz","B":2}`, inVal: addr(structInlinePointerMapStringAny{X: addr(jsonObject{"fizz": "buzz"})}), want: addr(structInlinePointerMapStringAny{A: 1, X: addr(jsonObject{"fizz": "wuzz"}), B: 2}), }, { name: name("Structs/InlinedFallback/PointerMapStringAny/Nested/Nil"), inBuf: `{"fizz":"buzz"}`, inVal: new(structInlineInlinePointerMapStringAny), want: addr(structInlineInlinePointerMapStringAny{ X: struct { X *jsonObject `json:",inline"` }{X: addr(jsonObject{"fizz": "buzz"})}, }), }, { name: name("Structs/InlinedFallback/MapStringInt"), inBuf: `{"zero": 0, "one": 1, "two": 2}`, inVal: new(structInlineMapStringInt), want: addr(structInlineMapStringInt{ X: map[string]int{"zero": 0, "one": 1, "two": 2}, }), }, { name: name("Structs/InlinedFallback/MapStringInt/Null"), inBuf: `{"zero": 0, "one": null, "two": 2}`, inVal: new(structInlineMapStringInt), want: addr(structInlineMapStringInt{ X: map[string]int{"zero": 0, "one": 0, "two": 2}, }), }, { name: name("Structs/InlinedFallback/MapStringInt/Invalid"), inBuf: `{"zero": 0, "one": {}, "two": 2}`, inVal: new(structInlineMapStringInt), want: addr(structInlineMapStringInt{ X: map[string]int{"zero": 0, "one": 0}, }), wantErr: &SemanticError{action: "unmarshal", JSONKind: '{', GoType: intType}, }, { name: name("Structs/InlinedFallback/MapStringInt/StringifiedNumbers"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `{"zero": 0, "one": "1", "two": 2}`, inVal: new(structInlineMapStringInt), want: addr(structInlineMapStringInt{ X: map[string]int{"zero": 0, "one": 1, "two": 2}, }), }, { name: name("Structs/InlinedFallback/MapStringInt/UnmarshalFuncV1"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV1(func(b []byte, v *int) error { i, err := strconv.ParseInt(string(bytes.Trim(b, `"`)), 10, 64) if err != nil { return err } *v = int(i) return nil }), }, inBuf: `{"zero": "0", "one": "1", "two": "2"}`, inVal: new(structInlineMapStringInt), want: addr(structInlineMapStringInt{ X: map[string]int{"zero": 0, "one": 1, "two": 2}, }), }, { name: name("Structs/InlinedFallback/RejectUnknownMembers"), uopts: UnmarshalOptions{RejectUnknownMembers: true}, inBuf: `{"A":1,"fizz":"buzz","B":2}`, inVal: new(structInlineRawValue), // NOTE: DiscardUnknownMembers has no effect since this is "inline". want: addr(structInlineRawValue{ A: 1, X: RawValue(`{"fizz":"buzz"}`), B: 2, }), }, { name: name("Structs/UnknownFallback/RejectUnknownMembers"), uopts: UnmarshalOptions{RejectUnknownMembers: true}, inBuf: `{"A":1,"fizz":"buzz","B":2}`, inVal: new(structUnknownRawValue), want: addr(structUnknownRawValue{A: 1}), wantErr: &SemanticError{action: "unmarshal", GoType: structUnknownRawValueType, Err: errors.New(`unknown name "fizz"`)}, }, { name: name("Structs/UnknownFallback"), inBuf: `{"A":1,"fizz":"buzz","B":2}`, inVal: new(structUnknownRawValue), want: addr(structUnknownRawValue{ A: 1, X: RawValue(`{"fizz":"buzz"}`), B: 2, }), }, { name: name("Structs/UnknownIgnored"), uopts: UnmarshalOptions{RejectUnknownMembers: false}, inBuf: `{"unknown":"fizzbuzz"}`, inVal: new(structAll), want: new(structAll), }, { name: name("Structs/RejectUnknownMembers"), uopts: UnmarshalOptions{RejectUnknownMembers: true}, inBuf: `{"unknown":"fizzbuzz"}`, inVal: new(structAll), want: new(structAll), wantErr: &SemanticError{action: "unmarshal", GoType: structAllType, Err: errors.New(`unknown name "unknown"`)}, }, { name: name("Structs/UnexportedIgnored"), inBuf: `{"ignored":"unused"}`, inVal: new(structUnexportedIgnored), want: new(structUnexportedIgnored), }, { name: name("Structs/IgnoredUnexportedEmbedded"), inBuf: `{"namedString":"unused"}`, inVal: new(structIgnoredUnexportedEmbedded), want: new(structIgnoredUnexportedEmbedded), }, { name: name("Structs/WeirdNames"), inBuf: `{"":"empty",",":"comma","\"":"quote"}`, inVal: new(structWeirdNames), want: addr(structWeirdNames{Empty: "empty", Comma: "comma", Quote: "quote"}), }, { name: name("Structs/NoCase/Exact"), inBuf: `{"AaA":"AaA","AAa":"AAa","AAA":"AAA"}`, inVal: new(structNoCase), want: addr(structNoCase{AaA: "AaA", AAa: "AAa", AAA: "AAA"}), }, { name: name("Structs/NoCase/Merge/AllowDuplicateNames"), dopts: DecodeOptions{AllowDuplicateNames: true}, inBuf: `{"AaA":"AaA","aaa":"aaa","aAa":"aAa"}`, inVal: new(structNoCase), want: addr(structNoCase{AaA: "aAa"}), }, { name: name("Structs/NoCase/Merge/RejectDuplicateNames"), dopts: DecodeOptions{AllowDuplicateNames: false}, inBuf: `{"AaA":"AaA","aaa":"aaa"}`, inVal: new(structNoCase), want: addr(structNoCase{AaA: "AaA"}), wantErr: (&SyntacticError{str: `duplicate name "aaa" in object`}).withOffset(int64(len(`{"AaA":"AaA",`))), }, { name: name("Structs/CaseSensitive"), inBuf: `{"BOOL": true, "STRING": "hello", "BYTES": "AQID", "INT": -64, "UINT": 64, "FLOAT": 3.14159}`, inVal: new(structScalars), want: addr(structScalars{}), }, { name: name("Structs/DuplicateName/NoCase/ExactDifferent"), inBuf: `{"AAA":"AAA","AaA":"AaA","AAa":"AAa","Aaa":"Aaa"}`, inVal: addr(structNoCaseInlineRawValue{}), want: addr(structNoCaseInlineRawValue{AAA: "AAA", AaA: "AaA", AAa: "AAa", Aaa: "Aaa"}), }, { name: name("Structs/DuplicateName/NoCase/ExactConflict"), inBuf: `{"AAA":"AAA","AAA":"AAA"}`, inVal: addr(structNoCaseInlineRawValue{}), want: addr(structNoCaseInlineRawValue{AAA: "AAA"}), wantErr: (&SyntacticError{str: `duplicate name "AAA" in object`}).withOffset(int64(len(`{"AAA":"AAA",`))), }, { name: name("Structs/DuplicateName/NoCase/OverwriteExact"), inBuf: `{"AAA":"after"}`, inVal: addr(structNoCaseInlineRawValue{AAA: "before"}), want: addr(structNoCaseInlineRawValue{AAA: "after"}), }, { name: name("Structs/DuplicateName/NoCase/NoCaseConflict"), inBuf: `{"aaa":"aaa","aaA":"aaA"}`, inVal: addr(structNoCaseInlineRawValue{}), want: addr(structNoCaseInlineRawValue{AaA: "aaa"}), wantErr: (&SyntacticError{str: `duplicate name "aaA" in object`}).withOffset(int64(len(`{"aaa":"aaa",`))), }, { name: name("Structs/DuplicateName/NoCase/OverwriteNoCase"), inBuf: `{"aaa":"aaa","aaA":"aaA"}`, inVal: addr(structNoCaseInlineRawValue{}), want: addr(structNoCaseInlineRawValue{AaA: "aaa"}), wantErr: (&SyntacticError{str: `duplicate name "aaA" in object`}).withOffset(int64(len(`{"aaa":"aaa",`))), }, { name: name("Structs/DuplicateName/Inline/Unknown"), inBuf: `{"unknown":""}`, inVal: addr(structNoCaseInlineRawValue{}), want: addr(structNoCaseInlineRawValue{X: RawValue(`{"unknown":""}`)}), }, { name: name("Structs/DuplicateName/Inline/UnknownMerge"), inBuf: `{"unknown":""}`, inVal: addr(structNoCaseInlineRawValue{X: RawValue(`{"unknown":""}`)}), want: addr(structNoCaseInlineRawValue{X: RawValue(`{"unknown":"","unknown":""}`)}), }, { name: name("Structs/DuplicateName/Inline/NoCaseOkay"), inBuf: `{"b":"","B":""}`, inVal: addr(structNoCaseInlineRawValue{}), want: addr(structNoCaseInlineRawValue{X: RawValue(`{"b":"","B":""}`)}), }, { name: name("Structs/DuplicateName/Inline/ExactConflict"), inBuf: `{"b":"","b":""}`, inVal: addr(structNoCaseInlineRawValue{}), want: addr(structNoCaseInlineRawValue{X: RawValue(`{"b":""}`)}), wantErr: (&SyntacticError{str: `duplicate name "b" in object`}).withOffset(int64(len(`{"b":"",`))), }, { name: name("Structs/Invalid/ErrUnexpectedEOF"), inBuf: ``, inVal: addr(structAll{}), want: addr(structAll{}), wantErr: io.ErrUnexpectedEOF, }, { name: name("Structs/Invalid/NestedErrUnexpectedEOF"), inBuf: `{"Pointer":`, inVal: addr(structAll{}), want: addr(structAll{Pointer: new(structAll)}), wantErr: io.ErrUnexpectedEOF, }, { name: name("Structs/Invalid/Conflicting"), inBuf: `{}`, inVal: addr(structConflicting{}), want: addr(structConflicting{}), wantErr: &SemanticError{action: "unmarshal", GoType: structConflictingType, Err: errors.New("Go struct fields A and B conflict over JSON object name \"conflict\"")}, }, { name: name("Structs/Invalid/NoneExported"), inBuf: `{}`, inVal: addr(structNoneExported{}), want: addr(structNoneExported{}), wantErr: &SemanticError{action: "unmarshal", GoType: structNoneExportedType, Err: errors.New("Go struct has no exported fields")}, }, { name: name("Structs/Invalid/MalformedTag"), inBuf: `{}`, inVal: addr(structMalformedTag{}), want: addr(structMalformedTag{}), wantErr: &SemanticError{action: "unmarshal", GoType: structMalformedTagType, Err: errors.New("Go struct field Malformed has malformed `json` tag: invalid character '\"' at start of option (expecting Unicode letter or single quote)")}, }, { name: name("Structs/Invalid/UnexportedTag"), inBuf: `{}`, inVal: addr(structUnexportedTag{}), want: addr(structUnexportedTag{}), wantErr: &SemanticError{action: "unmarshal", GoType: structUnexportedTagType, Err: errors.New("unexported Go struct field unexported cannot have non-ignored `json:\"name\"` tag")}, }, { name: name("Structs/Invalid/UnexportedEmbedded"), inBuf: `{}`, inVal: addr(structUnexportedEmbedded{}), want: addr(structUnexportedEmbedded{}), wantErr: &SemanticError{action: "unmarshal", GoType: structUnexportedEmbeddedType, Err: errors.New("embedded Go struct field namedString of an unexported type must be explicitly ignored with a `json:\"-\"` tag")}, }, { name: name("Structs/Unknown"), inBuf: `{ "object0": {}, "object1": {"key1": "value"}, "object2": {"key1": "value", "key2": "value"}, "objects": {"":{"":{"":{}}}}, "array0": [], "array1": ["value1"], "array2": ["value1", "value2"], "array": [[[]]], "scalars": [null, false, true, "string", 12.345] }`, inVal: addr(struct{}{}), want: addr(struct{}{}), }, { name: name("Structs/IgnoreInvalidFormat"), uopts: UnmarshalOptions{formatDepth: 1000, format: "invalid"}, inBuf: `{"Field":"Value"}`, inVal: addr(struct{ Field string }{}), want: addr(struct{ Field string }{"Value"}), }, { name: name("Slices/Null"), inBuf: `null`, inVal: addr([]string{"something"}), want: addr([]string(nil)), }, { name: name("Slices/Bool"), inBuf: `[true,false]`, inVal: new([]bool), want: addr([]bool{true, false}), }, { name: name("Slices/String"), inBuf: `["hello","goodbye"]`, inVal: new([]string), want: addr([]string{"hello", "goodbye"}), }, { name: name("Slices/Bytes"), inBuf: `["aGVsbG8=","Z29vZGJ5ZQ=="]`, inVal: new([][]byte), want: addr([][]byte{[]byte("hello"), []byte("goodbye")}), }, { name: name("Slices/Int"), inBuf: `[-2,-1,0,1,2]`, inVal: new([]int), want: addr([]int{-2, -1, 0, 1, 2}), }, { name: name("Slices/Uint"), inBuf: `[0,1,2,3,4]`, inVal: new([]uint), want: addr([]uint{0, 1, 2, 3, 4}), }, { name: name("Slices/Float"), inBuf: `[3.14159,12.34]`, inVal: new([]float64), want: addr([]float64{3.14159, 12.34}), }, { // NOTE: The semantics differs from v1, where the slice length is reset // and new elements are appended to the end. // See https://go.dev/issue/21092. name: name("Slices/Merge"), inBuf: `[{"k3":"v3"},{"k4":"v4"}]`, inVal: addr([]map[string]string{{"k1": "v1"}, {"k2": "v2"}}[:1]), want: addr([]map[string]string{{"k3": "v3"}, {"k4": "v4"}}), }, { name: name("Slices/Invalid/Channel"), inBuf: `["hello"]`, inVal: new([]chan string), want: addr([]chan string{nil}), wantErr: &SemanticError{action: "unmarshal", GoType: chanStringType}, }, { name: name("Slices/RecursiveSlice"), inBuf: `[[],[],[[]],[[],[]]]`, inVal: new(recursiveSlice), want: addr(recursiveSlice{ {}, {}, {{}}, {{}, {}}, }), }, { name: name("Slices/Invalid/Bool"), inBuf: `true`, inVal: addr([]string{"nochange"}), want: addr([]string{"nochange"}), wantErr: &SemanticError{action: "unmarshal", JSONKind: 't', GoType: sliceStringType}, }, { name: name("Slices/Invalid/String"), inBuf: `""`, inVal: addr([]string{"nochange"}), want: addr([]string{"nochange"}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: sliceStringType}, }, { name: name("Slices/Invalid/Number"), inBuf: `0`, inVal: addr([]string{"nochange"}), want: addr([]string{"nochange"}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: sliceStringType}, }, { name: name("Slices/Invalid/Object"), inBuf: `{}`, inVal: addr([]string{"nochange"}), want: addr([]string{"nochange"}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '{', GoType: sliceStringType}, }, { name: name("Slices/IgnoreInvalidFormat"), uopts: UnmarshalOptions{formatDepth: 1000, format: "invalid"}, inBuf: `[false,true]`, inVal: addr([]bool{true, false}), want: addr([]bool{false, true}), }, { name: name("Arrays/Null"), inBuf: `null`, inVal: addr([1]string{"something"}), want: addr([1]string{}), }, { name: name("Arrays/Bool"), inBuf: `[true,false]`, inVal: new([2]bool), want: addr([2]bool{true, false}), }, { name: name("Arrays/String"), inBuf: `["hello","goodbye"]`, inVal: new([2]string), want: addr([2]string{"hello", "goodbye"}), }, { name: name("Arrays/Bytes"), inBuf: `["aGVsbG8=","Z29vZGJ5ZQ=="]`, inVal: new([2][]byte), want: addr([2][]byte{[]byte("hello"), []byte("goodbye")}), }, { name: name("Arrays/Int"), inBuf: `[-2,-1,0,1,2]`, inVal: new([5]int), want: addr([5]int{-2, -1, 0, 1, 2}), }, { name: name("Arrays/Uint"), inBuf: `[0,1,2,3,4]`, inVal: new([5]uint), want: addr([5]uint{0, 1, 2, 3, 4}), }, { name: name("Arrays/Float"), inBuf: `[3.14159,12.34]`, inVal: new([2]float64), want: addr([2]float64{3.14159, 12.34}), }, { // NOTE: The semantics differs from v1, where elements are not merged. // This is to maintain consistent merge semantics with slices. name: name("Arrays/Merge"), inBuf: `[{"k3":"v3"},{"k4":"v4"}]`, inVal: addr([2]map[string]string{{"k1": "v1"}, {"k2": "v2"}}), want: addr([2]map[string]string{{"k3": "v3"}, {"k4": "v4"}}), }, { name: name("Arrays/Invalid/Channel"), inBuf: `["hello"]`, inVal: new([1]chan string), want: new([1]chan string), wantErr: &SemanticError{action: "unmarshal", GoType: chanStringType}, }, { name: name("Arrays/Invalid/Underflow"), inBuf: `[]`, inVal: new([1]string), want: addr([1]string{}), wantErr: &SemanticError{action: "unmarshal", GoType: array1StringType, Err: errors.New("too few array elements")}, }, { name: name("Arrays/Invalid/Overflow"), inBuf: `["1","2"]`, inVal: new([1]string), want: addr([1]string{"1"}), wantErr: &SemanticError{action: "unmarshal", GoType: array1StringType, Err: errors.New("too many array elements")}, }, { name: name("Arrays/Invalid/Bool"), inBuf: `true`, inVal: addr([1]string{"nochange"}), want: addr([1]string{"nochange"}), wantErr: &SemanticError{action: "unmarshal", JSONKind: 't', GoType: array1StringType}, }, { name: name("Arrays/Invalid/String"), inBuf: `""`, inVal: addr([1]string{"nochange"}), want: addr([1]string{"nochange"}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: array1StringType}, }, { name: name("Arrays/Invalid/Number"), inBuf: `0`, inVal: addr([1]string{"nochange"}), want: addr([1]string{"nochange"}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: array1StringType}, }, { name: name("Arrays/Invalid/Object"), inBuf: `{}`, inVal: addr([1]string{"nochange"}), want: addr([1]string{"nochange"}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '{', GoType: array1StringType}, }, { name: name("Arrays/IgnoreInvalidFormat"), uopts: UnmarshalOptions{formatDepth: 1000, format: "invalid"}, inBuf: `[false,true]`, inVal: addr([2]bool{true, false}), want: addr([2]bool{false, true}), }, { name: name("Pointers/NullL0"), inBuf: `null`, inVal: new(*string), want: addr((*string)(nil)), }, { name: name("Pointers/NullL1"), inBuf: `null`, inVal: addr(new(*string)), want: addr((**string)(nil)), }, { name: name("Pointers/Bool"), inBuf: `true`, inVal: addr(new(bool)), want: addr(addr(true)), }, { name: name("Pointers/String"), inBuf: `"hello"`, inVal: addr(new(string)), want: addr(addr("hello")), }, { name: name("Pointers/Bytes"), inBuf: `"aGVsbG8="`, inVal: addr(new([]byte)), want: addr(addr([]byte("hello"))), }, { name: name("Pointers/Int"), inBuf: `-123`, inVal: addr(new(int)), want: addr(addr(int(-123))), }, { name: name("Pointers/Uint"), inBuf: `123`, inVal: addr(new(int)), want: addr(addr(int(123))), }, { name: name("Pointers/Float"), inBuf: `123.456`, inVal: addr(new(float64)), want: addr(addr(float64(123.456))), }, { name: name("Pointers/Allocate"), inBuf: `"hello"`, inVal: addr((*string)(nil)), want: addr(addr("hello")), }, { name: name("Points/IgnoreInvalidFormat"), uopts: UnmarshalOptions{formatDepth: 1000, format: "invalid"}, inBuf: `true`, inVal: addr(new(bool)), want: addr(addr(true)), }, { name: name("Interfaces/Empty/Null"), inBuf: `null`, inVal: new(any), want: new(any), }, { name: name("Interfaces/NonEmpty/Null"), inBuf: `null`, inVal: new(io.Reader), want: new(io.Reader), }, { name: name("Interfaces/NonEmpty/Invalid"), inBuf: `"hello"`, inVal: new(io.Reader), want: new(io.Reader), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: ioReaderType, Err: errors.New("cannot derive concrete type for non-empty interface")}, }, { name: name("Interfaces/Empty/False"), inBuf: `false`, inVal: new(any), want: func() any { var vi any = false return &vi }(), }, { name: name("Interfaces/Empty/True"), inBuf: `true`, inVal: new(any), want: func() any { var vi any = true return &vi }(), }, { name: name("Interfaces/Empty/String"), inBuf: `"string"`, inVal: new(any), want: func() any { var vi any = "string" return &vi }(), }, { name: name("Interfaces/Empty/Number"), inBuf: `3.14159`, inVal: new(any), want: func() any { var vi any = 3.14159 return &vi }(), }, { name: name("Interfaces/Empty/Object"), inBuf: `{"k":"v"}`, inVal: new(any), want: func() any { var vi any = map[string]any{"k": "v"} return &vi }(), }, { name: name("Interfaces/Empty/Array"), inBuf: `["v"]`, inVal: new(any), want: func() any { var vi any = []any{"v"} return &vi }(), }, { name: name("Interfaces/NamedAny/String"), inBuf: `"string"`, inVal: new(namedAny), want: func() namedAny { var vi namedAny = "string" return &vi }(), }, { name: name("Interfaces/Invalid"), inBuf: `]`, inVal: new(any), want: new(any), wantErr: newInvalidCharacterError([]byte("]"), "at start of value"), }, { // NOTE: The semantics differs from v1, // where existing map entries were not merged into. // See https://go.dev/issue/26946. // See https://go.dev/issue/33993. name: name("Interfaces/Merge/Map"), inBuf: `{"k2":"v2"}`, inVal: func() any { var vi any = map[string]string{"k1": "v1"} return &vi }(), want: func() any { var vi any = map[string]string{"k1": "v1", "k2": "v2"} return &vi }(), }, { name: name("Interfaces/Merge/Struct"), inBuf: `{"Array":["goodbye"]}`, inVal: func() any { var vi any = structAll{String: "hello"} return &vi }(), want: func() any { var vi any = structAll{String: "hello", Array: [1]string{"goodbye"}} return &vi }(), }, { name: name("Interfaces/Merge/NamedInt"), inBuf: `64`, inVal: func() any { var vi any = namedInt64(-64) return &vi }(), want: func() any { var vi any = namedInt64(+64) return &vi }(), }, { name: name("Interfaces/IgnoreInvalidFormat"), uopts: UnmarshalOptions{formatDepth: 1000, format: "invalid"}, inBuf: `true`, inVal: new(any), want: func() any { var vi any = true return &vi }(), }, { name: name("Interfaces/Any"), inBuf: `{"X":[null,false,true,"",0,{},[]]}`, inVal: new(struct{ X any }), want: addr(struct{ X any }{[]any{nil, false, true, "", 0.0, map[string]any{}, []any{}}}), }, { name: name("Interfaces/Any/Named"), inBuf: `{"X":[null,false,true,"",0,{},[]]}`, inVal: new(struct{ X namedAny }), want: addr(struct{ X namedAny }{[]any{nil, false, true, "", 0.0, map[string]any{}, []any{}}}), }, { name: name("Interfaces/Any/Stringified"), uopts: UnmarshalOptions{StringifyNumbers: true}, inBuf: `{"X":"0"}`, inVal: new(struct{ X any }), want: addr(struct{ X any }{"0"}), }, { name: name("Interfaces/Any/UnmarshalFunc/Any"), uopts: UnmarshalOptions{Unmarshalers: UnmarshalFuncV1(func(b []byte, v *any) error { *v = "called" return nil })}, inBuf: `{"X":[null,false,true,"",0,{},[]]}`, inVal: new(struct{ X any }), want: addr(struct{ X any }{"called"}), }, { name: name("Interfaces/Any/UnmarshalFunc/Bool"), uopts: UnmarshalOptions{Unmarshalers: UnmarshalFuncV1(func(b []byte, v *bool) error { *v = string(b) != "true" return nil })}, inBuf: `{"X":[null,false,true,"",0,{},[]]}`, inVal: new(struct{ X any }), want: addr(struct{ X any }{[]any{nil, true, false, "", 0.0, map[string]any{}, []any{}}}), }, { name: name("Interfaces/Any/UnmarshalFunc/String"), uopts: UnmarshalOptions{Unmarshalers: UnmarshalFuncV1(func(b []byte, v *string) error { *v = "called" return nil })}, inBuf: `{"X":[null,false,true,"",0,{},[]]}`, inVal: new(struct{ X any }), want: addr(struct{ X any }{[]any{nil, false, true, "called", 0.0, map[string]any{}, []any{}}}), }, { name: name("Interfaces/Any/UnmarshalFunc/Float64"), uopts: UnmarshalOptions{Unmarshalers: UnmarshalFuncV1(func(b []byte, v *float64) error { *v = 3.14159 return nil })}, inBuf: `{"X":[null,false,true,"",0,{},[]]}`, inVal: new(struct{ X any }), want: addr(struct{ X any }{[]any{nil, false, true, "", 3.14159, map[string]any{}, []any{}}}), }, { name: name("Interfaces/Any/UnmarshalFunc/MapStringAny"), uopts: UnmarshalOptions{Unmarshalers: UnmarshalFuncV1(func(b []byte, v *map[string]any) error { *v = map[string]any{"called": nil} return nil })}, inBuf: `{"X":[null,false,true,"",0,{},[]]}`, inVal: new(struct{ X any }), want: addr(struct{ X any }{[]any{nil, false, true, "", 0.0, map[string]any{"called": nil}, []any{}}}), }, { name: name("Interfaces/Any/UnmarshalFunc/SliceAny"), uopts: UnmarshalOptions{Unmarshalers: UnmarshalFuncV1(func(b []byte, v *[]any) error { *v = []any{"called"} return nil })}, inBuf: `{"X":[null,false,true,"",0,{},[]]}`, inVal: new(struct{ X any }), want: addr(struct{ X any }{[]any{"called"}}), }, { name: name("Interfaces/Any/Maps/NonEmpty"), inBuf: `{"X":{"fizz":"buzz"}}`, inVal: new(struct{ X any }), want: addr(struct{ X any }{map[string]any{"fizz": "buzz"}}), }, { name: name("Interfaces/Any/Maps/RejectDuplicateNames"), inBuf: `{"X":{"fizz":"buzz","fizz":true}}`, inVal: new(struct{ X any }), want: addr(struct{ X any }{map[string]any{"fizz": "buzz"}}), wantErr: (&SyntacticError{str: `duplicate name "fizz" in object`}).withOffset(int64(len(`{"X":{"fizz":"buzz",`))), }, { name: name("Interfaces/Any/Maps/AllowDuplicateNames"), dopts: DecodeOptions{AllowDuplicateNames: true}, inBuf: `{"X":{"fizz":"buzz","fizz":true}}`, inVal: new(struct{ X any }), want: addr(struct{ X any }{map[string]any{"fizz": "buzz"}}), wantErr: &SemanticError{action: "unmarshal", JSONKind: 't', GoType: stringType}, }, { name: name("Interfaces/Any/Slices/NonEmpty"), inBuf: `{"X":["fizz","buzz"]}`, inVal: new(struct{ X any }), want: addr(struct{ X any }{[]any{"fizz", "buzz"}}), }, { name: name("Methods/NilPointer/Null"), inBuf: `{"X":null}`, inVal: addr(struct{ X *allMethods }{X: (*allMethods)(nil)}), want: addr(struct{ X *allMethods }{X: (*allMethods)(nil)}), // method should not be called }, { name: name("Methods/NilPointer/Value"), inBuf: `{"X":"value"}`, inVal: addr(struct{ X *allMethods }{X: (*allMethods)(nil)}), want: addr(struct{ X *allMethods }{X: &allMethods{method: "UnmarshalNextJSON", value: []byte(`"value"`)}}), }, { name: name("Methods/NilInterface/Null"), inBuf: `{"X":null}`, inVal: addr(struct{ X MarshalerV2 }{X: (*allMethods)(nil)}), want: addr(struct{ X MarshalerV2 }{X: nil}), // interface value itself is nil'd out }, { name: name("Methods/NilInterface/Value"), inBuf: `{"X":"value"}`, inVal: addr(struct{ X MarshalerV2 }{X: (*allMethods)(nil)}), want: addr(struct{ X MarshalerV2 }{X: &allMethods{method: "UnmarshalNextJSON", value: []byte(`"value"`)}}), }, { name: name("Methods/AllMethods"), inBuf: `{"X":"hello"}`, inVal: new(struct{ X *allMethods }), want: addr(struct{ X *allMethods }{X: &allMethods{method: "UnmarshalNextJSON", value: []byte(`"hello"`)}}), }, { name: name("Methods/AllMethodsExceptJSONv2"), inBuf: `{"X":"hello"}`, inVal: new(struct{ X *allMethodsExceptJSONv2 }), want: addr(struct{ X *allMethodsExceptJSONv2 }{X: &allMethodsExceptJSONv2{allMethods: allMethods{method: "UnmarshalJSON", value: []byte(`"hello"`)}}}), }, { name: name("Methods/AllMethodsExceptJSONv1"), inBuf: `{"X":"hello"}`, inVal: new(struct{ X *allMethodsExceptJSONv1 }), want: addr(struct{ X *allMethodsExceptJSONv1 }{X: &allMethodsExceptJSONv1{allMethods: allMethods{method: "UnmarshalNextJSON", value: []byte(`"hello"`)}}}), }, { name: name("Methods/AllMethodsExceptText"), inBuf: `{"X":"hello"}`, inVal: new(struct{ X *allMethodsExceptText }), want: addr(struct{ X *allMethodsExceptText }{X: &allMethodsExceptText{allMethods: allMethods{method: "UnmarshalNextJSON", value: []byte(`"hello"`)}}}), }, { name: name("Methods/OnlyMethodJSONv2"), inBuf: `{"X":"hello"}`, inVal: new(struct{ X *onlyMethodJSONv2 }), want: addr(struct{ X *onlyMethodJSONv2 }{X: &onlyMethodJSONv2{allMethods: allMethods{method: "UnmarshalNextJSON", value: []byte(`"hello"`)}}}), }, { name: name("Methods/OnlyMethodJSONv1"), inBuf: `{"X":"hello"}`, inVal: new(struct{ X *onlyMethodJSONv1 }), want: addr(struct{ X *onlyMethodJSONv1 }{X: &onlyMethodJSONv1{allMethods: allMethods{method: "UnmarshalJSON", value: []byte(`"hello"`)}}}), }, { name: name("Methods/OnlyMethodText"), inBuf: `{"X":"hello"}`, inVal: new(struct{ X *onlyMethodText }), want: addr(struct{ X *onlyMethodText }{X: &onlyMethodText{allMethods: allMethods{method: "UnmarshalText", value: []byte(`hello`)}}}), }, { name: name("Methods/IP"), inBuf: `"192.168.0.100"`, inVal: new(net.IP), want: addr(net.IPv4(192, 168, 0, 100)), }, { // NOTE: Fixes https://go.dev/issue/46516. name: name("Methods/Anonymous"), inBuf: `{"X":"hello"}`, inVal: new(struct{ X struct{ allMethods } }), want: addr(struct{ X struct{ allMethods } }{X: struct{ allMethods }{allMethods{method: "UnmarshalNextJSON", value: []byte(`"hello"`)}}}), }, { // NOTE: Fixes https://go.dev/issue/22967. name: name("Methods/Addressable"), inBuf: `{"V":"hello","M":{"K":"hello"},"I":"hello"}`, inVal: addr(struct { V allMethods M map[string]allMethods I any }{ I: allMethods{}, // need to initialize with concrete value }), want: addr(struct { V allMethods M map[string]allMethods I any }{ V: allMethods{method: "UnmarshalNextJSON", value: []byte(`"hello"`)}, M: map[string]allMethods{"K": {method: "UnmarshalNextJSON", value: []byte(`"hello"`)}}, I: allMethods{method: "UnmarshalNextJSON", value: []byte(`"hello"`)}, }), }, { // NOTE: Fixes https://go.dev/issue/29732. name: name("Methods/MapKey/JSONv2"), inBuf: `{"k1":"v1b","k2":"v2"}`, inVal: addr(map[structMethodJSONv2]string{{"k1"}: "v1a", {"k3"}: "v3"}), want: addr(map[structMethodJSONv2]string{{"k1"}: "v1b", {"k2"}: "v2", {"k3"}: "v3"}), }, { // NOTE: Fixes https://go.dev/issue/29732. name: name("Methods/MapKey/JSONv1"), inBuf: `{"k1":"v1b","k2":"v2"}`, inVal: addr(map[structMethodJSONv1]string{{"k1"}: "v1a", {"k3"}: "v3"}), want: addr(map[structMethodJSONv1]string{{"k1"}: "v1b", {"k2"}: "v2", {"k3"}: "v3"}), }, { name: name("Methods/MapKey/Text"), inBuf: `{"k1":"v1b","k2":"v2"}`, inVal: addr(map[structMethodText]string{{"k1"}: "v1a", {"k3"}: "v3"}), want: addr(map[structMethodText]string{{"k1"}: "v1b", {"k2"}: "v2", {"k3"}: "v3"}), }, { name: name("Methods/Invalid/JSONv2/Error"), inBuf: `{}`, inVal: addr(unmarshalJSONv2Func(func(UnmarshalOptions, *Decoder) error { return errors.New("some error") })), wantErr: &SemanticError{action: "unmarshal", GoType: unmarshalJSONv2FuncType, Err: errors.New("some error")}, }, { name: name("Methods/Invalid/JSONv2/TooFew"), inVal: addr(unmarshalJSONv2Func(func(UnmarshalOptions, *Decoder) error { return nil // do nothing })), wantErr: &SemanticError{action: "unmarshal", GoType: unmarshalJSONv2FuncType, Err: errors.New("must read exactly one JSON value")}, }, { name: name("Methods/Invalid/JSONv2/TooMany"), inBuf: `{}{}`, inVal: addr(unmarshalJSONv2Func(func(uo UnmarshalOptions, dec *Decoder) error { dec.ReadValue() dec.ReadValue() return nil })), wantErr: &SemanticError{action: "unmarshal", GoType: unmarshalJSONv2FuncType, Err: errors.New("must read exactly one JSON value")}, }, { name: name("Methods/Invalid/JSONv2/SkipFunc"), inBuf: `{}`, inVal: addr(unmarshalJSONv2Func(func(UnmarshalOptions, *Decoder) error { return SkipFunc })), wantErr: &SemanticError{action: "unmarshal", GoType: unmarshalJSONv2FuncType, Err: errors.New("unmarshal method cannot be skipped")}, }, { name: name("Methods/Invalid/JSONv1/Error"), inBuf: `{}`, inVal: addr(unmarshalJSONv1Func(func([]byte) error { return errors.New("some error") })), wantErr: &SemanticError{action: "unmarshal", JSONKind: '{', GoType: unmarshalJSONv1FuncType, Err: errors.New("some error")}, }, { name: name("Methods/Invalid/JSONv1/SkipFunc"), inBuf: `{}`, inVal: addr(unmarshalJSONv1Func(func([]byte) error { return SkipFunc })), wantErr: &SemanticError{action: "unmarshal", JSONKind: '{', GoType: unmarshalJSONv1FuncType, Err: errors.New("unmarshal method cannot be skipped")}, }, { name: name("Methods/Invalid/Text/Error"), inBuf: `"value"`, inVal: addr(unmarshalTextFunc(func([]byte) error { return errors.New("some error") })), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: unmarshalTextFuncType, Err: errors.New("some error")}, }, { name: name("Methods/Invalid/Text/Syntax"), inBuf: `{}`, inVal: addr(unmarshalTextFunc(func([]byte) error { panic("should not be called") })), wantErr: &SemanticError{action: "unmarshal", JSONKind: '{', GoType: unmarshalTextFuncType, Err: errors.New("JSON value must be string type")}, }, { name: name("Methods/Invalid/Text/SkipFunc"), inBuf: `"value"`, inVal: addr(unmarshalTextFunc(func([]byte) error { return SkipFunc })), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: unmarshalTextFuncType, Err: errors.New("unmarshal method cannot be skipped")}, }, { name: name("Functions/String/V1"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV1(func(b []byte, v *string) error { if string(b) != `""` { return fmt.Errorf("got %s, want %s", b, `""`) } *v = "called" return nil }), }, inBuf: `""`, inVal: addr(""), want: addr("called"), }, { name: name("Functions/NamedString/V1/NoMatch"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV1(func(b []byte, v *namedString) error { panic("should not be called") }), }, inBuf: `""`, inVal: addr(""), want: addr(""), }, { name: name("Functions/NamedString/V1/Match"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV1(func(b []byte, v *namedString) error { if string(b) != `""` { return fmt.Errorf("got %s, want %s", b, `""`) } *v = "called" return nil }), }, inBuf: `""`, inVal: addr(namedString("")), want: addr(namedString("called")), }, { name: name("Functions/String/V2"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *string) error { switch b, err := dec.ReadValue(); { case err != nil: return err case string(b) != `""`: return fmt.Errorf("got %s, want %s", b, `""`) } *v = "called" return nil }), }, inBuf: `""`, inVal: addr(""), want: addr("called"), }, { name: name("Functions/NamedString/V2/NoMatch"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *namedString) error { panic("should not be called") }), }, inBuf: `""`, inVal: addr(""), want: addr(""), }, { name: name("Functions/NamedString/V2/Match"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *namedString) error { switch t, err := dec.ReadToken(); { case err != nil: return err case t.String() != ``: return fmt.Errorf("got %q, want %q", t, ``) } *v = "called" return nil }), }, inBuf: `""`, inVal: addr(namedString("")), want: addr(namedString("called")), }, { name: name("Functions/String/Empty1/NoMatch"), uopts: UnmarshalOptions{ Unmarshalers: new(Unmarshalers), }, inBuf: `""`, inVal: addr(""), want: addr(""), }, { name: name("Functions/String/Empty2/NoMatch"), uopts: UnmarshalOptions{ Unmarshalers: NewUnmarshalers(), }, inBuf: `""`, inVal: addr(""), want: addr(""), }, { name: name("Functions/String/V1/DirectError"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV1(func([]byte, *string) error { return errors.New("some error") }), }, inBuf: `""`, inVal: addr(""), want: addr(""), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: reflect.PointerTo(stringType), Err: errors.New("some error")}, }, { name: name("Functions/String/V1/SkipError"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV1(func([]byte, *string) error { return SkipFunc }), }, inBuf: `""`, inVal: addr(""), want: addr(""), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: reflect.PointerTo(stringType), Err: errors.New("unmarshal function of type func([]byte, T) error cannot be skipped")}, }, { name: name("Functions/String/V2/DirectError"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *string) error { return errors.New("some error") }), }, inBuf: `""`, inVal: addr(""), want: addr(""), wantErr: &SemanticError{action: "unmarshal", GoType: reflect.PointerTo(stringType), Err: errors.New("some error")}, }, { name: name("Functions/String/V2/TooFew"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *string) error { return nil }), }, inBuf: `""`, inVal: addr(""), want: addr(""), wantErr: &SemanticError{action: "unmarshal", GoType: reflect.PointerTo(stringType), Err: errors.New("must read exactly one JSON value")}, }, { name: name("Functions/String/V2/TooMany"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *string) error { if _, err := dec.ReadValue(); err != nil { return err } if _, err := dec.ReadValue(); err != nil { return err } return nil }), }, inBuf: `["",""]`, inVal: addr([]string{}), want: addr([]string{""}), wantErr: &SemanticError{action: "unmarshal", GoType: reflect.PointerTo(stringType), Err: errors.New("must read exactly one JSON value")}, }, { name: name("Functions/String/V2/Skipped"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *string) error { return SkipFunc }), }, inBuf: `""`, inVal: addr(""), want: addr(""), }, { name: name("Functions/String/V2/ProcessBeforeSkip"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *string) error { if _, err := dec.ReadValue(); err != nil { return err } return SkipFunc }), }, inBuf: `""`, inVal: addr(""), want: addr(""), wantErr: &SemanticError{action: "unmarshal", GoType: reflect.PointerTo(stringType), Err: errors.New("must not read any JSON tokens when skipping")}, }, { name: name("Functions/String/V2/WrappedSkipError"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *string) error { return fmt.Errorf("wrap: %w", SkipFunc) }), }, inBuf: `""`, inVal: addr(""), want: addr(""), wantErr: &SemanticError{action: "unmarshal", GoType: reflect.PointerTo(stringType), Err: fmt.Errorf("wrap: %w", SkipFunc)}, }, { name: name("Functions/Map/Key/NoCaseString/V1"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV1(func(b []byte, v *nocaseString) error { if string(b) != `"hello"` { return fmt.Errorf("got %s, want %s", b, `"hello"`) } *v = "called" return nil }), }, inBuf: `{"hello":"world"}`, inVal: addr(map[nocaseString]string{}), want: addr(map[nocaseString]string{"called": "world"}), }, { name: name("Functions/Map/Key/TextMarshaler/V1"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV1(func(b []byte, v encoding.TextMarshaler) error { if string(b) != `"hello"` { return fmt.Errorf("got %s, want %s", b, `"hello"`) } *v.(*nocaseString) = "called" return nil }), }, inBuf: `{"hello":"world"}`, inVal: addr(map[nocaseString]string{}), want: addr(map[nocaseString]string{"called": "world"}), }, { name: name("Functions/Map/Key/NoCaseString/V2"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *nocaseString) error { switch t, err := dec.ReadToken(); { case err != nil: return err case t.String() != "hello": return fmt.Errorf("got %q, want %q", t, "hello") } *v = "called" return nil }), }, inBuf: `{"hello":"world"}`, inVal: addr(map[nocaseString]string{}), want: addr(map[nocaseString]string{"called": "world"}), }, { name: name("Functions/Map/Key/TextMarshaler/V2"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v encoding.TextMarshaler) error { switch b, err := dec.ReadValue(); { case err != nil: return err case string(b) != `"hello"`: return fmt.Errorf("got %s, want %s", b, `"hello"`) } *v.(*nocaseString) = "called" return nil }), }, inBuf: `{"hello":"world"}`, inVal: addr(map[nocaseString]string{}), want: addr(map[nocaseString]string{"called": "world"}), }, { name: name("Functions/Map/Key/String/V1/DuplicateName"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *string) error { if _, err := dec.ReadValue(); err != nil { return err } *v = fmt.Sprintf("%d-%d", len(dec.tokens.stack), dec.tokens.last.length()) return nil }), }, inBuf: `{"name":"value","name":"value"}`, inVal: addr(map[string]string{}), want: addr(map[string]string{"1-1": "1-2"}), wantErr: &SemanticError{action: "unmarshal", GoType: reflect.PointerTo(stringType), Err: (&SyntacticError{str: `duplicate name "name" in object`}).withOffset(int64(len(`{"name":"value",`)))}, }, { name: name("Functions/Map/Value/NoCaseString/V1"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV1(func(b []byte, v *nocaseString) error { if string(b) != `"world"` { return fmt.Errorf("got %s, want %s", b, `"world"`) } *v = "called" return nil }), }, inBuf: `{"hello":"world"}`, inVal: addr(map[string]nocaseString{}), want: addr(map[string]nocaseString{"hello": "called"}), }, { name: name("Functions/Map/Value/TextMarshaler/V1"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV1(func(b []byte, v encoding.TextMarshaler) error { if string(b) != `"world"` { return fmt.Errorf("got %s, want %s", b, `"world"`) } *v.(*nocaseString) = "called" return nil }), }, inBuf: `{"hello":"world"}`, inVal: addr(map[string]nocaseString{}), want: addr(map[string]nocaseString{"hello": "called"}), }, { name: name("Functions/Map/Value/NoCaseString/V2"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *nocaseString) error { switch t, err := dec.ReadToken(); { case err != nil: return err case t.String() != "world": return fmt.Errorf("got %q, want %q", t, "world") } *v = "called" return nil }), }, inBuf: `{"hello":"world"}`, inVal: addr(map[string]nocaseString{}), want: addr(map[string]nocaseString{"hello": "called"}), }, { name: name("Functions/Map/Value/TextMarshaler/V2"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v encoding.TextMarshaler) error { switch b, err := dec.ReadValue(); { case err != nil: return err case string(b) != `"world"`: return fmt.Errorf("got %s, want %s", b, `"world"`) } *v.(*nocaseString) = "called" return nil }), }, inBuf: `{"hello":"world"}`, inVal: addr(map[string]nocaseString{}), want: addr(map[string]nocaseString{"hello": "called"}), }, { name: name("Funtions/Struct/Fields"), uopts: UnmarshalOptions{ Unmarshalers: NewUnmarshalers( UnmarshalFuncV1(func(b []byte, v *bool) error { if string(b) != `"called1"` { return fmt.Errorf("got %s, want %s", b, `"called1"`) } *v = true return nil }), UnmarshalFuncV1(func(b []byte, v *string) error { if string(b) != `"called2"` { return fmt.Errorf("got %s, want %s", b, `"called2"`) } *v = "called2" return nil }), UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *[]byte) error { switch t, err := dec.ReadToken(); { case err != nil: return err case t.String() != "called3": return fmt.Errorf("got %q, want %q", t, "called3") } *v = []byte("called3") return nil }), UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *int64) error { switch b, err := dec.ReadValue(); { case err != nil: return err case string(b) != `"called4"`: return fmt.Errorf("got %s, want %s", b, `"called4"`) } *v = 123 return nil }), ), }, inBuf: `{"Bool":"called1","String":"called2","Bytes":"called3","Int":"called4","Uint":456,"Float":789}`, inVal: addr(structScalars{}), want: addr(structScalars{Bool: true, String: "called2", Bytes: []byte("called3"), Int: 123, Uint: 456, Float: 789}), }, { name: name("Functions/Struct/Inlined"), uopts: UnmarshalOptions{ Unmarshalers: NewUnmarshalers( UnmarshalFuncV1(func([]byte, *structInlinedL1) error { panic("should not be called") }), UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *StructEmbed2) error { panic("should not be called") }), ), }, inBuf: `{"E":"E3","F":"F3","G":"G3","A":"A1","B":"B1","D":"D2"}`, inVal: new(structInlined), want: addr(structInlined{ X: structInlinedL1{ X: &structInlinedL2{A: "A1", B: "B1" /* C: "C1" */}, StructEmbed1: StructEmbed1{ /* C: "C2" */ D: "D2" /* E: "E2" */}, }, StructEmbed2: &StructEmbed2{E: "E3", F: "F3", G: "G3"}, }), }, { name: name("Functions/Slice/Elem"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV1(func(b []byte, v *string) error { *v = strings.Trim(strings.ToUpper(string(b)), `"`) return nil }), }, inBuf: `["hello","World"]`, inVal: addr([]string{}), want: addr([]string{"HELLO", "WORLD"}), }, { name: name("Functions/Array/Elem"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV1(func(b []byte, v *string) error { *v = strings.Trim(strings.ToUpper(string(b)), `"`) return nil }), }, inBuf: `["hello","World"]`, inVal: addr([2]string{}), want: addr([2]string{"HELLO", "WORLD"}), }, { name: name("Functions/Pointer/Nil"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *string) error { t, err := dec.ReadToken() *v = strings.ToUpper(t.String()) return err }), }, inBuf: `{"X":"hello"}`, inVal: addr(struct{ X *string }{nil}), want: addr(struct{ X *string }{addr("HELLO")}), }, { name: name("Functions/Pointer/NonNil"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *string) error { t, err := dec.ReadToken() *v = strings.ToUpper(t.String()) return err }), }, inBuf: `{"X":"hello"}`, inVal: addr(struct{ X *string }{addr("")}), want: addr(struct{ X *string }{addr("HELLO")}), }, { name: name("Functions/Interface/Nil"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v fmt.Stringer) error { panic("should not be called") }), }, inBuf: `{"X":"hello"}`, inVal: addr(struct{ X fmt.Stringer }{nil}), want: addr(struct{ X fmt.Stringer }{nil}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: fmtStringerType, Err: errors.New("cannot derive concrete type for non-empty interface")}, }, { name: name("Functions/Interface/NetIP"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *fmt.Stringer) error { *v = net.IP{} return SkipFunc }), }, inBuf: `{"X":"1.1.1.1"}`, inVal: addr(struct{ X fmt.Stringer }{nil}), want: addr(struct{ X fmt.Stringer }{net.IPv4(1, 1, 1, 1)}), }, { name: name("Functions/Interface/NewPointerNetIP"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *fmt.Stringer) error { *v = new(net.IP) return SkipFunc }), }, inBuf: `{"X":"1.1.1.1"}`, inVal: addr(struct{ X fmt.Stringer }{nil}), want: addr(struct{ X fmt.Stringer }{addr(net.IPv4(1, 1, 1, 1))}), }, { name: name("Functions/Interface/NilPointerNetIP"), uopts: UnmarshalOptions{ Unmarshalers: UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *fmt.Stringer) error { *v = (*net.IP)(nil) return SkipFunc }), }, inBuf: `{"X":"1.1.1.1"}`, inVal: addr(struct{ X fmt.Stringer }{nil}), want: addr(struct{ X fmt.Stringer }{addr(net.IPv4(1, 1, 1, 1))}), }, { name: name("Functions/Interface/NilPointerNetIP/Override"), uopts: UnmarshalOptions{ Unmarshalers: NewUnmarshalers( UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *fmt.Stringer) error { *v = (*net.IP)(nil) return SkipFunc }), UnmarshalFuncV1(func(b []byte, v *net.IP) error { b = bytes.ReplaceAll(b, []byte(`1`), []byte(`8`)) return v.UnmarshalText(bytes.Trim(b, `"`)) }), ), }, inBuf: `{"X":"1.1.1.1"}`, inVal: addr(struct{ X fmt.Stringer }{nil}), want: addr(struct{ X fmt.Stringer }{addr(net.IPv4(8, 8, 8, 8))}), }, { name: name("Functions/Interface/Any"), inBuf: `[null,{},{},{},{},{},{},{},{},{},{},{},{},"LAST"]`, inVal: addr([...]any{ nil, // nil valueStringer{}, // T (*valueStringer)(nil), // *T addr(valueStringer{}), // *T (**valueStringer)(nil), // **T addr((*valueStringer)(nil)), // **T addr(addr(valueStringer{})), // **T pointerStringer{}, // T (*pointerStringer)(nil), // *T addr(pointerStringer{}), // *T (**pointerStringer)(nil), // **T addr((*pointerStringer)(nil)), // **T addr(addr(pointerStringer{})), // **T "LAST", }), uopts: UnmarshalOptions{ Unmarshalers: func() *Unmarshalers { type P [2]int type PV struct { P P V any } var lastChecks []func() error checkLast := func() error { for _, fn := range lastChecks { if err := fn(); err != nil { return err } } return SkipFunc } makeValueChecker := func(name string, want []PV) func(d *Decoder, v any) error { checkNext := func(d *Decoder, v any) error { p := P{len(d.tokens.stack), d.tokens.last.length()} rv := reflect.ValueOf(v) pv := PV{p, v} switch { case len(want) == 0: return fmt.Errorf("%s: %v: got more values than expected", name, p) case !rv.IsValid() || rv.Kind() != reflect.Pointer || rv.IsNil(): return fmt.Errorf("%s: %v: got %#v, want non-nil pointer type", name, p, v) case !reflect.DeepEqual(pv, want[0]): return fmt.Errorf("%s:\n\tgot %#v\n\twant %#v", name, pv, want[0]) default: want = want[1:] return SkipFunc } } lastChecks = append(lastChecks, func() error { if len(want) > 0 { return fmt.Errorf("%s: did not get enough values, want %d more", name, len(want)) } return nil }) return checkNext } makePositionChecker := func(name string, want []P) func(d *Decoder, v any) error { checkNext := func(d *Decoder, v any) error { p := P{len(d.tokens.stack), d.tokens.last.length()} switch { case len(want) == 0: return fmt.Errorf("%s: %v: got more values than wanted", name, p) case p != want[0]: return fmt.Errorf("%s: got %v, want %v", name, p, want[0]) default: want = want[1:] return SkipFunc } } lastChecks = append(lastChecks, func() error { if len(want) > 0 { return fmt.Errorf("%s: did not get enough values, want %d more", name, len(want)) } return nil }) return checkNext } // In contrast to marshal, unmarshal automatically allocates for // nil pointers, which causes unmarshal to visit more values. wantAny := []PV{ {P{1, 0}, addr(any(nil))}, {P{1, 1}, addr(any(valueStringer{}))}, {P{1, 1}, addr(valueStringer{})}, {P{1, 2}, addr(any((*valueStringer)(nil)))}, {P{1, 2}, addr((*valueStringer)(nil))}, {P{1, 2}, addr(valueStringer{})}, {P{1, 3}, addr(any(addr(valueStringer{})))}, {P{1, 3}, addr(addr(valueStringer{}))}, {P{1, 3}, addr(valueStringer{})}, {P{1, 4}, addr(any((**valueStringer)(nil)))}, {P{1, 4}, addr((**valueStringer)(nil))}, {P{1, 4}, addr((*valueStringer)(nil))}, {P{1, 4}, addr(valueStringer{})}, {P{1, 5}, addr(any(addr((*valueStringer)(nil))))}, {P{1, 5}, addr(addr((*valueStringer)(nil)))}, {P{1, 5}, addr((*valueStringer)(nil))}, {P{1, 5}, addr(valueStringer{})}, {P{1, 6}, addr(any(addr(addr(valueStringer{}))))}, {P{1, 6}, addr(addr(addr(valueStringer{})))}, {P{1, 6}, addr(addr(valueStringer{}))}, {P{1, 6}, addr(valueStringer{})}, {P{1, 7}, addr(any(pointerStringer{}))}, {P{1, 7}, addr(pointerStringer{})}, {P{1, 8}, addr(any((*pointerStringer)(nil)))}, {P{1, 8}, addr((*pointerStringer)(nil))}, {P{1, 8}, addr(pointerStringer{})}, {P{1, 9}, addr(any(addr(pointerStringer{})))}, {P{1, 9}, addr(addr(pointerStringer{}))}, {P{1, 9}, addr(pointerStringer{})}, {P{1, 10}, addr(any((**pointerStringer)(nil)))}, {P{1, 10}, addr((**pointerStringer)(nil))}, {P{1, 10}, addr((*pointerStringer)(nil))}, {P{1, 10}, addr(pointerStringer{})}, {P{1, 11}, addr(any(addr((*pointerStringer)(nil))))}, {P{1, 11}, addr(addr((*pointerStringer)(nil)))}, {P{1, 11}, addr((*pointerStringer)(nil))}, {P{1, 11}, addr(pointerStringer{})}, {P{1, 12}, addr(any(addr(addr(pointerStringer{}))))}, {P{1, 12}, addr(addr(addr(pointerStringer{})))}, {P{1, 12}, addr(addr(pointerStringer{}))}, {P{1, 12}, addr(pointerStringer{})}, {P{1, 13}, addr(any("LAST"))}, {P{1, 13}, addr("LAST")}, } checkAny := makeValueChecker("any", wantAny) anyUnmarshaler := UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v any) error { return checkAny(dec, v) }) var wantPointerAny []PV for _, v := range wantAny { if _, ok := v.V.(*any); ok { wantPointerAny = append(wantPointerAny, v) } } checkPointerAny := makeValueChecker("*any", wantPointerAny) pointerAnyUnmarshaler := UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *any) error { return checkPointerAny(dec, v) }) checkNamedAny := makeValueChecker("namedAny", wantAny) namedAnyUnmarshaler := UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v namedAny) error { return checkNamedAny(dec, v) }) checkPointerNamedAny := makeValueChecker("*namedAny", nil) pointerNamedAnyUnmarshaler := UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *namedAny) error { return checkPointerNamedAny(dec, v) }) type stringer = fmt.Stringer var wantStringer []PV for _, v := range wantAny { if _, ok := v.V.(stringer); ok { wantStringer = append(wantStringer, v) } } checkStringer := makeValueChecker("stringer", wantStringer) stringerUnmarshaler := UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v stringer) error { return checkStringer(dec, v) }) checkPointerStringer := makeValueChecker("*stringer", nil) pointerStringerUnmarshaler := UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *stringer) error { return checkPointerStringer(dec, v) }) wantValueStringer := []P{{1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6}} checkPointerValueStringer := makePositionChecker("*valueStringer", wantValueStringer) pointerValueStringerUnmarshaler := UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *valueStringer) error { return checkPointerValueStringer(dec, v) }) wantPointerStringer := []P{{1, 7}, {1, 8}, {1, 9}, {1, 10}, {1, 11}, {1, 12}} checkPointerPointerStringer := makePositionChecker("*pointerStringer", wantPointerStringer) pointerPointerStringerUnmarshaler := UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *pointerStringer) error { return checkPointerPointerStringer(dec, v) }) lastUnmarshaler := UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *string) error { return checkLast() }) return NewUnmarshalers( // This is just like unmarshaling into a Go array, // but avoids zeroing the element before calling unmarshal. UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *[14]any) error { if _, err := dec.ReadToken(); err != nil { return err } for i := 0; i < len(*v); i++ { if err := uo.UnmarshalNext(dec, &(*v)[i]); err != nil { return err } } if _, err := dec.ReadToken(); err != nil { return err } return nil }), anyUnmarshaler, pointerAnyUnmarshaler, namedAnyUnmarshaler, pointerNamedAnyUnmarshaler, // never called stringerUnmarshaler, pointerStringerUnmarshaler, // never called pointerValueStringerUnmarshaler, pointerPointerStringerUnmarshaler, lastUnmarshaler, ) }(), }, }, { name: name("Functions/Precedence/V1First"), uopts: UnmarshalOptions{ Unmarshalers: NewUnmarshalers( UnmarshalFuncV1(func(b []byte, v *string) error { if string(b) != `"called"` { return fmt.Errorf("got %s, want %s", b, `"called"`) } *v = "called" return nil }), UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *string) error { panic("should not be called") }), ), }, inBuf: `"called"`, inVal: addr(""), want: addr("called"), }, { name: name("Functions/Precedence/V2First"), uopts: UnmarshalOptions{ Unmarshalers: NewUnmarshalers( UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *string) error { switch t, err := dec.ReadToken(); { case err != nil: return err case t.String() != "called": return fmt.Errorf("got %q, want %q", t, "called") } *v = "called" return nil }), UnmarshalFuncV1(func([]byte, *string) error { panic("should not be called") }), ), }, inBuf: `"called"`, inVal: addr(""), want: addr("called"), }, { name: name("Functions/Precedence/V2Skipped"), uopts: UnmarshalOptions{ Unmarshalers: NewUnmarshalers( UnmarshalFuncV2(func(uo UnmarshalOptions, dec *Decoder, v *string) error { return SkipFunc }), UnmarshalFuncV1(func(b []byte, v *string) error { if string(b) != `"called"` { return fmt.Errorf("got %s, want %s", b, `"called"`) } *v = "called" return nil }), ), }, inBuf: `"called"`, inVal: addr(""), want: addr("called"), }, { name: name("Functions/Precedence/NestedFirst"), uopts: UnmarshalOptions{ Unmarshalers: NewUnmarshalers( NewUnmarshalers( UnmarshalFuncV1(func(b []byte, v *string) error { if string(b) != `"called"` { return fmt.Errorf("got %s, want %s", b, `"called"`) } *v = "called" return nil }), ), UnmarshalFuncV1(func([]byte, *string) error { panic("should not be called") }), ), }, inBuf: `"called"`, inVal: addr(""), want: addr("called"), }, { name: name("Functions/Precedence/NestedLast"), uopts: UnmarshalOptions{ Unmarshalers: NewUnmarshalers( UnmarshalFuncV1(func(b []byte, v *string) error { if string(b) != `"called"` { return fmt.Errorf("got %s, want %s", b, `"called"`) } *v = "called" return nil }), NewUnmarshalers( UnmarshalFuncV1(func([]byte, *string) error { panic("should not be called") }), ), ), }, inBuf: `"called"`, inVal: addr(""), want: addr("called"), }, { name: name("Duration/Null"), inBuf: `{"D1":null,"D2":null}`, inVal: addr(struct { D1 time.Duration D2 time.Duration `json:",format:nanos"` }{1, 1}), want: addr(struct { D1 time.Duration D2 time.Duration `json:",format:nanos"` }{0, 0}), }, { name: name("Duration/Zero"), inBuf: `{"D1":"0s","D2":0}`, inVal: addr(struct { D1 time.Duration D2 time.Duration `json:",format:nanos"` }{1, 1}), want: addr(struct { D1 time.Duration D2 time.Duration `json:",format:nanos"` }{0, 0}), }, { name: name("Duration/Positive"), inBuf: `{"D1":"34293h33m9.123456789s","D2":123456789123456789}`, inVal: new(struct { D1 time.Duration D2 time.Duration `json:",format:nanos"` }), want: addr(struct { D1 time.Duration D2 time.Duration `json:",format:nanos"` }{ 123456789123456789, 123456789123456789, }), }, { name: name("Duration/Negative"), inBuf: `{"D1":"-34293h33m9.123456789s","D2":-123456789123456789}`, inVal: new(struct { D1 time.Duration D2 time.Duration `json:",format:nanos"` }), want: addr(struct { D1 time.Duration D2 time.Duration `json:",format:nanos"` }{ -123456789123456789, -123456789123456789, }), }, { name: name("Duration/Nanos/String"), inBuf: `{"D":"12345"}`, inVal: addr(struct { D time.Duration `json:",string,format:nanos"` }{1}), want: addr(struct { D time.Duration `json:",string,format:nanos"` }{12345}), }, { name: name("Duration/Nanos/String/Invalid"), inBuf: `{"D":"+12345"}`, inVal: addr(struct { D time.Duration `json:",string,format:nanos"` }{1}), want: addr(struct { D time.Duration `json:",string,format:nanos"` }{1}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: timeDurationType, Err: fmt.Errorf(`cannot parse "+12345" as signed integer: %w`, strconv.ErrSyntax)}, }, { name: name("Duration/Nanos/Mismatch"), inBuf: `{"D":"34293h33m9.123456789s"}`, inVal: addr(struct { D time.Duration `json:",format:nanos"` }{1}), want: addr(struct { D time.Duration `json:",format:nanos"` }{1}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: timeDurationType}, }, { name: name("Duration/Nanos/Invalid"), inBuf: `{"D":1.324}`, inVal: addr(struct { D time.Duration `json:",format:nanos"` }{1}), want: addr(struct { D time.Duration `json:",format:nanos"` }{1}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: timeDurationType, Err: fmt.Errorf(`cannot parse "1.324" as signed integer: %w`, strconv.ErrSyntax)}, }, { name: name("Duration/String/Mismatch"), inBuf: `{"D":-123456789123456789}`, inVal: addr(struct { D time.Duration }{1}), want: addr(struct { D time.Duration }{1}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: timeDurationType}, }, { name: name("Duration/String/Invalid"), inBuf: `{"D":"5minkutes"}`, inVal: addr(struct { D time.Duration }{1}), want: addr(struct { D time.Duration }{1}), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: timeDurationType, Err: func() error { _, err := time.ParseDuration("5minkutes") return err }()}, }, { name: name("Duration/Syntax/Invalid"), inBuf: `{"D":x}`, inVal: addr(struct { D time.Duration }{1}), want: addr(struct { D time.Duration }{1}), wantErr: newInvalidCharacterError([]byte("x"), "at start of value").withOffset(int64(len(`{"D":`))), }, { name: name("Duration/Format/Invalid"), inBuf: `{"D":"0s"}`, inVal: addr(struct { D time.Duration `json:",format:invalid"` }{1}), want: addr(struct { D time.Duration `json:",format:invalid"` }{1}), wantErr: &SemanticError{action: "unmarshal", GoType: timeDurationType, Err: errors.New(`invalid format flag: "invalid"`)}, }, { name: name("Duration/IgnoreInvalidFormat"), uopts: UnmarshalOptions{formatDepth: 1000, format: "invalid"}, inBuf: `"1s"`, inVal: addr(time.Duration(0)), want: addr(time.Second), }, { name: name("Time/Zero"), inBuf: `{"T1":"0001-01-01T00:00:00Z","T2":"01 Jan 01 00:00 UTC","T3":"0001-01-01","T4":"0001-01-01T00:00:00Z","T5":"0001-01-01T00:00:00Z"}`, inVal: new(struct { T1 time.Time T2 time.Time `json:",format:RFC822"` T3 time.Time `json:",format:'2006-01-02'"` T4 time.Time `json:",omitzero"` T5 time.Time `json:",omitempty"` }), want: addr(struct { T1 time.Time T2 time.Time `json:",format:RFC822"` T3 time.Time `json:",format:'2006-01-02'"` T4 time.Time `json:",omitzero"` T5 time.Time `json:",omitempty"` }{ mustParseTime(time.RFC3339Nano, "0001-01-01T00:00:00Z"), mustParseTime(time.RFC822, "01 Jan 01 00:00 UTC"), mustParseTime("2006-01-02", "0001-01-01"), mustParseTime(time.RFC3339Nano, "0001-01-01T00:00:00Z"), mustParseTime(time.RFC3339Nano, "0001-01-01T00:00:00Z"), }), }, { name: name("Time/Format"), inBuf: `{ "T1": "1234-01-02T03:04:05.000000006Z", "T2": "Mon Jan 2 03:04:05 1234", "T3": "Mon Jan 2 03:04:05 UTC 1234", "T4": "Mon Jan 02 03:04:05 +0000 1234", "T5": "02 Jan 34 03:04 UTC", "T6": "02 Jan 34 03:04 +0000", "T7": "Monday, 02-Jan-34 03:04:05 UTC", "T8": "Mon, 02 Jan 1234 03:04:05 UTC", "T9": "Mon, 02 Jan 1234 03:04:05 +0000", "T10": "1234-01-02T03:04:05Z", "T11": "1234-01-02T03:04:05.000000006Z", "T12": "3:04AM", "T13": "Jan 2 03:04:05", "T14": "Jan 2 03:04:05.000", "T15": "Jan 2 03:04:05.000000", "T16": "Jan 2 03:04:05.000000006", "T17": "1234-01-02", "T18": "\"weird\"1234" }`, inVal: new(structTimeFormat), want: addr(structTimeFormat{ mustParseTime(time.RFC3339Nano, "1234-01-02T03:04:05.000000006Z"), mustParseTime(time.ANSIC, "Mon Jan 2 03:04:05 1234"), mustParseTime(time.UnixDate, "Mon Jan 2 03:04:05 UTC 1234"), mustParseTime(time.RubyDate, "Mon Jan 02 03:04:05 +0000 1234"), mustParseTime(time.RFC822, "02 Jan 34 03:04 UTC"), mustParseTime(time.RFC822Z, "02 Jan 34 03:04 +0000"), mustParseTime(time.RFC850, "Monday, 02-Jan-34 03:04:05 UTC"), mustParseTime(time.RFC1123, "Mon, 02 Jan 1234 03:04:05 UTC"), mustParseTime(time.RFC1123Z, "Mon, 02 Jan 1234 03:04:05 +0000"), mustParseTime(time.RFC3339, "1234-01-02T03:04:05Z"), mustParseTime(time.RFC3339Nano, "1234-01-02T03:04:05.000000006Z"), mustParseTime(time.Kitchen, "3:04AM"), mustParseTime(time.Stamp, "Jan 2 03:04:05"), mustParseTime(time.StampMilli, "Jan 2 03:04:05.000"), mustParseTime(time.StampMicro, "Jan 2 03:04:05.000000"), mustParseTime(time.StampNano, "Jan 2 03:04:05.000000006"), mustParseTime("2006-01-02", "1234-01-02"), mustParseTime(`\"weird\"2006`, `\"weird\"1234`), }), }, { name: name("Time/Format/Null"), inBuf: `{"T1": null,"T2": null,"T3": null,"T4": null,"T5": null,"T6": null,"T7": null,"T8": null,"T9": null,"T10": null,"T11": null,"T12": null,"T13": null,"T14": null,"T15": null,"T16": null,"T17": null,"T18": null}`, inVal: addr(structTimeFormat{ mustParseTime(time.RFC3339Nano, "1234-01-02T03:04:05.000000006Z"), mustParseTime(time.ANSIC, "Mon Jan 2 03:04:05 1234"), mustParseTime(time.UnixDate, "Mon Jan 2 03:04:05 UTC 1234"), mustParseTime(time.RubyDate, "Mon Jan 02 03:04:05 +0000 1234"), mustParseTime(time.RFC822, "02 Jan 34 03:04 UTC"), mustParseTime(time.RFC822Z, "02 Jan 34 03:04 +0000"), mustParseTime(time.RFC850, "Monday, 02-Jan-34 03:04:05 UTC"), mustParseTime(time.RFC1123, "Mon, 02 Jan 1234 03:04:05 UTC"), mustParseTime(time.RFC1123Z, "Mon, 02 Jan 1234 03:04:05 +0000"), mustParseTime(time.RFC3339, "1234-01-02T03:04:05Z"), mustParseTime(time.RFC3339Nano, "1234-01-02T03:04:05.000000006Z"), mustParseTime(time.Kitchen, "3:04AM"), mustParseTime(time.Stamp, "Jan 2 03:04:05"), mustParseTime(time.StampMilli, "Jan 2 03:04:05.000"), mustParseTime(time.StampMicro, "Jan 2 03:04:05.000000"), mustParseTime(time.StampNano, "Jan 2 03:04:05.000000006"), mustParseTime("2006-01-02", "1234-01-02"), mustParseTime(`\"weird\"2006`, `\"weird\"1234`), }), want: new(structTimeFormat), }, { name: name("Time/RFC3339/Mismatch"), inBuf: `{"T":1234}`, inVal: new(struct { T time.Time }), wantErr: &SemanticError{action: "unmarshal", JSONKind: '0', GoType: timeTimeType}, }, { name: name("Time/RFC3339/ParseError"), inBuf: `{"T":"2021-09-29T12:44:52"}`, inVal: new(struct { T time.Time }), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: timeTimeType, Err: func() error { _, err := time.Parse(time.RFC3339, "2021-09-29T12:44:52") return err }()}, }, { name: name("Time/Format/Invalid"), inBuf: `{"T":""}`, inVal: new(struct { T time.Time `json:",format:UndefinedConstant"` }), wantErr: &SemanticError{action: "unmarshal", GoType: timeTimeType, Err: errors.New(`undefined format layout: UndefinedConstant`)}, }, { name: name("Time/Format/SingleDigitHour"), inBuf: `{"T":"2000-01-01T1:12:34Z"}`, inVal: new(struct{ T time.Time }), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: timeTimeType, Err: &time.ParseError{time.RFC3339, "2000-01-01T1:12:34Z", "15", "1", ""}}, }, { name: name("Time/Format/SubsecondComma"), inBuf: `{"T":"2000-01-01T00:00:00,000Z"}`, inVal: new(struct{ T time.Time }), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: timeTimeType, Err: &time.ParseError{time.RFC3339, "2000-01-01T00:00:00,000Z", ".", ",", ""}}, }, { name: name("Time/Format/TimezoneHourOverflow"), inBuf: `{"T":"2000-01-01T00:00:00+24:00"}`, inVal: new(struct{ T time.Time }), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: timeTimeType, Err: &time.ParseError{time.RFC3339, "2000-01-01T00:00:00+24:00", "Z07:00", "+24:00", ": timezone hour out of range"}}, }, { name: name("Time/Format/TimezoneMinuteOverflow"), inBuf: `{"T":"2000-01-01T00:00:00+00:60"}`, inVal: new(struct{ T time.Time }), wantErr: &SemanticError{action: "unmarshal", JSONKind: '"', GoType: timeTimeType, Err: &time.ParseError{time.RFC3339, "2000-01-01T00:00:00+00:60", "Z07:00", "+00:60", ": timezone minute out of range"}}, }, { name: name("Time/Syntax/Invalid"), inBuf: `{"T":x}`, inVal: new(struct { T time.Time }), wantErr: newInvalidCharacterError([]byte("x"), "at start of value").withOffset(int64(len(`{"D":`))), }, { name: name("Time/IgnoreInvalidFormat"), uopts: UnmarshalOptions{formatDepth: 1000, format: "invalid"}, inBuf: `"2000-01-01T00:00:00Z"`, inVal: addr(time.Time{}), want: addr(time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)), }} for _, tt := range tests { t.Run(tt.name.name, func(t *testing.T) { got := tt.inVal gotErr := tt.uopts.Unmarshal(tt.dopts, []byte(tt.inBuf), got) if !reflect.DeepEqual(got, tt.want) && tt.want != nil { t.Errorf("%s: Unmarshal output mismatch:\ngot %v\nwant %v", tt.name.where, got, tt.want) } if !reflect.DeepEqual(gotErr, tt.wantErr) { t.Errorf("%s: Unmarshal error mismatch:\ngot %v\nwant %v", tt.name.where, gotErr, tt.wantErr) } }) } } func TestMarshalInvalidNamespace(t *testing.T) { tests := []struct { name testName val any }{ {name("Map"), map[string]string{"X": "\xde\xad\xbe\xef"}}, {name("Struct"), struct{ X string }{"\xde\xad\xbe\xef"}}, } for _, tt := range tests { t.Run(tt.name.name, func(t *testing.T) { enc := NewEncoder(new(bytes.Buffer)) if err := (MarshalOptions{}).MarshalNext(enc, tt.val); err == nil { t.Fatalf("%s: MarshalNext error is nil, want non-nil", tt.name.where) } for _, tok := range []Token{Null, String(""), Int(0), ObjectStart, ObjectEnd, ArrayStart, ArrayEnd} { if err := enc.WriteToken(tok); err == nil { t.Fatalf("%s: WriteToken error is nil, want non-nil", tt.name.where) } } for _, val := range []string{`null`, `""`, `0`, `{}`, `[]`} { if err := enc.WriteValue([]byte(val)); err == nil { t.Fatalf("%s: WriteToken error is nil, want non-nil", tt.name.where) } } }) } } func TestUnmarshalInvalidNamespace(t *testing.T) { tests := []struct { name testName val any }{ {name("Map"), addr(map[string]int{})}, {name("Struct"), addr(struct{ X int }{})}, } for _, tt := range tests { t.Run(tt.name.name, func(t *testing.T) { dec := NewDecoder(strings.NewReader(`{"X":""}`)) if err := (UnmarshalOptions{}).UnmarshalNext(dec, tt.val); err == nil { t.Fatalf("%s: UnmarshalNext error is nil, want non-nil", tt.name.where) } if _, err := dec.ReadToken(); err == nil { t.Fatalf("%s: ReadToken error is nil, want non-nil", tt.name.where) } if _, err := dec.ReadValue(); err == nil { t.Fatalf("%s: ReadValue error is nil, want non-nil", tt.name.where) } }) } } func TestUnmarshalReuse(t *testing.T) { t.Run("Bytes", func(t *testing.T) { in := make([]byte, 3) want := &in[0] if err := Unmarshal([]byte(`"AQID"`), &in); err != nil { t.Fatalf("Unmarshal error: %v", err) } got := &in[0] if got != want { t.Errorf("input buffer was not reused") } }) t.Run("Slices", func(t *testing.T) { in := make([]int, 3) want := &in[0] if err := Unmarshal([]byte(`[0,1,2]`), &in); err != nil { t.Fatalf("Unmarshal error: %v", err) } got := &in[0] if got != want { t.Errorf("input slice was not reused") } }) t.Run("Maps", func(t *testing.T) { in := make(map[string]string) want := reflect.ValueOf(in).Pointer() if err := Unmarshal([]byte(`{"key":"value"}`), &in); err != nil { t.Fatalf("Unmarshal error: %v", err) } got := reflect.ValueOf(in).Pointer() if got != want { t.Errorf("input map was not reused") } }) t.Run("Pointers", func(t *testing.T) { in := addr(addr(addr("hello"))) want := **in if err := Unmarshal([]byte(`"goodbye"`), &in); err != nil { t.Fatalf("Unmarshal error: %v", err) } got := **in if got != want { t.Errorf("input pointer was not reused") } }) } arshal_time.go000066400000000000000000000200431453663023200346060ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "errors" "fmt" "reflect" "strings" "time" ) var ( timeDurationType = reflect.TypeOf((*time.Duration)(nil)).Elem() timeTimeType = reflect.TypeOf((*time.Time)(nil)).Elem() ) func makeTimeArshaler(fncs *arshaler, t reflect.Type) *arshaler { // Ideally, time types would implement MarshalerV2 and UnmarshalerV2, // but that would incur a dependency on package json from package time. // Given how widely used time is, it is more acceptable that we incur a // dependency on time from json. // // Injecting the arshaling functionality like this will not be identical // to actually declaring methods on the time types since embedding of the // time types will not be able to forward this functionality. switch t { case timeDurationType: fncs.nonDefault = true marshalNanos := fncs.marshal fncs.marshal = func(mo MarshalOptions, enc *Encoder, va addressableValue) error { if mo.format != "" && mo.formatDepth == enc.tokens.depth() { if mo.format == "nanos" { mo.format = "" return marshalNanos(mo, enc, va) } else { return newInvalidFormatError("marshal", t, mo.format) } } td := va.Interface().(time.Duration) b := enc.UnusedBuffer() b = append(b, '"') b = append(b, td.String()...) // never contains special characters b = append(b, '"') return enc.WriteValue(b) } unmarshalNanos := fncs.unmarshal fncs.unmarshal = func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { // TODO: Should there be a flag that specifies that we can unmarshal // from either form since there would be no ambiguity? if uo.format != "" && uo.formatDepth == dec.tokens.depth() { if uo.format == "nanos" { uo.format = "" return unmarshalNanos(uo, dec, va) } else { return newInvalidFormatError("unmarshal", t, uo.format) } } var flags valueFlags td := va.Addr().Interface().(*time.Duration) val, err := dec.readValue(&flags) if err != nil { return err } switch k := val.Kind(); k { case 'n': *td = time.Duration(0) return nil case '"': val = unescapeStringMayCopy(val, flags.isVerbatim()) td2, err := time.ParseDuration(string(val)) if err != nil { return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t, Err: err} } *td = td2 return nil default: return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t} } } case timeTimeType: fncs.nonDefault = true fncs.marshal = func(mo MarshalOptions, enc *Encoder, va addressableValue) error { format := time.RFC3339Nano isRFC3339 := true if mo.format != "" && mo.formatDepth == enc.tokens.depth() { var err error format, isRFC3339, err = checkTimeFormat(mo.format) if err != nil { return &SemanticError{action: "marshal", GoType: t, Err: err} } } tt := va.Interface().(time.Time) b := enc.UnusedBuffer() b = append(b, '"') b = tt.AppendFormat(b, format) b = append(b, '"') if isRFC3339 { // Not all Go timestamps can be represented as valid RFC 3339. // Explicitly check for these edge cases. // See https://go.dev/issue/4556 and https://go.dev/issue/54580. var err error switch b := b[len(`"`) : len(b)-len(`"`)]; { case b[len("9999")] != '-': // year must be exactly 4 digits wide err = errors.New("year outside of range [0,9999]") case b[len(b)-1] != 'Z': c := b[len(b)-len("Z07:00")] if ('0' <= c && c <= '9') || parseDec2(b[len(b)-len("07:00"):]) >= 24 { err = errors.New("timezone hour outside of range [0,23]") } } if err != nil { return &SemanticError{action: "marshal", GoType: t, Err: err} } return enc.WriteValue(b) // RFC 3339 never needs JSON escaping } // The format may contain special characters that need escaping. // Verify that the result is a valid JSON string (common case), // otherwise escape the string correctly (slower case). if consumeSimpleString(b) != len(b) { b, _ = appendString(nil, string(b[len(`"`):len(b)-len(`"`)]), true, nil) } return enc.WriteValue(b) } fncs.unmarshal = func(uo UnmarshalOptions, dec *Decoder, va addressableValue) error { format := time.RFC3339 isRFC3339 := true if uo.format != "" && uo.formatDepth == dec.tokens.depth() { var err error format, isRFC3339, err = checkTimeFormat(uo.format) if err != nil { return &SemanticError{action: "unmarshal", GoType: t, Err: err} } } var flags valueFlags tt := va.Addr().Interface().(*time.Time) val, err := dec.readValue(&flags) if err != nil { return err } k := val.Kind() switch k { case 'n': *tt = time.Time{} return nil case '"': val = unescapeStringMayCopy(val, flags.isVerbatim()) tt2, err := time.Parse(format, string(val)) if isRFC3339 && err == nil { // TODO(https://go.dev/issue/54580): RFC 3339 specifies // the exact grammar of a valid timestamp. However, // the parsing functionality in "time" is too loose and // incorrectly accepts invalid timestamps as valid. // Remove these manual checks when "time" checks it for us. newParseError := func(layout, value, layoutElem, valueElem, message string) error { return &time.ParseError{Layout: layout, Value: value, LayoutElem: layoutElem, ValueElem: valueElem, Message: message} } switch { case val[len("2006-01-02T")+1] == ':': // hour must be two digits err = newParseError(format, string(val), "15", string(val[len("2006-01-02T"):][:1]), "") case val[len("2006-01-02T15:04:05")] == ',': // sub-second separator must be a period err = newParseError(format, string(val), ".", ",", "") case val[len(val)-1] != 'Z': switch { case parseDec2(val[len(val)-len("07:00"):]) >= 24: // timezone hour must be in range err = newParseError(format, string(val), "Z07:00", string(val[len(val)-len("Z07:00"):]), ": timezone hour out of range") case parseDec2(val[len(val)-len("00"):]) >= 60: // timezone minute must be in range err = newParseError(format, string(val), "Z07:00", string(val[len(val)-len("Z07:00"):]), ": timezone minute out of range") } } } if err != nil { return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t, Err: err} } *tt = tt2 return nil default: return &SemanticError{action: "unmarshal", JSONKind: k, GoType: t} } } } return fncs } func checkTimeFormat(format string) (string, bool, error) { // We assume that an exported constant in the time package will // always start with an uppercase ASCII letter. if len(format) > 0 && 'A' <= format[0] && format[0] <= 'Z' { switch format { case "ANSIC": return time.ANSIC, false, nil case "UnixDate": return time.UnixDate, false, nil case "RubyDate": return time.RubyDate, false, nil case "RFC822": return time.RFC822, false, nil case "RFC822Z": return time.RFC822Z, false, nil case "RFC850": return time.RFC850, false, nil case "RFC1123": return time.RFC1123, false, nil case "RFC1123Z": return time.RFC1123Z, false, nil case "RFC3339": return time.RFC3339, true, nil case "RFC3339Nano": return time.RFC3339Nano, true, nil case "Kitchen": return time.Kitchen, false, nil case "Stamp": return time.Stamp, false, nil case "StampMilli": return time.StampMilli, false, nil case "StampMicro": return time.StampMicro, false, nil case "StampNano": return time.StampNano, false, nil default: // Reject any format that is an exported Go identifier in case // new format constants are added to the time package. if strings.TrimFunc(format, isLetterOrDigit) == "" { return "", false, fmt.Errorf("undefined format layout: %v", format) } } } return format, false, nil } // parseDec2 parses b as an unsigned, base-10, 2-digit number. // It panics if len(b) < 2. The result is undefined if digits are not base-10. func parseDec2(b []byte) byte { return 10*(b[0]-'0') + (b[1] - '0') } bench_test.go000066400000000000000000000477411453663023200344520ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "bytes" "fmt" "io" "os" "path" "reflect" "strings" "testing" "testing/iotest" jsonv1 "encoding/json" ) var benchV1 = os.Getenv("BENCHMARK_V1") != "" // bytesBuffer is identical to bytes.Buffer, // but a different type to avoid any optimizations for bytes.Buffer. type bytesBuffer struct{ *bytes.Buffer } var arshalTestdata = []struct { name string raw []byte val any new func() any skipV1 bool }{{ name: "Bool", raw: []byte("true"), val: addr(true), new: func() any { return new(bool) }, }, { name: "String", raw: []byte(`"hello, world!"`), val: addr("hello, world!"), new: func() any { return new(string) }, }, { name: "Int", raw: []byte("-1234"), val: addr(int64(-1234)), new: func() any { return new(int64) }, }, { name: "Uint", raw: []byte("1234"), val: addr(uint64(1234)), new: func() any { return new(uint64) }, }, { name: "Float", raw: []byte("12.34"), val: addr(float64(12.34)), new: func() any { return new(float64) }, }, { name: "Map/ManyEmpty", raw: []byte(`[{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]`), val: addr(func() (out []map[string]string) { for i := 0; i < 100; i++ { out = append(out, map[string]string{}) } return out }()), new: func() any { return new([]map[string]string) }, }, { name: "Map/OneLarge", raw: []byte(`{"A":"A","B":"B","C":"C","D":"D","E":"E","F":"F","G":"G","H":"H","I":"I","J":"J","K":"K","L":"L","M":"M","N":"N","O":"O","P":"P","Q":"Q","R":"R","S":"S","T":"T","U":"U","V":"V","W":"W","X":"X","Y":"Y","Z":"Z"}`), val: addr(map[string]string{"A": "A", "B": "B", "C": "C", "D": "D", "E": "E", "F": "F", "G": "G", "H": "H", "I": "I", "J": "J", "K": "K", "L": "L", "M": "M", "N": "N", "O": "O", "P": "P", "Q": "Q", "R": "R", "S": "S", "T": "T", "U": "U", "V": "V", "W": "W", "X": "X", "Y": "Y", "Z": "Z"}), new: func() any { return new(map[string]string) }, }, { name: "Map/ManySmall", raw: []byte(`{"A":{"K":"V"},"B":{"K":"V"},"C":{"K":"V"},"D":{"K":"V"},"E":{"K":"V"},"F":{"K":"V"},"G":{"K":"V"},"H":{"K":"V"},"I":{"K":"V"},"J":{"K":"V"},"K":{"K":"V"},"L":{"K":"V"},"M":{"K":"V"},"N":{"K":"V"},"O":{"K":"V"},"P":{"K":"V"},"Q":{"K":"V"},"R":{"K":"V"},"S":{"K":"V"},"T":{"K":"V"},"U":{"K":"V"},"V":{"K":"V"},"W":{"K":"V"},"X":{"K":"V"},"Y":{"K":"V"},"Z":{"K":"V"}}`), val: addr(map[string]map[string]string{"A": {"K": "V"}, "B": {"K": "V"}, "C": {"K": "V"}, "D": {"K": "V"}, "E": {"K": "V"}, "F": {"K": "V"}, "G": {"K": "V"}, "H": {"K": "V"}, "I": {"K": "V"}, "J": {"K": "V"}, "K": {"K": "V"}, "L": {"K": "V"}, "M": {"K": "V"}, "N": {"K": "V"}, "O": {"K": "V"}, "P": {"K": "V"}, "Q": {"K": "V"}, "R": {"K": "V"}, "S": {"K": "V"}, "T": {"K": "V"}, "U": {"K": "V"}, "V": {"K": "V"}, "W": {"K": "V"}, "X": {"K": "V"}, "Y": {"K": "V"}, "Z": {"K": "V"}}), new: func() any { return new(map[string]map[string]string) }, }, { name: "Struct/ManyEmpty", raw: []byte(`[{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]`), val: addr(make([]struct{}, 100)), new: func() any { return new([]struct{}) }, }, { name: "Struct/OneLarge", raw: []byte(`{"A":"A","B":"B","C":"C","D":"D","E":"E","F":"F","G":"G","H":"H","I":"I","J":"J","K":"K","L":"L","M":"M","N":"N","O":"O","P":"P","Q":"Q","R":"R","S":"S","T":"T","U":"U","V":"V","W":"W","X":"X","Y":"Y","Z":"Z"}`), val: addr(struct{ A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z string }{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}), new: func() any { return new(struct{ A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z string }) }, }, { name: "Struct/ManySmall", raw: []byte(`{"A":{"K":"V"},"B":{"K":"V"},"C":{"K":"V"},"D":{"K":"V"},"E":{"K":"V"},"F":{"K":"V"},"G":{"K":"V"},"H":{"K":"V"},"I":{"K":"V"},"J":{"K":"V"},"K":{"K":"V"},"L":{"K":"V"},"M":{"K":"V"},"N":{"K":"V"},"O":{"K":"V"},"P":{"K":"V"},"Q":{"K":"V"},"R":{"K":"V"},"S":{"K":"V"},"T":{"K":"V"},"U":{"K":"V"},"V":{"K":"V"},"W":{"K":"V"},"X":{"K":"V"},"Y":{"K":"V"},"Z":{"K":"V"}}`), val: func() any { V := struct{ K string }{"V"} return addr(struct{ A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z struct{ K string } }{ V, V, V, V, V, V, V, V, V, V, V, V, V, V, V, V, V, V, V, V, V, V, V, V, V, V, }) }(), new: func() any { return new(struct{ A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z struct{ K string } }) }, }, { name: "Slice/ManyEmpty", raw: []byte(`[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]`), val: addr(func() (out [][]string) { for i := 0; i < 100; i++ { out = append(out, []string{}) } return out }()), new: func() any { return new([][]string) }, }, { name: "Slice/OneLarge", raw: []byte(`["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]`), val: addr([]string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}), new: func() any { return new([]string) }, }, { name: "Slice/ManySmall", raw: []byte(`[["A"],["B"],["C"],["D"],["E"],["F"],["G"],["H"],["I"],["J"],["K"],["L"],["M"],["N"],["O"],["P"],["Q"],["R"],["S"],["T"],["U"],["V"],["W"],["X"],["Y"],["Z"]]`), val: addr([][]string{{"A"}, {"B"}, {"C"}, {"D"}, {"E"}, {"F"}, {"G"}, {"H"}, {"I"}, {"J"}, {"K"}, {"L"}, {"M"}, {"N"}, {"O"}, {"P"}, {"Q"}, {"R"}, {"S"}, {"T"}, {"U"}, {"V"}, {"W"}, {"X"}, {"Y"}, {"Z"}}), new: func() any { return new([][]string) }, }, { name: "Array/OneLarge", raw: []byte(`["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]`), val: addr([26]string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}), new: func() any { return new([26]string) }, }, { name: "Array/ManySmall", raw: []byte(`[["A"],["B"],["C"],["D"],["E"],["F"],["G"],["H"],["I"],["J"],["K"],["L"],["M"],["N"],["O"],["P"],["Q"],["R"],["S"],["T"],["U"],["V"],["W"],["X"],["Y"],["Z"]]`), val: addr([26][1]string{{"A"}, {"B"}, {"C"}, {"D"}, {"E"}, {"F"}, {"G"}, {"H"}, {"I"}, {"J"}, {"K"}, {"L"}, {"M"}, {"N"}, {"O"}, {"P"}, {"Q"}, {"R"}, {"S"}, {"T"}, {"U"}, {"V"}, {"W"}, {"X"}, {"Y"}, {"Z"}}), new: func() any { return new([26][1]string) }, }, { name: "Bytes/Slice", raw: []byte(`"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="`), val: addr([]byte{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}), new: func() any { return new([]byte) }, }, { name: "Bytes/Array", raw: []byte(`"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="`), val: addr([32]byte{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}), new: func() any { return new([32]byte) }, skipV1: true, }, { name: "Pointer", raw: []byte("true"), val: addr(addr(addr(addr(addr(addr(addr(addr(addr(addr(addr(true))))))))))), new: func() any { return new(**********bool) }, }, { name: "TextArshal", raw: []byte(`"method"`), val: new(textArshaler), new: func() any { return new(textArshaler) }, }, { name: "JSONArshalV1", raw: []byte(`"method"`), val: new(jsonArshalerV1), new: func() any { return new(jsonArshalerV1) }, }, { name: "JSONArshalV2", raw: []byte(`"method"`), val: new(jsonArshalerV2), new: func() any { return new(jsonArshalerV2) }, skipV1: true, }} type textArshaler struct{} func (*textArshaler) MarshalText() ([]byte, error) { return []byte("method"), nil } func (*textArshaler) UnmarshalText(b []byte) error { if string(b) != "method" { return fmt.Errorf("UnmarshalText: got %q, want %q", b, "method") } return nil } type jsonArshalerV1 struct{} func (*jsonArshalerV1) MarshalJSON() ([]byte, error) { return []byte(`"method"`), nil } func (*jsonArshalerV1) UnmarshalJSON(b []byte) error { if string(b) != `"method"` { return fmt.Errorf("UnmarshalJSON: got %q, want %q", b, `"method"`) } return nil } type jsonArshalerV2 struct{} func (*jsonArshalerV2) MarshalNextJSON(opts MarshalOptions, enc *Encoder) error { return enc.WriteToken(String("method")) } func (*jsonArshalerV2) UnmarshalNextJSON(opts UnmarshalOptions, dec *Decoder) error { b, err := dec.ReadValue() if string(b) != `"method"` { return fmt.Errorf("UnmarshalNextJSON: got %q, want %q", b, `"method"`) } return err } func TestBenchmarkUnmarshal(t *testing.T) { runUnmarshal(t) } func BenchmarkUnmarshal(b *testing.B) { runUnmarshal(b) } func runUnmarshal(tb testing.TB) { for _, tt := range arshalTestdata { // Setup the unmarshal operation. var val any run := func(tb testing.TB) { val = tt.new() if err := Unmarshal(tt.raw, val); err != nil { tb.Fatalf("Unmarshal error: %v", err) } } if benchV1 { run = func(tb testing.TB) { if tt.skipV1 { tb.Skip("not supported in v1") } val = tt.new() if err := jsonv1.Unmarshal(tt.raw, val); err != nil { tb.Fatalf("Unmarshal error: %v", err) } } } // Verify the results. if _, ok := tb.(*testing.T); ok { run0 := run run = func(tb testing.TB) { run0(tb) if !reflect.DeepEqual(val, tt.val) { tb.Fatalf("Unmarshal output mismatch:\ngot %v\nwant %v", val, tt.val) } } } runTestOrBench(tb, tt.name, int64(len(tt.raw)), run) } } func TestBenchmarkMarshal(t *testing.T) { runMarshal(t) } func BenchmarkMarshal(b *testing.B) { runMarshal(b) } func runMarshal(tb testing.TB) { for _, tt := range arshalTestdata { // Setup the marshal operation. var raw []byte run := func(tb testing.TB) { var err error raw, err = Marshal(tt.val) if err != nil { tb.Fatalf("Marshal error: %v", err) } } if benchV1 { run = func(tb testing.TB) { if tt.skipV1 { tb.Skip("not supported in v1") } var err error raw, err = jsonv1.Marshal(tt.val) if err != nil { tb.Fatalf("Marshal error: %v", err) } } } // Verify the results. if _, ok := tb.(*testing.T); ok { run0 := run run = func(tb testing.TB) { run0(tb) if !bytes.Equal(raw, tt.raw) { // Map marshaling in v2 is non-deterministic. byteHistogram := func(b []byte) (h [256]int) { for _, c := range b { h[c]++ } return h } if !(strings.HasPrefix(tt.name, "Map/") && byteHistogram(raw) == byteHistogram(tt.raw)) { tb.Fatalf("Marshal output mismatch:\ngot %s\nwant %s", raw, tt.raw) } } } } runTestOrBench(tb, tt.name, int64(len(tt.raw)), run) } } func TestBenchmarkTestdata(t *testing.T) { runAllTestdata(t) } func BenchmarkTestdata(b *testing.B) { runAllTestdata(b) } func runAllTestdata(tb testing.TB) { for _, td := range jsonTestdata() { for _, arshalName := range []string{"Marshal", "Unmarshal"} { for _, typeName := range []string{"Concrete", "Interface"} { newValue := func() any { return new(any) } if typeName == "Concrete" { if td.new == nil { continue } newValue = td.new } value := mustUnmarshalValue(tb, td.data, newValue) name := path.Join(td.name, arshalName, typeName) runTestOrBench(tb, name, int64(len(td.data)), func(tb testing.TB) { runArshal(tb, arshalName, newValue, td.data, value) }) } } tokens := mustDecodeTokens(tb, td.data) buffer := make([]byte, 0, 2*len(td.data)) for _, codeName := range []string{"Encode", "Decode"} { for _, typeName := range []string{"Token", "Value"} { for _, modeName := range []string{"Streaming", "Buffered"} { name := path.Join(td.name, codeName, typeName, modeName) runTestOrBench(tb, name, int64(len(td.data)), func(tb testing.TB) { runCode(tb, codeName, typeName, modeName, buffer, td.data, tokens) }) } } } } } func mustUnmarshalValue(t testing.TB, data []byte, newValue func() any) (value any) { value = newValue() if err := Unmarshal(data, value); err != nil { t.Fatalf("Unmarshal error: %v", err) } return value } func runArshal(t testing.TB, arshalName string, newValue func() any, data []byte, value any) { if benchV1 { switch arshalName { case "Marshal": if _, err := jsonv1.Marshal(value); err != nil { t.Fatalf("Marshal error: %v", err) } case "Unmarshal": if err := jsonv1.Unmarshal(data, newValue()); err != nil { t.Fatalf("Unmarshal error: %v", err) } } return } switch arshalName { case "Marshal": if _, err := Marshal(value); err != nil { t.Fatalf("Marshal error: %v", err) } case "Unmarshal": if err := Unmarshal(data, newValue()); err != nil { t.Fatalf("Unmarshal error: %v", err) } } } func mustDecodeTokens(t testing.TB, data []byte) []Token { var tokens []Token dec := NewDecoder(bytes.NewReader(data)) for { tok, err := dec.ReadToken() if err != nil { if err == io.EOF { break } t.Fatalf("Decoder.ReadToken error: %v", err) } // Prefer exact representation for JSON strings and numbers // since this more closely matches common use cases. switch tok.Kind() { case '"': tokens = append(tokens, String(tok.String())) case '0': tokens = append(tokens, Float(tok.Float())) default: tokens = append(tokens, tok.Clone()) } } return tokens } func runCode(t testing.TB, codeName, typeName, modeName string, buffer, data []byte, tokens []Token) { switch codeName { case "Encode": runEncode(t, typeName, modeName, buffer, data, tokens) case "Decode": runDecode(t, typeName, modeName, buffer, data, tokens) } } func runEncode(t testing.TB, typeName, modeName string, buffer, data []byte, tokens []Token) { if benchV1 { if modeName == "Buffered" { t.Skip("no support for direct buffered input in v1") } enc := jsonv1.NewEncoder(bytes.NewBuffer(buffer[:0])) switch typeName { case "Token": t.Skip("no support for encoding tokens in v1; see https://go.dev/issue/40127") case "Value": val := jsonv1.RawMessage(data) if err := enc.Encode(val); err != nil { t.Fatalf("Decoder.Encode error: %v", err) } } return } var enc *Encoder switch modeName { case "Streaming": enc = NewEncoder(bytesBuffer{bytes.NewBuffer(buffer[:0])}) case "Buffered": enc = NewEncoder(bytes.NewBuffer(buffer[:0])) } switch typeName { case "Token": for _, tok := range tokens { if err := enc.WriteToken(tok); err != nil { t.Fatalf("Encoder.WriteToken error: %v", err) } } case "Value": if err := enc.WriteValue(data); err != nil { t.Fatalf("Encoder.WriteValue error: %v", err) } } } func runDecode(t testing.TB, typeName, modeName string, buffer, data []byte, tokens []Token) { if benchV1 { if modeName == "Buffered" { t.Skip("no support for direct buffered output in v1") } dec := jsonv1.NewDecoder(bytes.NewReader(data)) switch typeName { case "Token": for { if _, err := dec.Token(); err != nil { if err == io.EOF { break } t.Fatalf("Decoder.Token error: %v", err) } } case "Value": var val jsonv1.RawMessage if err := dec.Decode(&val); err != nil { t.Fatalf("Decoder.Decode error: %v", err) } } return } var dec *Decoder switch modeName { case "Streaming": dec = NewDecoder(bytesBuffer{bytes.NewBuffer(data)}) case "Buffered": dec = NewDecoder(bytes.NewBuffer(data)) } switch typeName { case "Token": for { if _, err := dec.ReadToken(); err != nil { if err == io.EOF { break } t.Fatalf("Decoder.ReadToken error: %v", err) } } case "Value": if _, err := dec.ReadValue(); err != nil { t.Fatalf("Decoder.ReadValue error: %v", err) } } } var ws = strings.Repeat(" ", 4<<10) var slowStreamingDecodeTestdata = []struct { name string data []byte }{ {"LargeString", []byte(`"` + strings.Repeat(" ", 4<<10) + `"`)}, {"LargeNumber", []byte("0." + strings.Repeat("0", 4<<10))}, {"LargeWhitespace/Null", []byte(ws + "null" + ws)}, {"LargeWhitespace/Object", []byte(ws + "{" + ws + `"name1"` + ws + ":" + ws + `"value"` + ws + "," + ws + `"name2"` + ws + ":" + ws + `"value"` + ws + "}" + ws)}, {"LargeWhitespace/Array", []byte(ws + "[" + ws + `"value"` + ws + "," + ws + `"value"` + ws + "]" + ws)}, } func TestBenchmarkSlowStreamingDecode(t *testing.T) { runAllSlowStreamingDecode(t) } func BenchmarkSlowStreamingDecode(b *testing.B) { runAllSlowStreamingDecode(b) } func runAllSlowStreamingDecode(tb testing.TB) { for _, td := range slowStreamingDecodeTestdata { for _, typeName := range []string{"Token", "Value"} { name := path.Join(td.name, typeName) runTestOrBench(tb, name, int64(len(td.data)), func(tb testing.TB) { runSlowStreamingDecode(tb, typeName, td.data) }) } } } // runSlowStreamingDecode tests a streaming Decoder operating on // a slow io.Reader that only returns 1 byte at a time, // which tends to exercise pathological behavior. func runSlowStreamingDecode(t testing.TB, typeName string, data []byte) { if benchV1 { dec := jsonv1.NewDecoder(iotest.OneByteReader(bytes.NewReader(data))) switch typeName { case "Token": for dec.More() { if _, err := dec.Token(); err != nil { t.Fatalf("Decoder.Token error: %v", err) } } case "Value": var val jsonv1.RawMessage if err := dec.Decode(&val); err != nil { t.Fatalf("Decoder.Decode error: %v", err) } } return } dec := NewDecoder(iotest.OneByteReader(bytes.NewReader(data))) switch typeName { case "Token": for dec.PeekKind() > 0 { if _, err := dec.ReadToken(); err != nil { t.Fatalf("Decoder.ReadToken error: %v", err) } } case "Value": if _, err := dec.ReadValue(); err != nil { t.Fatalf("Decoder.ReadValue error: %v", err) } } } func TestBenchmarkRawValue(t *testing.T) { runRawValue(t) } func BenchmarkRawValue(b *testing.B) { runRawValue(b) } func runRawValue(tb testing.TB) { if testing.Short() { tb.Skip() // CitmCatalog is not loaded in short mode } var data []byte for _, ts := range jsonTestdata() { if ts.name == "CitmCatalog" { data = ts.data } } runTestOrBench(tb, "IsValid", int64(len(data)), func(tb testing.TB) { RawValue(data).IsValid() }) methods := []struct { name string format func(*RawValue) error }{ {"Compact", (*RawValue).Compact}, {"Indent", func(v *RawValue) error { return v.Indent("\t", " ") }}, {"Canonicalize", (*RawValue).Canonicalize}, } var v RawValue for _, method := range methods { runTestOrBench(tb, method.name, int64(len(data)), func(tb testing.TB) { v = append(v[:0], data...) // reset with original input if err := method.format(&v); err != nil { tb.Errorf("RawValue.%v error: %v", method.name, err) } }) v = append(v[:0], data...) method.format(&v) runTestOrBench(tb, method.name+"/Noop", int64(len(data)), func(tb testing.TB) { if err := method.format(&v); err != nil { tb.Errorf("RawValue.%v error: %v", method.name, err) } }) } } func runTestOrBench(tb testing.TB, name string, numBytes int64, run func(tb testing.TB)) { switch tb := tb.(type) { case *testing.T: tb.Run(name, func(t *testing.T) { run(t) }) case *testing.B: tb.Run(name, func(b *testing.B) { b.ResetTimer() b.ReportAllocs() b.SetBytes(numBytes) for i := 0; i < b.N; i++ { run(b) } }) } } coder_test.go000066400000000000000000000522411453663023200344560ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "bytes" "errors" "io" "math" "math/rand" "path" "strings" "testing" ) var ( zeroToken Token zeroValue RawValue ) // tokOrVal is either a Token or a RawValue. type tokOrVal interface{ Kind() Kind } type coderTestdataEntry struct { name testName in string outCompacted string outEscaped string // outCompacted if empty; escapes all runes in a string outIndented string // outCompacted if empty; uses " " for indent prefix and "\t" for indent outCanonicalized string // outCompacted if empty tokens []Token pointers []string } var coderTestdata = []coderTestdataEntry{{ name: name("Null"), in: ` null `, outCompacted: `null`, tokens: []Token{Null}, pointers: []string{""}, }, { name: name("False"), in: ` false `, outCompacted: `false`, tokens: []Token{False}, }, { name: name("True"), in: ` true `, outCompacted: `true`, tokens: []Token{True}, }, { name: name("EmptyString"), in: ` "" `, outCompacted: `""`, tokens: []Token{String("")}, }, { name: name("SimpleString"), in: ` "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" `, outCompacted: `"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"`, outEscaped: `"\u0061\u0062\u0063\u0064\u0065\u0066\u0067\u0068\u0069\u006a\u006b\u006c\u006d\u006e\u006f\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077\u0078\u0079\u007a\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004a\u004b\u004c\u004d\u004e\u004f\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057\u0058\u0059\u005a"`, tokens: []Token{String("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")}, }, { name: name("ComplicatedString"), in: " \"Hello, 世界 🌟★☆✩🌠 " + "\u0080\u00f6\u20ac\ud799\ue000\ufb33\ufffd\U0001f602" + ` \ud800\udead \"\\\/\b\f\n\r\t \u0022\u005c\u002f\u0008\u000c\u000a\u000d\u0009" `, outCompacted: "\"Hello, 世界 🌟★☆✩🌠 " + "\u0080\u00f6\u20ac\ud799\ue000\ufb33\ufffd\U0001f602" + " ðŠ­ \\\"\\\\/\\b\\f\\n\\r\\t \\\"\\\\/\\b\\f\\n\\r\\t\"", outEscaped: `"\u0048\u0065\u006c\u006c\u006f\u002c\u0020\u4e16\u754c\u0020\ud83c\udf1f\u2605\u2606\u2729\ud83c\udf20\u0020\u0080\u00f6\u20ac\ud799\ue000\ufb33\ufffd\ud83d\ude02\u0020\ud800\udead\u0020\u0022\u005c\u002f\u0008\u000c\u000a\u000d\u0009\u0020\u0022\u005c\u002f\u0008\u000c\u000a\u000d\u0009"`, outCanonicalized: `"Hello, 世界 🌟★☆✩🌠 €ö€힙דּ�😂 ðŠ­ \"\\/\b\f\n\r\t \"\\/\b\f\n\r\t"`, tokens: []Token{rawToken("\"Hello, 世界 🌟★☆✩🌠 " + "\u0080\u00f6\u20ac\ud799\ue000\ufb33\ufffd\U0001f602" + " ðŠ­ \\\"\\\\/\\b\\f\\n\\r\\t \\\"\\\\/\\b\\f\\n\\r\\t\"")}, }, { name: name("ZeroNumber"), in: ` 0 `, outCompacted: `0`, tokens: []Token{Uint(0)}, }, { name: name("SimpleNumber"), in: ` 123456789 `, outCompacted: `123456789`, tokens: []Token{Uint(123456789)}, }, { name: name("NegativeNumber"), in: ` -123456789 `, outCompacted: `-123456789`, tokens: []Token{Int(-123456789)}, }, { name: name("FractionalNumber"), in: " 0.123456789 ", outCompacted: `0.123456789`, tokens: []Token{Float(0.123456789)}, }, { name: name("ExponentNumber"), in: " 0e12456789 ", outCompacted: `0e12456789`, outCanonicalized: `0`, tokens: []Token{rawToken(`0e12456789`)}, }, { name: name("ExponentNumberP"), in: " 0e+12456789 ", outCompacted: `0e+12456789`, outCanonicalized: `0`, tokens: []Token{rawToken(`0e+12456789`)}, }, { name: name("ExponentNumberN"), in: " 0e-12456789 ", outCompacted: `0e-12456789`, outCanonicalized: `0`, tokens: []Token{rawToken(`0e-12456789`)}, }, { name: name("ComplicatedNumber"), in: ` -123456789.987654321E+0123456789 `, outCompacted: `-123456789.987654321E+0123456789`, outCanonicalized: `-1.7976931348623157e+308`, tokens: []Token{rawToken(`-123456789.987654321E+0123456789`)}, }, { name: name("Numbers"), in: ` [ 0, -0, 0.0, -0.0, 1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001, 1e1000, -5e-324, 1e+100, 1.7976931348623157e+308, 9007199254740990, 9007199254740991, 9007199254740992, 9007199254740993, 9007199254740994, -9223372036854775808, 9223372036854775807, 0, 18446744073709551615 ] `, outCompacted: "[0,-0,0.0,-0.0,1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,1e1000,-5e-324,1e+100,1.7976931348623157e+308,9007199254740990,9007199254740991,9007199254740992,9007199254740993,9007199254740994,-9223372036854775808,9223372036854775807,0,18446744073709551615]", outIndented: `[ 0, -0, 0.0, -0.0, 1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001, 1e1000, -5e-324, 1e+100, 1.7976931348623157e+308, 9007199254740990, 9007199254740991, 9007199254740992, 9007199254740993, 9007199254740994, -9223372036854775808, 9223372036854775807, 0, 18446744073709551615 ]`, outCanonicalized: `[0,0,0,0,1,1.7976931348623157e+308,-5e-324,1e+100,1.7976931348623157e+308,9007199254740990,9007199254740991,9007199254740992,9007199254740992,9007199254740994,-9223372036854776000,9223372036854776000,0,18446744073709552000]`, tokens: []Token{ ArrayStart, Float(0), Float(math.Copysign(0, -1)), rawToken(`0.0`), rawToken(`-0.0`), rawToken(`1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001`), rawToken(`1e1000`), Float(-5e-324), Float(1e100), Float(1.7976931348623157e+308), Float(9007199254740990), Float(9007199254740991), Float(9007199254740992), rawToken(`9007199254740993`), rawToken(`9007199254740994`), Int(minInt64), Int(maxInt64), Uint(minUint64), Uint(maxUint64), ArrayEnd, }, pointers: []string{ "", "/0", "/1", "/2", "/3", "/4", "/5", "/6", "/7", "/8", "/9", "/10", "/11", "/12", "/13", "/14", "/15", "/16", "/17", "", }, }, { name: name("ObjectN0"), in: ` { } `, outCompacted: `{}`, tokens: []Token{ObjectStart, ObjectEnd}, pointers: []string{"", ""}, }, { name: name("ObjectN1"), in: ` { "0" : 0 } `, outCompacted: `{"0":0}`, outEscaped: `{"\u0030":0}`, outIndented: `{ "0": 0 }`, tokens: []Token{ObjectStart, String("0"), Uint(0), ObjectEnd}, pointers: []string{"", "/0", "/0", ""}, }, { name: name("ObjectN2"), in: ` { "0" : 0 , "1" : 1 } `, outCompacted: `{"0":0,"1":1}`, outEscaped: `{"\u0030":0,"\u0031":1}`, outIndented: `{ "0": 0, "1": 1 }`, tokens: []Token{ObjectStart, String("0"), Uint(0), String("1"), Uint(1), ObjectEnd}, pointers: []string{"", "/0", "/0", "/1", "/1", ""}, }, { name: name("ObjectNested"), in: ` { "0" : { "1" : { "2" : { "3" : { "4" : { } } } } } } `, outCompacted: `{"0":{"1":{"2":{"3":{"4":{}}}}}}`, outEscaped: `{"\u0030":{"\u0031":{"\u0032":{"\u0033":{"\u0034":{}}}}}}`, outIndented: `{ "0": { "1": { "2": { "3": { "4": {} } } } } }`, tokens: []Token{ObjectStart, String("0"), ObjectStart, String("1"), ObjectStart, String("2"), ObjectStart, String("3"), ObjectStart, String("4"), ObjectStart, ObjectEnd, ObjectEnd, ObjectEnd, ObjectEnd, ObjectEnd, ObjectEnd}, pointers: []string{ "", "/0", "/0", "/0/1", "/0/1", "/0/1/2", "/0/1/2", "/0/1/2/3", "/0/1/2/3", "/0/1/2/3/4", "/0/1/2/3/4", "/0/1/2/3/4", "/0/1/2/3", "/0/1/2", "/0/1", "/0", "", }, }, { name: name("ObjectSuperNested"), in: `{"": { "44444": { "6666666": "ccccccc", "77777777": "bb", "555555": "aaaa" }, "0": { "3333": "bbb", "11": "", "222": "aaaaa" } }}`, outCompacted: `{"":{"44444":{"6666666":"ccccccc","77777777":"bb","555555":"aaaa"},"0":{"3333":"bbb","11":"","222":"aaaaa"}}}`, outEscaped: `{"":{"\u0034\u0034\u0034\u0034\u0034":{"\u0036\u0036\u0036\u0036\u0036\u0036\u0036":"\u0063\u0063\u0063\u0063\u0063\u0063\u0063","\u0037\u0037\u0037\u0037\u0037\u0037\u0037\u0037":"\u0062\u0062","\u0035\u0035\u0035\u0035\u0035\u0035":"\u0061\u0061\u0061\u0061"},"\u0030":{"\u0033\u0033\u0033\u0033":"\u0062\u0062\u0062","\u0031\u0031":"","\u0032\u0032\u0032":"\u0061\u0061\u0061\u0061\u0061"}}}`, outIndented: `{ "": { "44444": { "6666666": "ccccccc", "77777777": "bb", "555555": "aaaa" }, "0": { "3333": "bbb", "11": "", "222": "aaaaa" } } }`, outCanonicalized: `{"":{"0":{"11":"","222":"aaaaa","3333":"bbb"},"44444":{"555555":"aaaa","6666666":"ccccccc","77777777":"bb"}}}`, tokens: []Token{ ObjectStart, String(""), ObjectStart, String("44444"), ObjectStart, String("6666666"), String("ccccccc"), String("77777777"), String("bb"), String("555555"), String("aaaa"), ObjectEnd, String("0"), ObjectStart, String("3333"), String("bbb"), String("11"), String(""), String("222"), String("aaaaa"), ObjectEnd, ObjectEnd, ObjectEnd, }, pointers: []string{ "", "/", "/", "//44444", "//44444", "//44444/6666666", "//44444/6666666", "//44444/77777777", "//44444/77777777", "//44444/555555", "//44444/555555", "//44444", "//0", "//0", "//0/3333", "//0/3333", "//0/11", "//0/11", "//0/222", "//0/222", "//0", "/", "", }, }, { name: name("ArrayN0"), in: ` [ ] `, outCompacted: `[]`, tokens: []Token{ArrayStart, ArrayEnd}, pointers: []string{"", ""}, }, { name: name("ArrayN1"), in: ` [ 0 ] `, outCompacted: `[0]`, outIndented: `[ 0 ]`, tokens: []Token{ArrayStart, Uint(0), ArrayEnd}, pointers: []string{"", "/0", ""}, }, { name: name("ArrayN2"), in: ` [ 0 , 1 ] `, outCompacted: `[0,1]`, outIndented: `[ 0, 1 ]`, tokens: []Token{ArrayStart, Uint(0), Uint(1), ArrayEnd}, }, { name: name("ArrayNested"), in: ` [ [ [ [ [ ] ] ] ] ] `, outCompacted: `[[[[[]]]]]`, outIndented: `[ [ [ [ [] ] ] ] ]`, tokens: []Token{ArrayStart, ArrayStart, ArrayStart, ArrayStart, ArrayStart, ArrayEnd, ArrayEnd, ArrayEnd, ArrayEnd, ArrayEnd}, pointers: []string{ "", "/0", "/0/0", "/0/0/0", "/0/0/0/0", "/0/0/0/0", "/0/0/0", "/0/0", "/0", "", }, }, { name: name("Everything"), in: ` { "literals" : [ null , false , true ], "string" : "Hello, 世界" , "number" : 3.14159 , "arrayN0" : [ ] , "arrayN1" : [ 0 ] , "arrayN2" : [ 0 , 1 ] , "objectN0" : { } , "objectN1" : { "0" : 0 } , "objectN2" : { "0" : 0 , "1" : 1 } } `, outCompacted: `{"literals":[null,false,true],"string":"Hello, 世界","number":3.14159,"arrayN0":[],"arrayN1":[0],"arrayN2":[0,1],"objectN0":{},"objectN1":{"0":0},"objectN2":{"0":0,"1":1}}`, outEscaped: `{"\u006c\u0069\u0074\u0065\u0072\u0061\u006c\u0073":[null,false,true],"\u0073\u0074\u0072\u0069\u006e\u0067":"\u0048\u0065\u006c\u006c\u006f\u002c\u0020\u4e16\u754c","\u006e\u0075\u006d\u0062\u0065\u0072":3.14159,"\u0061\u0072\u0072\u0061\u0079\u004e\u0030":[],"\u0061\u0072\u0072\u0061\u0079\u004e\u0031":[0],"\u0061\u0072\u0072\u0061\u0079\u004e\u0032":[0,1],"\u006f\u0062\u006a\u0065\u0063\u0074\u004e\u0030":{},"\u006f\u0062\u006a\u0065\u0063\u0074\u004e\u0031":{"\u0030":0},"\u006f\u0062\u006a\u0065\u0063\u0074\u004e\u0032":{"\u0030":0,"\u0031":1}}`, outIndented: `{ "literals": [ null, false, true ], "string": "Hello, 世界", "number": 3.14159, "arrayN0": [], "arrayN1": [ 0 ], "arrayN2": [ 0, 1 ], "objectN0": {}, "objectN1": { "0": 0 }, "objectN2": { "0": 0, "1": 1 } }`, outCanonicalized: `{"arrayN0":[],"arrayN1":[0],"arrayN2":[0,1],"literals":[null,false,true],"number":3.14159,"objectN0":{},"objectN1":{"0":0},"objectN2":{"0":0,"1":1},"string":"Hello, 世界"}`, tokens: []Token{ ObjectStart, String("literals"), ArrayStart, Null, False, True, ArrayEnd, String("string"), String("Hello, 世界"), String("number"), Float(3.14159), String("arrayN0"), ArrayStart, ArrayEnd, String("arrayN1"), ArrayStart, Uint(0), ArrayEnd, String("arrayN2"), ArrayStart, Uint(0), Uint(1), ArrayEnd, String("objectN0"), ObjectStart, ObjectEnd, String("objectN1"), ObjectStart, String("0"), Uint(0), ObjectEnd, String("objectN2"), ObjectStart, String("0"), Uint(0), String("1"), Uint(1), ObjectEnd, ObjectEnd, }, pointers: []string{ "", "/literals", "/literals", "/literals/0", "/literals/1", "/literals/2", "/literals", "/string", "/string", "/number", "/number", "/arrayN0", "/arrayN0", "/arrayN0", "/arrayN1", "/arrayN1", "/arrayN1/0", "/arrayN1", "/arrayN2", "/arrayN2", "/arrayN2/0", "/arrayN2/1", "/arrayN2", "/objectN0", "/objectN0", "/objectN0", "/objectN1", "/objectN1", "/objectN1/0", "/objectN1/0", "/objectN1", "/objectN2", "/objectN2", "/objectN2/0", "/objectN2/0", "/objectN2/1", "/objectN2/1", "/objectN2", "", }, }} // TestCoderInterleaved tests that we can interleave calls that operate on // tokens and raw values. The only error condition is trying to operate on a // raw value when the next token is an end of object or array. func TestCoderInterleaved(t *testing.T) { for _, td := range coderTestdata { // In TokenFirst and ValueFirst, alternate between tokens and values. // In TokenDelims, only use tokens for object and array delimiters. for _, modeName := range []string{"TokenFirst", "ValueFirst", "TokenDelims"} { t.Run(path.Join(td.name.name, modeName), func(t *testing.T) { testCoderInterleaved(t, td.name.where, modeName, td) }) } } } func testCoderInterleaved(t *testing.T, where pc, modeName string, td coderTestdataEntry) { src := strings.NewReader(td.in) dst := new(bytes.Buffer) dec := NewDecoder(src) enc := NewEncoder(dst) tickTock := modeName == "TokenFirst" for { if modeName == "TokenDelims" { switch dec.PeekKind() { case '{', '}', '[', ']': tickTock = true // as token default: tickTock = false // as value } } if tickTock { tok, err := dec.ReadToken() if err != nil { if err == io.EOF { break } t.Fatalf("%s: Decoder.ReadToken error: %v", where, err) } if err := enc.WriteToken(tok); err != nil { t.Fatalf("%s: Encoder.WriteToken error: %v", where, err) } } else { val, err := dec.ReadValue() if err != nil { // It is a syntactic error to call ReadValue // at the end of an object or array. // Retry as a ReadToken call. expectError := dec.PeekKind() == '}' || dec.PeekKind() == ']' if expectError { if !errors.As(err, new(*SyntacticError)) { t.Fatalf("%s: Decoder.ReadToken error is %T, want %T", where, err, new(SyntacticError)) } tickTock = !tickTock continue } if err == io.EOF { break } t.Fatalf("%s: Decoder.ReadValue error: %v", where, err) } if err := enc.WriteValue(val); err != nil { t.Fatalf("%s: Encoder.WriteValue error: %v", where, err) } } tickTock = !tickTock } got := dst.String() want := td.outCompacted + "\n" if got != want { t.Fatalf("%s: output mismatch:\ngot %q\nwant %q", where, got, want) } } func TestCoderStackPointer(t *testing.T) { tests := []struct { token Token wantWithRejectDuplicateNames string wantWithAllowDuplicateNames string }{ {Null, "", ""}, {ArrayStart, "", ""}, {ArrayEnd, "", ""}, {ArrayStart, "", ""}, {Bool(true), "/0", "/0"}, {ArrayEnd, "", ""}, {ArrayStart, "", ""}, {String("hello"), "/0", "/0"}, {String("goodbye"), "/1", "/1"}, {ArrayEnd, "", ""}, {ObjectStart, "", ""}, {ObjectEnd, "", ""}, {ObjectStart, "", ""}, {String("hello"), "/hello", "/0"}, {String("goodbye"), "/hello", "/0"}, {ObjectEnd, "", ""}, {ObjectStart, "", ""}, {String(""), "/", "/0"}, {Null, "/", "/0"}, {String("0"), "/0", "/1"}, {Null, "/0", "/1"}, {String("~"), "/~0", "/2"}, {Null, "/~0", "/2"}, {String("/"), "/~1", "/3"}, {Null, "/~1", "/3"}, {String("a//b~/c/~d~~e"), "/a~1~1b~0~1c~1~0d~0~0e", "/4"}, {Null, "/a~1~1b~0~1c~1~0d~0~0e", "/4"}, {String(" \r\n\t"), "/ \r\n\t", "/5"}, {Null, "/ \r\n\t", "/5"}, {ObjectEnd, "", ""}, {ArrayStart, "", ""}, {ObjectStart, "/0", "/0"}, {String(""), "/0/", "/0/0"}, {ArrayStart, "/0/", "/0/0"}, {ObjectStart, "/0//0", "/0/0/0"}, {String("#"), "/0//0/#", "/0/0/0/0"}, {Null, "/0//0/#", "/0/0/0/0"}, {ObjectEnd, "/0//0", "/0/0/0"}, {ArrayEnd, "/0/", "/0/0"}, {ObjectEnd, "/0", "/0"}, {ArrayEnd, "", ""}, } for _, allowDupes := range []bool{false, true} { var name string var want func(i int) string switch allowDupes { case false: name = "RejectDuplicateNames" want = func(i int) string { return tests[i].wantWithRejectDuplicateNames } case true: name = "AllowDuplicateNames" want = func(i int) string { return tests[i].wantWithAllowDuplicateNames } } t.Run(name, func(t *testing.T) { bb := new(bytes.Buffer) enc := EncodeOptions{AllowDuplicateNames: allowDupes}.NewEncoder(bb) for i, tt := range tests { if err := enc.WriteToken(tt.token); err != nil { t.Fatalf("%d: Encoder.WriteToken error: %v", i, err) } if got := enc.StackPointer(); got != want(i) { t.Fatalf("%d: Encoder.StackPointer = %v, want %v", i, got, want(i)) } } dec := DecodeOptions{AllowDuplicateNames: allowDupes}.NewDecoder(bb) for i := range tests { if _, err := dec.ReadToken(); err != nil { t.Fatalf("%d: Decoder.ReadToken error: %v", i, err) } if got := dec.StackPointer(); got != want(i) { t.Fatalf("%d: Decoder.StackPointer = %v, want %v", i, got, want(i)) } } }) } } func TestCoderBufferGrowth(t *testing.T) { // The growth rate of the internal buffer should be exponential, // but should not grow unbounded. checkGrowth := func(ns []int) { t.Helper() var sumBytes, sumRates, numGrows float64 prev := ns[0] for i := 1; i < len(ns)-1; i++ { n := ns[i] if n != prev { sumRates += float64(n) / float64(prev) numGrows++ prev = n } if n > 1<<20 { t.Fatalf("single Read/Write too large: %d", n) } sumBytes += float64(n) } if mean := sumBytes / float64(len(ns)); mean < 1<<10 { t.Fatalf("average Read/Write too small: %0.1f", mean) } switch mean := sumRates / numGrows; { case mean < 1.25: t.Fatalf("average growth rate too slow: %0.3f", mean) case mean > 2.00: t.Fatalf("average growth rate too fast: %0.3f", mean) } } bb := &bytesBuffer{new(bytes.Buffer)} var writeSizes []int if err := MarshalFull(WriterFunc(func(b []byte) (int, error) { n, err := bb.Write(b) writeSizes = append(writeSizes, n) return n, err }), make([]struct{}, 1e6)); err != nil { t.Fatalf("MarshalFull error: %v", err) } checkGrowth(writeSizes) var readSizes []int if err := UnmarshalFull(ReaderFunc(func(b []byte) (int, error) { n, err := bb.Read(b) readSizes = append(readSizes, n) return n, err }), new([]struct{})); err != nil { t.Fatalf("UnmarshalFull error: %v", err) } checkGrowth(readSizes) } type ReaderFunc func([]byte) (int, error) func (f ReaderFunc) Read(b []byte) (int, error) { return f(b) } type WriterFunc func([]byte) (int, error) func (f WriterFunc) Write(b []byte) (int, error) { return f(b) } // FaultyBuffer implements io.Reader and io.Writer. // It may process fewer bytes than the provided buffer // and may randomly return an error. type FaultyBuffer struct { B []byte // MaxBytes is the maximum number of bytes read/written. // A random number of bytes within [0, MaxBytes] are processed. // A non-positive value is treated as infinity. MaxBytes int // MayError specifies whether to randomly provide this error. // Even if an error is returned, no bytes are dropped. MayError error // Rand to use for pseudo-random behavior. // If nil, it will be initialized with rand.NewSource(0). Rand rand.Source } func (p *FaultyBuffer) Read(b []byte) (int, error) { b = b[:copy(b[:p.mayTruncate(len(b))], p.B)] p.B = p.B[len(b):] if len(p.B) == 0 && (len(b) == 0 || p.randN(2) == 0) { return len(b), io.EOF } return len(b), p.mayError() } func (p *FaultyBuffer) Write(b []byte) (int, error) { b2 := b[:p.mayTruncate(len(b))] p.B = append(p.B, b2...) if len(b2) < len(b) { return len(b2), io.ErrShortWrite } return len(b2), p.mayError() } // mayTruncate may return a value between [0, n]. func (p *FaultyBuffer) mayTruncate(n int) int { if p.MaxBytes > 0 { if n > p.MaxBytes { n = p.MaxBytes } return p.randN(n + 1) } return n } // mayError may return a non-nil error. func (p *FaultyBuffer) mayError() error { if p.MayError != nil && p.randN(2) == 0 { return p.MayError } return nil } func (p *FaultyBuffer) randN(n int) int { if p.Rand == nil { p.Rand = rand.NewSource(0) } return int(p.Rand.Int63() % int64(n)) } decode.go000066400000000000000000001454731453663023200335600ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "bytes" "errors" "io" "math" "strconv" "unicode/utf16" "unicode/utf8" ) // NOTE: The logic for decoding is complicated by the fact that reading from // an io.Reader into a temporary buffer means that the buffer may contain a // truncated portion of some valid input, requiring the need to fetch more data. // // This file is structured in the following way: // // - consumeXXX functions parse an exact JSON token from a []byte. // If the buffer appears truncated, then it returns io.ErrUnexpectedEOF. // The consumeSimpleXXX functions are so named because they only handle // a subset of the grammar for the JSON token being parsed. // They do not handle the full grammar to keep these functions inlineable. // // - Decoder.consumeXXX methods parse the next JSON token from Decoder.buf, // automatically fetching more input if necessary. These methods take // a position relative to the start of Decoder.buf as an argument and // return the end of the consumed JSON token as a position, // also relative to the start of Decoder.buf. // // - In the event of an I/O errors or state machine violations, // the implementation avoids mutating the state of Decoder // (aside from the book-keeping needed to implement Decoder.fetch). // For this reason, only Decoder.ReadToken and Decoder.ReadValue are // responsible for updated Decoder.prevStart and Decoder.prevEnd. // // - For performance, much of the implementation uses the pattern of calling // the inlineable consumeXXX functions first, and if more work is necessary, // then it calls the slower Decoder.consumeXXX methods. // TODO: Revisit this pattern if the Go compiler provides finer control // over exactly which calls are inlined or not. // DecodeOptions configures how JSON decoding operates. // The zero value is equivalent to the default settings, // which is compliant with both RFC 7493 and RFC 8259. type DecodeOptions struct { requireKeyedLiterals nonComparable // AllowDuplicateNames specifies that JSON objects may contain // duplicate member names. Disabling the duplicate name check may provide // computational and performance benefits, but breaks compliance with // RFC 7493, section 2.3. The input will still be compliant with RFC 8259, // which leaves the handling of duplicate names as unspecified behavior. AllowDuplicateNames bool // AllowInvalidUTF8 specifies that JSON strings may contain invalid UTF-8, // which will be mangled as the Unicode replacement character, U+FFFD. // This causes the decoder to break compliance with // RFC 7493, section 2.1, and RFC 8259, section 8.1. AllowInvalidUTF8 bool } // Decoder is a streaming decoder for raw JSON tokens and values. // It is used to read a stream of top-level JSON values, // each separated by optional whitespace characters. // // ReadToken and ReadValue calls may be interleaved. // For example, the following JSON value: // // {"name":"value","array":[null,false,true,3.14159],"object":{"k":"v"}} // // can be parsed with the following calls (ignoring errors for brevity): // // d.ReadToken() // { // d.ReadToken() // "name" // d.ReadToken() // "value" // d.ReadValue() // "array" // d.ReadToken() // [ // d.ReadToken() // null // d.ReadToken() // false // d.ReadValue() // true // d.ReadToken() // 3.14159 // d.ReadToken() // ] // d.ReadValue() // "object" // d.ReadValue() // {"k":"v"} // d.ReadToken() // } // // The above is one of many possible sequence of calls and // may not represent the most sensible method to call for any given token/value. // For example, it is probably more common to call ReadToken to obtain a // string token for object names. type Decoder struct { state decodeBuffer options DecodeOptions stringCache *stringCache // only used when unmarshaling } // decodeBuffer is a buffer split into 4 segments: // // - buf[0:prevEnd] // already read portion of the buffer // - buf[prevStart:prevEnd] // previously read value // - buf[prevEnd:len(buf)] // unread portion of the buffer // - buf[len(buf):cap(buf)] // unused portion of the buffer // // Invariants: // // 0 ≤ prevStart ≤ prevEnd ≤ len(buf) ≤ cap(buf) type decodeBuffer struct { peekPos int // non-zero if valid offset into buf for start of next token peekErr error // implies peekPos is -1 buf []byte // may alias rd if it is a bytes.Buffer prevStart int prevEnd int // baseOffset is added to prevStart and prevEnd to obtain // the absolute offset relative to the start of io.Reader stream. baseOffset int64 rd io.Reader } // NewDecoder constructs a new streaming decoder reading from r. // // If r is a bytes.Buffer, then the decoder parses directly from the buffer // without first copying the contents to an intermediate buffer. // Additional writes to the buffer must not occur while the decoder is in use. func NewDecoder(r io.Reader) *Decoder { return DecodeOptions{}.NewDecoder(r) } // NewDecoder constructs a new streaming decoder reading from r // configured with the provided options. func (o DecodeOptions) NewDecoder(r io.Reader) *Decoder { d := new(Decoder) o.ResetDecoder(d, r) return d } // ResetDecoder resets a decoder such that it is reading afresh from r and // configured with the provided options. func (o DecodeOptions) ResetDecoder(d *Decoder, r io.Reader) { if d == nil { panic("json: invalid nil Decoder") } if r == nil { panic("json: invalid nil io.Reader") } d.reset(nil, r, o) } func (d *Decoder) reset(b []byte, r io.Reader, o DecodeOptions) { d.state.reset() d.decodeBuffer = decodeBuffer{buf: b, rd: r} d.options = o } // Reset resets a decoder such that it is reading afresh from r but // keep any pre-existing decoder options. func (d *Decoder) Reset(r io.Reader) { d.options.ResetDecoder(d, r) } var errBufferWriteAfterNext = errors.New("invalid bytes.Buffer.Write call after calling bytes.Buffer.Next") // fetch reads at least 1 byte from the underlying io.Reader. // It returns io.ErrUnexpectedEOF if zero bytes were read and io.EOF was seen. func (d *Decoder) fetch() error { if d.rd == nil { return io.ErrUnexpectedEOF } // Inform objectNameStack that we are about to fetch new buffer content. d.names.copyQuotedBuffer(d.buf) // Specialize bytes.Buffer for better performance. if bb, ok := d.rd.(*bytes.Buffer); ok { switch { case bb.Len() == 0: return io.ErrUnexpectedEOF case len(d.buf) == 0: d.buf = bb.Next(bb.Len()) // "read" all data in the buffer return nil default: // This only occurs if a partially filled bytes.Buffer was provided // and more data is written to it while Decoder is reading from it. // This practice will lead to data corruption since future writes // may overwrite the contents of the current buffer. // // The user is trying to use a bytes.Buffer as a pipe, // but a bytes.Buffer is poor implementation of a pipe, // the purpose-built io.Pipe should be used instead. return &ioError{action: "read", err: errBufferWriteAfterNext} } } // Allocate initial buffer if empty. if cap(d.buf) == 0 { d.buf = make([]byte, 0, 64) } // Check whether to grow the buffer. const maxBufferSize = 4 << 10 const growthSizeFactor = 2 // higher value is faster const growthRateFactor = 2 // higher value is slower // By default, grow if below the maximum buffer size. grow := cap(d.buf) <= maxBufferSize/growthSizeFactor // Growing can be expensive, so only grow // if a sufficient number of bytes have been processed. grow = grow && int64(cap(d.buf)) < d.previousOffsetEnd()/growthRateFactor // If prevStart==0, then fetch was called in order to fetch more data // to finish consuming a large JSON value contiguously. // Grow if less than 25% of the remaining capacity is available. // Note that this may cause the input buffer to exceed maxBufferSize. grow = grow || (d.prevStart == 0 && len(d.buf) >= 3*cap(d.buf)/4) if grow { // Allocate a new buffer and copy the contents of the old buffer over. // TODO: Provide a hard limit on the maximum internal buffer size? buf := make([]byte, 0, cap(d.buf)*growthSizeFactor) d.buf = append(buf, d.buf[d.prevStart:]...) } else { // Move unread portion of the data to the front. n := copy(d.buf[:cap(d.buf)], d.buf[d.prevStart:]) d.buf = d.buf[:n] } d.baseOffset += int64(d.prevStart) d.prevEnd -= d.prevStart d.prevStart = 0 // Read more data into the internal buffer. for { n, err := d.rd.Read(d.buf[len(d.buf):cap(d.buf)]) switch { case n > 0: d.buf = d.buf[:len(d.buf)+n] return nil // ignore errors if any bytes are read case err == io.EOF: return io.ErrUnexpectedEOF case err != nil: return &ioError{action: "read", err: err} default: continue // Read returned (0, nil) } } } const invalidateBufferByte = '#' // invalid starting character for JSON grammar // invalidatePreviousRead invalidates buffers returned by Peek and Read calls // so that the first byte is an invalid character. // This Hyrum-proofs the API against faulty application code that assumes // values returned by ReadValue remain valid past subsequent Read calls. func (d *decodeBuffer) invalidatePreviousRead() { // Avoid mutating the buffer if d.rd is nil which implies that d.buf // is provided by the user code and may not expect mutations. isBytesBuffer := func(r io.Reader) bool { _, ok := r.(*bytes.Buffer) return ok } if d.rd != nil && !isBytesBuffer(d.rd) && d.prevStart < d.prevEnd && uint(d.prevStart) < uint(len(d.buf)) { d.buf[d.prevStart] = invalidateBufferByte d.prevStart = d.prevEnd } } // needMore reports whether there are no more unread bytes. func (d *decodeBuffer) needMore(pos int) bool { // NOTE: The arguments and logic are kept simple to keep this inlineable. return pos == len(d.buf) } // injectSyntacticErrorWithPosition wraps a SyntacticError with the position, // otherwise it returns the error as is. // It takes a position relative to the start of the start of d.buf. func (d *decodeBuffer) injectSyntacticErrorWithPosition(err error, pos int) error { if serr, ok := err.(*SyntacticError); ok { return serr.withOffset(d.baseOffset + int64(pos)) } return err } func (d *decodeBuffer) previousOffsetStart() int64 { return d.baseOffset + int64(d.prevStart) } func (d *decodeBuffer) previousOffsetEnd() int64 { return d.baseOffset + int64(d.prevEnd) } func (d *decodeBuffer) previousBuffer() []byte { return d.buf[d.prevStart:d.prevEnd] } func (d *decodeBuffer) unreadBuffer() []byte { return d.buf[d.prevEnd:len(d.buf)] } // PeekKind retrieves the next token kind, but does not advance the read offset. // It returns 0 if there are no more tokens. func (d *Decoder) PeekKind() Kind { // Check whether we have a cached peek result. if d.peekPos > 0 { return Kind(d.buf[d.peekPos]).normalize() } var err error d.invalidatePreviousRead() pos := d.prevEnd // Consume leading whitespace. pos += consumeWhitespace(d.buf[pos:]) if d.needMore(pos) { if pos, err = d.consumeWhitespace(pos); err != nil { if err == io.ErrUnexpectedEOF && d.tokens.depth() == 1 { err = io.EOF // EOF possibly if no Tokens present after top-level value } d.peekPos, d.peekErr = -1, err return invalidKind } } // Consume colon or comma. var delim byte if c := d.buf[pos]; c == ':' || c == ',' { delim = c pos += 1 pos += consumeWhitespace(d.buf[pos:]) if d.needMore(pos) { if pos, err = d.consumeWhitespace(pos); err != nil { d.peekPos, d.peekErr = -1, err return invalidKind } } } next := Kind(d.buf[pos]).normalize() if d.tokens.needDelim(next) != delim { pos = d.prevEnd // restore position to right after leading whitespace pos += consumeWhitespace(d.buf[pos:]) err = d.tokens.checkDelim(delim, next) err = d.injectSyntacticErrorWithPosition(err, pos) d.peekPos, d.peekErr = -1, err return invalidKind } // This may set peekPos to zero, which is indistinguishable from // the uninitialized state. While a small hit to performance, it is correct // since ReadValue and ReadToken will disregard the cached result and // recompute the next kind. d.peekPos, d.peekErr = pos, nil return next } // SkipValue is semantically equivalent to calling ReadValue and discarding // the result except that memory is not wasted trying to hold the entire result. func (d *Decoder) SkipValue() error { switch d.PeekKind() { case '{', '[': // For JSON objects and arrays, keep skipping all tokens // until the depth matches the starting depth. depth := d.tokens.depth() for { if _, err := d.ReadToken(); err != nil { return err } if depth >= d.tokens.depth() { return nil } } default: // Trying to skip a value when the next token is a '}' or ']' // will result in an error being returned here. if _, err := d.ReadValue(); err != nil { return err } return nil } } // ReadToken reads the next Token, advancing the read offset. // The returned token is only valid until the next Peek, Read, or Skip call. // It returns io.EOF if there are no more tokens. func (d *Decoder) ReadToken() (Token, error) { // Determine the next kind. var err error var next Kind pos := d.peekPos if pos != 0 { // Use cached peek result. if d.peekErr != nil { err := d.peekErr d.peekPos, d.peekErr = 0, nil // possibly a transient I/O error return Token{}, err } next = Kind(d.buf[pos]).normalize() d.peekPos = 0 // reset cache } else { d.invalidatePreviousRead() pos = d.prevEnd // Consume leading whitespace. pos += consumeWhitespace(d.buf[pos:]) if d.needMore(pos) { if pos, err = d.consumeWhitespace(pos); err != nil { if err == io.ErrUnexpectedEOF && d.tokens.depth() == 1 { err = io.EOF // EOF possibly if no Tokens present after top-level value } return Token{}, err } } // Consume colon or comma. var delim byte if c := d.buf[pos]; c == ':' || c == ',' { delim = c pos += 1 pos += consumeWhitespace(d.buf[pos:]) if d.needMore(pos) { if pos, err = d.consumeWhitespace(pos); err != nil { return Token{}, err } } } next = Kind(d.buf[pos]).normalize() if d.tokens.needDelim(next) != delim { pos = d.prevEnd // restore position to right after leading whitespace pos += consumeWhitespace(d.buf[pos:]) err = d.tokens.checkDelim(delim, next) return Token{}, d.injectSyntacticErrorWithPosition(err, pos) } } // Handle the next token. var n int switch next { case 'n': if consumeNull(d.buf[pos:]) == 0 { pos, err = d.consumeLiteral(pos, "null") if err != nil { return Token{}, d.injectSyntacticErrorWithPosition(err, pos) } } else { pos += len("null") } if err = d.tokens.appendLiteral(); err != nil { return Token{}, d.injectSyntacticErrorWithPosition(err, pos-len("null")) // report position at start of literal } d.prevStart, d.prevEnd = pos, pos return Null, nil case 'f': if consumeFalse(d.buf[pos:]) == 0 { pos, err = d.consumeLiteral(pos, "false") if err != nil { return Token{}, d.injectSyntacticErrorWithPosition(err, pos) } } else { pos += len("false") } if err = d.tokens.appendLiteral(); err != nil { return Token{}, d.injectSyntacticErrorWithPosition(err, pos-len("false")) // report position at start of literal } d.prevStart, d.prevEnd = pos, pos return False, nil case 't': if consumeTrue(d.buf[pos:]) == 0 { pos, err = d.consumeLiteral(pos, "true") if err != nil { return Token{}, d.injectSyntacticErrorWithPosition(err, pos) } } else { pos += len("true") } if err = d.tokens.appendLiteral(); err != nil { return Token{}, d.injectSyntacticErrorWithPosition(err, pos-len("true")) // report position at start of literal } d.prevStart, d.prevEnd = pos, pos return True, nil case '"': var flags valueFlags // TODO: Preserve this in Token? if n = consumeSimpleString(d.buf[pos:]); n == 0 { oldAbsPos := d.baseOffset + int64(pos) pos, err = d.consumeString(&flags, pos) newAbsPos := d.baseOffset + int64(pos) n = int(newAbsPos - oldAbsPos) if err != nil { return Token{}, d.injectSyntacticErrorWithPosition(err, pos) } } else { pos += n } if !d.options.AllowDuplicateNames && d.tokens.last.needObjectName() { if !d.tokens.last.isValidNamespace() { return Token{}, errInvalidNamespace } if d.tokens.last.isActiveNamespace() && !d.namespaces.last().insertQuoted(d.buf[pos-n:pos], flags.isVerbatim()) { err = &SyntacticError{str: "duplicate name " + string(d.buf[pos-n:pos]) + " in object"} return Token{}, d.injectSyntacticErrorWithPosition(err, pos-n) // report position at start of string } d.names.replaceLastQuotedOffset(pos - n) // only replace if insertQuoted succeeds } if err = d.tokens.appendString(); err != nil { return Token{}, d.injectSyntacticErrorWithPosition(err, pos-n) // report position at start of string } d.prevStart, d.prevEnd = pos-n, pos return Token{raw: &d.decodeBuffer, num: uint64(d.previousOffsetStart())}, nil case '0': // NOTE: Since JSON numbers are not self-terminating, // we need to make sure that the next byte is not part of a number. if n = consumeSimpleNumber(d.buf[pos:]); n == 0 || d.needMore(pos+n) { oldAbsPos := d.baseOffset + int64(pos) pos, err = d.consumeNumber(pos) newAbsPos := d.baseOffset + int64(pos) n = int(newAbsPos - oldAbsPos) if err != nil { return Token{}, d.injectSyntacticErrorWithPosition(err, pos) } } else { pos += n } if err = d.tokens.appendNumber(); err != nil { return Token{}, d.injectSyntacticErrorWithPosition(err, pos-n) // report position at start of number } d.prevStart, d.prevEnd = pos-n, pos return Token{raw: &d.decodeBuffer, num: uint64(d.previousOffsetStart())}, nil case '{': if err = d.tokens.pushObject(); err != nil { return Token{}, d.injectSyntacticErrorWithPosition(err, pos) } if !d.options.AllowDuplicateNames { d.names.push() d.namespaces.push() } pos += 1 d.prevStart, d.prevEnd = pos, pos return ObjectStart, nil case '}': if err = d.tokens.popObject(); err != nil { return Token{}, d.injectSyntacticErrorWithPosition(err, pos) } if !d.options.AllowDuplicateNames { d.names.pop() d.namespaces.pop() } pos += 1 d.prevStart, d.prevEnd = pos, pos return ObjectEnd, nil case '[': if err = d.tokens.pushArray(); err != nil { return Token{}, d.injectSyntacticErrorWithPosition(err, pos) } pos += 1 d.prevStart, d.prevEnd = pos, pos return ArrayStart, nil case ']': if err = d.tokens.popArray(); err != nil { return Token{}, d.injectSyntacticErrorWithPosition(err, pos) } pos += 1 d.prevStart, d.prevEnd = pos, pos return ArrayEnd, nil default: err = newInvalidCharacterError(d.buf[pos:], "at start of token") return Token{}, d.injectSyntacticErrorWithPosition(err, pos) } } type valueFlags uint const ( _ valueFlags = (1 << iota) / 2 // powers of two starting with zero stringNonVerbatim // string cannot be naively treated as valid UTF-8 stringNonCanonical // string not formatted according to RFC 8785, section 3.2.2.2. // TODO: Track whether a number is a non-integer? ) func (f *valueFlags) set(f2 valueFlags) { *f |= f2 } func (f valueFlags) isVerbatim() bool { return f&stringNonVerbatim == 0 } func (f valueFlags) isCanonical() bool { return f&stringNonCanonical == 0 } // ReadValue returns the next raw JSON value, advancing the read offset. // The value is stripped of any leading or trailing whitespace. // The returned value is only valid until the next Peek, Read, or Skip call and // may not be mutated while the Decoder remains in use. // If the decoder is currently at the end token for an object or array, // then it reports a SyntacticError and the internal state remains unchanged. // It returns io.EOF if there are no more values. func (d *Decoder) ReadValue() (RawValue, error) { var flags valueFlags return d.readValue(&flags) } func (d *Decoder) readValue(flags *valueFlags) (RawValue, error) { // Determine the next kind. var err error var next Kind pos := d.peekPos if pos != 0 { // Use cached peek result. if d.peekErr != nil { err := d.peekErr d.peekPos, d.peekErr = 0, nil // possibly a transient I/O error return nil, err } next = Kind(d.buf[pos]).normalize() d.peekPos = 0 // reset cache } else { d.invalidatePreviousRead() pos = d.prevEnd // Consume leading whitespace. pos += consumeWhitespace(d.buf[pos:]) if d.needMore(pos) { if pos, err = d.consumeWhitespace(pos); err != nil { if err == io.ErrUnexpectedEOF && d.tokens.depth() == 1 { err = io.EOF // EOF possibly if no Tokens present after top-level value } return nil, err } } // Consume colon or comma. var delim byte if c := d.buf[pos]; c == ':' || c == ',' { delim = c pos += 1 pos += consumeWhitespace(d.buf[pos:]) if d.needMore(pos) { if pos, err = d.consumeWhitespace(pos); err != nil { return nil, err } } } next = Kind(d.buf[pos]).normalize() if d.tokens.needDelim(next) != delim { pos = d.prevEnd // restore position to right after leading whitespace pos += consumeWhitespace(d.buf[pos:]) err = d.tokens.checkDelim(delim, next) return nil, d.injectSyntacticErrorWithPosition(err, pos) } } // Handle the next value. oldAbsPos := d.baseOffset + int64(pos) pos, err = d.consumeValue(flags, pos) newAbsPos := d.baseOffset + int64(pos) n := int(newAbsPos - oldAbsPos) if err != nil { return nil, d.injectSyntacticErrorWithPosition(err, pos) } switch next { case 'n', 't', 'f': err = d.tokens.appendLiteral() case '"': if !d.options.AllowDuplicateNames && d.tokens.last.needObjectName() { if !d.tokens.last.isValidNamespace() { err = errInvalidNamespace break } if d.tokens.last.isActiveNamespace() && !d.namespaces.last().insertQuoted(d.buf[pos-n:pos], flags.isVerbatim()) { err = &SyntacticError{str: "duplicate name " + string(d.buf[pos-n:pos]) + " in object"} break } d.names.replaceLastQuotedOffset(pos - n) // only replace if insertQuoted succeeds } err = d.tokens.appendString() case '0': err = d.tokens.appendNumber() case '{': if err = d.tokens.pushObject(); err != nil { break } if err = d.tokens.popObject(); err != nil { panic("BUG: popObject should never fail immediately after pushObject: " + err.Error()) } case '[': if err = d.tokens.pushArray(); err != nil { break } if err = d.tokens.popArray(); err != nil { panic("BUG: popArray should never fail immediately after pushArray: " + err.Error()) } } if err != nil { return nil, d.injectSyntacticErrorWithPosition(err, pos-n) // report position at start of value } d.prevEnd = pos d.prevStart = pos - n return d.buf[pos-n : pos : pos], nil } // checkEOF verifies that the input has no more data. func (d *Decoder) checkEOF() error { switch pos, err := d.consumeWhitespace(d.prevEnd); err { case nil: return newInvalidCharacterError(d.buf[pos:], "after top-level value") case io.ErrUnexpectedEOF: return nil default: return err } } // consumeWhitespace consumes all whitespace starting at d.buf[pos:]. // It returns the new position in d.buf immediately after the last whitespace. // If it returns nil, there is guaranteed to at least be one unread byte. // // The following pattern is common in this implementation: // // pos += consumeWhitespace(d.buf[pos:]) // if d.needMore(pos) { // if pos, err = d.consumeWhitespace(pos); err != nil { // return ... // } // } // // It is difficult to simplify this without sacrificing performance since // consumeWhitespace must be inlined. The body of the if statement is // executed only in rare situations where we need to fetch more data. // Since fetching may return an error, we also need to check the error. func (d *Decoder) consumeWhitespace(pos int) (newPos int, err error) { for { pos += consumeWhitespace(d.buf[pos:]) if d.needMore(pos) { absPos := d.baseOffset + int64(pos) err = d.fetch() // will mutate d.buf and invalidate pos pos = int(absPos - d.baseOffset) if err != nil { return pos, err } continue } return pos, nil } } // consumeValue consumes a single JSON value starting at d.buf[pos:]. // It returns the new position in d.buf immediately after the value. func (d *Decoder) consumeValue(flags *valueFlags, pos int) (newPos int, err error) { for { var n int var err error switch next := Kind(d.buf[pos]).normalize(); next { case 'n': if n = consumeNull(d.buf[pos:]); n == 0 { n, err = consumeLiteral(d.buf[pos:], "null") } case 'f': if n = consumeFalse(d.buf[pos:]); n == 0 { n, err = consumeLiteral(d.buf[pos:], "false") } case 't': if n = consumeTrue(d.buf[pos:]); n == 0 { n, err = consumeLiteral(d.buf[pos:], "true") } case '"': if n = consumeSimpleString(d.buf[pos:]); n == 0 { return d.consumeString(flags, pos) } case '0': // NOTE: Since JSON numbers are not self-terminating, // we need to make sure that the next byte is not part of a number. if n = consumeSimpleNumber(d.buf[pos:]); n == 0 || d.needMore(pos+n) { return d.consumeNumber(pos) } case '{': return d.consumeObject(flags, pos) case '[': return d.consumeArray(flags, pos) default: return pos, newInvalidCharacterError(d.buf[pos:], "at start of value") } if err == io.ErrUnexpectedEOF { absPos := d.baseOffset + int64(pos) err = d.fetch() // will mutate d.buf and invalidate pos pos = int(absPos - d.baseOffset) if err != nil { return pos, err } continue } return pos + n, err } } // consumeLiteral consumes a single JSON literal starting at d.buf[pos:]. // It returns the new position in d.buf immediately after the literal. func (d *Decoder) consumeLiteral(pos int, lit string) (newPos int, err error) { for { n, err := consumeLiteral(d.buf[pos:], lit) if err == io.ErrUnexpectedEOF { absPos := d.baseOffset + int64(pos) err = d.fetch() // will mutate d.buf and invalidate pos pos = int(absPos - d.baseOffset) if err != nil { return pos, err } continue } return pos + n, err } } // consumeString consumes a single JSON string starting at d.buf[pos:]. // It returns the new position in d.buf immediately after the string. func (d *Decoder) consumeString(flags *valueFlags, pos int) (newPos int, err error) { var n int for { n, err = consumeStringResumable(flags, d.buf[pos:], n, !d.options.AllowInvalidUTF8) if err == io.ErrUnexpectedEOF { absPos := d.baseOffset + int64(pos) err = d.fetch() // will mutate d.buf and invalidate pos pos = int(absPos - d.baseOffset) if err != nil { return pos, err } continue } return pos + n, err } } // consumeNumber consumes a single JSON number starting at d.buf[pos:]. // It returns the new position in d.buf immediately after the number. func (d *Decoder) consumeNumber(pos int) (newPos int, err error) { var n int var state consumeNumberState for { n, state, err = consumeNumberResumable(d.buf[pos:], n, state) // NOTE: Since JSON numbers are not self-terminating, // we need to make sure that the next byte is not part of a number. if err == io.ErrUnexpectedEOF || d.needMore(pos+n) { mayTerminate := err == nil absPos := d.baseOffset + int64(pos) err = d.fetch() // will mutate d.buf and invalidate pos pos = int(absPos - d.baseOffset) if err != nil { if mayTerminate && err == io.ErrUnexpectedEOF { return pos + n, nil } return pos, err } continue } return pos + n, err } } // consumeObject consumes a single JSON object starting at d.buf[pos:]. // It returns the new position in d.buf immediately after the object. func (d *Decoder) consumeObject(flags *valueFlags, pos int) (newPos int, err error) { var n int var names *objectNamespace if !d.options.AllowDuplicateNames { d.namespaces.push() defer d.namespaces.pop() names = d.namespaces.last() } // Handle before start. if d.buf[pos] != '{' { panic("BUG: consumeObject must be called with a buffer that starts with '{'") } pos++ // Handle after start. pos += consumeWhitespace(d.buf[pos:]) if d.needMore(pos) { if pos, err = d.consumeWhitespace(pos); err != nil { return pos, err } } if d.buf[pos] == '}' { pos++ return pos, nil } for { // Handle before name. pos += consumeWhitespace(d.buf[pos:]) if d.needMore(pos) { if pos, err = d.consumeWhitespace(pos); err != nil { return pos, err } } var flags2 valueFlags if n = consumeSimpleString(d.buf[pos:]); n == 0 { oldAbsPos := d.baseOffset + int64(pos) pos, err = d.consumeString(&flags2, pos) newAbsPos := d.baseOffset + int64(pos) n = int(newAbsPos - oldAbsPos) flags.set(flags2) if err != nil { return pos, err } } else { pos += n } if !d.options.AllowDuplicateNames && !names.insertQuoted(d.buf[pos-n:pos], flags2.isVerbatim()) { return pos - n, &SyntacticError{str: "duplicate name " + string(d.buf[pos-n:pos]) + " in object"} } // Handle after name. pos += consumeWhitespace(d.buf[pos:]) if d.needMore(pos) { if pos, err = d.consumeWhitespace(pos); err != nil { return pos, err } } if d.buf[pos] != ':' { return pos, newInvalidCharacterError(d.buf[pos:], "after object name (expecting ':')") } pos++ // Handle before value. pos += consumeWhitespace(d.buf[pos:]) if d.needMore(pos) { if pos, err = d.consumeWhitespace(pos); err != nil { return pos, err } } pos, err = d.consumeValue(flags, pos) if err != nil { return pos, err } // Handle after value. pos += consumeWhitespace(d.buf[pos:]) if d.needMore(pos) { if pos, err = d.consumeWhitespace(pos); err != nil { return pos, err } } switch d.buf[pos] { case ',': pos++ continue case '}': pos++ return pos, nil default: return pos, newInvalidCharacterError(d.buf[pos:], "after object value (expecting ',' or '}')") } } } // consumeArray consumes a single JSON array starting at d.buf[pos:]. // It returns the new position in d.buf immediately after the array. func (d *Decoder) consumeArray(flags *valueFlags, pos int) (newPos int, err error) { // Handle before start. if d.buf[pos] != '[' { panic("BUG: consumeArray must be called with a buffer that starts with '['") } pos++ // Handle after start. pos += consumeWhitespace(d.buf[pos:]) if d.needMore(pos) { if pos, err = d.consumeWhitespace(pos); err != nil { return pos, err } } if d.buf[pos] == ']' { pos++ return pos, nil } for { // Handle before value. pos += consumeWhitespace(d.buf[pos:]) if d.needMore(pos) { if pos, err = d.consumeWhitespace(pos); err != nil { return pos, err } } pos, err = d.consumeValue(flags, pos) if err != nil { return pos, err } // Handle after value. pos += consumeWhitespace(d.buf[pos:]) if d.needMore(pos) { if pos, err = d.consumeWhitespace(pos); err != nil { return pos, err } } switch d.buf[pos] { case ',': pos++ continue case ']': pos++ return pos, nil default: return pos, newInvalidCharacterError(d.buf[pos:], "after array value (expecting ',' or ']')") } } } // InputOffset returns the current input byte offset. It gives the location // of the next byte immediately after the most recently returned token or value. // The number of bytes actually read from the underlying io.Reader may be more // than this offset due to internal buffering effects. func (d *Decoder) InputOffset() int64 { return d.previousOffsetEnd() } // UnreadBuffer returns the data remaining in the unread buffer, // which may contain zero or more bytes. // The returned buffer must not be mutated while Decoder continues to be used. // The buffer contents are valid until the next Peek, Read, or Skip call. func (d *Decoder) UnreadBuffer() []byte { return d.unreadBuffer() } // StackDepth returns the depth of the state machine for read JSON data. // Each level on the stack represents a nested JSON object or array. // It is incremented whenever an ObjectStart or ArrayStart token is encountered // and decremented whenever an ObjectEnd or ArrayEnd token is encountered. // The depth is zero-indexed, where zero represents the top-level JSON value. func (d *Decoder) StackDepth() int { // NOTE: Keep in sync with Encoder.StackDepth. return d.tokens.depth() - 1 } // StackIndex returns information about the specified stack level. // It must be a number between 0 and StackDepth, inclusive. // For each level, it reports the kind: // // - 0 for a level of zero, // - '{' for a level representing a JSON object, and // - '[' for a level representing a JSON array. // // It also reports the length of that JSON object or array. // Each name and value in a JSON object is counted separately, // so the effective number of members would be half the length. // A complete JSON object must have an even length. func (d *Decoder) StackIndex(i int) (Kind, int) { // NOTE: Keep in sync with Encoder.StackIndex. switch s := d.tokens.index(i); { case i > 0 && s.isObject(): return '{', s.length() case i > 0 && s.isArray(): return '[', s.length() default: return 0, s.length() } } // StackPointer returns a JSON Pointer (RFC 6901) to the most recently read value. // Object names are only present if AllowDuplicateNames is false, otherwise // object members are represented using their index within the object. func (d *Decoder) StackPointer() string { d.names.copyQuotedBuffer(d.buf) return string(d.appendStackPointer(nil)) } // consumeWhitespace consumes leading JSON whitespace per RFC 7159, section 2. func consumeWhitespace(b []byte) (n int) { // NOTE: The arguments and logic are kept simple to keep this inlineable. for len(b) > n && (b[n] == ' ' || b[n] == '\t' || b[n] == '\r' || b[n] == '\n') { n++ } return n } // consumeNull consumes the next JSON null literal per RFC 7159, section 3. // It returns 0 if it is invalid, in which case consumeLiteral should be used. func consumeNull(b []byte) int { // NOTE: The arguments and logic are kept simple to keep this inlineable. const literal = "null" if len(b) >= len(literal) && string(b[:len(literal)]) == literal { return len(literal) } return 0 } // consumeFalse consumes the next JSON false literal per RFC 7159, section 3. // It returns 0 if it is invalid, in which case consumeLiteral should be used. func consumeFalse(b []byte) int { // NOTE: The arguments and logic are kept simple to keep this inlineable. const literal = "false" if len(b) >= len(literal) && string(b[:len(literal)]) == literal { return len(literal) } return 0 } // consumeTrue consumes the next JSON true literal per RFC 7159, section 3. // It returns 0 if it is invalid, in which case consumeLiteral should be used. func consumeTrue(b []byte) int { // NOTE: The arguments and logic are kept simple to keep this inlineable. const literal = "true" if len(b) >= len(literal) && string(b[:len(literal)]) == literal { return len(literal) } return 0 } // consumeLiteral consumes the next JSON literal per RFC 7159, section 3. // If the input appears truncated, it returns io.ErrUnexpectedEOF. func consumeLiteral(b []byte, lit string) (n int, err error) { for i := 0; i < len(b) && i < len(lit); i++ { if b[i] != lit[i] { return i, newInvalidCharacterError(b[i:], "within literal "+lit+" (expecting "+strconv.QuoteRune(rune(lit[i]))+")") } } if len(b) < len(lit) { return len(b), io.ErrUnexpectedEOF } return len(lit), nil } // consumeSimpleString consumes the next JSON string per RFC 7159, section 7 // but is limited to the grammar for an ASCII string without escape sequences. // It returns 0 if it is invalid or more complicated than a simple string, // in which case consumeString should be called. func consumeSimpleString(b []byte) (n int) { // NOTE: The arguments and logic are kept simple to keep this inlineable. if len(b) > 0 && b[0] == '"' { n++ for len(b) > n && (' ' <= b[n] && b[n] != '\\' && b[n] != '"' && b[n] < utf8.RuneSelf) { n++ } if len(b) > n && b[n] == '"' { n++ return n } } return 0 } // consumeString consumes the next JSON string per RFC 7159, section 7. // If validateUTF8 is false, then this allows the presence of invalid UTF-8 // characters within the string itself. // It reports the number of bytes consumed and whether an error was encountered. // If the input appears truncated, it returns io.ErrUnexpectedEOF. func consumeString(flags *valueFlags, b []byte, validateUTF8 bool) (n int, err error) { return consumeStringResumable(flags, b, 0, validateUTF8) } // consumeStringResumable is identical to consumeString but supports resuming // from a previous call that returned io.ErrUnexpectedEOF. func consumeStringResumable(flags *valueFlags, b []byte, resumeOffset int, validateUTF8 bool) (n int, err error) { // Consume the leading double quote. switch { case resumeOffset > 0: n = resumeOffset // already handled the leading quote case uint(len(b)) == 0: return n, io.ErrUnexpectedEOF case b[0] == '"': n++ default: return n, newInvalidCharacterError(b[n:], `at start of string (expecting '"')`) } // Consume every character in the string. for uint(len(b)) > uint(n) { // Optimize for long sequences of unescaped characters. noEscape := func(c byte) bool { return c < utf8.RuneSelf && ' ' <= c && c != '\\' && c != '"' } for uint(len(b)) > uint(n) && noEscape(b[n]) { n++ } if uint(len(b)) <= uint(n) { return n, io.ErrUnexpectedEOF } // Check for terminating double quote. if b[n] == '"' { n++ return n, nil } switch r, rn := utf8.DecodeRune(b[n:]); { // Handle UTF-8 encoded byte sequence. // Due to specialized handling of ASCII above, we know that // all normal sequences at this point must be 2 bytes or larger. case rn > 1: n += rn // Handle escape sequence. case r == '\\': flags.set(stringNonVerbatim) resumeOffset = n if uint(len(b)) < uint(n+2) { return resumeOffset, io.ErrUnexpectedEOF } switch r := b[n+1]; r { case '/': // Forward slash is the only character with 3 representations. // Per RFC 8785, section 3.2.2.2., this must not be escaped. flags.set(stringNonCanonical) n += 2 case '"', '\\', 'b', 'f', 'n', 'r', 't': n += 2 case 'u': if uint(len(b)) < uint(n+6) { if !hasEscapeSequencePrefix(b[n:]) { flags.set(stringNonCanonical) return n, &SyntacticError{str: "invalid escape sequence " + strconv.Quote(string(b[n:])) + " within string"} } return resumeOffset, io.ErrUnexpectedEOF } v1, ok := parseHexUint16(b[n+2 : n+6]) if !ok { flags.set(stringNonCanonical) return n, &SyntacticError{str: "invalid escape sequence " + strconv.Quote(string(b[n:n+6])) + " within string"} } // Only certain control characters can use the \uFFFF notation // for canonical formatting (per RFC 8785, section 3.2.2.2.). switch v1 { // \uFFFF notation not permitted for these characters. case '\b', '\f', '\n', '\r', '\t': flags.set(stringNonCanonical) default: // \uFFFF notation only permitted for control characters. if v1 >= ' ' { flags.set(stringNonCanonical) } else { // \uFFFF notation must be lower case. for _, c := range b[n+2 : n+6] { if 'A' <= c && c <= 'F' { flags.set(stringNonCanonical) } } } } n += 6 if validateUTF8 && utf16.IsSurrogate(rune(v1)) { if uint(len(b)) >= uint(n+2) && (b[n] != '\\' || b[n+1] != 'u') { return n, &SyntacticError{str: "invalid unpaired surrogate half within string"} } if uint(len(b)) < uint(n+6) { if !hasEscapeSequencePrefix(b[n:]) { flags.set(stringNonCanonical) return n, &SyntacticError{str: "invalid escape sequence " + strconv.Quote(string(b[n:])) + " within string"} } return resumeOffset, io.ErrUnexpectedEOF } v2, ok := parseHexUint16(b[n+2 : n+6]) if !ok { return n, &SyntacticError{str: "invalid escape sequence " + strconv.Quote(string(b[n:n+6])) + " within string"} } if utf16.DecodeRune(rune(v1), rune(v2)) == utf8.RuneError { return n, &SyntacticError{str: "invalid surrogate pair in string"} } n += 6 } default: flags.set(stringNonCanonical) return n, &SyntacticError{str: "invalid escape sequence " + strconv.Quote(string(b[n:n+2])) + " within string"} } // Handle invalid UTF-8. case r == utf8.RuneError: if !utf8.FullRune(b[n:]) { return n, io.ErrUnexpectedEOF } flags.set(stringNonVerbatim | stringNonCanonical) if validateUTF8 { return n, &SyntacticError{str: "invalid UTF-8 within string"} } n++ // Handle invalid control characters. case r < ' ': flags.set(stringNonVerbatim | stringNonCanonical) return n, newInvalidCharacterError(b[n:], "within string (expecting non-control character)") default: panic("BUG: unhandled character " + quoteRune(b[n:])) } } return n, io.ErrUnexpectedEOF } // hasEscapeSequencePrefix reports whether b is possibly // the truncated prefix of a \uFFFF escape sequence. func hasEscapeSequencePrefix(b []byte) bool { for i, c := range b { switch { case i == 0 && c != '\\': return false case i == 1 && c != 'u': return false case i >= 2 && i < 6 && !('0' <= c && c <= '9') && !('a' <= c && c <= 'f') && !('A' <= c && c <= 'F'): return false } } return true } // unescapeString appends the unescaped form of a JSON string in src to dst. // Any invalid UTF-8 within the string will be replaced with utf8.RuneError. // The input must be an entire JSON string with no surrounding whitespace. func unescapeString(dst, src []byte) (v []byte, ok bool) { // Consume leading double quote. if uint(len(src)) == 0 || src[0] != '"' { return dst, false } i, n := 1, 1 // Consume every character until completion. for uint(len(src)) > uint(n) { // Optimize for long sequences of unescaped characters. noEscape := func(c byte) bool { return c < utf8.RuneSelf && ' ' <= c && c != '\\' && c != '"' } for uint(len(src)) > uint(n) && noEscape(src[n]) { n++ } if uint(len(src)) <= uint(n) { break } // Check for terminating double quote. if src[n] == '"' { dst = append(dst, src[i:n]...) n++ return dst, len(src) == n } switch r, rn := utf8.DecodeRune(src[n:]); { // Handle UTF-8 encoded byte sequence. // Due to specialized handling of ASCII above, we know that // all normal sequences at this point must be 2 bytes or larger. case rn > 1: n += rn // Handle escape sequence. case r == '\\': dst = append(dst, src[i:n]...) if r < ' ' { return dst, false // invalid control character or unescaped quote } // Handle escape sequence. if uint(len(src)) < uint(n+2) { return dst, false // truncated escape sequence } switch r := src[n+1]; r { case '"', '\\', '/': dst = append(dst, r) n += 2 case 'b': dst = append(dst, '\b') n += 2 case 'f': dst = append(dst, '\f') n += 2 case 'n': dst = append(dst, '\n') n += 2 case 'r': dst = append(dst, '\r') n += 2 case 't': dst = append(dst, '\t') n += 2 case 'u': if uint(len(src)) < uint(n+6) { return dst, false // truncated escape sequence } v1, ok := parseHexUint16(src[n+2 : n+6]) if !ok { return dst, false // invalid escape sequence } n += 6 // Check whether this is a surrogate half. r := rune(v1) if utf16.IsSurrogate(r) { r = utf8.RuneError // assume failure unless the following succeeds if uint(len(src)) >= uint(n+6) && src[n+0] == '\\' && src[n+1] == 'u' { if v2, ok := parseHexUint16(src[n+2 : n+6]); ok { if r = utf16.DecodeRune(rune(v1), rune(v2)); r != utf8.RuneError { n += 6 } } } } dst = utf8.AppendRune(dst, r) default: return dst, false // invalid escape sequence } i = n // Handle invalid UTF-8. case r == utf8.RuneError: // NOTE: An unescaped string may be longer than the escaped string // because invalid UTF-8 bytes are being replaced. dst = append(dst, src[i:n]...) dst = append(dst, "\uFFFD"...) n += rn i = n // Handle invalid control characters. case r < ' ': dst = append(dst, src[i:n]...) return dst, false // invalid control character or unescaped quote default: panic("BUG: unhandled character " + quoteRune(src[n:])) } } dst = append(dst, src[i:n]...) return dst, false // truncated input } // unescapeStringMayCopy returns the unescaped form of b. // If there are no escaped characters, the output is simply a subslice of // the input with the surrounding quotes removed. // Otherwise, a new buffer is allocated for the output. func unescapeStringMayCopy(b []byte, isVerbatim bool) []byte { // NOTE: The arguments and logic are kept simple to keep this inlineable. if isVerbatim { return b[len(`"`) : len(b)-len(`"`)] } b, _ = unescapeString(make([]byte, 0, len(b)), b) return b } // consumeSimpleNumber consumes the next JSON number per RFC 7159, section 6 // but is limited to the grammar for a positive integer. // It returns 0 if it is invalid or more complicated than a simple integer, // in which case consumeNumber should be called. func consumeSimpleNumber(b []byte) (n int) { // NOTE: The arguments and logic are kept simple to keep this inlineable. if len(b) > 0 { if b[0] == '0' { n++ } else if '1' <= b[0] && b[0] <= '9' { n++ for len(b) > n && ('0' <= b[n] && b[n] <= '9') { n++ } } else { return 0 } if len(b) == n || !(b[n] == '.' || b[n] == 'e' || b[n] == 'E') { return n } } return 0 } type consumeNumberState uint const ( consumeNumberInit consumeNumberState = iota beforeIntegerDigits withinIntegerDigits beforeFractionalDigits withinFractionalDigits beforeExponentDigits withinExponentDigits ) // consumeNumber consumes the next JSON number per RFC 7159, section 6. // It reports the number of bytes consumed and whether an error was encountered. // If the input appears truncated, it returns io.ErrUnexpectedEOF. // // Note that JSON numbers are not self-terminating. // If the entire input is consumed, then the caller needs to consider whether // there may be subsequent unread data that may still be part of this number. func consumeNumber(b []byte) (n int, err error) { n, _, err = consumeNumberResumable(b, 0, consumeNumberInit) return n, err } // consumeNumberResumable is identical to consumeNumber but supports resuming // from a previous call that returned io.ErrUnexpectedEOF. func consumeNumberResumable(b []byte, resumeOffset int, state consumeNumberState) (n int, _ consumeNumberState, err error) { // Jump to the right state when resuming from a partial consumption. n = resumeOffset if state > consumeNumberInit { switch state { case withinIntegerDigits, withinFractionalDigits, withinExponentDigits: // Consume leading digits. for len(b) > n && ('0' <= b[n] && b[n] <= '9') { n++ } if len(b) == n { return n, state, nil // still within the same state } state++ // switches "withinX" to "beforeY" where Y is the state after X } switch state { case beforeIntegerDigits: goto beforeInteger case beforeFractionalDigits: goto beforeFractional case beforeExponentDigits: goto beforeExponent default: return n, state, nil } } // Consume required integer component (with optional minus sign). beforeInteger: resumeOffset = n if len(b) > 0 && b[0] == '-' { n++ } switch { case len(b) == n: return resumeOffset, beforeIntegerDigits, io.ErrUnexpectedEOF case b[n] == '0': n++ state = beforeFractionalDigits case '1' <= b[n] && b[n] <= '9': n++ for len(b) > n && ('0' <= b[n] && b[n] <= '9') { n++ } state = withinIntegerDigits default: return n, state, newInvalidCharacterError(b[n:], "within number (expecting digit)") } // Consume optional fractional component. beforeFractional: if len(b) > n && b[n] == '.' { resumeOffset = n n++ switch { case len(b) == n: return resumeOffset, beforeFractionalDigits, io.ErrUnexpectedEOF case '0' <= b[n] && b[n] <= '9': n++ default: return n, state, newInvalidCharacterError(b[n:], "within number (expecting digit)") } for len(b) > n && ('0' <= b[n] && b[n] <= '9') { n++ } state = withinFractionalDigits } // Consume optional exponent component. beforeExponent: if len(b) > n && (b[n] == 'e' || b[n] == 'E') { resumeOffset = n n++ if len(b) > n && (b[n] == '-' || b[n] == '+') { n++ } switch { case len(b) == n: return resumeOffset, beforeExponentDigits, io.ErrUnexpectedEOF case '0' <= b[n] && b[n] <= '9': n++ default: return n, state, newInvalidCharacterError(b[n:], "within number (expecting digit)") } for len(b) > n && ('0' <= b[n] && b[n] <= '9') { n++ } state = withinExponentDigits } return n, state, nil } // parseHexUint16 is similar to strconv.ParseUint, // but operates directly on []byte and is optimized for base-16. // See https://go.dev/issue/42429. func parseHexUint16(b []byte) (v uint16, ok bool) { if len(b) != 4 { return 0, false } for _, c := range b[:4] { switch { case '0' <= c && c <= '9': c = c - '0' case 'a' <= c && c <= 'f': c = 10 + c - 'a' case 'A' <= c && c <= 'F': c = 10 + c - 'A' default: return 0, false } v = v*16 + uint16(c) } return v, true } // parseDecUint is similar to strconv.ParseUint, // but operates directly on []byte and is optimized for base-10. // If the number is syntactically valid but overflows uint64, // then it returns (math.MaxUint64, false). // See https://go.dev/issue/42429. func parseDecUint(b []byte) (v uint64, ok bool) { // Overflow logic is based on strconv/atoi.go:138-149 from Go1.15, where: // - cutoff is equal to math.MaxUint64/10+1, and // - the n1 > maxVal check is unnecessary // since maxVal is equivalent to math.MaxUint64. var n int var overflow bool for len(b) > n && ('0' <= b[n] && b[n] <= '9') { overflow = overflow || v >= math.MaxUint64/10+1 v *= 10 v1 := v + uint64(b[n]-'0') overflow = overflow || v1 < v v = v1 n++ } if n == 0 || len(b) != n { return 0, false } if overflow { return math.MaxUint64, false } return v, true } // parseFloat parses a floating point number according to the Go float grammar. // Note that the JSON number grammar is a strict subset. // // If the number overflows the finite representation of a float, // then we return MaxFloat since any finite value will always be infinitely // more accurate at representing another finite value than an infinite value. func parseFloat(b []byte, bits int) (v float64, ok bool) { // Fast path for exact integer numbers which fit in the // 24-bit or 53-bit significand of a float32 or float64. var negLen int // either 0 or 1 if len(b) > 0 && b[0] == '-' { negLen = 1 } u, ok := parseDecUint(b[negLen:]) if ok && ((bits == 32 && u <= 1<<24) || (bits == 64 && u <= 1<<53)) { return math.Copysign(float64(u), float64(-1*negLen)), true } // Note that the []byte->string conversion unfortunately allocates. // See https://go.dev/issue/42429 for more information. fv, err := strconv.ParseFloat(string(b), bits) if math.IsInf(fv, 0) { switch { case bits == 32 && math.IsInf(fv, +1): return +math.MaxFloat32, true case bits == 64 && math.IsInf(fv, +1): return +math.MaxFloat64, true case bits == 32 && math.IsInf(fv, -1): return -math.MaxFloat32, true case bits == 64 && math.IsInf(fv, -1): return -math.MaxFloat64, true } } return fv, err == nil } decode_test.go000066400000000000000000001354031453663023200346070ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "bytes" "errors" "fmt" "io" "math" "net" "path" "reflect" "strings" "testing" "testing/iotest" ) // equalTokens reports whether to sequences of tokens formats the same way. func equalTokens(xs, ys []Token) bool { if len(xs) != len(ys) { return false } for i := range xs { if !(reflect.DeepEqual(xs[i], ys[i]) || xs[i].String() == ys[i].String()) { return false } } return true } // TestDecoder tests whether we can parse JSON with either tokens or raw values. func TestDecoder(t *testing.T) { for _, td := range coderTestdata { for _, typeName := range []string{"Token", "Value", "TokenDelims"} { t.Run(path.Join(td.name.name, typeName), func(t *testing.T) { testDecoder(t, td.name.where, typeName, td) }) } } } func testDecoder(t *testing.T, where pc, typeName string, td coderTestdataEntry) { dec := NewDecoder(bytes.NewBufferString(td.in)) switch typeName { case "Token": var tokens []Token var pointers []string for { tok, err := dec.ReadToken() if err != nil { if err == io.EOF { break } t.Fatalf("%s: Decoder.ReadToken error: %v", where, err) } tokens = append(tokens, tok.Clone()) if td.pointers != nil { pointers = append(pointers, dec.StackPointer()) } } if !equalTokens(tokens, td.tokens) { t.Fatalf("%s: tokens mismatch:\ngot %v\nwant %v", where, tokens, td.tokens) } if !reflect.DeepEqual(pointers, td.pointers) { t.Fatalf("%s: pointers mismatch:\ngot %q\nwant %q", where, pointers, td.pointers) } case "Value": val, err := dec.ReadValue() if err != nil { t.Fatalf("%s: Decoder.ReadValue error: %v", where, err) } got := string(val) want := strings.TrimSpace(td.in) if got != want { t.Fatalf("%s: Decoder.ReadValue = %s, want %s", where, got, want) } case "TokenDelims": // Use ReadToken for object/array delimiters, ReadValue otherwise. var tokens []Token loop: for { switch dec.PeekKind() { case '{', '}', '[', ']': tok, err := dec.ReadToken() if err != nil { if err == io.EOF { break loop } t.Fatalf("%s: Decoder.ReadToken error: %v", where, err) } tokens = append(tokens, tok.Clone()) default: val, err := dec.ReadValue() if err != nil { if err == io.EOF { break loop } t.Fatalf("%s: Decoder.ReadValue error: %v", where, err) } tokens = append(tokens, rawToken(string(val))) } } if !equalTokens(tokens, td.tokens) { t.Fatalf("%s: tokens mismatch:\ngot %v\nwant %v", where, tokens, td.tokens) } } } // TestFaultyDecoder tests that temporary I/O errors are not fatal. func TestFaultyDecoder(t *testing.T) { for _, td := range coderTestdata { for _, typeName := range []string{"Token", "Value"} { t.Run(path.Join(td.name.name, typeName), func(t *testing.T) { testFaultyDecoder(t, td.name.where, typeName, td) }) } } } func testFaultyDecoder(t *testing.T, where pc, typeName string, td coderTestdataEntry) { b := &FaultyBuffer{ B: []byte(td.in), MaxBytes: 1, MayError: io.ErrNoProgress, } // Read all the tokens. // If the underlying io.Reader is faulty, then Read may return // an error without changing the internal state machine. // In other words, I/O errors occur before syntactic errors. dec := NewDecoder(b) switch typeName { case "Token": var tokens []Token for { tok, err := dec.ReadToken() if err != nil { if err == io.EOF { break } if !errors.Is(err, io.ErrNoProgress) { t.Fatalf("%s: %d: Decoder.ReadToken error: %v", where, len(tokens), err) } continue } tokens = append(tokens, tok.Clone()) } if !equalTokens(tokens, td.tokens) { t.Fatalf("%s: tokens mismatch:\ngot %s\nwant %s", where, tokens, td.tokens) } case "Value": for { val, err := dec.ReadValue() if err != nil { if err == io.EOF { break } if !errors.Is(err, io.ErrNoProgress) { t.Fatalf("%s: Decoder.ReadValue error: %v", where, err) } continue } got := string(val) want := strings.TrimSpace(td.in) if got != want { t.Fatalf("%s: Decoder.ReadValue = %s, want %s", where, got, want) } } } } type decoderMethodCall struct { wantKind Kind wantOut tokOrVal wantErr error wantPointer string } var decoderErrorTestdata = []struct { name testName opts DecodeOptions in string calls []decoderMethodCall wantOffset int }{{ name: name("InvalidStart"), in: ` #`, calls: []decoderMethodCall{ {'#', zeroToken, newInvalidCharacterError([]byte("#"), "at start of token").withOffset(int64(len(" "))), ""}, {'#', zeroValue, newInvalidCharacterError([]byte("#"), "at start of value").withOffset(int64(len(" "))), ""}, }, }, { name: name("StreamN0"), in: ` `, calls: []decoderMethodCall{ {0, zeroToken, io.EOF, ""}, {0, zeroValue, io.EOF, ""}, }, }, { name: name("StreamN1"), in: ` null `, calls: []decoderMethodCall{ {'n', Null, nil, ""}, {0, zeroToken, io.EOF, ""}, {0, zeroValue, io.EOF, ""}, }, wantOffset: len(` null`), }, { name: name("StreamN2"), in: ` nullnull `, calls: []decoderMethodCall{ {'n', Null, nil, ""}, {'n', Null, nil, ""}, {0, zeroToken, io.EOF, ""}, {0, zeroValue, io.EOF, ""}, }, wantOffset: len(` nullnull`), }, { name: name("StreamN2/ExtraComma"), // stream is whitespace delimited, not comma delimited in: ` null , null `, calls: []decoderMethodCall{ {'n', Null, nil, ""}, {0, zeroToken, newInvalidCharacterError([]byte(","), `before next token`).withOffset(int64(len(` null `))), ""}, {0, zeroValue, newInvalidCharacterError([]byte(","), `before next token`).withOffset(int64(len(` null `))), ""}, }, wantOffset: len(` null`), }, { name: name("TruncatedNull"), in: `nul`, calls: []decoderMethodCall{ {'n', zeroToken, io.ErrUnexpectedEOF, ""}, {'n', zeroValue, io.ErrUnexpectedEOF, ""}, }, }, { name: name("InvalidNull"), in: `nulL`, calls: []decoderMethodCall{ {'n', zeroToken, newInvalidCharacterError([]byte("L"), `within literal null (expecting 'l')`).withOffset(int64(len(`nul`))), ""}, {'n', zeroValue, newInvalidCharacterError([]byte("L"), `within literal null (expecting 'l')`).withOffset(int64(len(`nul`))), ""}, }, }, { name: name("TruncatedFalse"), in: `fals`, calls: []decoderMethodCall{ {'f', zeroToken, io.ErrUnexpectedEOF, ""}, {'f', zeroValue, io.ErrUnexpectedEOF, ""}, }, }, { name: name("InvalidFalse"), in: `falsE`, calls: []decoderMethodCall{ {'f', zeroToken, newInvalidCharacterError([]byte("E"), `within literal false (expecting 'e')`).withOffset(int64(len(`fals`))), ""}, {'f', zeroValue, newInvalidCharacterError([]byte("E"), `within literal false (expecting 'e')`).withOffset(int64(len(`fals`))), ""}, }, }, { name: name("TruncatedTrue"), in: `tru`, calls: []decoderMethodCall{ {'t', zeroToken, io.ErrUnexpectedEOF, ""}, {'t', zeroValue, io.ErrUnexpectedEOF, ""}, }, }, { name: name("InvalidTrue"), in: `truE`, calls: []decoderMethodCall{ {'t', zeroToken, newInvalidCharacterError([]byte("E"), `within literal true (expecting 'e')`).withOffset(int64(len(`tru`))), ""}, {'t', zeroValue, newInvalidCharacterError([]byte("E"), `within literal true (expecting 'e')`).withOffset(int64(len(`tru`))), ""}, }, }, { name: name("TruncatedString"), in: `"start`, calls: []decoderMethodCall{ {'"', zeroToken, io.ErrUnexpectedEOF, ""}, {'"', zeroValue, io.ErrUnexpectedEOF, ""}, }, }, { name: name("InvalidString"), in: `"ok` + "\x00", calls: []decoderMethodCall{ {'"', zeroToken, newInvalidCharacterError([]byte("\x00"), `within string (expecting non-control character)`).withOffset(int64(len(`"ok`))), ""}, {'"', zeroValue, newInvalidCharacterError([]byte("\x00"), `within string (expecting non-control character)`).withOffset(int64(len(`"ok`))), ""}, }, }, { name: name("ValidString/AllowInvalidUTF8/Token"), opts: DecodeOptions{AllowInvalidUTF8: true}, in: "\"living\xde\xad\xbe\xef\"", calls: []decoderMethodCall{ {'"', rawToken("\"living\xde\xad\xbe\xef\""), nil, ""}, }, wantOffset: len("\"living\xde\xad\xbe\xef\""), }, { name: name("ValidString/AllowInvalidUTF8/Value"), opts: DecodeOptions{AllowInvalidUTF8: true}, in: "\"living\xde\xad\xbe\xef\"", calls: []decoderMethodCall{ {'"', RawValue("\"living\xde\xad\xbe\xef\""), nil, ""}, }, wantOffset: len("\"living\xde\xad\xbe\xef\""), }, { name: name("InvalidString/RejectInvalidUTF8"), opts: DecodeOptions{AllowInvalidUTF8: false}, in: "\"living\xde\xad\xbe\xef\"", calls: []decoderMethodCall{ {'"', zeroToken, (&SyntacticError{str: "invalid UTF-8 within string"}).withOffset(int64(len("\"living\xde\xad"))), ""}, {'"', zeroValue, (&SyntacticError{str: "invalid UTF-8 within string"}).withOffset(int64(len("\"living\xde\xad"))), ""}, }, }, { name: name("TruncatedNumber"), in: `0.`, calls: []decoderMethodCall{ {'0', zeroToken, io.ErrUnexpectedEOF, ""}, {'0', zeroValue, io.ErrUnexpectedEOF, ""}, }, }, { name: name("InvalidNumber"), in: `0.e`, calls: []decoderMethodCall{ {'0', zeroToken, newInvalidCharacterError([]byte("e"), "within number (expecting digit)").withOffset(int64(len(`0.`))), ""}, {'0', zeroValue, newInvalidCharacterError([]byte("e"), "within number (expecting digit)").withOffset(int64(len(`0.`))), ""}, }, }, { name: name("TruncatedObject/AfterStart"), in: `{`, calls: []decoderMethodCall{ {'{', zeroValue, io.ErrUnexpectedEOF, ""}, {'{', ObjectStart, nil, ""}, {0, zeroToken, io.ErrUnexpectedEOF, ""}, {0, zeroValue, io.ErrUnexpectedEOF, ""}, }, wantOffset: len(`{`), }, { name: name("TruncatedObject/AfterName"), in: `{"0"`, calls: []decoderMethodCall{ {'{', zeroValue, io.ErrUnexpectedEOF, ""}, {'{', ObjectStart, nil, ""}, {'"', String("0"), nil, ""}, {0, zeroToken, io.ErrUnexpectedEOF, ""}, {0, zeroValue, io.ErrUnexpectedEOF, ""}, }, wantOffset: len(`{"0"`), }, { name: name("TruncatedObject/AfterColon"), in: `{"0":`, calls: []decoderMethodCall{ {'{', zeroValue, io.ErrUnexpectedEOF, ""}, {'{', ObjectStart, nil, ""}, {'"', String("0"), nil, ""}, {0, zeroToken, io.ErrUnexpectedEOF, ""}, {0, zeroValue, io.ErrUnexpectedEOF, ""}, }, wantOffset: len(`{"0"`), }, { name: name("TruncatedObject/AfterValue"), in: `{"0":0`, calls: []decoderMethodCall{ {'{', zeroValue, io.ErrUnexpectedEOF, ""}, {'{', ObjectStart, nil, ""}, {'"', String("0"), nil, ""}, {'0', Uint(0), nil, ""}, {0, zeroToken, io.ErrUnexpectedEOF, ""}, {0, zeroValue, io.ErrUnexpectedEOF, ""}, }, wantOffset: len(`{"0":0`), }, { name: name("TruncatedObject/AfterComma"), in: `{"0":0,`, calls: []decoderMethodCall{ {'{', zeroValue, io.ErrUnexpectedEOF, ""}, {'{', ObjectStart, nil, ""}, {'"', String("0"), nil, ""}, {'0', Uint(0), nil, ""}, {0, zeroToken, io.ErrUnexpectedEOF, ""}, {0, zeroValue, io.ErrUnexpectedEOF, ""}, }, wantOffset: len(`{"0":0`), }, { name: name("InvalidObject/MissingColon"), in: ` { "fizz" "buzz" } `, calls: []decoderMethodCall{ {'{', zeroValue, newInvalidCharacterError([]byte("\""), "after object name (expecting ':')").withOffset(int64(len(` { "fizz" `))), ""}, {'{', ObjectStart, nil, ""}, {'"', String("fizz"), nil, ""}, {0, zeroToken, errMissingColon.withOffset(int64(len(` { "fizz" `))), ""}, {0, zeroValue, errMissingColon.withOffset(int64(len(` { "fizz" `))), ""}, }, wantOffset: len(` { "fizz"`), }, { name: name("InvalidObject/MissingColon/GotComma"), in: ` { "fizz" , "buzz" } `, calls: []decoderMethodCall{ {'{', zeroValue, newInvalidCharacterError([]byte(","), "after object name (expecting ':')").withOffset(int64(len(` { "fizz" `))), ""}, {'{', ObjectStart, nil, ""}, {'"', String("fizz"), nil, ""}, {0, zeroToken, errMissingColon.withOffset(int64(len(` { "fizz" `))), ""}, {0, zeroValue, errMissingColon.withOffset(int64(len(` { "fizz" `))), ""}, }, wantOffset: len(` { "fizz"`), }, { name: name("InvalidObject/MissingColon/GotHash"), in: ` { "fizz" # "buzz" } `, calls: []decoderMethodCall{ {'{', zeroValue, newInvalidCharacterError([]byte("#"), "after object name (expecting ':')").withOffset(int64(len(` { "fizz" `))), ""}, {'{', ObjectStart, nil, ""}, {'"', String("fizz"), nil, ""}, {0, zeroToken, errMissingColon.withOffset(int64(len(` { "fizz" `))), ""}, {0, zeroValue, errMissingColon.withOffset(int64(len(` { "fizz" `))), ""}, }, wantOffset: len(` { "fizz"`), }, { name: name("InvalidObject/MissingComma"), in: ` { "fizz" : "buzz" "gazz" } `, calls: []decoderMethodCall{ {'{', zeroValue, newInvalidCharacterError([]byte("\""), "after object value (expecting ',' or '}')").withOffset(int64(len(` { "fizz" : "buzz" `))), ""}, {'{', ObjectStart, nil, ""}, {'"', String("fizz"), nil, ""}, {'"', String("buzz"), nil, ""}, {0, zeroToken, errMissingComma.withOffset(int64(len(` { "fizz" : "buzz" `))), ""}, {0, zeroValue, errMissingComma.withOffset(int64(len(` { "fizz" : "buzz" `))), ""}, }, wantOffset: len(` { "fizz" : "buzz"`), }, { name: name("InvalidObject/MissingComma/GotColon"), in: ` { "fizz" : "buzz" : "gazz" } `, calls: []decoderMethodCall{ {'{', zeroValue, newInvalidCharacterError([]byte(":"), "after object value (expecting ',' or '}')").withOffset(int64(len(` { "fizz" : "buzz" `))), ""}, {'{', ObjectStart, nil, ""}, {'"', String("fizz"), nil, ""}, {'"', String("buzz"), nil, ""}, {0, zeroToken, errMissingComma.withOffset(int64(len(` { "fizz" : "buzz" `))), ""}, {0, zeroValue, errMissingComma.withOffset(int64(len(` { "fizz" : "buzz" `))), ""}, }, wantOffset: len(` { "fizz" : "buzz"`), }, { name: name("InvalidObject/MissingComma/GotHash"), in: ` { "fizz" : "buzz" # "gazz" } `, calls: []decoderMethodCall{ {'{', zeroValue, newInvalidCharacterError([]byte("#"), "after object value (expecting ',' or '}')").withOffset(int64(len(` { "fizz" : "buzz" `))), ""}, {'{', ObjectStart, nil, ""}, {'"', String("fizz"), nil, ""}, {'"', String("buzz"), nil, ""}, {0, zeroToken, errMissingComma.withOffset(int64(len(` { "fizz" : "buzz" `))), ""}, {0, zeroValue, errMissingComma.withOffset(int64(len(` { "fizz" : "buzz" `))), ""}, }, wantOffset: len(` { "fizz" : "buzz"`), }, { name: name("InvalidObject/ExtraComma/AfterStart"), in: ` { , } `, calls: []decoderMethodCall{ {'{', zeroValue, newInvalidCharacterError([]byte(","), `at start of string (expecting '"')`).withOffset(int64(len(` { `))), ""}, {'{', ObjectStart, nil, ""}, {0, zeroToken, newInvalidCharacterError([]byte(","), `before next token`).withOffset(int64(len(` { `))), ""}, {0, zeroValue, newInvalidCharacterError([]byte(","), `before next token`).withOffset(int64(len(` { `))), ""}, }, wantOffset: len(` {`), }, { name: name("InvalidObject/ExtraComma/AfterValue"), in: ` { "fizz" : "buzz" , } `, calls: []decoderMethodCall{ {'{', zeroValue, newInvalidCharacterError([]byte("}"), `at start of string (expecting '"')`).withOffset(int64(len(` { "fizz" : "buzz" , `))), ""}, {'{', ObjectStart, nil, ""}, {'"', String("fizz"), nil, ""}, {'"', String("buzz"), nil, ""}, {0, zeroToken, newInvalidCharacterError([]byte(","), `before next token`).withOffset(int64(len(` { "fizz" : "buzz" `))), ""}, {0, zeroValue, newInvalidCharacterError([]byte(","), `before next token`).withOffset(int64(len(` { "fizz" : "buzz" `))), ""}, }, wantOffset: len(` { "fizz" : "buzz"`), }, { name: name("InvalidObject/InvalidName/GotNull"), in: ` { null : null } `, calls: []decoderMethodCall{ {'{', zeroValue, newInvalidCharacterError([]byte("n"), "at start of string (expecting '\"')").withOffset(int64(len(` { `))), ""}, {'{', ObjectStart, nil, ""}, {'n', zeroToken, errMissingName.withOffset(int64(len(` { `))), ""}, {'n', zeroValue, errMissingName.withOffset(int64(len(` { `))), ""}, }, wantOffset: len(` {`), }, { name: name("InvalidObject/InvalidName/GotFalse"), in: ` { false : false } `, calls: []decoderMethodCall{ {'{', zeroValue, newInvalidCharacterError([]byte("f"), "at start of string (expecting '\"')").withOffset(int64(len(` { `))), ""}, {'{', ObjectStart, nil, ""}, {'f', zeroToken, errMissingName.withOffset(int64(len(` { `))), ""}, {'f', zeroValue, errMissingName.withOffset(int64(len(` { `))), ""}, }, wantOffset: len(` {`), }, { name: name("InvalidObject/InvalidName/GotTrue"), in: ` { true : true } `, calls: []decoderMethodCall{ {'{', zeroValue, newInvalidCharacterError([]byte("t"), "at start of string (expecting '\"')").withOffset(int64(len(` { `))), ""}, {'{', ObjectStart, nil, ""}, {'t', zeroToken, errMissingName.withOffset(int64(len(` { `))), ""}, {'t', zeroValue, errMissingName.withOffset(int64(len(` { `))), ""}, }, wantOffset: len(` {`), }, { name: name("InvalidObject/InvalidName/GotNumber"), in: ` { 0 : 0 } `, calls: []decoderMethodCall{ {'{', zeroValue, newInvalidCharacterError([]byte("0"), "at start of string (expecting '\"')").withOffset(int64(len(` { `))), ""}, {'{', ObjectStart, nil, ""}, {'0', zeroToken, errMissingName.withOffset(int64(len(` { `))), ""}, {'0', zeroValue, errMissingName.withOffset(int64(len(` { `))), ""}, }, wantOffset: len(` {`), }, { name: name("InvalidObject/InvalidName/GotObject"), in: ` { {} : {} } `, calls: []decoderMethodCall{ {'{', zeroValue, newInvalidCharacterError([]byte("{"), "at start of string (expecting '\"')").withOffset(int64(len(` { `))), ""}, {'{', ObjectStart, nil, ""}, {'{', zeroToken, errMissingName.withOffset(int64(len(` { `))), ""}, {'{', zeroValue, errMissingName.withOffset(int64(len(` { `))), ""}, }, wantOffset: len(` {`), }, { name: name("InvalidObject/InvalidName/GotArray"), in: ` { [] : [] } `, calls: []decoderMethodCall{ {'{', zeroValue, newInvalidCharacterError([]byte("["), "at start of string (expecting '\"')").withOffset(int64(len(` { `))), ""}, {'{', ObjectStart, nil, ""}, {'[', zeroToken, errMissingName.withOffset(int64(len(` { `))), ""}, {'[', zeroValue, errMissingName.withOffset(int64(len(` { `))), ""}, }, wantOffset: len(` {`), }, { name: name("InvalidObject/MismatchingDelim"), in: ` { ] `, calls: []decoderMethodCall{ {'{', zeroValue, newInvalidCharacterError([]byte("]"), "at start of string (expecting '\"')").withOffset(int64(len(` { `))), ""}, {'{', ObjectStart, nil, ""}, {']', zeroToken, errMismatchDelim.withOffset(int64(len(` { `))), ""}, {']', zeroValue, newInvalidCharacterError([]byte("]"), "at start of value").withOffset(int64(len(` { `))), ""}, }, wantOffset: len(` {`), }, { name: name("ValidObject/InvalidValue"), in: ` { } `, calls: []decoderMethodCall{ {'{', ObjectStart, nil, ""}, {'}', zeroValue, newInvalidCharacterError([]byte("}"), "at start of value").withOffset(int64(len(" { "))), ""}, }, wantOffset: len(` {`), }, { name: name("ValidObject/UniqueNames"), in: `{"0":0,"1":1} `, calls: []decoderMethodCall{ {'{', ObjectStart, nil, ""}, {'"', String("0"), nil, ""}, {'0', Uint(0), nil, ""}, {'"', String("1"), nil, ""}, {'0', Uint(1), nil, ""}, {'}', ObjectEnd, nil, ""}, }, wantOffset: len(`{"0":0,"1":1}`), }, { name: name("ValidObject/DuplicateNames"), opts: DecodeOptions{AllowDuplicateNames: true}, in: `{"0":0,"0":0} `, calls: []decoderMethodCall{ {'{', ObjectStart, nil, ""}, {'"', String("0"), nil, ""}, {'0', Uint(0), nil, ""}, {'"', String("0"), nil, ""}, {'0', Uint(0), nil, ""}, {'}', ObjectEnd, nil, ""}, }, wantOffset: len(`{"0":0,"0":0}`), }, { name: name("InvalidObject/DuplicateNames"), in: `{"0":{},"1":{},"0":{}} `, calls: []decoderMethodCall{ {'{', zeroValue, (&SyntacticError{str: `duplicate name "0" in object`}).withOffset(int64(len(`{"0":{},"1":{},`))), ""}, {'{', ObjectStart, nil, ""}, {'"', String("0"), nil, ""}, {'{', ObjectStart, nil, ""}, {'}', ObjectEnd, nil, ""}, {'"', String("1"), nil, ""}, {'{', ObjectStart, nil, ""}, {'}', ObjectEnd, nil, ""}, {'"', zeroToken, (&SyntacticError{str: `duplicate name "0" in object`}).withOffset(int64(len(`{"0":{},"1":{},`))), "/1"}, {'"', zeroValue, (&SyntacticError{str: `duplicate name "0" in object`}).withOffset(int64(len(`{"0":{},"1":{},`))), "/1"}, }, wantOffset: len(`{"0":{},"1":{}`), }, { name: name("TruncatedArray/AfterStart"), in: `[`, calls: []decoderMethodCall{ {'[', zeroValue, io.ErrUnexpectedEOF, ""}, {'[', ArrayStart, nil, ""}, {0, zeroToken, io.ErrUnexpectedEOF, ""}, {0, zeroValue, io.ErrUnexpectedEOF, ""}, }, wantOffset: len(`[`), }, { name: name("TruncatedArray/AfterValue"), in: `[0`, calls: []decoderMethodCall{ {'[', zeroValue, io.ErrUnexpectedEOF, ""}, {'[', ArrayStart, nil, ""}, {'0', Uint(0), nil, ""}, {0, zeroToken, io.ErrUnexpectedEOF, ""}, {0, zeroValue, io.ErrUnexpectedEOF, ""}, }, wantOffset: len(`[0`), }, { name: name("TruncatedArray/AfterComma"), in: `[0,`, calls: []decoderMethodCall{ {'[', zeroValue, io.ErrUnexpectedEOF, ""}, {'[', ArrayStart, nil, ""}, {'0', Uint(0), nil, ""}, {0, zeroToken, io.ErrUnexpectedEOF, ""}, {0, zeroValue, io.ErrUnexpectedEOF, ""}, }, wantOffset: len(`[0`), }, { name: name("InvalidArray/MissingComma"), in: ` [ "fizz" "buzz" ] `, calls: []decoderMethodCall{ {'[', zeroValue, newInvalidCharacterError([]byte("\""), "after array value (expecting ',' or ']')").withOffset(int64(len(` [ "fizz" `))), ""}, {'[', ArrayStart, nil, ""}, {'"', String("fizz"), nil, ""}, {0, zeroToken, errMissingComma.withOffset(int64(len(` [ "fizz" `))), ""}, {0, zeroValue, errMissingComma.withOffset(int64(len(` [ "fizz" `))), ""}, }, wantOffset: len(` [ "fizz"`), }, { name: name("InvalidArray/MismatchingDelim"), in: ` [ } `, calls: []decoderMethodCall{ {'[', zeroValue, newInvalidCharacterError([]byte("}"), "at start of value").withOffset(int64(len(` [ `))), ""}, {'[', ArrayStart, nil, ""}, {'}', zeroToken, errMismatchDelim.withOffset(int64(len(` { `))), ""}, {'}', zeroValue, newInvalidCharacterError([]byte("}"), "at start of value").withOffset(int64(len(` [ `))), ""}, }, wantOffset: len(` [`), }, { name: name("ValidArray/InvalidValue"), in: ` [ ] `, calls: []decoderMethodCall{ {'[', ArrayStart, nil, ""}, {']', zeroValue, newInvalidCharacterError([]byte("]"), "at start of value").withOffset(int64(len(" [ "))), ""}, }, wantOffset: len(` [`), }} // TestDecoderErrors test that Decoder errors occur when we expect and // leaves the Decoder in a consistent state. func TestDecoderErrors(t *testing.T) { for _, td := range decoderErrorTestdata { t.Run(path.Join(td.name.name), func(t *testing.T) { testDecoderErrors(t, td.name.where, td.opts, td.in, td.calls, td.wantOffset) }) } } func testDecoderErrors(t *testing.T, where pc, opts DecodeOptions, in string, calls []decoderMethodCall, wantOffset int) { src := bytes.NewBufferString(in) dec := opts.NewDecoder(src) for i, call := range calls { gotKind := dec.PeekKind() if gotKind != call.wantKind { t.Fatalf("%s: %d: Decoder.PeekKind = %v, want %v", where, i, gotKind, call.wantKind) } var gotErr error switch wantOut := call.wantOut.(type) { case Token: var gotOut Token gotOut, gotErr = dec.ReadToken() if gotOut.String() != wantOut.String() { t.Fatalf("%s: %d: Decoder.ReadToken = %v, want %v", where, i, gotOut, wantOut) } case RawValue: var gotOut RawValue gotOut, gotErr = dec.ReadValue() if string(gotOut) != string(wantOut) { t.Fatalf("%s: %d: Decoder.ReadValue = %s, want %s", where, i, gotOut, wantOut) } } if !reflect.DeepEqual(gotErr, call.wantErr) { t.Fatalf("%s: %d: error mismatch: got %#v, want %#v", where, i, gotErr, call.wantErr) } if call.wantPointer != "" { gotPointer := dec.StackPointer() if gotPointer != call.wantPointer { t.Fatalf("%s: %d: Decoder.StackPointer = %s, want %s", where, i, gotPointer, call.wantPointer) } } } gotOffset := int(dec.InputOffset()) if gotOffset != wantOffset { t.Fatalf("%s: Decoder.InputOffset = %v, want %v", where, gotOffset, wantOffset) } gotUnread := string(dec.unreadBuffer()) // should be a prefix of wantUnread wantUnread := in[wantOffset:] if !strings.HasPrefix(wantUnread, gotUnread) { t.Fatalf("%s: Decoder.UnreadBuffer = %v, want %v", where, gotUnread, wantUnread) } } var resumableDecoderTestdata = []string{ `0`, `123456789`, `0.0`, `0.123456789`, `0e0`, `0e+0`, `0e123456789`, `0e+123456789`, `123456789.123456789e+123456789`, `-0`, `-123456789`, `-0.0`, `-0.123456789`, `-0e0`, `-0e-0`, `-0e123456789`, `-0e-123456789`, `-123456789.123456789e-123456789`, `""`, `"a"`, `"ab"`, `"abc"`, `"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"`, `"\"\\\/\b\f\n\r\t"`, `"\u0022\u005c\u002f\u0008\u000c\u000a\u000d\u0009"`, `"\ud800\udead"`, "\"\u0080\u00f6\u20ac\ud799\ue000\ufb33\ufffd\U0001f602\"", `"\u0080\u00f6\u20ac\ud799\ue000\ufb33\ufffd\ud83d\ude02"`, } // TestBufferDecoder tests that we detect misuses of bytes.Buffer with Decoder. func TestBufferDecoder(t *testing.T) { bb := bytes.NewBufferString("[null, false, true]") dec := NewDecoder(bb) var err error for { if _, err = dec.ReadToken(); err != nil { break } bb.WriteByte(' ') // not allowed to write to the buffer while reading } want := &ioError{action: "read", err: errBufferWriteAfterNext} if !reflect.DeepEqual(err, want) { t.Fatalf("error mismatch: got %v, want %v", err, want) } } // TestResumableDecoder tests that resume logic for parsing a // JSON string and number properly works across every possible split point. func TestResumableDecoder(t *testing.T) { for _, want := range resumableDecoderTestdata { t.Run("", func(t *testing.T) { dec := NewDecoder(iotest.OneByteReader(strings.NewReader(want))) got, err := dec.ReadValue() if err != nil { t.Fatalf("Decoder.ReadValue error: %v", err) } if string(got) != want { t.Fatalf("Decoder.ReadValue = %s, want %s", got, want) } }) } } // TestBlockingDecoder verifies that JSON values except numbers can be // synchronously sent and received on a blocking pipe without a deadlock. // Numbers are the exception since termination cannot be determined until // either the pipe ends or a non-numeric character is encountered. func TestBlockingDecoder(t *testing.T) { values := []string{"null", "false", "true", `""`, `{}`, `[]`} r, w := net.Pipe() defer r.Close() defer w.Close() enc := NewEncoder(w) enc.options.omitTopLevelNewline = true dec := NewDecoder(r) errCh := make(chan error) // Test synchronous ReadToken calls. for _, want := range values { go func() { errCh <- enc.WriteValue(RawValue(want)) }() tok, err := dec.ReadToken() if err != nil { t.Fatalf("Decoder.ReadToken error: %v", err) } got := tok.String() switch tok.Kind() { case '"': got = `"` + got + `"` case '{', '[': tok, err := dec.ReadToken() if err != nil { t.Fatalf("Decoder.ReadToken error: %v", err) } got += tok.String() } if got != want { t.Fatalf("ReadTokens = %s, want %s", got, want) } if err := <-errCh; err != nil { t.Fatalf("Encoder.WriteValue error: %v", err) } } // Test synchronous ReadValue calls. for _, want := range values { go func() { errCh <- enc.WriteValue(RawValue(want)) }() got, err := dec.ReadValue() if err != nil { t.Fatalf("Decoder.ReadValue error: %v", err) } if string(got) != want { t.Fatalf("ReadValue = %s, want %s", got, want) } if err := <-errCh; err != nil { t.Fatalf("Encoder.WriteValue error: %v", err) } } } func TestPeekableDecoder(t *testing.T) { type operation any // PeekKind | ReadToken | ReadValue | BufferWrite type PeekKind struct { want Kind } type ReadToken struct { wantKind Kind wantErr error } type ReadValue struct { wantKind Kind wantErr error } type WriteString struct { in string } ops := []operation{ PeekKind{0}, WriteString{"[ "}, ReadToken{0, io.EOF}, // previous error from PeekKind is cached once ReadToken{'[', nil}, PeekKind{0}, WriteString{"] "}, ReadValue{0, io.ErrUnexpectedEOF}, // previous error from PeekKind is cached once ReadValue{0, newInvalidCharacterError([]byte("]"), "at start of value").withOffset(2)}, ReadToken{']', nil}, WriteString{"[ "}, ReadToken{'[', nil}, WriteString{" null "}, PeekKind{'n'}, PeekKind{'n'}, ReadToken{'n', nil}, WriteString{", "}, PeekKind{0}, WriteString{"fal"}, PeekKind{'f'}, ReadValue{0, io.ErrUnexpectedEOF}, WriteString{"se "}, ReadValue{'f', nil}, PeekKind{0}, WriteString{" , "}, PeekKind{0}, WriteString{` "" `}, ReadValue{0, io.ErrUnexpectedEOF}, // previous error from PeekKind is cached once ReadValue{'"', nil}, WriteString{" , 0"}, PeekKind{'0'}, ReadToken{'0', nil}, WriteString{" , {} , []"}, PeekKind{'{'}, ReadValue{'{', nil}, ReadValue{'[', nil}, WriteString{"]"}, ReadToken{']', nil}, } bb := struct{ *bytes.Buffer }{new(bytes.Buffer)} d := NewDecoder(bb) for i, op := range ops { switch op := op.(type) { case PeekKind: if got := d.PeekKind(); got != op.want { t.Fatalf("%d: Decoder.PeekKind() = %v, want %v", i, got, op.want) } case ReadToken: gotTok, gotErr := d.ReadToken() gotKind := gotTok.Kind() if gotKind != op.wantKind || !reflect.DeepEqual(gotErr, op.wantErr) { t.Fatalf("%d: Decoder.ReadToken() = (%v, %v), want (%v, %v)", i, gotKind, gotErr, op.wantKind, op.wantErr) } case ReadValue: gotVal, gotErr := d.ReadValue() gotKind := gotVal.Kind() if gotKind != op.wantKind || !reflect.DeepEqual(gotErr, op.wantErr) { t.Fatalf("%d: Decoder.ReadValue() = (%v, %v), want (%v, %v)", i, gotKind, gotErr, op.wantKind, op.wantErr) } case WriteString: bb.WriteString(op.in) default: panic(fmt.Sprintf("unknown operation: %T", op)) } } } func TestConsumeWhitespace(t *testing.T) { tests := []struct { in string want int }{ {"", 0}, {"a", 0}, {" a", 1}, {" a ", 1}, {" \n\r\ta", 4}, {" \n\r\t \n\r\t \n\r\t \n\r\t", 16}, {"\u00a0", 0}, // non-breaking space is not JSON whitespace } for _, tt := range tests { t.Run("", func(t *testing.T) { if got := consumeWhitespace([]byte(tt.in)); got != tt.want { t.Errorf("consumeWhitespace(%q) = %v, want %v", tt.in, got, tt.want) } }) } } func TestConsumeLiteral(t *testing.T) { tests := []struct { literal string in string want int wantErr error }{ {"null", "", 0, io.ErrUnexpectedEOF}, {"null", "n", 1, io.ErrUnexpectedEOF}, {"null", "nu", 2, io.ErrUnexpectedEOF}, {"null", "nul", 3, io.ErrUnexpectedEOF}, {"null", "null", 4, nil}, {"null", "nullx", 4, nil}, {"null", "x", 0, newInvalidCharacterError([]byte("x"), "within literal null (expecting 'n')")}, {"null", "nuxx", 2, newInvalidCharacterError([]byte("x"), "within literal null (expecting 'l')")}, {"false", "", 0, io.ErrUnexpectedEOF}, {"false", "f", 1, io.ErrUnexpectedEOF}, {"false", "fa", 2, io.ErrUnexpectedEOF}, {"false", "fal", 3, io.ErrUnexpectedEOF}, {"false", "fals", 4, io.ErrUnexpectedEOF}, {"false", "false", 5, nil}, {"false", "falsex", 5, nil}, {"false", "x", 0, newInvalidCharacterError([]byte("x"), "within literal false (expecting 'f')")}, {"false", "falsx", 4, newInvalidCharacterError([]byte("x"), "within literal false (expecting 'e')")}, {"true", "", 0, io.ErrUnexpectedEOF}, {"true", "t", 1, io.ErrUnexpectedEOF}, {"true", "tr", 2, io.ErrUnexpectedEOF}, {"true", "tru", 3, io.ErrUnexpectedEOF}, {"true", "true", 4, nil}, {"true", "truex", 4, nil}, {"true", "x", 0, newInvalidCharacterError([]byte("x"), "within literal true (expecting 't')")}, {"true", "trux", 3, newInvalidCharacterError([]byte("x"), "within literal true (expecting 'e')")}, } for _, tt := range tests { t.Run("", func(t *testing.T) { var got int switch tt.literal { case "null": got = consumeNull([]byte(tt.in)) case "false": got = consumeFalse([]byte(tt.in)) case "true": got = consumeTrue([]byte(tt.in)) default: t.Errorf("invalid literal: %v", tt.literal) } switch { case tt.wantErr == nil && got != tt.want: t.Errorf("consume%v(%q) = %v, want %v", strings.Title(tt.literal), tt.in, got, tt.want) case tt.wantErr != nil && got != 0: t.Errorf("consume%v(%q) = %v, want %v", strings.Title(tt.literal), tt.in, got, 0) } got, gotErr := consumeLiteral([]byte(tt.in), tt.literal) if got != tt.want || !reflect.DeepEqual(gotErr, tt.wantErr) { t.Errorf("consumeLiteral(%q, %q) = (%v, %v), want (%v, %v)", tt.in, tt.literal, got, gotErr, tt.want, tt.wantErr) } }) } } func TestConsumeString(t *testing.T) { tests := []struct { in string simple bool want int wantFlags valueFlags wantStr string wantErr error wantErrUTF8 error // error if validateUTF8 is specified }{ {``, false, 0, 0, "", io.ErrUnexpectedEOF, nil}, {`"`, false, 1, 0, "", io.ErrUnexpectedEOF, nil}, {`""`, true, 2, 0, "", nil, nil}, {`""x`, true, 2, 0, "", nil, nil}, {` ""x`, false, 0, 0, "", newInvalidCharacterError([]byte(" "), "at start of string (expecting '\"')"), nil}, {`"hello`, false, 6, 0, "hello", io.ErrUnexpectedEOF, nil}, {`"hello"`, true, 7, 0, "hello", nil, nil}, {"\"\x00\"", false, 1, stringNonVerbatim | stringNonCanonical, "", newInvalidCharacterError([]byte("\x00"), "within string (expecting non-control character)"), nil}, {`"\u0000"`, false, 8, stringNonVerbatim, "\x00", nil, nil}, {"\"\x1f\"", false, 1, stringNonVerbatim | stringNonCanonical, "", newInvalidCharacterError([]byte("\x1f"), "within string (expecting non-control character)"), nil}, {`"\u001f"`, false, 8, stringNonVerbatim, "\x1f", nil, nil}, {`"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"`, true, 54, 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", nil, nil}, {"\" !#$%&'()*+,-./0123456789:;<=>?@[]^_`{|}~\x7f\"", true, 44, 0, " !#$%&'()*+,-./0123456789:;<=>?@[]^_`{|}~\x7f", nil, nil}, {"\"x\x80\"", false, 4, stringNonVerbatim | stringNonCanonical, "x\ufffd", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"\"x\xff\"", false, 4, stringNonVerbatim | stringNonCanonical, "x\ufffd", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"\"x\xc0", false, 3, stringNonVerbatim | stringNonCanonical, "x\ufffd", io.ErrUnexpectedEOF, &SyntacticError{str: "invalid UTF-8 within string"}}, {"\"x\xc0\x80\"", false, 5, stringNonVerbatim | stringNonCanonical, "x\ufffd\ufffd", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"\"x\xe0", false, 2, 0, "x", io.ErrUnexpectedEOF, io.ErrUnexpectedEOF}, {"\"x\xe0\x80", false, 4, stringNonVerbatim | stringNonCanonical, "x\ufffd\ufffd", io.ErrUnexpectedEOF, &SyntacticError{str: "invalid UTF-8 within string"}}, {"\"x\xe0\x80\x80\"", false, 6, stringNonVerbatim | stringNonCanonical, "x\ufffd\ufffd\ufffd", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"\"x\xf0", false, 2, 0, "x", io.ErrUnexpectedEOF, io.ErrUnexpectedEOF}, {"\"x\xf0\x80", false, 4, stringNonVerbatim | stringNonCanonical, "x\ufffd\ufffd", io.ErrUnexpectedEOF, &SyntacticError{str: "invalid UTF-8 within string"}}, {"\"x\xf0\x80\x80", false, 5, stringNonVerbatim | stringNonCanonical, "x\ufffd\ufffd\ufffd", io.ErrUnexpectedEOF, &SyntacticError{str: "invalid UTF-8 within string"}}, {"\"x\xf0\x80\x80\x80\"", false, 7, stringNonVerbatim | stringNonCanonical, "x\ufffd\ufffd\ufffd\ufffd", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"\"x\xed\xba\xad\"", false, 6, stringNonVerbatim | stringNonCanonical, "x\ufffd\ufffd\ufffd", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"\"\u0080\u00f6\u20ac\ud799\ue000\ufb33\ufffd\U0001f602\"", false, 25, 0, "\u0080\u00f6\u20ac\ud799\ue000\ufb33\ufffd\U0001f602", nil, nil}, {`"¢"`[:2], false, 1, 0, "", io.ErrUnexpectedEOF, io.ErrUnexpectedEOF}, {`"¢"`[:3], false, 3, 0, "¢", io.ErrUnexpectedEOF, io.ErrUnexpectedEOF}, // missing terminating quote {`"¢"`[:4], false, 4, 0, "¢", nil, nil}, {`"€"`[:2], false, 1, 0, "", io.ErrUnexpectedEOF, io.ErrUnexpectedEOF}, {`"€"`[:3], false, 1, 0, "", io.ErrUnexpectedEOF, io.ErrUnexpectedEOF}, {`"€"`[:4], false, 4, 0, "€", io.ErrUnexpectedEOF, io.ErrUnexpectedEOF}, // missing terminating quote {`"€"`[:5], false, 5, 0, "€", nil, nil}, {`"ðˆ"`[:2], false, 1, 0, "", io.ErrUnexpectedEOF, io.ErrUnexpectedEOF}, {`"ðˆ"`[:3], false, 1, 0, "", io.ErrUnexpectedEOF, io.ErrUnexpectedEOF}, {`"ðˆ"`[:4], false, 1, 0, "", io.ErrUnexpectedEOF, io.ErrUnexpectedEOF}, {`"ðˆ"`[:5], false, 5, 0, "ðˆ", io.ErrUnexpectedEOF, io.ErrUnexpectedEOF}, // missing terminating quote {`"ðˆ"`[:6], false, 6, 0, "ðˆ", nil, nil}, {`"x\`, false, 2, stringNonVerbatim, "x", io.ErrUnexpectedEOF, nil}, {`"x\"`, false, 4, stringNonVerbatim, "x\"", io.ErrUnexpectedEOF, nil}, {`"x\x"`, false, 2, stringNonVerbatim | stringNonCanonical, "x", &SyntacticError{str: `invalid escape sequence "\\x" within string`}, nil}, {`"\"\\\b\f\n\r\t"`, false, 16, stringNonVerbatim, "\"\\\b\f\n\r\t", nil, nil}, {`"/"`, true, 3, 0, "/", nil, nil}, {`"\/"`, false, 4, stringNonVerbatim | stringNonCanonical, "/", nil, nil}, {`"\u002f"`, false, 8, stringNonVerbatim | stringNonCanonical, "/", nil, nil}, {`"\u`, false, 1, stringNonVerbatim, "", io.ErrUnexpectedEOF, nil}, {`"\uf`, false, 1, stringNonVerbatim, "", io.ErrUnexpectedEOF, nil}, {`"\uff`, false, 1, stringNonVerbatim, "", io.ErrUnexpectedEOF, nil}, {`"\ufff`, false, 1, stringNonVerbatim, "", io.ErrUnexpectedEOF, nil}, {`"\ufffd`, false, 7, stringNonVerbatim | stringNonCanonical, "\ufffd", io.ErrUnexpectedEOF, nil}, {`"\ufffd"`, false, 8, stringNonVerbatim | stringNonCanonical, "\ufffd", nil, nil}, {`"\uABCD"`, false, 8, stringNonVerbatim | stringNonCanonical, "\uabcd", nil, nil}, {`"\uefX0"`, false, 1, stringNonVerbatim | stringNonCanonical, "", &SyntacticError{str: `invalid escape sequence "\\uefX0" within string`}, nil}, {`"\uDEAD`, false, 7, stringNonVerbatim | stringNonCanonical, "\ufffd", io.ErrUnexpectedEOF, io.ErrUnexpectedEOF}, {`"\uDEAD"`, false, 8, stringNonVerbatim | stringNonCanonical, "\ufffd", nil, &SyntacticError{str: `invalid escape sequence "\"" within string`}}, {`"\uDEAD______"`, false, 14, stringNonVerbatim | stringNonCanonical, "\ufffd______", nil, &SyntacticError{str: "invalid unpaired surrogate half within string"}}, {`"\uDEAD\uXXXX"`, false, 7, stringNonVerbatim | stringNonCanonical, "\ufffd", &SyntacticError{str: `invalid escape sequence "\\uXXXX" within string`}, nil}, {`"\uDEAD\uBEEF"`, false, 14, stringNonVerbatim | stringNonCanonical, "\ufffd\ubeef", nil, &SyntacticError{str: `invalid surrogate pair in string`}}, {`"\uD800\udead"`, false, 14, stringNonVerbatim | stringNonCanonical, "\U000102ad", nil, nil}, {`"\u0022\u005c\u002f\u0008\u000c\u000a\u000d\u0009"`, false, 50, stringNonVerbatim | stringNonCanonical, "\"\\/\b\f\n\r\t", nil, nil}, {`"\u0080\u00f6\u20ac\ud799\ue000\ufb33\ufffd\ud83d\ude02"`, false, 56, stringNonVerbatim | stringNonCanonical, "\u0080\u00f6\u20ac\ud799\ue000\ufb33\ufffd\U0001f602", nil, nil}, } for _, tt := range tests { t.Run("", func(t *testing.T) { switch got := consumeSimpleString([]byte(tt.in)); { case tt.simple && got != tt.want: t.Errorf("consumeSimpleString(%q) = %v, want %v", tt.in, got, tt.want) case !tt.simple && got != 0: t.Errorf("consumeSimpleString(%q) = %v, want %v", tt.in, got, 0) } var gotFlags valueFlags got, gotErr := consumeString(&gotFlags, []byte(tt.in), false) if gotFlags != tt.wantFlags { t.Errorf("consumeString(%q, false) flags = %v, want %v", tt.in, gotFlags, tt.wantFlags) } if got != tt.want || !reflect.DeepEqual(gotErr, tt.wantErr) { t.Errorf("consumeString(%q, false) = (%v, %v), want (%v, %v)", tt.in, got, gotErr, tt.want, tt.wantErr) } switch got, gotErr := consumeString(&gotFlags, []byte(tt.in), true); { case tt.wantErrUTF8 == nil && (got != tt.want || !reflect.DeepEqual(gotErr, tt.wantErr)): t.Errorf("consumeString(%q, true) = (%v, %v), want (%v, %v)", tt.in, got, gotErr, tt.want, tt.wantErr) case tt.wantErrUTF8 != nil && (got > tt.want || !reflect.DeepEqual(gotErr, tt.wantErrUTF8)): t.Errorf("consumeString(%q, true) = (%v, %v), want (%v, %v)", tt.in, got, gotErr, tt.want, tt.wantErrUTF8) } gotStr, gotOk := unescapeString(nil, []byte(tt.in[:got])) wantOk := tt.wantErr == nil if string(gotStr) != tt.wantStr || gotOk != wantOk { t.Errorf("unescapeString(nil, %q) = (%q, %v), want (%q, %v)", tt.in[:got], gotStr, gotOk, tt.wantStr, wantOk) } if _, gotOk := unescapeString(nil, []byte(tt.in)); got < len(tt.in) && gotOk { t.Errorf("unescapeString(nil, %q) = (_, true), want (_, false)", tt.in) } }) } } func TestConsumeNumber(t *testing.T) { tests := []struct { in string simple bool want int wantErr error }{ {"", false, 0, io.ErrUnexpectedEOF}, {`"NaN"`, false, 0, newInvalidCharacterError([]byte("\""), "within number (expecting digit)")}, {`"Infinity"`, false, 0, newInvalidCharacterError([]byte("\""), "within number (expecting digit)")}, {`"-Infinity"`, false, 0, newInvalidCharacterError([]byte("\""), "within number (expecting digit)")}, {".0", false, 0, newInvalidCharacterError([]byte("."), "within number (expecting digit)")}, {"0", true, 1, nil}, {"-0", false, 2, nil}, {"+0", false, 0, newInvalidCharacterError([]byte("+"), "within number (expecting digit)")}, {"1", true, 1, nil}, {"-1", false, 2, nil}, {"00", true, 1, nil}, {"-00", false, 2, nil}, {"01", true, 1, nil}, {"-01", false, 2, nil}, {"0i", true, 1, nil}, {"-0i", false, 2, nil}, {"0f", true, 1, nil}, {"-0f", false, 2, nil}, {"9876543210", true, 10, nil}, {"-9876543210", false, 11, nil}, {"9876543210x", true, 10, nil}, {"-9876543210x", false, 11, nil}, {" 9876543210", true, 0, newInvalidCharacterError([]byte(" "), "within number (expecting digit)")}, {"- 9876543210", false, 1, newInvalidCharacterError([]byte(" "), "within number (expecting digit)")}, {strings.Repeat("9876543210", 1000), true, 10000, nil}, {"-" + strings.Repeat("9876543210", 1000), false, 1 + 10000, nil}, {"0.", false, 1, io.ErrUnexpectedEOF}, {"-0.", false, 2, io.ErrUnexpectedEOF}, {"0e", false, 1, io.ErrUnexpectedEOF}, {"-0e", false, 2, io.ErrUnexpectedEOF}, {"0E", false, 1, io.ErrUnexpectedEOF}, {"-0E", false, 2, io.ErrUnexpectedEOF}, {"0.0", false, 3, nil}, {"-0.0", false, 4, nil}, {"0e0", false, 3, nil}, {"-0e0", false, 4, nil}, {"0E0", false, 3, nil}, {"-0E0", false, 4, nil}, {"0.0123456789", false, 12, nil}, {"-0.0123456789", false, 13, nil}, {"1.f", false, 2, newInvalidCharacterError([]byte("f"), "within number (expecting digit)")}, {"-1.f", false, 3, newInvalidCharacterError([]byte("f"), "within number (expecting digit)")}, {"1.e", false, 2, newInvalidCharacterError([]byte("e"), "within number (expecting digit)")}, {"-1.e", false, 3, newInvalidCharacterError([]byte("e"), "within number (expecting digit)")}, {"1e0", false, 3, nil}, {"-1e0", false, 4, nil}, {"1E0", false, 3, nil}, {"-1E0", false, 4, nil}, {"1Ex", false, 2, newInvalidCharacterError([]byte("x"), "within number (expecting digit)")}, {"-1Ex", false, 3, newInvalidCharacterError([]byte("x"), "within number (expecting digit)")}, {"1e-0", false, 4, nil}, {"-1e-0", false, 5, nil}, {"1e+0", false, 4, nil}, {"-1e+0", false, 5, nil}, {"1E-0", false, 4, nil}, {"-1E-0", false, 5, nil}, {"1E+0", false, 4, nil}, {"-1E+0", false, 5, nil}, {"1E+00500", false, 8, nil}, {"-1E+00500", false, 9, nil}, {"1E+00500x", false, 8, nil}, {"-1E+00500x", false, 9, nil}, {"9876543210.0123456789e+01234589x", false, 31, nil}, {"-9876543210.0123456789e+01234589x", false, 32, nil}, {"1_000_000", true, 1, nil}, {"0x12ef", true, 1, nil}, {"0x1p-2", true, 1, nil}, } for _, tt := range tests { t.Run("", func(t *testing.T) { switch got := consumeSimpleNumber([]byte(tt.in)); { case tt.simple && got != tt.want: t.Errorf("consumeSimpleNumber(%q) = %v, want %v", tt.in, got, tt.want) case !tt.simple && got != 0: t.Errorf("consumeSimpleNumber(%q) = %v, want %v", tt.in, got, 0) } got, gotErr := consumeNumber([]byte(tt.in)) if got != tt.want || !reflect.DeepEqual(gotErr, tt.wantErr) { t.Errorf("consumeNumber(%q) = (%v, %v), want (%v, %v)", tt.in, got, gotErr, tt.want, tt.wantErr) } }) } } func TestParseHexUint16(t *testing.T) { tests := []struct { in string want uint16 wantOk bool }{ {"", 0, false}, {"a", 0, false}, {"ab", 0, false}, {"abc", 0, false}, {"abcd", 0xabcd, true}, {"abcde", 0, false}, {"9eA1", 0x9ea1, true}, {"gggg", 0, false}, {"0000", 0x0000, true}, {"1234", 0x1234, true}, } for _, tt := range tests { t.Run("", func(t *testing.T) { got, gotOk := parseHexUint16([]byte(tt.in)) if got != tt.want || gotOk != tt.wantOk { t.Errorf("parseHexUint16(%q) = (0x%04x, %v), want (0x%04x, %v)", tt.in, got, gotOk, tt.want, tt.wantOk) } }) } } func TestParseDecUint(t *testing.T) { tests := []struct { in string want uint64 wantOk bool }{ {"", 0, false}, {"0", 0, true}, {"1", 1, true}, {"-1", 0, false}, {"1f", 0, false}, {"00", 0, true}, {"01", 1, true}, {"10", 10, true}, {"10.9", 0, false}, {" 10", 0, false}, {"10 ", 0, false}, {"123456789", 123456789, true}, {"123456789d", 0, false}, {"18446744073709551614", math.MaxUint64 - 1, true}, {"18446744073709551615", math.MaxUint64, true}, {"99999999999999999999999999999999", math.MaxUint64, false}, {"99999999999999999999999999999999f", 0, false}, } for _, tt := range tests { t.Run("", func(t *testing.T) { got, gotOk := parseDecUint([]byte(tt.in)) if got != tt.want || gotOk != tt.wantOk { t.Errorf("parseDecUint(%q) = (%v, %v), want (%v, %v)", tt.in, got, gotOk, tt.want, tt.wantOk) } }) } } func TestParseFloat(t *testing.T) { tests := []struct { in string want32 float64 want64 float64 wantOk bool }{ {"0", 0, 0, true}, {"-1", -1, -1, true}, {"1", 1, 1, true}, {"-16777215", -16777215, -16777215, true}, // -(1<<24 - 1) {"16777215", 16777215, 16777215, true}, // +(1<<24 - 1) {"-16777216", -16777216, -16777216, true}, // -(1<<24) {"16777216", 16777216, 16777216, true}, // +(1<<24) {"-16777217", -16777216, -16777217, true}, // -(1<<24 + 1) {"16777217", 16777216, 16777217, true}, // +(1<<24 + 1) {"-9007199254740991", -9007199254740992, -9007199254740991, true}, // -(1<<53 - 1) {"9007199254740991", 9007199254740992, 9007199254740991, true}, // +(1<<53 - 1) {"-9007199254740992", -9007199254740992, -9007199254740992, true}, // -(1<<53) {"9007199254740992", 9007199254740992, 9007199254740992, true}, // +(1<<53) {"-9007199254740993", -9007199254740992, -9007199254740992, true}, // -(1<<53 + 1) {"9007199254740993", 9007199254740992, 9007199254740992, true}, // +(1<<53 + 1) {"-1e1000", -math.MaxFloat32, -math.MaxFloat64, true}, {"1e1000", +math.MaxFloat32, +math.MaxFloat64, true}, } for _, tt := range tests { t.Run("", func(t *testing.T) { got32, gotOk32 := parseFloat([]byte(tt.in), 32) if got32 != tt.want32 || gotOk32 != tt.wantOk { t.Errorf("parseFloat(%q, 32) = (%v, %v), want (%v, %v)", tt.in, got32, gotOk32, tt.want32, tt.wantOk) } got64, gotOk64 := parseFloat([]byte(tt.in), 64) if got64 != tt.want64 || gotOk64 != tt.wantOk { t.Errorf("parseFloat(%q, 64) = (%v, %v), want (%v, %v)", tt.in, got64, gotOk64, tt.want64, tt.wantOk) } }) } } diff_test.go000066400000000000000000001303001453663023200342630ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json_test import ( "errors" "math" "path" "reflect" "strings" "testing" "time" jsonv1 "encoding/json" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" ) // NOTE: This file serves as a list of semantic differences between v1 and v2. // Each test explains how v1 behaves, how v2 behaves, and // a rationale for why the behavior was changed. var jsonPackages = []struct { Version string Marshal func(any) ([]byte, error) Unmarshal func([]byte, any) error }{ {"v1", jsonv1.Marshal, jsonv1.Unmarshal}, {"v2", jsonv2.Marshal, jsonv2.Unmarshal}, } // In v1, unmarshal matches struct fields using a case-insensitive match. // In v2, unmarshal matches struct fields using a case-sensitive match. // // Case-insensitive matching is a surprising default and // incurs significant performance cost when unmarshaling unknown fields. // In v2, we can opt into v1-like behavior with the `nocase` tag option. // The case-insensitive matching performed by v2 is looser than that of v1 // where it also ignores dashes and underscores. // This allows v2 to match fields regardless of whether the name is in // snake_case, camelCase, or kebab-case. // // Related issue: // // https://go.dev/issue/14750 func TestCaseSensitivity(t *testing.T) { type Fields struct { FieldA bool FieldB bool `json:"fooBar"` FieldC bool `json:"fizzBuzz,nocase"` // `nocase` is used by v2 to explicitly enable case-insensitive matching } for _, json := range jsonPackages { t.Run(path.Join("Unmarshal", json.Version), func(t *testing.T) { // This is a mapping from Go field names to JSON member names to // whether the JSON member name would match the Go field name. type goName = string type jsonName = string onlyV1 := json.Version == "v1" onlyV2 := json.Version == "v2" allMatches := map[goName]map[jsonName]bool{ "FieldA": { "FieldA": true, // exact match "fielda": onlyV1, // v1 is case-insensitive by default "fieldA": onlyV1, // v1 is case-insensitive by default "FIELDA": onlyV1, // v1 is case-insensitive by default "FieldB": false, "FieldC": false, }, "FieldB": { "fooBar": true, // exact match for explicitly specified JSON name "FooBar": onlyV1, // v1 is case-insensitive even if an explicit JSON name is provided "foobar": onlyV1, // v1 is case-insensitive even if an explicit JSON name is provided "FOOBAR": onlyV1, // v1 is case-insensitive even if an explicit JSON name is provided "fizzBuzz": false, "FieldA": false, "FieldB": false, // explicit JSON name means that the Go field name is not used for matching "FieldC": false, }, "FieldC": { "fizzBuzz": true, // exact match for explicitly specified JSON name "fizzbuzz": true, // v2 is case-insensitive due to `nocase` tag "FIZZBUZZ": true, // v2 is case-insensitive due to `nocase` tag "fizz_buzz": onlyV2, // case-insensitivity in v2 ignores dashes and underscores "fizz-buzz": onlyV2, // case-insensitivity in v2 ignores dashes and underscores "fooBar": false, "FieldA": false, "FieldC": false, // explicit JSON name means that the Go field name is not used for matching "FieldB": false, }, } for goFieldName, matches := range allMatches { for jsonMemberName, wantMatch := range matches { in := `{"` + jsonMemberName + `":true}` var s Fields if err := json.Unmarshal([]byte(in), &s); err != nil { t.Fatalf("json.Unmarshal error: %v", err) } gotMatch := reflect.ValueOf(s).FieldByName(goFieldName).Bool() if gotMatch != wantMatch { t.Fatalf("%T.%s = %v, want %v", s, goFieldName, gotMatch, wantMatch) } } } }) } } // In v1, the "omitempty" option specifies that a struct field is omitted // when marshaling if it is an empty Go value, which is defined as // false, 0, a nil pointer, a nil interface value, and // any empty array, slice, map, or string. // // In v2, the "omitempty" option specifies that a struct field is omitted // when marshaling if it is an empty JSON value, which is defined as // a JSON null or empty JSON string, object, or array. // // In v2, we also provide the "omitzero" option which specifies that a field // is omitted if it is the zero Go value or if it implements an "IsZero() bool" // method that reports true. Together, "omitzero" and "omitempty" can cover // all the prior use cases of the v1 definition of "omitempty". // Note that "omitempty" is defined in terms of the Go type system in v1, // but now defined in terms of the JSON type system in v2. // // Related issues: // // https://go.dev/issue/11939 // https://go.dev/issue/22480 // https://go.dev/issue/29310 // https://go.dev/issue/32675 // https://go.dev/issue/45669 // https://go.dev/issue/45787 // https://go.dev/issue/50480 // https://go.dev/issue/52803 func TestOmitEmptyOption(t *testing.T) { type Struct struct { Foo string `json:",omitempty"` Bar []int `json:",omitempty"` Baz *Struct `json:",omitempty"` } type Types struct { Bool bool `json:",omitempty"` StringA string `json:",omitempty"` StringB string `json:",omitempty"` BytesA []byte `json:",omitempty"` BytesB []byte `json:",omitempty"` BytesC []byte `json:",omitempty"` Int int `json:",omitempty"` MapA map[string]string `json:",omitempty"` MapB map[string]string `json:",omitempty"` MapC map[string]string `json:",omitempty"` StructA Struct `json:",omitempty"` StructB Struct `json:",omitempty"` StructC Struct `json:",omitempty"` SliceA []string `json:",omitempty"` SliceB []string `json:",omitempty"` SliceC []string `json:",omitempty"` Array [1]string `json:",omitempty"` PointerA *string `json:",omitempty"` PointerB *string `json:",omitempty"` PointerC *string `json:",omitempty"` InterfaceA any `json:",omitempty"` InterfaceB any `json:",omitempty"` InterfaceC any `json:",omitempty"` InterfaceD any `json:",omitempty"` } something := "something" for _, json := range jsonPackages { t.Run(path.Join("Marshal", json.Version), func(t *testing.T) { in := Types{ Bool: false, StringA: "", StringB: something, BytesA: nil, BytesB: []byte{}, BytesC: []byte(something), Int: 0, MapA: nil, MapB: map[string]string{}, MapC: map[string]string{something: something}, StructA: Struct{}, StructB: Struct{Bar: []int{}, Baz: new(Struct)}, StructC: Struct{Foo: something}, SliceA: nil, SliceB: []string{}, SliceC: []string{something}, Array: [1]string{something}, PointerA: nil, PointerB: new(string), PointerC: &something, InterfaceA: nil, InterfaceB: (*string)(nil), InterfaceC: new(string), InterfaceD: &something, } b, err := json.Marshal(in) if err != nil { t.Fatalf("json.Marshal error: %v", err) } var out map[string]any if err := json.Unmarshal(b, &out); err != nil { t.Fatalf("json.Unmarshal error: %v", err) } onlyV1 := json.Version == "v1" onlyV2 := json.Version == "v2" wantPresent := map[string]bool{ "Bool": onlyV2, // false is an empty Go bool, but is NOT an empty JSON value "StringA": false, "StringB": true, "BytesA": false, "BytesB": false, "BytesC": true, "Int": onlyV2, // 0 is an empty Go integer, but NOT an empty JSON value "MapA": false, "MapB": false, "MapC": true, "StructA": onlyV1, // Struct{} is NOT an empty Go value, but {} is an empty JSON value "StructB": onlyV1, // Struct{...} is NOT an empty Go value, but {} is an empty JSON value "StructC": true, "SliceA": false, "SliceB": false, "SliceC": true, "Array": true, "PointerA": false, "PointerB": onlyV1, // new(string) is NOT a nil Go pointer, but "" is an empty JSON value "PointerC": true, "InterfaceA": false, "InterfaceB": onlyV1, // (*string)(nil) is NOT a nil Go interface, but null is an empty JSON value "InterfaceC": onlyV1, // new(string) is NOT a nil Go interface, but "" is an empty JSON value "InterfaceD": true, } for field, want := range wantPresent { _, got := out[field] if got != want { t.Fatalf("%T.%s = %v, want %v", in, field, got, want) } } }) } } func addr[T any](v T) *T { return &v } // In v1, the "string" option specifies that Go bools and numeric values are // encoded within a JSON string when marshaling and are unmarshaled from // either the native JSON representation (i.e., a JSON bool or number) or // its native representation escaped within a JSON string. // The "string" option is not applied recursively, and // so does not affect bools and numeric values within a Go slice or map, but // does have special handling to affect the underlying value within a pointer. // When unmarshaling, the "string" option permits decoding from a JSON null // escaped within a JSON string in some inconsistent cases. // // In v2, the "string" option specifies that only numeric values are encoded as // a JSON number within a JSON string when marshaling and are unmarshaled // from either a JSON number or a JSON string containing a JSON number. // The "string" option is applied recursively to all numeric sub-values, // and thus affects numeric values within a Go slice or map. // There is no support for escaped JSON nulls within a JSON string. // // The main utility for stringifying JSON primitives (i.e., bools and numbers) // is because JSON parsers often represents numbers as IEEE 754 // floating-point numbers. This results in a loss of precision when trying to // represent 64-bit integer values. Consequently, many JSON-based APIs actually // requires that such values be encoded within a JSON string. // Given the main utility of stringification is for numeric values, // v2 limits the effect of the "string" option to just numeric Go types. // According to all code known by the Go module proxy, // there are close to zero usages of the "string" option with a Go bool. // // Regarding the recursive application of the "string" option, // there have been a number of issues filed about users being surprised that // the "string" option does not recursively affect numeric values // within a composite type like a Go map, slice, or interface value. // In v1, specifying the "string" option on composite type has no effect // and so this would be a largely backwards compatible change. // // The ability to decode from a JSON null wrapped within a JSON string // is removed in v2 because this behavior was surprising and inconsistent in v1. // // Related issues: // // https://go.dev/issue/15624 // https://go.dev/issue/20651 // https://go.dev/issue/22177 // https://go.dev/issue/32055 // https://go.dev/issue/32117 // https://go.dev/issue/50997 func TestStringOption(t *testing.T) { type Types struct { Bool bool `json:",string"` Int int `json:",string"` Float float64 `json:",string"` Map map[string]int `json:",string"` Struct struct{ Field int } `json:",string"` Slice []int `json:",string"` Array [1]int `json:",string"` PointerA *int `json:",string"` PointerB *int `json:",string"` PointerC **int `json:",string"` InterfaceA any `json:",string"` InterfaceB any `json:",string"` } for _, json := range jsonPackages { t.Run(path.Join("Marshal", json.Version), func(t *testing.T) { in := Types{ Bool: true, Int: 1, Float: 1, Map: map[string]int{"Name": 1}, Struct: struct{ Field int }{1}, Slice: []int{1}, Array: [1]int{1}, PointerA: nil, PointerB: addr(1), PointerC: addr(addr(1)), InterfaceA: nil, InterfaceB: 1, } quote := func(s string) string { return `"` + s + `"` } quoteOnlyV1 := func(s string) string { if json.Version == "v1" { s = quote(s) } return s } quoteOnlyV2 := func(s string) string { if json.Version == "v2" { s = quote(s) } return s } want := strings.Join([]string{ `{`, `"Bool":` + quoteOnlyV1("true") + `,`, // in v1, Go bool are also stringified `"Int":` + quote("1") + `,`, `"Float":` + quote("1") + `,`, `"Map":{"Name":` + quoteOnlyV2("1") + `},`, // in v2, numbers are recursively stringified `"Struct":{"Field":` + quoteOnlyV2("1") + `},`, // in v2, numbers are recursively stringified `"Slice":[` + quoteOnlyV2("1") + `],`, // in v2, numbers are recursively stringified `"Array":[` + quoteOnlyV2("1") + `],`, // in v2, numbers are recursively stringified `"PointerA":null,`, `"PointerB":` + quote("1") + `,`, // in v1, numbers are stringified after a single pointer indirection `"PointerC":` + quoteOnlyV2("1") + `,`, // in v2, numbers are recursively stringified `"InterfaceA":null,`, `"InterfaceB":` + quoteOnlyV2("1") + ``, // in v2, numbers are recursively stringified `}`}, "") got, err := json.Marshal(in) if err != nil { t.Fatalf("json.Marshal error: %v", err) } if string(got) != want { t.Fatalf("json.Marshal = %s, want %s", got, want) } }) } for _, json := range jsonPackages { t.Run(path.Join("Unmarshal/Null", json.Version), func(t *testing.T) { var got Types err := json.Unmarshal([]byte(`{ "Bool": "null", "Int": "null", "PointerA": "null" }`), &got) switch { case !reflect.DeepEqual(got, Types{}): t.Fatalf("json.Unmarshal = %v, want %v", got, Types{}) case json.Version == "v1" && err != nil: t.Fatalf("json.Unmarshal error: %v", err) case json.Version == "v2" && err == nil: t.Fatal("json.Unmarshal error is nil, want non-nil") } }) t.Run(path.Join("Unmarshal/Bool", json.Version), func(t *testing.T) { var got Types want := map[string]Types{ "v1": {Bool: true}, "v2": {Bool: false}, }[json.Version] err := json.Unmarshal([]byte(`{"Bool": "true"}`), &got) switch { case !reflect.DeepEqual(got, want): t.Fatalf("json.Unmarshal = %v, want %v", got, want) case json.Version == "v1" && err != nil: t.Fatalf("json.Unmarshal error: %v", err) case json.Version == "v2" && err == nil: t.Fatal("json.Unmarshal error is nil, want non-nil") } }) t.Run(path.Join("Unmarshal/Shallow", json.Version), func(t *testing.T) { var got Types want := Types{Int: 1, PointerB: addr(1)} err := json.Unmarshal([]byte(`{ "Int": "1", "PointerB": "1" }`), &got) switch { case !reflect.DeepEqual(got, want): t.Fatalf("json.Unmarshal = %v, want %v", got, want) case err != nil: t.Fatalf("json.Unmarshal error: %v", err) } }) t.Run(path.Join("Unmarshal/Deep", json.Version), func(t *testing.T) { var got Types want := map[string]Types{ "v1": { Map: map[string]int{"Name": 0}, Slice: []int{0}, PointerC: addr(addr(0)), }, "v2": { Map: map[string]int{"Name": 1}, Struct: struct{ Field int }{1}, Slice: []int{1}, Array: [1]int{1}, PointerC: addr(addr(1)), }, }[json.Version] err := json.Unmarshal([]byte(`{ "Map": {"Name":"1"}, "Struct": {"Field":"1"}, "Slice": ["1"], "Array": ["1"], "PointerC": "1" }`), &got) switch { case !reflect.DeepEqual(got, want): t.Fatalf("json.Unmarshal =\n%v, want\n%v", got, want) case json.Version == "v1" && err == nil: t.Fatal("json.Unmarshal error is nil, want non-nil") case json.Version == "v2" && err != nil: t.Fatalf("json.Unmarshal error: %v", err) } }) } } // In v1, nil slices and maps are marshaled as a JSON null. // In v2, nil slices and maps are marshaled as an empty JSON object or array. // // Users of v2 can opt into the v1 behavior by setting // the "format:emitnull" option in the `json` struct field tag: // // struct { // S []string `json:",format:emitnull"` // M map[string]string `json:",format:emitnull"` // } // // JSON is a language-agnostic data interchange format. // The fact that maps and slices are nil-able in Go is a semantic detail of the // Go language. We should avoid leaking such details to the JSON representation. // When JSON implementations leak language-specific details, // it complicates transition to/from languages with different type systems. // // Furthermore, consider two related Go types: string and []byte. // It's an asymmetric oddity of v1 that zero values of string and []byte marshal // as an empty JSON string for the former, while the latter as a JSON null. // The non-zero values of those types always marshal as JSON strings. // // Related issues: // // https://go.dev/issue/27589 // https://go.dev/issue/37711 func TestNilSlicesAndMaps(t *testing.T) { type Composites struct { B []byte // always encoded in v2 as a JSON string S []string // always encoded in v2 as a JSON array M map[string]string // always encoded in v2 as a JSON object } for _, json := range jsonPackages { t.Run(path.Join("Marshal", json.Version), func(t *testing.T) { in := []Composites{ {B: []byte(nil), S: []string(nil), M: map[string]string(nil)}, {B: []byte{}, S: []string{}, M: map[string]string{}}, } want := map[string]string{ "v1": `[{"B":null,"S":null,"M":null},{"B":"","S":[],"M":{}}]`, "v2": `[{"B":"","S":[],"M":{}},{"B":"","S":[],"M":{}}]`, // v2 emits nil slices and maps as empty JSON objects and arrays }[json.Version] got, err := json.Marshal(in) if err != nil { t.Fatalf("json.Marshal error: %v", err) } if string(got) != want { t.Fatalf("json.Marshal = %s, want %s", got, want) } }) } } // In v1, unmarshaling into a Go array permits JSON arrays with any length. // In v2, unmarshaling into a Go array requires that the JSON array // have the exact same number of elements as the Go array. // // Go arrays are often used because the exact length has significant meaning. // Ignoring this detail seems like a mistake. Also, the v1 behavior leads to // silent data loss when excess JSON array elements are discarded. func TestArrays(t *testing.T) { for _, json := range jsonPackages { t.Run(path.Join("Unmarshal/TooFew", json.Version), func(t *testing.T) { var got [2]int err := json.Unmarshal([]byte(`[1]`), &got) switch { case got != [2]int{1, 0}: t.Fatalf(`json.Unmarshal = %v, want [1 0]`, got) case json.Version == "v1" && err != nil: t.Fatalf("json.Unmarshal error: %v", err) case json.Version == "v2" && err == nil: t.Fatal("json.Unmarshal error is nil, want non-nil") } }) } for _, json := range jsonPackages { t.Run(path.Join("Unmarshal/TooMany", json.Version), func(t *testing.T) { var got [2]int err := json.Unmarshal([]byte(`[1,2,3]`), &got) switch { case got != [2]int{1, 2}: t.Fatalf(`json.Unmarshal = %v, want [1 2]`, got) case json.Version == "v1" && err != nil: t.Fatalf("json.Unmarshal error: %v", err) case json.Version == "v2" && err == nil: t.Fatal("json.Unmarshal error is nil, want non-nil") } }) } } // In v1, byte arrays are treated as arrays of unsigned integers. // In v2, byte arrays are treated as binary values (similar to []byte). // This is to make the behavior of [N]byte and []byte more consistent. // // Users of v2 can opt into the v1 behavior by setting // the "format:array" option in the `json` struct field tag: // // struct { // B [32]byte `json:",format:array"` // } func TestByteArrays(t *testing.T) { for _, json := range jsonPackages { t.Run(path.Join("Marshal", json.Version), func(t *testing.T) { in := [4]byte{1, 2, 3, 4} got, err := json.Marshal(in) if err != nil { t.Fatalf("json.Marshal error: %v", err) } want := map[string]string{ "v1": `[1,2,3,4]`, "v2": `"AQIDBA=="`, }[json.Version] if string(got) != want { t.Fatalf("json.Marshal = %s, want %s", got, want) } }) } for _, json := range jsonPackages { t.Run(path.Join("Unmarshal", json.Version), func(t *testing.T) { in := map[string]string{ "v1": `[1,2,3,4]`, "v2": `"AQIDBA=="`, }[json.Version] var got [4]byte err := json.Unmarshal([]byte(in), &got) switch { case err != nil: t.Fatalf("json.Unmarshal error: %v", err) case got != [4]byte{1, 2, 3, 4}: t.Fatalf("json.Unmarshal = %v, want [1 2 3 4]", got) } }) } } // CallCheck implements json.{Marshaler,Unmarshaler} on a pointer receiver. type CallCheck string // MarshalJSON always returns a JSON string with the literal "CALLED". func (*CallCheck) MarshalJSON() ([]byte, error) { return []byte(`"CALLED"`), nil } // UnmarshalJSON always stores a string with the literal "CALLED". func (v *CallCheck) UnmarshalJSON([]byte) error { *v = `CALLED` return nil } // In v1, the implementation is inconsistent about whether it calls // MarshalJSON and UnmarshalJSON methods declared on pointer receivers // when it has an unaddressable value (per reflect.Value.CanAddr) on hand. // When marshaling, it never boxes the value on the heap to make it addressable, // while it sometimes boxes values (e.g., for map entries) when unmarshaling. // // In v2, the implementation always calls MarshalJSON and UnmarshalJSON methods // by boxing the value on the heap if necessary. // // The v1 behavior is surprising at best and buggy at worst. // Unfortunately, it cannot be changed without breaking existing usages. // // Related issues: // // https://go.dev/issue/27722 // https://go.dev/issue/33993 // https://go.dev/issue/42508 func TestPointerReceiver(t *testing.T) { type Values struct { S []CallCheck A [1]CallCheck M map[string]CallCheck V CallCheck I any } for _, json := range jsonPackages { t.Run(path.Join("Marshal", json.Version), func(t *testing.T) { var cc CallCheck in := Values{ S: []CallCheck{cc}, A: [1]CallCheck{cc}, // MarshalJSON not called on v1 M: map[string]CallCheck{"": cc}, // MarshalJSON not called on v1 V: cc, // MarshalJSON not called on v1 I: cc, // MarshalJSON not called on v1 } want := map[string]string{ "v1": `{"S":["CALLED"],"A":[""],"M":{"":""},"V":"","I":""}`, "v2": `{"S":["CALLED"],"A":["CALLED"],"M":{"":"CALLED"},"V":"CALLED","I":"CALLED"}`, }[json.Version] got, err := json.Marshal(in) if err != nil { t.Fatalf("json.Marshal error: %v", err) } if string(got) != want { t.Fatalf("json.Marshal = %s, want %s", got, want) } }) } for _, json := range jsonPackages { t.Run(path.Join("Unmarshal", json.Version), func(t *testing.T) { in := `{"S":[""],"A":[""],"M":{"":""},"V":"","I":""}` called := CallCheck("CALLED") // resulting state if UnmarshalJSON is called want := map[string]Values{ "v1": { S: []CallCheck{called}, A: [1]CallCheck{called}, M: map[string]CallCheck{"": called}, V: called, I: "", // UnmarshalJSON not called on v1; replaced with Go string }, "v2": { S: []CallCheck{called}, A: [1]CallCheck{called}, M: map[string]CallCheck{"": called}, V: called, I: called, }, }[json.Version] got := Values{ A: [1]CallCheck{CallCheck("")}, S: []CallCheck{CallCheck("")}, M: map[string]CallCheck{"": CallCheck("")}, V: CallCheck(""), I: CallCheck(""), } if err := json.Unmarshal([]byte(in), &got); err != nil { t.Fatalf("json.Unmarshal error: %v", err) } if !reflect.DeepEqual(got, want) { t.Fatalf("json.Unmarshal = %v, want %v", got, want) } }) } } // In v1, maps are marshaled in a deterministic order. // In v2, maps are marshaled in a non-deterministic order. // // The reason for the change is that v2 prioritizes performance and // the guarantee that marshaling operates primarily in a streaming manner. // // The v2 API provides RawValue.Canonicalize if stability is needed: // // (*json.RawValue)(&b).Canonicalize() // // Related issue: // // https://go.dev/issue/7872 // https://go.dev/issue/33714 func TestMapDeterminism(t *testing.T) { const iterations = 10 in := map[int]int{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9} for _, json := range jsonPackages { t.Run(path.Join("Marshal", json.Version), func(t *testing.T) { outs := make(map[string]bool) for i := 0; i < iterations; i++ { b, err := json.Marshal(in) if err != nil { t.Fatalf("json.Marshal error: %v", err) } outs[string(b)] = true } switch { case json.Version == "v1" && len(outs) != 1: t.Fatalf("json.Marshal encoded to %d unique forms, expected 1", len(outs)) case json.Version == "v2" && len(outs) == 1: t.Logf("json.Marshal encoded to 1 unique form by chance; are you feeling lucky?") } }) } } // In v1, JSON string encoding escapes special characters related to HTML. // In v2, JSON string encoding uses a normalized representation (per RFC 8785). // // Users of v2 can opt into the v1 behavior by setting // json.EncodeOptions.EscapeRune. See the EscapeHTML example. // // Escaping HTML-specific characters in a JSON library is a layering violation. // It presumes that JSON is always used with HTML and ignores other // similar classes of injection attacks (e.g., SQL injection). // Users of JSON with HTML should either manually ensure that embedded JSON is // properly escaped or be relying on a module like "github.com/google/safehtml" // to handle safe interoperability of JSON and HTML. func TestEscapeHTML(t *testing.T) { for _, json := range jsonPackages { t.Run(path.Join("Marshal", json.Version), func(t *testing.T) { const in = `` got, err := json.Marshal(in) if err != nil { t.Fatalf("json.Marshal error: %v", err) } want := map[string]string{ "v1": `"\u003cscript\u003e console.log(\"Hello, world!\"); \u003c/script\u003e"`, "v2": `""`, }[json.Version] if string(got) != want { t.Fatalf("json.Marshal = %s, want %s", got, want) } }) } } // In v1, JSON serialization silently ignored invalid UTF-8 by // replacing such bytes with the Unicode replacement character. // In v2, JSON serialization reports an error if invalid UTF-8 is encountered. // // Users of v2 can opt into the v1 behavior by setting // AllowInvalidUTF8 to true in json.EncodeOptions or json.DecodeOptions: // // json.MarshalOptions{...}.Marshal(json.EncodeOptions{AllowInvalidUTF8: true}, ...) // json.UnmarshalOptions{...}.Unmarshal(json.DecodeOptions{AllowInvalidUTF8: true}, ...) // // Silently allowing invalid UTF-8 causes data corruption that can be difficult // to detect until it is too late. Once it has been discovered, strict UTF-8 // behavior sometimes cannot be enabled since other logic may be depending // on the current behavior due to Hyrum's Law. // // Tim Bray, the author of RFC 8259 recommends that implementations should // go beyond RFC 8259 and instead target compliance with RFC 7493, // which makes strict decisions about behavior left undefined in RFC 8259. // In particular, RFC 7493 rejects the presence of invalid UTF-8. // See https://www.tbray.org/ongoing/When/201x/2017/12/14/RFC-8259-STD-90 func TestInvalidUTF8(t *testing.T) { for _, json := range jsonPackages { t.Run(path.Join("Marshal", json.Version), func(t *testing.T) { got, err := json.Marshal("\xff") switch { case json.Version == "v1" && err != nil: t.Fatalf("json.Marshal error: %v", err) case json.Version == "v1" && string(got) != `"\ufffd"`: t.Fatalf(`json.Marshal = %s, want "\ufffd"`, got) case json.Version == "v2" && err == nil: t.Fatal("json.Marshal error is nil, want non-nil") } }) } for _, json := range jsonPackages { t.Run(path.Join("Unmarshal", json.Version), func(t *testing.T) { const in = "\"\xff\"" var got string err := json.Unmarshal([]byte(in), &got) switch { case json.Version == "v1" && err != nil: t.Fatalf("json.Unmarshal error: %v", err) case json.Version == "v1" && got != "\ufffd": t.Fatalf(`json.Unmarshal = %q, want "\ufffd"`, got) case json.Version == "v2" && err == nil: t.Fatal("json.Unmarshal error is nil, want non-nil") } }) } } // In v1, duplicate JSON object names are permitted by default where // they follow the inconsistent and difficult-to-explain merge semantics of v1. // In v2, duplicate JSON object names are rejected by default where // they follow the merge semantics of v2 based on RFC 7396. // // Users of v2 can opt into the v1 behavior by setting // AllowDuplicateNames to true in json.EncodeOptions or json.DecodeOptions: // // json.MarshalOptions{...}.Marshal(json.EncodeOptions{AllowDuplicateNames: true}, ...) // json.UnmarshalOptions{...}.Unmarshal(json.DecodeOptions{AllowDuplicateNames: true}, ...) // // Per RFC 8259, the handling of duplicate names is left as undefined behavior. // Rejecting such inputs is within the realm of valid behavior. // Tim Bray, the author of RFC 8259 recommends that implementations should // go beyond RFC 8259 and instead target compliance with RFC 7493, // which makes strict decisions about behavior left undefined in RFC 8259. // In particular, RFC 7493 rejects the presence of duplicate object names. // See https://www.tbray.org/ongoing/When/201x/2017/12/14/RFC-8259-STD-90 // // The lack of duplicate name rejection has correctness implications where // roundtrip unmarshal/marshal do not result in semantically equivalent JSON. // This is surprising behavior for users when they accidentally // send JSON objects with duplicate names. // // The lack of duplicate name rejection may have security implications since it // becomes difficult for a security tool to validate the semantic meaning of a // JSON object since meaning is undefined in the presence of duplicate names. // See https://labs.bishopfox.com/tech-blog/an-exploration-of-json-interoperability-vulnerabilities // // Related issue: // // https://go.dev/issue/48298 func TestDuplicateNames(t *testing.T) { for _, json := range jsonPackages { t.Run(path.Join("Unmarshal", json.Version), func(t *testing.T) { const in = `{"Name":1,"Name":2}` var got struct{ Name int } err := json.Unmarshal([]byte(in), &got) switch { case json.Version == "v1" && err != nil: t.Fatalf("json.Unmarshal error: %v", err) case json.Version == "v1" && got != struct{ Name int }{2}: t.Fatalf(`json.Unmarshal = %v, want {2}`, got) case json.Version == "v2" && err == nil: t.Fatal("json.Unmarshal error is nil, want non-nil") } }) } } // In v1, unmarshaling a JSON null into a non-empty value was inconsistent // in that sometimes it would be ignored and other times clear the value. // In v2, unmarshaling a JSON null into a non-empty value would consistently // always clear the value regardless of the value's type. // // The purpose of this change is to have consistent behavior with how JSON nulls // are handled during Unmarshal. This semantic detail has no effect // when Unmarshaling into a empty value. // // Related issues: // // https://go.dev/issue/22177 // https://go.dev/issue/33835 func TestMergeNull(t *testing.T) { type Types struct { Bool bool String string Bytes []byte Int int Map map[string]string Struct struct{ Field string } Slice []string Array [1]string Pointer *string Interface any } for _, json := range jsonPackages { t.Run(path.Join("Unmarshal", json.Version), func(t *testing.T) { // Start with a non-empty value where all fields are populated. in := Types{ Bool: true, String: "old", Bytes: []byte("old"), Int: 1234, Map: map[string]string{"old": "old"}, Struct: struct{ Field string }{"old"}, Slice: []string{"old"}, Array: [1]string{"old"}, Pointer: new(string), Interface: "old", } // Unmarshal a JSON null into every field. if err := json.Unmarshal([]byte(`{ "Bool": null, "String": null, "Bytes": null, "Int": null, "Map": null, "Struct": null, "Slice": null, "Array": null, "Pointer": null, "Interface": null }`), &in); err != nil { t.Fatalf("json.Unmarshal error: %v", err) } want := map[string]Types{ "v1": { Bool: true, String: "old", Int: 1234, Struct: struct{ Field string }{"old"}, Array: [1]string{"old"}, }, "v2": {}, // all fields are zeroed }[json.Version] if !reflect.DeepEqual(in, want) { t.Fatalf("json.Unmarshal = %+v, want %+v", in, want) } }) } } // In v1, merge semantics are inconsistent and difficult to explain. // In v2, merge semantics replaces the destination value for anything // other than a JSON object, and recursively merges JSON objects. // // Merge semantics in v1 are inconsistent and difficult to explain // largely because the behavior came about organically, rather than // having a principled approach to how the semantics should operate. // In v2, merging follows behavior based on RFC 7396. // // Related issues: // // https://go.dev/issue/21092 // https://go.dev/issue/26946 // https://go.dev/issue/27172 // https://go.dev/issue/30701 // https://go.dev/issue/31924 // https://go.dev/issue/43664 func TestMergeComposite(t *testing.T) { type Tuple struct{ Old, New bool } type Composites struct { Slice []Tuple Array [1]Tuple Map map[string]Tuple MapPointer map[string]*Tuple Struct struct{ Tuple Tuple } StructPointer *struct{ Tuple Tuple } Interface any InterfacePointer any } for _, json := range jsonPackages { t.Run(path.Join("Unmarshal", json.Version), func(t *testing.T) { // Start with a non-empty value where all fields are populated. in := Composites{ Slice: []Tuple{{Old: true}, {Old: true}}[:1], Array: [1]Tuple{{Old: true}}, Map: map[string]Tuple{"Tuple": {Old: true}}, MapPointer: map[string]*Tuple{"Tuple": {Old: true}}, Struct: struct{ Tuple Tuple }{Tuple{Old: true}}, StructPointer: &struct{ Tuple Tuple }{Tuple{Old: true}}, Interface: Tuple{Old: true}, InterfacePointer: &Tuple{Old: true}, } // Unmarshal into every pre-populated field. if err := json.Unmarshal([]byte(`{ "Slice": [{"New":true}, {"New":true}], "Array": [{"New":true}], "Map": {"Tuple": {"New":true}}, "MapPointer": {"Tuple": {"New":true}}, "Struct": {"Tuple": {"New":true}}, "StructPointer": {"Tuple": {"New":true}}, "Interface": {"New":true}, "InterfacePointer": {"New":true} }`), &in); err != nil { t.Fatalf("json.Unmarshal error: %v", err) } merged := Tuple{Old: true, New: true} replaced := Tuple{Old: false, New: true} want := map[string]Composites{ "v1": { Slice: []Tuple{merged, merged}, // merged Array: [1]Tuple{merged}, // merged Map: map[string]Tuple{"Tuple": replaced}, // replaced MapPointer: map[string]*Tuple{"Tuple": &replaced}, // replaced Struct: struct{ Tuple Tuple }{merged}, // merged (same as v2) StructPointer: &struct{ Tuple Tuple }{merged}, // merged (same as v2) Interface: map[string]any{"New": true}, // replaced InterfacePointer: &merged, // merged (same as v2) }, "v2": { Slice: []Tuple{replaced, replaced}, // replaced Array: [1]Tuple{replaced}, // replaced Map: map[string]Tuple{"Tuple": merged}, // merged MapPointer: map[string]*Tuple{"Tuple": &merged}, // merged Struct: struct{ Tuple Tuple }{merged}, // merged (same as v1) StructPointer: &struct{ Tuple Tuple }{merged}, // merged (same as v1) Interface: merged, // merged InterfacePointer: &merged, // merged (same as v1) }, }[json.Version] if !reflect.DeepEqual(in, want) { t.Fatalf("json.Unmarshal = %+v, want %+v", in, want) } }) } } // In v1, there was no special support for time.Duration, // which resulted in that type simply being treated as a signed integer. // In v2, there is now first-class support for time.Duration, where the type is // formatted and parsed using time.Duration.String and time.ParseDuration. // // Users of v2 can opt into the v1 behavior by setting // the "format:nanos" option in the `json` struct field tag: // // struct { // Duration time.Duration `json:",format:nanos"` // } // // Related issue: // // https://go.dev/issue/10275 func TestTimeDurations(t *testing.T) { for _, json := range jsonPackages { t.Run(path.Join("Marshal", json.Version), func(t *testing.T) { got, err := json.Marshal(time.Minute) switch { case err != nil: t.Fatalf("json.Marshal error: %v", err) case json.Version == "v1" && string(got) != "60000000000": t.Fatalf("json.Marshal = %s, want 60000000000", got) case json.Version == "v2" && string(got) != `"1m0s"`: t.Fatalf(`json.Marshal = %s, want "1m0s"`, got) } }) } for _, json := range jsonPackages { t.Run(path.Join("Unmarshal", json.Version), func(t *testing.T) { in := map[string]string{ "v1": "60000000000", "v2": `"1m0s"`, }[json.Version] var got time.Duration err := json.Unmarshal([]byte(in), &got) switch { case err != nil: t.Fatalf("json.Unmarshal error: %v", err) case got != time.Minute: t.Fatalf("json.Unmarshal = %v, want 1m0s", got) } }) } } // In v1, unmarshaling a JSON number beyond the representation of a Go float // would result in an error. // In v2, unmarshaling a JSON number beyond the representation of a Go float // would use the closest representable value (i.e., ±math.MaxFloatX). // // The rationale for the change is to ensure that // if a JSON value is syntactically valid according to json.RawValue.IsValid, // then it is always valid to unmarshal that into a Go any value. func TestMaxFloats(t *testing.T) { for _, json := range jsonPackages { t.Run(path.Join("Unmarshal", json.Version), func(t *testing.T) { const in = `1e1000` var got any err := json.Unmarshal([]byte(in), &got) switch { case json.Version == "v1" && err == nil: t.Fatal("json.Unmarshal error is nil, want non-nil") case json.Version == "v2" && got != any(math.MaxFloat64): t.Fatalf("json.Unmarshal = %v, want %v", got, math.MaxFloat64) case json.Version == "v2" && err != nil: t.Fatalf("json.Unmarshal error: %v", err) } }) } } // In v1, non-empty structs without any JSON serializable fields are permitted. // In v2, non-empty structs without any JSON serializable fields are rejected. // // The purpose of this change is to avoid a common pitfall for new users // where they expect JSON serialization to handle unexported fields. // However, this does not work since Go reflection does not // provide the package the ability to mutate such fields. // Rejecting unserializable structs in v2 is intended to be a clear signal // that the type is not supposed to be serialized. func TestEmptyStructs(t *testing.T) { never := func(string) bool { return false } onlyV2 := func(v string) bool { return v == "v2" } values := []struct { in any wantError func(string) bool }{ // It is okay to marshal a truly empty struct in v1 and v2. {in: addr(struct{}{}), wantError: never}, // In v1, a non-empty struct without exported fields // is equivalent to an empty struct, but is rejected in v2. // Note that errors.errorString type has only unexported fields. {in: errors.New("error"), wantError: onlyV2}, // A mix of exported and unexported fields is permitted. {in: addr(struct{ Exported, unexported int }{}), wantError: never}, } for _, json := range jsonPackages { t.Run("Marshal", func(t *testing.T) { for _, value := range values { wantError := value.wantError(json.Version) _, err := json.Marshal(value.in) switch { case (err == nil) && wantError: t.Fatalf("json.Marshal error is nil, want non-nil") case (err != nil) && !wantError: t.Fatalf("json.Marshal error: %v", err) } } }) } for _, json := range jsonPackages { t.Run("Unmarshal", func(t *testing.T) { for _, value := range values { wantError := value.wantError(json.Version) out := reflect.New(reflect.TypeOf(value.in).Elem()).Interface() err := json.Unmarshal([]byte("{}"), out) switch { case (err == nil) && wantError: t.Fatalf("json.Unmarshal error is nil, want non-nil") case (err != nil) && !wantError: t.Fatalf("json.Unmarshal error: %v", err) } } }) } } // In v1, embedding an unexported type with exported fields is permitted. // If it is an embedded pointer, then the struct cannot be unmarshaled into. // In v2, embedding an unexported type with exported fields is never permitted. // // The visibility of exported fields promoted through an embedded unexported // struct type is difficult to explain. Even worse, the use of Go reflection // does not directly correspond to what the Go language permits or rejects. // // The ability to marshal/unmarshal exported fields of unexported embedded types // came about organically and has been the subject of various bugs in v1. // Currently, the implementation in v1 performs a few hacks to make this work // partially since the Go reflect package does not directly permit access. // This behavior is only partial since it is impossible to unmarshal into // the promoted fields of an embedded pointer to an unexported struct type // since the implementation cannot allocate the containing struct value // because the embedded field is unexported. // // Due to all of the subtle behavior and nuances surrounding embedded // unexported struct types, v2 rejects all such cases and requires that authors // explicitly mark such fields as being ignored with `json:"-"`. // // Related issues: // // https://go.dev/issue/21353 // https://go.dev/issue/21357 // https://go.dev/issue/24153 func TestEmbedUnexported(t *testing.T) { never := func(string) bool { return false } onlyV2 := func(v string) bool { return v == "v2" } always := func(string) bool { return true } type Exported struct{ Field string } type unexported struct{ Field string } values := []struct { in any wantMarshalError func(string) bool wantUnmarshalError func(string) bool }{ // Embedding exported types is permitted in both v1 and v2. {in: struct{ Exported }{}, wantMarshalError: never, wantUnmarshalError: never}, {in: struct{ *Exported }{}, wantMarshalError: never, wantUnmarshalError: never}, // In v2, embedded unexported types are always rejected (unless ignored). {in: struct{ unexported }{}, wantMarshalError: onlyV2, wantUnmarshalError: onlyV2}, {in: struct{ *unexported }{}, wantMarshalError: onlyV2, wantUnmarshalError: always}, // In v2, embedded unexported types must be explicitly ignored. {in: struct { unexported `json:"-"` }{}, wantMarshalError: never, wantUnmarshalError: never}, {in: struct { *unexported `json:"-"` }{}, wantMarshalError: never, wantUnmarshalError: never}, } for _, json := range jsonPackages { t.Run("Marshal", func(t *testing.T) { for _, value := range values { wantError := value.wantMarshalError(json.Version) _, err := json.Marshal(value.in) switch { case (err == nil) && wantError: t.Fatalf("json.Marshal error is nil, want non-nil") case (err != nil) && !wantError: t.Fatalf("json.Marshal error: %v", err) } } }) } for _, json := range jsonPackages { t.Run("Unmarshal", func(t *testing.T) { for _, value := range values { wantError := value.wantUnmarshalError(json.Version) out := reflect.New(reflect.TypeOf(value.in)).Interface() err := json.Unmarshal([]byte(`{"Field":"Value"}`), out) switch { case (err == nil) && wantError: t.Fatalf("json.Unmarshal error is nil, want non-nil") case (err != nil) && !wantError: t.Fatalf("json.Unmarshal error: %v", err) } } }) } } doc.go000066400000000000000000000235451453663023200330750ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Package json implements serialization of JSON // as specified in RFC 4627, RFC 7159, RFC 7493, RFC 8259, and RFC 8785. // JSON is a simple data interchange format that can represent // primitive data types such as booleans, strings, and numbers, // in addition to structured data types such as objects and arrays. // // # Terminology // // This package uses the terms "encode" and "decode" for syntactic functionality // that is concerned with processing JSON based on its grammar, and // uses the terms "marshal" and "unmarshal" for semantic functionality // that determines the meaning of JSON values as Go values and vice-versa. // It aims to provide a clear distinction between functionality that // is purely concerned with encoding versus that of marshaling. // For example, one can directly encode a stream of JSON tokens without // needing to marshal a concrete Go value representing them. // Similarly, one can decode a stream of JSON tokens without // needing to unmarshal them into a concrete Go value. // // This package uses JSON terminology when discussing JSON, which may differ // from related concepts in Go or elsewhere in computing literature. // // - A JSON "object" refers to an unordered collection of name/value members. // - A JSON "array" refers to an ordered sequence of elements. // - A JSON "value" refers to either a literal (i.e., null, false, or true), // string, number, object, or array. // // See RFC 8259 for more information. // // # Specifications // // Relevant specifications include RFC 4627, RFC 7159, RFC 7493, RFC 8259, // and RFC 8785. Each RFC is generally a stricter subset of another RFC. // In increasing order of strictness: // // - RFC 4627 and RFC 7159 do not require (but recommend) the use of UTF-8 // and also do not require (but recommend) that object names be unique. // - RFC 8259 requires the use of UTF-8, // but does not require (but recommends) that object names be unique. // - RFC 7493 requires the use of UTF-8 // and also requires that object names be unique. // - RFC 8785 defines a canonical representation. It requires the use of UTF-8 // and also requires that object names be unique and in a specific ordering. // It specifies exactly how strings and numbers must be formatted. // // The primary difference between RFC 4627 and RFC 7159 is that the former // restricted top-level values to only JSON objects and arrays, while // RFC 7159 and subsequent RFCs permit top-level values to additionally be // JSON nulls, booleans, strings, or numbers. // // By default, this package operates on RFC 7493, but can be configured // to operate according to the other RFC specifications. // RFC 7493 is a stricter subset of RFC 8259 and fully compliant with it. // In particular, it makes specific choices about behavior that RFC 8259 // leaves as undefined in order to ensure greater interoperability. // // # JSON Representation of Go structs // // A Go struct is naturally represented as a JSON object, // where each Go struct field corresponds with a JSON object member. // When marshaling, all Go struct fields are recursively encoded in depth-first // order as JSON object members except those that are ignored or omitted. // When unmarshaling, JSON object members are recursively decoded // into the corresponding Go struct fields. // Object members that do not match any struct fields, // also known as “unknown membersâ€, are ignored by default or rejected // if UnmarshalOptions.RejectUnknownMembers is specified. // // The representation of each struct field can be customized in the // "json" struct field tag, where the tag is a comma separated list of options. // As a special case, if the entire tag is `json:"-"`, // then the field is ignored with regard to its JSON representation. // // The first option is the JSON object name override for the Go struct field. // If the name is not specified, then the Go struct field name // is used as the JSON object name. JSON names containing commas or quotes, // or names identical to "" or "-", can be specified using // a single-quoted string literal, where the syntax is identical to // the Go grammar for a double-quoted string literal, // but instead uses single quotes as the delimiters. // By default, unmarshaling uses case-sensitive matching to identify // the Go struct field associated with a JSON object name. // // After the name, the following tag options are supported: // // - omitzero: When marshaling, the "omitzero" option specifies that // the struct field should be omitted if the field value is zero // as determined by the "IsZero() bool" method if present, // otherwise based on whether the field is the zero Go value. // This option has no effect when unmarshaling. // // - omitempty: When marshaling, the "omitempty" option specifies that // the struct field should be omitted if the field value would have been // encoded as a JSON null, empty string, empty object, or empty array. // This option has no effect when unmarshaling. // // - string: The "string" option specifies that // MarshalOptions.StringifyNumbers and UnmarshalOptions.StringifyNumbers // be set when marshaling or unmarshaling a struct field value. // This causes numeric types to be encoded as a JSON number // within a JSON string, and to be decoded from either a JSON number or // a JSON string containing a JSON number. // This extra level of encoding is often necessary since // many JSON parsers cannot precisely represent 64-bit integers. // // - nocase: When unmarshaling, the "nocase" option specifies that // if the JSON object name does not exactly match the JSON name // for any of the struct fields, then it attempts to match the struct field // using a case-insensitive match that also ignores dashes and underscores. // If multiple fields match, the first declared field in breadth-first order // takes precedence. This option has no effect when marshaling. // // - inline: The "inline" option specifies that // the JSON representable content of this field type is to be promoted // as if they were specified in the parent struct. // It is the JSON equivalent of Go struct embedding. // A Go embedded field is implicitly inlined unless an explicit JSON name // is specified. The inlined field must be a Go struct // (that does not implement any JSON methods), RawValue, map[string]T, // or an unnamed pointer to such types. When marshaling, // inlined fields from a pointer type are omitted if it is nil. // Inlined fields of type RawValue and map[string]T are called // “inlined fallbacks†as they can represent all possible // JSON object members not directly handled by the parent struct. // Only one inlined fallback field may be specified in a struct, // while many non-fallback fields may be specified. This option // must not be specified with any other option (including the JSON name). // // - unknown: The "unknown" option is a specialized variant // of the inlined fallback to indicate that this Go struct field // contains any number of unknown JSON object members. The field type // must be a RawValue, map[string]T, or an unnamed pointer to such types. // If MarshalOptions.DiscardUnknownMembers is specified when marshaling, // the contents of this field are ignored. // If UnmarshalOptions.RejectUnknownMembers is specified when unmarshaling, // any unknown object members are rejected regardless of whether // an inlined fallback with the "unknown" option exists. This option // must not be specified with any other option (including the JSON name). // // - format: The "format" option specifies a format flag // used to specialize the formatting of the field value. // The option is a key-value pair specified as "format:value" where // the value must be either a literal consisting of letters and numbers // (e.g., "format:RFC3339") or a single-quoted string literal // (e.g., "format:'2006-01-02'"). The interpretation of the format flag // is determined by the struct field type. // // The "omitzero" and "omitempty" options are mostly semantically identical. // The former is defined in terms of the Go type system, // while the latter in terms of the JSON type system. // Consequently they behave differently in some circumstances. // For example, only a nil slice or map is omitted under "omitzero", while // an empty slice or map is omitted under "omitempty" regardless of nilness. // The "omitzero" option is useful for types with a well-defined zero value // (e.g., netip.Addr) or have an IsZero method (e.g., time.Time). // // Every Go struct corresponds to a list of JSON representable fields // which is constructed by performing a breadth-first search over // all struct fields (excluding unexported or ignored fields), // where the search recursively descends into inlined structs. // The set of non-inlined fields in a struct must have unique JSON names. // If multiple fields all have the same JSON name, then the one // at shallowest depth takes precedence and the other fields at deeper depths // are excluded from the list of JSON representable fields. // If multiple fields at the shallowest depth have the same JSON name, // then all of those fields are excluded from the list. This is analogous to // Go visibility rules for struct field selection with embedded struct types. // // Marshaling or unmarshaling a non-empty struct // without any JSON representable fields results in a SemanticError. // Unexported fields must not have any `json` tags except for `json:"-"`. package json // requireKeyedLiterals can be embedded in a struct to require keyed literals. type requireKeyedLiterals struct{} // nonComparable can be embedded in a struct to prevent comparability. type nonComparable [0]func() encode.go000066400000000000000000001112011453663023200335500ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "bytes" "io" "math" "math/bits" "strconv" "unicode/utf16" "unicode/utf8" ) // EncodeOptions configures how JSON encoding operates. // The zero value is equivalent to the default settings, // which is compliant with both RFC 7493 and RFC 8259. type EncodeOptions struct { requireKeyedLiterals nonComparable // multiline specifies whether the encoder should emit multiline output. multiline bool // omitTopLevelNewline specifies whether to omit the newline // that is appended after every top-level JSON value when streaming. omitTopLevelNewline bool // AllowDuplicateNames specifies that JSON objects may contain // duplicate member names. Disabling the duplicate name check may provide // performance benefits, but breaks compliance with RFC 7493, section 2.3. // The output will still be compliant with RFC 8259, // which leaves the handling of duplicate names as unspecified behavior. AllowDuplicateNames bool // AllowInvalidUTF8 specifies that JSON strings may contain invalid UTF-8, // which will be mangled as the Unicode replacement character, U+FFFD. // This causes the encoder to break compliance with // RFC 7493, section 2.1, and RFC 8259, section 8.1. AllowInvalidUTF8 bool // preserveRawStrings specifies that WriteToken and WriteValue should not // reformat any JSON string, but keep the formatting verbatim. preserveRawStrings bool // canonicalizeNumbers specifies that WriteToken and WriteValue should // reformat any JSON numbers according to RFC 8785, section 3.2.2.3. canonicalizeNumbers bool // EscapeRune reports whether the provided character should be escaped // as a hexadecimal Unicode codepoint (e.g., \ufffd). // If nil, the shortest and simplest encoding will be used, // which is also the formatting specified by RFC 8785, section 3.2.2.2. EscapeRune func(rune) bool // Indent (if non-empty) specifies that the encoder should emit multiline // output where each element in a JSON object or array begins on a new, // indented line beginning with the indent prefix followed by one or more // copies of indent according to the indentation nesting. // It may only be composed of space or tab characters. Indent string // IndentPrefix is prepended to each line within a JSON object or array. // The purpose of the indent prefix is to encode data that can more easily // be embedded inside other formatted JSON data. // It may only be composed of space or tab characters. // It is ignored if Indent is empty. IndentPrefix string } // Encoder is a streaming encoder from raw JSON tokens and values. // It is used to write a stream of top-level JSON values, // each terminated with a newline character. // // WriteToken and WriteValue calls may be interleaved. // For example, the following JSON value: // // {"name":"value","array":[null,false,true,3.14159],"object":{"k":"v"}} // // can be composed with the following calls (ignoring errors for brevity): // // e.WriteToken(ObjectStart) // { // e.WriteToken(String("name")) // "name" // e.WriteToken(String("value")) // "value" // e.WriteValue(RawValue(`"array"`)) // "array" // e.WriteToken(ArrayStart) // [ // e.WriteToken(Null) // null // e.WriteToken(False) // false // e.WriteValue(RawValue("true")) // true // e.WriteToken(Float(3.14159)) // 3.14159 // e.WriteToken(ArrayEnd) // ] // e.WriteValue(RawValue(`"object"`)) // "object" // e.WriteValue(RawValue(`{"k":"v"}`)) // {"k":"v"} // e.WriteToken(ObjectEnd) // } // // The above is one of many possible sequence of calls and // may not represent the most sensible method to call for any given token/value. // For example, it is probably more common to call WriteToken with a string // for object names. type Encoder struct { state encodeBuffer options EncodeOptions seenPointers seenPointers // only used when marshaling } // encodeBuffer is a buffer split into 2 segments: // // - buf[0:len(buf)] // written (but unflushed) portion of the buffer // - buf[len(buf):cap(buf)] // unused portion of the buffer type encodeBuffer struct { buf []byte // may alias wr if it is a bytes.Buffer // baseOffset is added to len(buf) to obtain the absolute offset // relative to the start of io.Writer stream. baseOffset int64 wr io.Writer // maxValue is the approximate maximum RawValue size passed to WriteValue. maxValue int // unusedCache is the buffer returned by the UnusedBuffer method. unusedCache []byte // bufStats is statistics about buffer utilization. // It is only used with pooled encoders in pools.go. bufStats bufferStatistics } // NewEncoder constructs a new streaming encoder writing to w. func NewEncoder(w io.Writer) *Encoder { return EncodeOptions{}.NewEncoder(w) } // NewEncoder constructs a new streaming encoder writing to w // configured with the provided options. // It flushes the internal buffer when the buffer is sufficiently full or // when a top-level value has been written. // // If w is a bytes.Buffer, then the encoder appends directly into the buffer // without copying the contents from an intermediate buffer. func (o EncodeOptions) NewEncoder(w io.Writer) *Encoder { e := new(Encoder) o.ResetEncoder(e, w) return e } // ResetEncoder resets an encoder such that it is writing afresh to w and // configured with the provided options. func (o EncodeOptions) ResetEncoder(e *Encoder, w io.Writer) { if e == nil { panic("json: invalid nil Encoder") } if w == nil { panic("json: invalid nil io.Writer") } e.reset(nil, w, o) } func (e *Encoder) reset(b []byte, w io.Writer, o EncodeOptions) { if len(o.Indent) > 0 { o.multiline = true if s := trimLeftSpaceTab(o.IndentPrefix); len(s) > 0 { panic("json: invalid character " + quoteRune([]byte(s)) + " in indent prefix") } if s := trimLeftSpaceTab(o.Indent); len(s) > 0 { panic("json: invalid character " + quoteRune([]byte(s)) + " in indent") } } e.state.reset() e.encodeBuffer = encodeBuffer{buf: b, wr: w, bufStats: e.bufStats} e.options = o if bb, ok := w.(*bytes.Buffer); ok && bb != nil { e.buf = bb.Bytes()[bb.Len():] // alias the unused buffer of bb } } // Reset resets an encoder such that it is writing afresh to w but // keeps any pre-existing encoder options. func (e *Encoder) Reset(w io.Writer) { e.options.ResetEncoder(e, w) } // needFlush determines whether to flush at this point. func (e *Encoder) needFlush() bool { // NOTE: This function is carefully written to be inlineable. // Avoid flushing if e.wr is nil since there is no underlying writer. // Flush if less than 25% of the capacity remains. // Flushing at some constant fraction ensures that the buffer stops growing // so long as the largest Token or Value fits within that unused capacity. return e.wr != nil && (e.tokens.depth() == 1 || len(e.buf) > 3*cap(e.buf)/4) } // flush flushes the buffer to the underlying io.Writer. // It may append a trailing newline after the top-level value. func (e *Encoder) flush() error { if e.wr == nil || e.avoidFlush() { return nil } // In streaming mode, always emit a newline after the top-level value. if e.tokens.depth() == 1 && !e.options.omitTopLevelNewline { e.buf = append(e.buf, '\n') } // Inform objectNameStack that we are about to flush the buffer content. e.names.copyQuotedBuffer(e.buf) // Specialize bytes.Buffer for better performance. if bb, ok := e.wr.(*bytes.Buffer); ok { // If e.buf already aliases the internal buffer of bb, // then the Write call simply increments the internal offset, // otherwise Write operates as expected. // See https://go.dev/issue/42986. n, _ := bb.Write(e.buf) // never fails unless bb is nil e.baseOffset += int64(n) // If the internal buffer of bytes.Buffer is too small, // append operations elsewhere in the Encoder may grow the buffer. // This would be semantically correct, but hurts performance. // As such, ensure 25% of the current length is always available // to reduce the probability that other appends must allocate. if avail := bb.Cap() - bb.Len(); avail < bb.Len()/4 { bb.Grow(avail + 1) } e.buf = bb.Bytes()[bb.Len():] // alias the unused buffer of bb return nil } // Flush the internal buffer to the underlying io.Writer. n, err := e.wr.Write(e.buf) e.baseOffset += int64(n) if err != nil { // In the event of an error, preserve the unflushed portion. // Thus, write errors aren't fatal so long as the io.Writer // maintains consistent state after errors. if n > 0 { e.buf = e.buf[:copy(e.buf, e.buf[n:])] } return &ioError{action: "write", err: err} } e.buf = e.buf[:0] // Check whether to grow the buffer. // Note that cap(e.buf) may already exceed maxBufferSize since // an append elsewhere already grew it to store a large token. const maxBufferSize = 4 << 10 const growthSizeFactor = 2 // higher value is faster const growthRateFactor = 2 // higher value is slower // By default, grow if below the maximum buffer size. grow := cap(e.buf) <= maxBufferSize/growthSizeFactor // Growing can be expensive, so only grow // if a sufficient number of bytes have been processed. grow = grow && int64(cap(e.buf)) < e.previousOffsetEnd()/growthRateFactor if grow { e.buf = make([]byte, 0, cap(e.buf)*growthSizeFactor) } return nil } func (e *encodeBuffer) previousOffsetEnd() int64 { return e.baseOffset + int64(len(e.buf)) } func (e *encodeBuffer) unflushedBuffer() []byte { return e.buf } // avoidFlush indicates whether to avoid flushing to ensure there is always // enough in the buffer to unwrite the last object member if it were empty. func (e *Encoder) avoidFlush() bool { switch { case e.tokens.last.length() == 0: // Never flush after ObjectStart or ArrayStart since we don't know yet // if the object or array will end up being empty. return true case e.tokens.last.needObjectValue(): // Never flush before the object value since we don't know yet // if the object value will end up being empty. return true case e.tokens.last.needObjectName() && len(e.buf) >= 2: // Never flush after the object value if it does turn out to be empty. switch string(e.buf[len(e.buf)-2:]) { case `ll`, `""`, `{}`, `[]`: // last two bytes of every empty value return true } } return false } // unwriteEmptyObjectMember unwrites the last object member if it is empty // and reports whether it performed an unwrite operation. func (e *Encoder) unwriteEmptyObjectMember(prevName *string) bool { if last := e.tokens.last; !last.isObject() || !last.needObjectName() || last.length() == 0 { panic("BUG: must be called on an object after writing a value") } // The flushing logic is modified to never flush a trailing empty value. // The encoder never writes trailing whitespace eagerly. b := e.unflushedBuffer() // Detect whether the last value was empty. var n int if len(b) >= 3 { switch string(b[len(b)-2:]) { case "ll": // last two bytes of `null` n = len(`null`) case `""`: // It is possible for a non-empty string to have `""` as a suffix // if the second to the last quote was escaped. if b[len(b)-3] == '\\' { return false // e.g., `"\""` is not empty } n = len(`""`) case `{}`: n = len(`{}`) case `[]`: n = len(`[]`) } } if n == 0 { return false } // Unwrite the value, whitespace, colon, name, whitespace, and comma. b = b[:len(b)-n] b = trimSuffixWhitespace(b) b = trimSuffixByte(b, ':') b = trimSuffixString(b) b = trimSuffixWhitespace(b) b = trimSuffixByte(b, ',') e.buf = b // store back truncated unflushed buffer // Undo state changes. e.tokens.last.decrement() // for object member value e.tokens.last.decrement() // for object member name if !e.options.AllowDuplicateNames { if e.tokens.last.isActiveNamespace() { e.namespaces.last().removeLast() } e.names.clearLast() if prevName != nil { e.names.copyQuotedBuffer(e.buf) // required by objectNameStack.replaceLastUnquotedName e.names.replaceLastUnquotedName(*prevName) } } return true } // unwriteOnlyObjectMemberName unwrites the only object member name // and returns the unquoted name. func (e *Encoder) unwriteOnlyObjectMemberName() string { if last := e.tokens.last; !last.isObject() || last.length() != 1 { panic("BUG: must be called on an object after writing first name") } // Unwrite the name and whitespace. b := trimSuffixString(e.buf) isVerbatim := bytes.IndexByte(e.buf[len(b):], '\\') < 0 name := string(unescapeStringMayCopy(e.buf[len(b):], isVerbatim)) e.buf = trimSuffixWhitespace(b) // Undo state changes. e.tokens.last.decrement() if !e.options.AllowDuplicateNames { if e.tokens.last.isActiveNamespace() { e.namespaces.last().removeLast() } e.names.clearLast() } return name } func trimSuffixWhitespace(b []byte) []byte { // NOTE: The arguments and logic are kept simple to keep this inlineable. n := len(b) - 1 for n >= 0 && (b[n] == ' ' || b[n] == '\t' || b[n] == '\r' || b[n] == '\n') { n-- } return b[:n+1] } func trimSuffixString(b []byte) []byte { // NOTE: The arguments and logic are kept simple to keep this inlineable. if len(b) > 0 && b[len(b)-1] == '"' { b = b[:len(b)-1] } for len(b) >= 2 && !(b[len(b)-1] == '"' && b[len(b)-2] != '\\') { b = b[:len(b)-1] // trim all characters except an unescaped quote } if len(b) > 0 && b[len(b)-1] == '"' { b = b[:len(b)-1] } return b } func hasSuffixByte(b []byte, c byte) bool { // NOTE: The arguments and logic are kept simple to keep this inlineable. return len(b) > 0 && b[len(b)-1] == c } func trimSuffixByte(b []byte, c byte) []byte { // NOTE: The arguments and logic are kept simple to keep this inlineable. if len(b) > 0 && b[len(b)-1] == c { return b[:len(b)-1] } return b } // WriteToken writes the next token and advances the internal write offset. // // The provided token kind must be consistent with the JSON grammar. // For example, it is an error to provide a number when the encoder // is expecting an object name (which is always a string), or // to provide an end object delimiter when the encoder is finishing an array. // If the provided token is invalid, then it reports a SyntacticError and // the internal state remains unchanged. func (e *Encoder) WriteToken(t Token) error { k := t.Kind() b := e.buf // use local variable to avoid mutating e in case of error // Append any delimiters or optional whitespace. b = e.tokens.mayAppendDelim(b, k) if e.options.multiline { b = e.appendWhitespace(b, k) } // Append the token to the output and to the state machine. var err error switch k { case 'n': b = append(b, "null"...) err = e.tokens.appendLiteral() case 'f': b = append(b, "false"...) err = e.tokens.appendLiteral() case 't': b = append(b, "true"...) err = e.tokens.appendLiteral() case '"': n0 := len(b) // offset before calling t.appendString if b, err = t.appendString(b, !e.options.AllowInvalidUTF8, e.options.preserveRawStrings, e.options.EscapeRune); err != nil { break } if !e.options.AllowDuplicateNames && e.tokens.last.needObjectName() { if !e.tokens.last.isValidNamespace() { err = errInvalidNamespace break } if e.tokens.last.isActiveNamespace() && !e.namespaces.last().insertQuoted(b[n0:], false) { err = &SyntacticError{str: "duplicate name " + string(b[n0:]) + " in object"} break } e.names.replaceLastQuotedOffset(n0) // only replace if insertQuoted succeeds } err = e.tokens.appendString() case '0': if b, err = t.appendNumber(b, e.options.canonicalizeNumbers); err != nil { break } err = e.tokens.appendNumber() case '{': b = append(b, '{') if err = e.tokens.pushObject(); err != nil { break } if !e.options.AllowDuplicateNames { e.names.push() e.namespaces.push() } case '}': b = append(b, '}') if err = e.tokens.popObject(); err != nil { break } if !e.options.AllowDuplicateNames { e.names.pop() e.namespaces.pop() } case '[': b = append(b, '[') err = e.tokens.pushArray() case ']': b = append(b, ']') err = e.tokens.popArray() default: return &SyntacticError{str: "invalid json.Token"} } if err != nil { return err } // Finish off the buffer and store it back into e. e.buf = b if e.needFlush() { return e.flush() } return nil } const ( rawIntNumber = -1 rawUintNumber = -2 ) // writeNumber is specialized version of WriteToken, but optimized for numbers. // As a special-case, if bits is -1 or -2, it will treat v as // the raw-encoded bits of an int64 or uint64, respectively. // It is only called from arshal_default.go. func (e *Encoder) writeNumber(v float64, bits int, quote bool) error { b := e.buf // use local variable to avoid mutating e in case of error // Append any delimiters or optional whitespace. b = e.tokens.mayAppendDelim(b, '0') if e.options.multiline { b = e.appendWhitespace(b, '0') } if quote { // Append the value to the output. n0 := len(b) // offset before appending the number b = append(b, '"') switch bits { case rawIntNumber: b = strconv.AppendInt(b, int64(math.Float64bits(v)), 10) case rawUintNumber: b = strconv.AppendUint(b, uint64(math.Float64bits(v)), 10) default: b = appendNumber(b, v, bits) } b = append(b, '"') // Escape the string if necessary. if e.options.EscapeRune != nil { b2 := append(e.unusedCache, b[n0+len(`"`):len(b)-len(`"`)]...) b, _ = appendString(b[:n0], string(b2), false, e.options.EscapeRune) e.unusedCache = b2[:0] } // Update the state machine. if !e.options.AllowDuplicateNames && e.tokens.last.needObjectName() { if !e.tokens.last.isValidNamespace() { return errInvalidNamespace } if e.tokens.last.isActiveNamespace() && !e.namespaces.last().insertQuoted(b[n0:], false) { return &SyntacticError{str: "duplicate name " + string(b[n0:]) + " in object"} } e.names.replaceLastQuotedOffset(n0) // only replace if insertQuoted succeeds } if err := e.tokens.appendString(); err != nil { return err } } else { switch bits { case rawIntNumber: b = strconv.AppendInt(b, int64(math.Float64bits(v)), 10) case rawUintNumber: b = strconv.AppendUint(b, uint64(math.Float64bits(v)), 10) default: b = appendNumber(b, v, bits) } if err := e.tokens.appendNumber(); err != nil { return err } } // Finish off the buffer and store it back into e. e.buf = b if e.needFlush() { return e.flush() } return nil } // WriteValue writes the next raw value and advances the internal write offset. // The Encoder does not simply copy the provided value verbatim, but // parses it to ensure that it is syntactically valid and reformats it // according to how the Encoder is configured to format whitespace and strings. // // The provided value kind must be consistent with the JSON grammar // (see examples on Encoder.WriteToken). If the provided value is invalid, // then it reports a SyntacticError and the internal state remains unchanged. func (e *Encoder) WriteValue(v RawValue) error { e.maxValue |= len(v) // bitwise OR is a fast approximation of max k := v.Kind() b := e.buf // use local variable to avoid mutating e in case of error // Append any delimiters or optional whitespace. b = e.tokens.mayAppendDelim(b, k) if e.options.multiline { b = e.appendWhitespace(b, k) } // Append the value the output. var err error v = v[consumeWhitespace(v):] n0 := len(b) // offset before calling e.reformatValue b, v, err = e.reformatValue(b, v, e.tokens.depth()) if err != nil { return err } v = v[consumeWhitespace(v):] if len(v) > 0 { return newInvalidCharacterError(v[0:], "after top-level value") } // Append the kind to the state machine. switch k { case 'n', 'f', 't': err = e.tokens.appendLiteral() case '"': if !e.options.AllowDuplicateNames && e.tokens.last.needObjectName() { if !e.tokens.last.isValidNamespace() { err = errInvalidNamespace break } if e.tokens.last.isActiveNamespace() && !e.namespaces.last().insertQuoted(b[n0:], false) { err = &SyntacticError{str: "duplicate name " + string(b[n0:]) + " in object"} break } e.names.replaceLastQuotedOffset(n0) // only replace if insertQuoted succeeds } err = e.tokens.appendString() case '0': err = e.tokens.appendNumber() case '{': if err = e.tokens.pushObject(); err != nil { break } if err = e.tokens.popObject(); err != nil { panic("BUG: popObject should never fail immediately after pushObject: " + err.Error()) } case '[': if err = e.tokens.pushArray(); err != nil { break } if err = e.tokens.popArray(); err != nil { panic("BUG: popArray should never fail immediately after pushArray: " + err.Error()) } } if err != nil { return err } // Finish off the buffer and store it back into e. e.buf = b if e.needFlush() { return e.flush() } return nil } // appendWhitespace appends whitespace that immediately precedes the next token. func (e *Encoder) appendWhitespace(b []byte, next Kind) []byte { if e.tokens.needDelim(next) == ':' { return append(b, ' ') } else { return e.appendIndent(b, e.tokens.needIndent(next)) } } // appendIndent appends the appropriate number of indentation characters // for the current nested level, n. func (e *Encoder) appendIndent(b []byte, n int) []byte { if n == 0 { return b } b = append(b, '\n') b = append(b, e.options.IndentPrefix...) for ; n > 1; n-- { b = append(b, e.options.Indent...) } return b } // reformatValue parses a JSON value from the start of src and // appends it to the end of dst, reformatting whitespace and strings as needed. // It returns the updated versions of dst and src. func (e *Encoder) reformatValue(dst []byte, src RawValue, depth int) ([]byte, RawValue, error) { // TODO: Should this update valueFlags as input? if len(src) == 0 { return dst, src, io.ErrUnexpectedEOF } var n int var err error switch k := Kind(src[0]).normalize(); k { case 'n': if n = consumeNull(src); n == 0 { n, err = consumeLiteral(src, "null") } case 'f': if n = consumeFalse(src); n == 0 { n, err = consumeLiteral(src, "false") } case 't': if n = consumeTrue(src); n == 0 { n, err = consumeLiteral(src, "true") } case '"': if n := consumeSimpleString(src); n > 0 && e.options.EscapeRune == nil { dst, src = append(dst, src[:n]...), src[n:] // copy simple strings verbatim return dst, src, nil } return reformatString(dst, src, !e.options.AllowInvalidUTF8, e.options.preserveRawStrings, e.options.EscapeRune) case '0': if n := consumeSimpleNumber(src); n > 0 && !e.options.canonicalizeNumbers { dst, src = append(dst, src[:n]...), src[n:] // copy simple numbers verbatim return dst, src, nil } return reformatNumber(dst, src, e.options.canonicalizeNumbers) case '{': return e.reformatObject(dst, src, depth) case '[': return e.reformatArray(dst, src, depth) default: return dst, src, newInvalidCharacterError(src, "at start of value") } if err != nil { return dst, src, err } dst, src = append(dst, src[:n]...), src[n:] return dst, src, nil } // reformatObject parses a JSON object from the start of src and // appends it to the end of src, reformatting whitespace and strings as needed. // It returns the updated versions of dst and src. func (e *Encoder) reformatObject(dst []byte, src RawValue, depth int) ([]byte, RawValue, error) { // Append object start. if src[0] != '{' { panic("BUG: reformatObject must be called with a buffer that starts with '{'") } dst, src = append(dst, '{'), src[1:] // Append (possible) object end. src = src[consumeWhitespace(src):] if len(src) == 0 { return dst, src, io.ErrUnexpectedEOF } if src[0] == '}' { dst, src = append(dst, '}'), src[1:] return dst, src, nil } var err error var names *objectNamespace if !e.options.AllowDuplicateNames { e.namespaces.push() defer e.namespaces.pop() names = e.namespaces.last() } depth++ for { // Append optional newline and indentation. if e.options.multiline { dst = e.appendIndent(dst, depth) } // Append object name. src = src[consumeWhitespace(src):] if len(src) == 0 { return dst, src, io.ErrUnexpectedEOF } n0 := len(dst) // offset before calling reformatString n := consumeSimpleString(src) if n > 0 && e.options.EscapeRune == nil { dst, src = append(dst, src[:n]...), src[n:] // copy simple strings verbatim } else { dst, src, err = reformatString(dst, src, !e.options.AllowInvalidUTF8, e.options.preserveRawStrings, e.options.EscapeRune) } if err != nil { return dst, src, err } if !e.options.AllowDuplicateNames && !names.insertQuoted(dst[n0:], false) { return dst, src, &SyntacticError{str: "duplicate name " + string(dst[n0:]) + " in object"} } // Append colon. src = src[consumeWhitespace(src):] if len(src) == 0 { return dst, src, io.ErrUnexpectedEOF } if src[0] != ':' { return dst, src, newInvalidCharacterError(src, "after object name (expecting ':')") } dst, src = append(dst, ':'), src[1:] if e.options.multiline { dst = append(dst, ' ') } // Append object value. src = src[consumeWhitespace(src):] if len(src) == 0 { return dst, src, io.ErrUnexpectedEOF } dst, src, err = e.reformatValue(dst, src, depth) if err != nil { return dst, src, err } // Append comma or object end. src = src[consumeWhitespace(src):] if len(src) == 0 { return dst, src, io.ErrUnexpectedEOF } switch src[0] { case ',': dst, src = append(dst, ','), src[1:] continue case '}': if e.options.multiline { dst = e.appendIndent(dst, depth-1) } dst, src = append(dst, '}'), src[1:] return dst, src, nil default: return dst, src, newInvalidCharacterError(src, "after object value (expecting ',' or '}')") } } } // reformatArray parses a JSON array from the start of src and // appends it to the end of dst, reformatting whitespace and strings as needed. // It returns the updated versions of dst and src. func (e *Encoder) reformatArray(dst []byte, src RawValue, depth int) ([]byte, RawValue, error) { // Append array start. if src[0] != '[' { panic("BUG: reformatArray must be called with a buffer that starts with '['") } dst, src = append(dst, '['), src[1:] // Append (possible) array end. src = src[consumeWhitespace(src):] if len(src) == 0 { return dst, src, io.ErrUnexpectedEOF } if src[0] == ']' { dst, src = append(dst, ']'), src[1:] return dst, src, nil } var err error depth++ for { // Append optional newline and indentation. if e.options.multiline { dst = e.appendIndent(dst, depth) } // Append array value. src = src[consumeWhitespace(src):] if len(src) == 0 { return dst, src, io.ErrUnexpectedEOF } dst, src, err = e.reformatValue(dst, src, depth) if err != nil { return dst, src, err } // Append comma or array end. src = src[consumeWhitespace(src):] if len(src) == 0 { return dst, src, io.ErrUnexpectedEOF } switch src[0] { case ',': dst, src = append(dst, ','), src[1:] continue case ']': if e.options.multiline { dst = e.appendIndent(dst, depth-1) } dst, src = append(dst, ']'), src[1:] return dst, src, nil default: return dst, src, newInvalidCharacterError(src, "after array value (expecting ',' or ']')") } } } // OutputOffset returns the current output byte offset. It gives the location // of the next byte immediately after the most recently written token or value. // The number of bytes actually written to the underlying io.Writer may be less // than this offset due to internal buffering effects. func (e *Encoder) OutputOffset() int64 { return e.previousOffsetEnd() } // UnusedBuffer returns a zero-length buffer with a possible non-zero capacity. // This buffer is intended to be used to populate a RawValue // being passed to an immediately succeeding WriteValue call. // // Example usage: // // b := d.UnusedBuffer() // b = append(b, '"') // b = appendString(b, v) // append the string formatting of v // b = append(b, '"') // ... := d.WriteValue(b) // // It is the user's responsibility to ensure that the value is valid JSON. func (e *Encoder) UnusedBuffer() []byte { // NOTE: We don't return e.buf[len(e.buf):cap(e.buf)] since WriteValue would // need to take special care to avoid mangling the data while reformatting. // WriteValue can't easily identify whether the input RawValue aliases e.buf // without using unsafe.Pointer. Thus, we just return a different buffer. // Should this ever alias e.buf, we need to consider how it operates with // the specialized performance optimization for bytes.Buffer. n := 1 << bits.Len(uint(e.maxValue|63)) // fast approximation for max length if cap(e.unusedCache) < n { e.unusedCache = make([]byte, 0, n) } return e.unusedCache } // StackDepth returns the depth of the state machine for written JSON data. // Each level on the stack represents a nested JSON object or array. // It is incremented whenever an ObjectStart or ArrayStart token is encountered // and decremented whenever an ObjectEnd or ArrayEnd token is encountered. // The depth is zero-indexed, where zero represents the top-level JSON value. func (e *Encoder) StackDepth() int { // NOTE: Keep in sync with Decoder.StackDepth. return e.tokens.depth() - 1 } // StackIndex returns information about the specified stack level. // It must be a number between 0 and StackDepth, inclusive. // For each level, it reports the kind: // // - 0 for a level of zero, // - '{' for a level representing a JSON object, and // - '[' for a level representing a JSON array. // // It also reports the length of that JSON object or array. // Each name and value in a JSON object is counted separately, // so the effective number of members would be half the length. // A complete JSON object must have an even length. func (e *Encoder) StackIndex(i int) (Kind, int) { // NOTE: Keep in sync with Decoder.StackIndex. switch s := e.tokens.index(i); { case i > 0 && s.isObject(): return '{', s.length() case i > 0 && s.isArray(): return '[', s.length() default: return 0, s.length() } } // StackPointer returns a JSON Pointer (RFC 6901) to the most recently written value. // Object names are only present if AllowDuplicateNames is false, otherwise // object members are represented using their index within the object. func (e *Encoder) StackPointer() string { e.names.copyQuotedBuffer(e.buf) return string(e.appendStackPointer(nil)) } // appendString appends src to dst as a JSON string per RFC 7159, section 7. // // If validateUTF8 is specified, this rejects input that contains invalid UTF-8 // otherwise invalid bytes are replaced with the Unicode replacement character. // If escapeRune is provided, it specifies which runes to escape using // hexadecimal sequences. If nil, the shortest representable form is used, // which is also the canonical form for strings (RFC 8785, section 3.2.2.2). // // Note that this API allows full control over the formatting of strings // except for whether a forward solidus '/' may be formatted as '\/' and // the casing of hexadecimal Unicode escape sequences. func appendString(dst []byte, src string, validateUTF8 bool, escapeRune func(rune) bool) ([]byte, error) { appendEscapedASCII := func(dst []byte, c byte) []byte { switch c { case '"', '\\': dst = append(dst, '\\', c) case '\b': dst = append(dst, "\\b"...) case '\f': dst = append(dst, "\\f"...) case '\n': dst = append(dst, "\\n"...) case '\r': dst = append(dst, "\\r"...) case '\t': dst = append(dst, "\\t"...) default: dst = append(dst, "\\u"...) dst = appendHexUint16(dst, uint16(c)) } return dst } appendEscapedUnicode := func(dst []byte, r rune) []byte { if r1, r2 := utf16.EncodeRune(r); r1 != '\ufffd' && r2 != '\ufffd' { dst = append(dst, "\\u"...) dst = appendHexUint16(dst, uint16(r1)) dst = append(dst, "\\u"...) dst = appendHexUint16(dst, uint16(r2)) } else { dst = append(dst, "\\u"...) dst = appendHexUint16(dst, uint16(r)) } return dst } // Optimize for when escapeRune is nil. if escapeRune == nil { var i, n int dst = append(dst, '"') for uint(len(src)) > uint(n) { // Handle single-byte ASCII. if c := src[n]; c < utf8.RuneSelf { n++ if c < ' ' || c == '"' || c == '\\' { dst = append(dst, src[i:n-1]...) dst = appendEscapedASCII(dst, c) i = n } continue } // Handle multi-byte Unicode. _, rn := utf8.DecodeRuneInString(src[n:]) n += rn if rn == 1 { // must be utf8.RuneError since we already checked for single-byte ASCII dst = append(dst, src[i:n-rn]...) if validateUTF8 { return dst, &SyntacticError{str: "invalid UTF-8 within string"} } dst = append(dst, "\ufffd"...) i = n } } dst = append(dst, src[i:n]...) dst = append(dst, '"') return dst, nil } // Slower implementation for when escapeRune is non-nil. var i, n int dst = append(dst, '"') for uint(len(src)) > uint(n) { switch r, rn := utf8.DecodeRuneInString(src[n:]); { case r == utf8.RuneError && rn == 1: dst = append(dst, src[i:n]...) if validateUTF8 { return dst, &SyntacticError{str: "invalid UTF-8 within string"} } if escapeRune('\ufffd') { dst = append(dst, `\ufffd`...) } else { dst = append(dst, "\ufffd"...) } n += rn i = n case escapeRune(r): dst = append(dst, src[i:n]...) dst = appendEscapedUnicode(dst, r) n += rn i = n case r < ' ' || r == '"' || r == '\\': dst = append(dst, src[i:n]...) dst = appendEscapedASCII(dst, byte(r)) n += rn i = n default: n += rn } } dst = append(dst, src[i:n]...) dst = append(dst, '"') return dst, nil } // reformatString consumes a JSON string from src and appends it to dst, // reformatting it if necessary for the given escapeRune parameter. // It returns the appended output and the remainder of the input. func reformatString(dst, src []byte, validateUTF8, preserveRaw bool, escapeRune func(rune) bool) ([]byte, []byte, error) { // TODO: Should this update valueFlags as input? var flags valueFlags n, err := consumeString(&flags, src, validateUTF8) if err != nil { return dst, src[n:], err } if preserveRaw || (escapeRune == nil && flags.isCanonical()) { dst = append(dst, src[:n]...) // copy the string verbatim return dst, src[n:], nil } // TODO: Implement a direct, raw-to-raw reformat for strings. // If the escapeRune option would have resulted in no changes to the output, // it would be faster to simply append src to dst without going through // an intermediary representation in a separate buffer. b, _ := unescapeString(make([]byte, 0, n), src[:n]) dst, _ = appendString(dst, string(b), validateUTF8, escapeRune) return dst, src[n:], nil } // appendNumber appends src to dst as a JSON number per RFC 7159, section 6. // It formats numbers similar to the ES6 number-to-string conversion. // See https://go.dev/issue/14135. // // The output is identical to ECMA-262, 6th edition, section 7.1.12.1 and with // RFC 8785, section 3.2.2.3 for 64-bit floating-point numbers except for -0, // which is formatted as -0 instead of just 0. // // For 32-bit floating-point numbers, // the output is a 32-bit equivalent of the algorithm. // Note that ECMA-262 specifies no algorithm for 32-bit numbers. func appendNumber(dst []byte, src float64, bits int) []byte { if bits == 32 { src = float64(float32(src)) } abs := math.Abs(src) fmt := byte('f') if abs != 0 { if bits == 64 && (float64(abs) < 1e-6 || float64(abs) >= 1e21) || bits == 32 && (float32(abs) < 1e-6 || float32(abs) >= 1e21) { fmt = 'e' } } dst = strconv.AppendFloat(dst, src, fmt, -1, bits) if fmt == 'e' { // Clean up e-09 to e-9. n := len(dst) if n >= 4 && dst[n-4] == 'e' && dst[n-3] == '-' && dst[n-2] == '0' { dst[n-2] = dst[n-1] dst = dst[:n-1] } } return dst } // reformatNumber consumes a JSON string from src and appends it to dst, // canonicalizing it if specified. // It returns the appended output and the remainder of the input. func reformatNumber(dst, src []byte, canonicalize bool) ([]byte, []byte, error) { n, err := consumeNumber(src) if err != nil { return dst, src[n:], err } if !canonicalize { dst = append(dst, src[:n]...) // copy the number verbatim return dst, src[n:], nil } // Canonicalize the number per RFC 8785, section 3.2.2.3. // As an optimization, we can copy integer numbers below 2âµÂ³ verbatim. const maxExactIntegerDigits = 16 // len(strconv.AppendUint(nil, 1<<53, 10)) if n < maxExactIntegerDigits && consumeSimpleNumber(src[:n]) == n { dst = append(dst, src[:n]...) // copy the number verbatim return dst, src[n:], nil } fv, _ := strconv.ParseFloat(string(src[:n]), 64) switch { case fv == 0: fv = 0 // normalize negative zero as just zero case math.IsInf(fv, +1): fv = +math.MaxFloat64 case math.IsInf(fv, -1): fv = -math.MaxFloat64 } return appendNumber(dst, fv, 64), src[n:], nil } // appendHexUint16 appends src to dst as a 4-byte hexadecimal number. func appendHexUint16(dst []byte, src uint16) []byte { dst = append(dst, "0000"[1+(bits.Len16(src)-1)/4:]...) dst = strconv.AppendUint(dst, uint64(src), 16) return dst } encode_test.go000066400000000000000000000776671453663023200346420ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "bufio" "bytes" "compress/gzip" "crypto/sha256" "encoding/binary" "encoding/hex" "errors" "flag" "io" "math" "net/http" "path" "reflect" "strconv" "strings" "testing" "time" "unicode" ) // TestEncoder tests whether we can produce JSON with either tokens or raw values. func TestEncoder(t *testing.T) { for _, td := range coderTestdata { for _, formatName := range []string{"Compact", "Escaped", "Indented"} { for _, typeName := range []string{"Token", "Value", "TokenDelims"} { t.Run(path.Join(td.name.name, typeName, formatName), func(t *testing.T) { testEncoder(t, td.name.where, formatName, typeName, td) }) } } } } func testEncoder(t *testing.T, where pc, formatName, typeName string, td coderTestdataEntry) { var want string dst := new(bytes.Buffer) enc := NewEncoder(dst) enc.options.omitTopLevelNewline = true want = td.outCompacted switch formatName { case "Escaped": enc.options.EscapeRune = func(rune) bool { return true } if td.outEscaped != "" { want = td.outEscaped } case "Indented": enc.options.multiline = true enc.options.IndentPrefix = "\t" enc.options.Indent = " " if td.outIndented != "" { want = td.outIndented } } switch typeName { case "Token": var pointers []string for _, tok := range td.tokens { if err := enc.WriteToken(tok); err != nil { t.Fatalf("%s: Encoder.WriteToken error: %v", where, err) } if td.pointers != nil { pointers = append(pointers, enc.StackPointer()) } } if !reflect.DeepEqual(pointers, td.pointers) { t.Fatalf("%s: pointers mismatch:\ngot %q\nwant %q", where, pointers, td.pointers) } case "Value": if err := enc.WriteValue(RawValue(td.in)); err != nil { t.Fatalf("%s: Encoder.WriteValue error: %v", where, err) } case "TokenDelims": // Use WriteToken for object/array delimiters, WriteValue otherwise. for _, tok := range td.tokens { switch tok.Kind() { case '{', '}', '[', ']': if err := enc.WriteToken(tok); err != nil { t.Fatalf("%s: Encoder.WriteToken error: %v", where, err) } default: val := RawValue(tok.String()) if tok.Kind() == '"' { val, _ = appendString(nil, tok.String(), false, nil) } if err := enc.WriteValue(val); err != nil { t.Fatalf("%s: Encoder.WriteValue error: %v", where, err) } } } } got := dst.String() if got != want { t.Errorf("%s: output mismatch:\ngot %q\nwant %q", where, got, want) } } // TestFaultyEncoder tests that temporary I/O errors are not fatal. func TestFaultyEncoder(t *testing.T) { for _, td := range coderTestdata { for _, typeName := range []string{"Token", "Value"} { t.Run(path.Join(td.name.name, typeName), func(t *testing.T) { testFaultyEncoder(t, td.name.where, typeName, td) }) } } } func testFaultyEncoder(t *testing.T, where pc, typeName string, td coderTestdataEntry) { b := &FaultyBuffer{ MaxBytes: 1, MayError: io.ErrShortWrite, } // Write all the tokens. // Even if the underlying io.Writer may be faulty, // writing a valid token or value is guaranteed to at least // be appended to the internal buffer. // In other words, syntactic errors occur before I/O errors. enc := NewEncoder(b) switch typeName { case "Token": for i, tok := range td.tokens { err := enc.WriteToken(tok) if err != nil && !errors.Is(err, io.ErrShortWrite) { t.Fatalf("%s: %d: Encoder.WriteToken error: %v", where, i, err) } } case "Value": err := enc.WriteValue(RawValue(td.in)) if err != nil && !errors.Is(err, io.ErrShortWrite) { t.Fatalf("%s: Encoder.WriteValue error: %v", where, err) } } gotOutput := string(append(b.B, enc.unflushedBuffer()...)) wantOutput := td.outCompacted + "\n" if gotOutput != wantOutput { t.Fatalf("%s: output mismatch:\ngot %s\nwant %s", where, gotOutput, wantOutput) } } type encoderMethodCall struct { in tokOrVal wantErr error wantPointer string } var encoderErrorTestdata = []struct { name testName opts EncodeOptions calls []encoderMethodCall wantOut string }{{ name: name("InvalidToken"), calls: []encoderMethodCall{ {zeroToken, &SyntacticError{str: "invalid json.Token"}, ""}, }, }, { name: name("InvalidValue"), calls: []encoderMethodCall{ {RawValue(`#`), newInvalidCharacterError([]byte("#"), "at start of value"), ""}, }, }, { name: name("InvalidValue/DoubleZero"), calls: []encoderMethodCall{ {RawValue(`00`), newInvalidCharacterError([]byte("0"), "after top-level value"), ""}, }, }, { name: name("TruncatedValue"), calls: []encoderMethodCall{ {zeroValue, io.ErrUnexpectedEOF, ""}, }, }, { name: name("TruncatedNull"), calls: []encoderMethodCall{ {RawValue(`nul`), io.ErrUnexpectedEOF, ""}, }, }, { name: name("InvalidNull"), calls: []encoderMethodCall{ {RawValue(`nulL`), newInvalidCharacterError([]byte("L"), "within literal null (expecting 'l')"), ""}, }, }, { name: name("TruncatedFalse"), calls: []encoderMethodCall{ {RawValue(`fals`), io.ErrUnexpectedEOF, ""}, }, }, { name: name("InvalidFalse"), calls: []encoderMethodCall{ {RawValue(`falsE`), newInvalidCharacterError([]byte("E"), "within literal false (expecting 'e')"), ""}, }, }, { name: name("TruncatedTrue"), calls: []encoderMethodCall{ {RawValue(`tru`), io.ErrUnexpectedEOF, ""}, }, }, { name: name("InvalidTrue"), calls: []encoderMethodCall{ {RawValue(`truE`), newInvalidCharacterError([]byte("E"), "within literal true (expecting 'e')"), ""}, }, }, { name: name("TruncatedString"), calls: []encoderMethodCall{ {RawValue(`"star`), io.ErrUnexpectedEOF, ""}, }, }, { name: name("InvalidString"), calls: []encoderMethodCall{ {RawValue(`"ok` + "\x00"), newInvalidCharacterError([]byte("\x00"), `within string (expecting non-control character)`), ""}, }, }, { name: name("ValidString/AllowInvalidUTF8/Token"), opts: EncodeOptions{AllowInvalidUTF8: true}, calls: []encoderMethodCall{ {String("living\xde\xad\xbe\xef"), nil, ""}, }, wantOut: "\"living\xde\xad\ufffd\ufffd\"\n", }, { name: name("ValidString/AllowInvalidUTF8/Value"), opts: EncodeOptions{AllowInvalidUTF8: true}, calls: []encoderMethodCall{ {RawValue("\"living\xde\xad\xbe\xef\""), nil, ""}, }, wantOut: "\"living\xde\xad\ufffd\ufffd\"\n", }, { name: name("InvalidString/RejectInvalidUTF8"), opts: EncodeOptions{AllowInvalidUTF8: false}, calls: []encoderMethodCall{ {String("living\xde\xad\xbe\xef"), &SyntacticError{str: "invalid UTF-8 within string"}, ""}, {RawValue("\"living\xde\xad\xbe\xef\""), &SyntacticError{str: "invalid UTF-8 within string"}, ""}, }, }, { name: name("TruncatedNumber"), calls: []encoderMethodCall{ {RawValue(`0.`), io.ErrUnexpectedEOF, ""}, }, }, { name: name("InvalidNumber"), calls: []encoderMethodCall{ {RawValue(`0.e`), newInvalidCharacterError([]byte("e"), "within number (expecting digit)"), ""}, }, }, { name: name("TruncatedObject/AfterStart"), calls: []encoderMethodCall{ {RawValue(`{`), io.ErrUnexpectedEOF, ""}, }, }, { name: name("TruncatedObject/AfterName"), calls: []encoderMethodCall{ {RawValue(`{"0"`), io.ErrUnexpectedEOF, ""}, }, }, { name: name("TruncatedObject/AfterColon"), calls: []encoderMethodCall{ {RawValue(`{"0":`), io.ErrUnexpectedEOF, ""}, }, }, { name: name("TruncatedObject/AfterValue"), calls: []encoderMethodCall{ {RawValue(`{"0":0`), io.ErrUnexpectedEOF, ""}, }, }, { name: name("TruncatedObject/AfterComma"), calls: []encoderMethodCall{ {RawValue(`{"0":0,`), io.ErrUnexpectedEOF, ""}, }, }, { name: name("InvalidObject/MissingColon"), calls: []encoderMethodCall{ {RawValue(` { "fizz" "buzz" } `), newInvalidCharacterError([]byte("\""), "after object name (expecting ':')"), ""}, {RawValue(` { "fizz" , "buzz" } `), newInvalidCharacterError([]byte(","), "after object name (expecting ':')"), ""}, }, }, { name: name("InvalidObject/MissingComma"), calls: []encoderMethodCall{ {RawValue(` { "fizz" : "buzz" "gazz" } `), newInvalidCharacterError([]byte("\""), "after object value (expecting ',' or '}')"), ""}, {RawValue(` { "fizz" : "buzz" : "gazz" } `), newInvalidCharacterError([]byte(":"), "after object value (expecting ',' or '}')"), ""}, }, }, { name: name("InvalidObject/ExtraComma"), calls: []encoderMethodCall{ {RawValue(` { , } `), newInvalidCharacterError([]byte(","), `at start of string (expecting '"')`), ""}, {RawValue(` { "fizz" : "buzz" , } `), newInvalidCharacterError([]byte("}"), `at start of string (expecting '"')`), ""}, }, }, { name: name("InvalidObject/InvalidName"), calls: []encoderMethodCall{ {RawValue(`{ null }`), newInvalidCharacterError([]byte("n"), `at start of string (expecting '"')`), ""}, {RawValue(`{ false }`), newInvalidCharacterError([]byte("f"), `at start of string (expecting '"')`), ""}, {RawValue(`{ true }`), newInvalidCharacterError([]byte("t"), `at start of string (expecting '"')`), ""}, {RawValue(`{ 0 }`), newInvalidCharacterError([]byte("0"), `at start of string (expecting '"')`), ""}, {RawValue(`{ {} }`), newInvalidCharacterError([]byte("{"), `at start of string (expecting '"')`), ""}, {RawValue(`{ [] }`), newInvalidCharacterError([]byte("["), `at start of string (expecting '"')`), ""}, {ObjectStart, nil, ""}, {Null, errMissingName, ""}, {RawValue(`null`), errMissingName, ""}, {False, errMissingName, ""}, {RawValue(`false`), errMissingName, ""}, {True, errMissingName, ""}, {RawValue(`true`), errMissingName, ""}, {Uint(0), errMissingName, ""}, {RawValue(`0`), errMissingName, ""}, {ObjectStart, errMissingName, ""}, {RawValue(`{}`), errMissingName, ""}, {ArrayStart, errMissingName, ""}, {RawValue(`[]`), errMissingName, ""}, {ObjectEnd, nil, ""}, }, wantOut: "{}\n", }, { name: name("InvalidObject/InvalidValue"), calls: []encoderMethodCall{ {RawValue(`{ "0": x }`), newInvalidCharacterError([]byte("x"), `at start of value`), ""}, }, }, { name: name("InvalidObject/MismatchingDelim"), calls: []encoderMethodCall{ {RawValue(` { ] `), newInvalidCharacterError([]byte("]"), `at start of string (expecting '"')`), ""}, {RawValue(` { "0":0 ] `), newInvalidCharacterError([]byte("]"), `after object value (expecting ',' or '}')`), ""}, {ObjectStart, nil, ""}, {ArrayEnd, errMismatchDelim, ""}, {RawValue(`]`), newInvalidCharacterError([]byte("]"), "at start of value"), ""}, {ObjectEnd, nil, ""}, }, wantOut: "{}\n", }, { name: name("ValidObject/UniqueNames"), calls: []encoderMethodCall{ {ObjectStart, nil, ""}, {String("0"), nil, ""}, {Uint(0), nil, ""}, {String("1"), nil, ""}, {Uint(1), nil, ""}, {ObjectEnd, nil, ""}, {RawValue(` { "0" : 0 , "1" : 1 } `), nil, ""}, }, wantOut: `{"0":0,"1":1}` + "\n" + `{"0":0,"1":1}` + "\n", }, { name: name("ValidObject/DuplicateNames"), opts: EncodeOptions{AllowDuplicateNames: true}, calls: []encoderMethodCall{ {ObjectStart, nil, ""}, {String("0"), nil, ""}, {Uint(0), nil, ""}, {String("0"), nil, ""}, {Uint(0), nil, ""}, {ObjectEnd, nil, ""}, {RawValue(` { "0" : 0 , "0" : 0 } `), nil, ""}, }, wantOut: `{"0":0,"0":0}` + "\n" + `{"0":0,"0":0}` + "\n", }, { name: name("InvalidObject/DuplicateNames"), calls: []encoderMethodCall{ {ObjectStart, nil, ""}, {String("0"), nil, ""}, {ObjectStart, nil, ""}, {ObjectEnd, nil, ""}, {String("0"), &SyntacticError{str: `duplicate name "0" in object`}, "/0"}, {RawValue(`"0"`), &SyntacticError{str: `duplicate name "0" in object`}, "/0"}, {String("1"), nil, ""}, {ObjectStart, nil, ""}, {ObjectEnd, nil, ""}, {String("0"), &SyntacticError{str: `duplicate name "0" in object`}, "/1"}, {RawValue(`"0"`), &SyntacticError{str: `duplicate name "0" in object`}, "/1"}, {String("1"), &SyntacticError{str: `duplicate name "1" in object`}, "/1"}, {RawValue(`"1"`), &SyntacticError{str: `duplicate name "1" in object`}, "/1"}, {ObjectEnd, nil, ""}, {RawValue(` { "0" : 0 , "1" : 1 , "0" : 0 } `), &SyntacticError{str: `duplicate name "0" in object`}, ""}, }, wantOut: `{"0":{},"1":{}}` + "\n", }, { name: name("TruncatedArray/AfterStart"), calls: []encoderMethodCall{ {RawValue(`[`), io.ErrUnexpectedEOF, ""}, }, }, { name: name("TruncatedArray/AfterValue"), calls: []encoderMethodCall{ {RawValue(`[0`), io.ErrUnexpectedEOF, ""}, }, }, { name: name("TruncatedArray/AfterComma"), calls: []encoderMethodCall{ {RawValue(`[0,`), io.ErrUnexpectedEOF, ""}, }, }, { name: name("TruncatedArray/MissingComma"), calls: []encoderMethodCall{ {RawValue(` [ "fizz" "buzz" ] `), newInvalidCharacterError([]byte("\""), "after array value (expecting ',' or ']')"), ""}, }, }, { name: name("InvalidArray/MismatchingDelim"), calls: []encoderMethodCall{ {RawValue(` [ } `), newInvalidCharacterError([]byte("}"), `at start of value`), ""}, {ArrayStart, nil, ""}, {ObjectEnd, errMismatchDelim, ""}, {RawValue(`}`), newInvalidCharacterError([]byte("}"), "at start of value"), ""}, {ArrayEnd, nil, ""}, }, wantOut: "[]\n", }} // TestEncoderErrors test that Encoder errors occur when we expect and // leaves the Encoder in a consistent state. func TestEncoderErrors(t *testing.T) { for _, td := range encoderErrorTestdata { t.Run(path.Join(td.name.name), func(t *testing.T) { testEncoderErrors(t, td.name.where, td.opts, td.calls, td.wantOut) }) } } func testEncoderErrors(t *testing.T, where pc, opts EncodeOptions, calls []encoderMethodCall, wantOut string) { dst := new(bytes.Buffer) enc := opts.NewEncoder(dst) for i, call := range calls { var gotErr error switch tokVal := call.in.(type) { case Token: gotErr = enc.WriteToken(tokVal) case RawValue: gotErr = enc.WriteValue(tokVal) } if !reflect.DeepEqual(gotErr, call.wantErr) { t.Fatalf("%s: %d: error mismatch: got %#v, want %#v", where, i, gotErr, call.wantErr) } if call.wantPointer != "" { gotPointer := enc.StackPointer() if gotPointer != call.wantPointer { t.Fatalf("%s: %d: Encoder.StackPointer = %s, want %s", where, i, gotPointer, call.wantPointer) } } } gotOut := dst.String() + string(enc.unflushedBuffer()) if gotOut != wantOut { t.Fatalf("%s: output mismatch:\ngot %q\nwant %q", where, gotOut, wantOut) } gotOffset := int(enc.OutputOffset()) wantOffset := len(wantOut) if gotOffset != wantOffset { t.Fatalf("%s: Encoder.OutputOffset = %v, want %v", where, gotOffset, wantOffset) } } func TestAppendString(t *testing.T) { var ( escapeNothing = func(r rune) bool { return false } escapeHTML = func(r rune) bool { return r == '<' || r == '>' || r == '&' || r == '\u2028' || r == '\u2029' } escapeNonASCII = func(r rune) bool { return r > unicode.MaxASCII } escapeEverything = func(r rune) bool { return true } ) tests := []struct { in string escapeRune func(rune) bool want string wantErr error wantErrUTF8 error }{ {"", nil, `""`, nil, nil}, {"hello", nil, `"hello"`, nil, nil}, {"\x00", nil, `"\u0000"`, nil, nil}, {"\x1f", nil, `"\u001f"`, nil, nil}, {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", nil, `"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"`, nil, nil}, {" !#$%&'()*+,-./0123456789:;<=>?@[]^_`{|}~\x7f", nil, "\" !#$%&'()*+,-./0123456789:;<=>?@[]^_`{|}~\x7f\"", nil, nil}, {"x\x80\ufffd", nil, "\"x\ufffd\ufffd\"", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"x\xff\ufffd", nil, "\"x\ufffd\ufffd\"", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"x\x80\ufffd", escapeNonASCII, "\"x\\ufffd\\ufffd\"", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"x\xff\ufffd", escapeNonASCII, "\"x\\ufffd\\ufffd\"", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"x\xc0", nil, "\"x\ufffd\"", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"x\xc0\x80", nil, "\"x\ufffd\ufffd\"", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"x\xe0", nil, "\"x\ufffd\"", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"x\xe0\x80", nil, "\"x\ufffd\ufffd\"", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"x\xe0\x80\x80", nil, "\"x\ufffd\ufffd\ufffd\"", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"x\xf0", nil, "\"x\ufffd\"", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"x\xf0\x80", nil, "\"x\ufffd\ufffd\"", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"x\xf0\x80\x80", nil, "\"x\ufffd\ufffd\ufffd\"", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"x\xf0\x80\x80\x80", nil, "\"x\ufffd\ufffd\ufffd\ufffd\"", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"x\xed\xba\xad", nil, "\"x\ufffd\ufffd\ufffd\"", nil, &SyntacticError{str: "invalid UTF-8 within string"}}, {"\"\\/\b\f\n\r\t", nil, `"\"\\/\b\f\n\r\t"`, nil, nil}, {"\"\\/\b\f\n\r\t", escapeEverything, `"\u0022\u005c\u002f\u0008\u000c\u000a\u000d\u0009"`, nil, nil}, {"Ù©(-̮̮̃-̃)Û¶ Ù©(â—̮̮̃•̃)Û¶ Ù©(Í¡à¹Ì¯Í¡à¹)Û¶ Ù©(-̮̮̃•̃).", nil, `"Ù©(-̮̮̃-̃)Û¶ Ù©(â—̮̮̃•̃)Û¶ Ù©(Í¡à¹Ì¯Í¡à¹)Û¶ Ù©(-̮̮̃•̃)."`, nil, nil}, {"Ù©(-̮̮̃-̃)Û¶ Ù©(â—̮̮̃•̃)Û¶ Ù©(Í¡à¹Ì¯Í¡à¹)Û¶ Ù©(-̮̮̃•̃).", escapeNonASCII, `"\u0669(-\u032e\u032e\u0303-\u0303)\u06f6 \u0669(\u25cf\u032e\u032e\u0303\u2022\u0303)\u06f6 \u0669(\u0361\u0e4f\u032f\u0361\u0e4f)\u06f6 \u0669(-\u032e\u032e\u0303\u2022\u0303)."`, nil, nil}, {"Ù©(-̮̮̃-̃)Û¶ Ù©(â—̮̮̃•̃)Û¶ Ù©(Í¡à¹Ì¯Í¡à¹)Û¶ Ù©(-̮̮̃•̃).", escapeEverything, `"\u0669\u0028\u002d\u032e\u032e\u0303\u002d\u0303\u0029\u06f6\u0020\u0669\u0028\u25cf\u032e\u032e\u0303\u2022\u0303\u0029\u06f6\u0020\u0669\u0028\u0361\u0e4f\u032f\u0361\u0e4f\u0029\u06f6\u0020\u0669\u0028\u002d\u032e\u032e\u0303\u2022\u0303\u0029\u002e"`, nil, nil}, {"\u0080\u00f6\u20ac\ud799\ue000\ufb33\ufffd\U0001f602", nil, "\"\u0080\u00f6\u20ac\ud799\ue000\ufb33\ufffd\U0001f602\"", nil, nil}, {"\u0080\u00f6\u20ac\ud799\ue000\ufb33\ufffd\U0001f602", escapeEverything, `"\u0080\u00f6\u20ac\ud799\ue000\ufb33\ufffd\ud83d\ude02"`, nil, nil}, {"\u0000\u001f\u0020\u0022\u0026\u003c\u003e\u005c\u007f\u0080\u2028\u2029\ufffd\U0001f602", nil, "\"\\u0000\\u001f\u0020\\\"\u0026\u003c\u003e\\\\\u007f\u0080\u2028\u2029\ufffd\U0001f602\"", nil, nil}, {"\u0000\u001f\u0020\u0022\u0026\u003c\u003e\u005c\u007f\u0080\u2028\u2029\ufffd\U0001f602", escapeNothing, "\"\\u0000\\u001f\u0020\\\"\u0026\u003c\u003e\\\\\u007f\u0080\u2028\u2029\ufffd\U0001f602\"", nil, nil}, {"\u0000\u001f\u0020\u0022\u0026\u003c\u003e\u005c\u007f\u0080\u2028\u2029\ufffd\U0001f602", escapeHTML, "\"\\u0000\\u001f\u0020\\\"\\u0026\\u003c\\u003e\\\\\u007f\u0080\\u2028\\u2029\ufffd\U0001f602\"", nil, nil}, {"\u0000\u001f\u0020\u0022\u0026\u003c\u003e\u005c\u007f\u0080\u2028\u2029\ufffd\U0001f602", escapeNonASCII, "\"\\u0000\\u001f\u0020\\\"\u0026\u003c\u003e\\\\\u007f\\u0080\\u2028\\u2029\\ufffd\\ud83d\\ude02\"", nil, nil}, {"\u0000\u001f\u0020\u0022\u0026\u003c\u003e\u005c\u007f\u0080\u2028\u2029\ufffd\U0001f602", escapeEverything, "\"\\u0000\\u001f\\u0020\\u0022\\u0026\\u003c\\u003e\\u005c\\u007f\\u0080\\u2028\\u2029\\ufffd\\ud83d\\ude02\"", nil, nil}, } for _, tt := range tests { t.Run("", func(t *testing.T) { got, gotErr := appendString(nil, tt.in, false, tt.escapeRune) if string(got) != tt.want || !reflect.DeepEqual(gotErr, tt.wantErr) { t.Errorf("appendString(nil, %q, false, ...) = (%s, %v), want (%s, %v)", tt.in, got, gotErr, tt.want, tt.wantErr) } switch got, gotErr := appendString(nil, tt.in, true, tt.escapeRune); { case tt.wantErrUTF8 == nil && (string(got) != tt.want || !reflect.DeepEqual(gotErr, tt.wantErr)): t.Errorf("appendString(nil, %q, true, ...) = (%s, %v), want (%s, %v)", tt.in, got, gotErr, tt.want, tt.wantErr) case tt.wantErrUTF8 != nil && (!strings.HasPrefix(tt.want, string(got)) || !reflect.DeepEqual(gotErr, tt.wantErrUTF8)): t.Errorf("appendString(nil, %q, true, ...) = (%s, %v), want (%s, %v)", tt.in, got, gotErr, tt.want, tt.wantErrUTF8) } }) } } func TestAppendNumber(t *testing.T) { tests := []struct { in float64 want32 string want64 string }{ {math.E, "2.7182817", "2.718281828459045"}, {math.Pi, "3.1415927", "3.141592653589793"}, {math.SmallestNonzeroFloat32, "1e-45", "1.401298464324817e-45"}, {math.SmallestNonzeroFloat64, "0", "5e-324"}, {math.MaxFloat32, "3.4028235e+38", "3.4028234663852886e+38"}, {math.MaxFloat64, "", "1.7976931348623157e+308"}, {0.1111111111111111, "0.11111111", "0.1111111111111111"}, {0.2222222222222222, "0.22222222", "0.2222222222222222"}, {0.3333333333333333, "0.33333334", "0.3333333333333333"}, {0.4444444444444444, "0.44444445", "0.4444444444444444"}, {0.5555555555555555, "0.5555556", "0.5555555555555555"}, {0.6666666666666666, "0.6666667", "0.6666666666666666"}, {0.7777777777777777, "0.7777778", "0.7777777777777777"}, {0.8888888888888888, "0.8888889", "0.8888888888888888"}, {0.9999999999999999, "1", "0.9999999999999999"}, // The following entries are from RFC 8785, appendix B // which are designed to ensure repeatable formatting of 64-bit floats. {math.Float64frombits(0x0000000000000000), "0", "0"}, {math.Float64frombits(0x8000000000000000), "-0", "-0"}, // differs from RFC 8785 {math.Float64frombits(0x0000000000000001), "0", "5e-324"}, {math.Float64frombits(0x8000000000000001), "-0", "-5e-324"}, {math.Float64frombits(0x7fefffffffffffff), "", "1.7976931348623157e+308"}, {math.Float64frombits(0xffefffffffffffff), "", "-1.7976931348623157e+308"}, {math.Float64frombits(0x4340000000000000), "9007199000000000", "9007199254740992"}, {math.Float64frombits(0xc340000000000000), "-9007199000000000", "-9007199254740992"}, {math.Float64frombits(0x4430000000000000), "295147900000000000000", "295147905179352830000"}, {math.Float64frombits(0x44b52d02c7e14af5), "1e+23", "9.999999999999997e+22"}, {math.Float64frombits(0x44b52d02c7e14af6), "1e+23", "1e+23"}, {math.Float64frombits(0x44b52d02c7e14af7), "1e+23", "1.0000000000000001e+23"}, {math.Float64frombits(0x444b1ae4d6e2ef4e), "1e+21", "999999999999999700000"}, {math.Float64frombits(0x444b1ae4d6e2ef4f), "1e+21", "999999999999999900000"}, {math.Float64frombits(0x444b1ae4d6e2ef50), "1e+21", "1e+21"}, {math.Float64frombits(0x3eb0c6f7a0b5ed8c), "0.000001", "9.999999999999997e-7"}, {math.Float64frombits(0x3eb0c6f7a0b5ed8d), "0.000001", "0.000001"}, {math.Float64frombits(0x41b3de4355555553), "333333340", "333333333.3333332"}, {math.Float64frombits(0x41b3de4355555554), "333333340", "333333333.33333325"}, {math.Float64frombits(0x41b3de4355555555), "333333340", "333333333.3333333"}, {math.Float64frombits(0x41b3de4355555556), "333333340", "333333333.3333334"}, {math.Float64frombits(0x41b3de4355555557), "333333340", "333333333.33333343"}, {math.Float64frombits(0xbecbf647612f3696), "-0.0000033333333", "-0.0000033333333333333333"}, {math.Float64frombits(0x43143ff3c1cb0959), "1424953900000000", "1424953923781206.2"}, // The following are select entries from RFC 8785, appendix B, // but modified for equivalent 32-bit behavior. {float64(math.Float32frombits(0x65a96815)), "9.999999e+22", "9.999998877476383e+22"}, {float64(math.Float32frombits(0x65a96816)), "1e+23", "9.999999778196308e+22"}, {float64(math.Float32frombits(0x65a96817)), "1.0000001e+23", "1.0000000678916234e+23"}, {float64(math.Float32frombits(0x6258d725)), "999999900000000000000", "999999879303389000000"}, {float64(math.Float32frombits(0x6258d726)), "999999950000000000000", "999999949672133200000"}, {float64(math.Float32frombits(0x6258d727)), "1e+21", "1.0000000200408773e+21"}, {float64(math.Float32frombits(0x6258d728)), "1.0000001e+21", "1.0000000904096215e+21"}, {float64(math.Float32frombits(0x358637bc)), "9.999999e-7", "9.99999883788405e-7"}, {float64(math.Float32frombits(0x358637bd)), "0.000001", "9.999999974752427e-7"}, {float64(math.Float32frombits(0x358637be)), "0.0000010000001", "0.0000010000001111620804"}, } for _, tt := range tests { t.Run("", func(t *testing.T) { if got32 := string(appendNumber(nil, tt.in, 32)); got32 != tt.want32 && tt.want32 != "" { t.Errorf("appendNumber(nil, %v, 32) = %v, want %v", tt.in, got32, tt.want32) } if got64 := string(appendNumber(nil, tt.in, 64)); got64 != tt.want64 && tt.want64 != "" { t.Errorf("appendNumber(nil, %v, 64) = %v, want %v", tt.in, got64, tt.want64) } }) } } // The default of 1e4 lines was chosen since it is sufficiently large to include // test numbers from all three categories (i.e., static, series, and random). // Yet, it is sufficiently low to execute quickly relative to other tests. // // Processing 1e8 lines takes a minute and processes about 4GiB worth of text. var testCanonicalNumberLines = flag.Float64("canonical-number-lines", 1e4, "specify the number of lines to check from the canonical numbers testdata") // TestCanonicalNumber verifies that appendNumber complies with RFC 8785 // according to the testdata provided by the reference implementation. // See https://github.com/cyberphone/json-canonicalization/tree/master/testdata#es6-numbers. func TestCanonicalNumber(t *testing.T) { const testfileURL = "https://github.com/cyberphone/json-canonicalization/releases/download/es6testfile/es6testfile100m.txt.gz" hashes := map[float64]string{ 1e3: "be18b62b6f69cdab33a7e0dae0d9cfa869fda80ddc712221570f9f40a5878687", 1e4: "b9f7a8e75ef22a835685a52ccba7f7d6bdc99e34b010992cbc5864cd12be6892", 1e5: "22776e6d4b49fa294a0d0f349268e5c28808fe7e0cb2bcbe28f63894e494d4c7", 1e6: "49415fee2c56c77864931bd3624faad425c3c577d6d74e89a83bc725506dad16", 1e7: "b9f8a44a91d46813b21b9602e72f112613c91408db0b8341fb94603d9db135e0", 1e8: "0f7dda6b0837dde083c5d6b896f7d62340c8a2415b0c7121d83145e08a755272", } wantHash := hashes[*testCanonicalNumberLines] if wantHash == "" { t.Fatalf("canonical-number-lines must be one of the following values: 1e3, 1e4, 1e5, 1e6, 1e7, 1e8") } numLines := int(*testCanonicalNumberLines) // generator returns a function that generates the next float64 to format. // This implements the algorithm specified in the reference implementation. generator := func() func() float64 { static := [...]uint64{ 0x0000000000000000, 0x8000000000000000, 0x0000000000000001, 0x8000000000000001, 0xc46696695dbd1cc3, 0xc43211ede4974a35, 0xc3fce97ca0f21056, 0xc3c7213080c1a6ac, 0xc39280f39a348556, 0xc35d9b1f5d20d557, 0xc327af4c4a80aaac, 0xc2f2f2a36ecd5556, 0xc2be51057e155558, 0xc28840d131aaaaac, 0xc253670dc1555557, 0xc21f0b4935555557, 0xc1e8d5d42aaaaaac, 0xc1b3de4355555556, 0xc17fca0555555556, 0xc1496e6aaaaaaaab, 0xc114585555555555, 0xc0e046aaaaaaaaab, 0xc0aa0aaaaaaaaaaa, 0xc074d55555555555, 0xc040aaaaaaaaaaab, 0xc00aaaaaaaaaaaab, 0xbfd5555555555555, 0xbfa1111111111111, 0xbf6b4e81b4e81b4f, 0xbf35d867c3ece2a5, 0xbf0179ec9cbd821e, 0xbecbf647612f3696, 0xbe965e9f80f29212, 0xbe61e54c672874db, 0xbe2ca213d840baf8, 0xbdf6e80fe033c8c6, 0xbdc2533fe68fd3d2, 0xbd8d51ffd74c861c, 0xbd5774ccac3d3817, 0xbd22c3d6f030f9ac, 0xbcee0624b3818f79, 0xbcb804ea293472c7, 0xbc833721ba905bd3, 0xbc4ebe9c5db3c61e, 0xbc18987d17c304e5, 0xbbe3ad30dfcf371d, 0xbbaf7b816618582f, 0xbb792f9ab81379bf, 0xbb442615600f9499, 0xbb101e77800c76e1, 0xbad9ca58cce0be35, 0xbaa4a1e0a3e6fe90, 0xba708180831f320d, 0xba3a68cd9e985016, 0x446696695dbd1cc3, 0x443211ede4974a35, 0x43fce97ca0f21056, 0x43c7213080c1a6ac, 0x439280f39a348556, 0x435d9b1f5d20d557, 0x4327af4c4a80aaac, 0x42f2f2a36ecd5556, 0x42be51057e155558, 0x428840d131aaaaac, 0x4253670dc1555557, 0x421f0b4935555557, 0x41e8d5d42aaaaaac, 0x41b3de4355555556, 0x417fca0555555556, 0x41496e6aaaaaaaab, 0x4114585555555555, 0x40e046aaaaaaaaab, 0x40aa0aaaaaaaaaaa, 0x4074d55555555555, 0x4040aaaaaaaaaaab, 0x400aaaaaaaaaaaab, 0x3fd5555555555555, 0x3fa1111111111111, 0x3f6b4e81b4e81b4f, 0x3f35d867c3ece2a5, 0x3f0179ec9cbd821e, 0x3ecbf647612f3696, 0x3e965e9f80f29212, 0x3e61e54c672874db, 0x3e2ca213d840baf8, 0x3df6e80fe033c8c6, 0x3dc2533fe68fd3d2, 0x3d8d51ffd74c861c, 0x3d5774ccac3d3817, 0x3d22c3d6f030f9ac, 0x3cee0624b3818f79, 0x3cb804ea293472c7, 0x3c833721ba905bd3, 0x3c4ebe9c5db3c61e, 0x3c18987d17c304e5, 0x3be3ad30dfcf371d, 0x3baf7b816618582f, 0x3b792f9ab81379bf, 0x3b442615600f9499, 0x3b101e77800c76e1, 0x3ad9ca58cce0be35, 0x3aa4a1e0a3e6fe90, 0x3a708180831f320d, 0x3a3a68cd9e985016, 0x4024000000000000, 0x4014000000000000, 0x3fe0000000000000, 0x3fa999999999999a, 0x3f747ae147ae147b, 0x3f40624dd2f1a9fc, 0x3f0a36e2eb1c432d, 0x3ed4f8b588e368f1, 0x3ea0c6f7a0b5ed8d, 0x3e6ad7f29abcaf48, 0x3e35798ee2308c3a, 0x3ed539223589fa95, 0x3ed4ff26cd5a7781, 0x3ed4f95a762283ff, 0x3ed4f8c60703520c, 0x3ed4f8b72f19cd0d, 0x3ed4f8b5b31c0c8d, 0x3ed4f8b58d1c461a, 0x3ed4f8b5894f7f0e, 0x3ed4f8b588ee37f3, 0x3ed4f8b588e47da4, 0x3ed4f8b588e3849c, 0x3ed4f8b588e36bb5, 0x3ed4f8b588e36937, 0x3ed4f8b588e368f8, 0x3ed4f8b588e368f1, 0x3ff0000000000000, 0xbff0000000000000, 0xbfeffffffffffffa, 0xbfeffffffffffffb, 0x3feffffffffffffa, 0x3feffffffffffffb, 0x3feffffffffffffc, 0x3feffffffffffffe, 0xbfefffffffffffff, 0xbfefffffffffffff, 0x3fefffffffffffff, 0x3fefffffffffffff, 0x3fd3333333333332, 0x3fd3333333333333, 0x3fd3333333333334, 0x0010000000000000, 0x000ffffffffffffd, 0x000fffffffffffff, 0x7fefffffffffffff, 0xffefffffffffffff, 0x4340000000000000, 0xc340000000000000, 0x4430000000000000, 0x44b52d02c7e14af5, 0x44b52d02c7e14af6, 0x44b52d02c7e14af7, 0x444b1ae4d6e2ef4e, 0x444b1ae4d6e2ef4f, 0x444b1ae4d6e2ef50, 0x3eb0c6f7a0b5ed8c, 0x3eb0c6f7a0b5ed8d, 0x41b3de4355555553, 0x41b3de4355555554, 0x41b3de4355555555, 0x41b3de4355555556, 0x41b3de4355555557, 0xbecbf647612f3696, 0x43143ff3c1cb0959, } var state struct { idx int data []byte block [sha256.Size]byte } return func() float64 { const numSerial = 2000 var f float64 switch { case state.idx < len(static): f = math.Float64frombits(static[state.idx]) case state.idx < len(static)+numSerial: f = math.Float64frombits(0x0010000000000000 + uint64(state.idx-len(static))) default: for f == 0 || math.IsNaN(f) || math.IsInf(f, 0) { if len(state.data) == 0 { state.block = sha256.Sum256(state.block[:]) state.data = state.block[:] } f = math.Float64frombits(binary.LittleEndian.Uint64(state.data)) state.data = state.data[8:] } } state.idx++ return f } } // Pass through the test twice. In the first pass we only hash the output, // while in the second pass we check every line against the golden testdata. // If the hashes match in the first pass, then we skip the second pass. for _, checkGolden := range []bool{false, true} { var br *bufio.Reader // for line-by-line reading of es6testfile100m.txt if checkGolden { resp, err := http.Get(testfileURL) if err != nil { t.Fatalf("http.Get error: %v", err) } defer resp.Body.Close() zr, err := gzip.NewReader(resp.Body) if err != nil { t.Fatalf("gzip.NewReader error: %v", err) } br = bufio.NewReader(zr) } // appendNumberJCS differs from appendNumber only for -0. appendNumberJCS := func(b []byte, f float64) []byte { if math.Signbit(f) && f == 0 { return append(b, '0') } return appendNumber(b, f, 64) } var gotLine []byte next := generator() hash := sha256.New() start := time.Now() lastPrint := start for n := 1; n <= numLines; n++ { // Generate the formatted line for this number. f := next() gotLine = gotLine[:0] // reset from previous usage gotLine = strconv.AppendUint(gotLine, math.Float64bits(f), 16) gotLine = append(gotLine, ',') gotLine = appendNumberJCS(gotLine, f) gotLine = append(gotLine, '\n') hash.Write(gotLine) // Check that the formatted line matches. if checkGolden { wantLine, err := br.ReadBytes('\n') if err != nil { t.Fatalf("bufio.Reader.ReadBytes error: %v", err) } if !bytes.Equal(gotLine, wantLine) { t.Errorf("mismatch on line %d:\n\tgot %v\n\twant %v", n, strings.TrimSpace(string(gotLine)), strings.TrimSpace(string(wantLine))) } } // Print progress. if now := time.Now(); now.Sub(lastPrint) > time.Second || n == numLines { remaining := float64(now.Sub(start)) * float64(numLines-n) / float64(n) t.Logf("%0.3f%% (%v remaining)", 100.0*float64(n)/float64(numLines), time.Duration(remaining).Round(time.Second)) lastPrint = now } } gotHash := hex.EncodeToString(hash.Sum(nil)) if gotHash == wantHash { return // hashes match, no need to check golden testdata } } } errors.go000066400000000000000000000110231453663023200336300ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "errors" "reflect" "strconv" "strings" "unicode/utf8" ) const errorPrefix = "json: " // Error matches errors returned by this package according to errors.Is. const Error = jsonError("json error") type jsonError string func (e jsonError) Error() string { return string(e) } func (e jsonError) Is(target error) bool { return e == target || target == Error } type ioError struct { action string // either "read" or "write" err error } func (e *ioError) Error() string { return errorPrefix + e.action + " error: " + e.err.Error() } func (e *ioError) Unwrap() error { return e.err } func (e *ioError) Is(target error) bool { return e == target || target == Error || errors.Is(e.err, target) } // SemanticError describes an error determining the meaning // of JSON data as Go data or vice-versa. // // The contents of this error as produced by this package may change over time. type SemanticError struct { requireKeyedLiterals nonComparable action string // either "marshal" or "unmarshal" // ByteOffset indicates that an error occurred after this byte offset. ByteOffset int64 // JSONPointer indicates that an error occurred within this JSON value // as indicated using the JSON Pointer notation (see RFC 6901). JSONPointer string // JSONKind is the JSON kind that could not be handled. JSONKind Kind // may be zero if unknown // GoType is the Go type that could not be handled. GoType reflect.Type // may be nil if unknown // Err is the underlying error. Err error // may be nil } func (e *SemanticError) Error() string { var sb strings.Builder sb.WriteString(errorPrefix) // Hyrum-proof the error message by deliberately switching between // two equivalent renderings of the same error message. // The randomization is tied to the Hyrum-proofing already applied // on map iteration in Go. for phrase := range map[string]struct{}{"cannot": {}, "unable to": {}} { sb.WriteString(phrase) break // use whichever phrase we get in the first iteration } // Format action. var preposition string switch e.action { case "marshal": sb.WriteString(" marshal") preposition = " from" case "unmarshal": sb.WriteString(" unmarshal") preposition = " into" default: sb.WriteString(" handle") preposition = " with" } // Format JSON kind. var omitPreposition bool switch e.JSONKind { case 'n': sb.WriteString(" JSON null") case 'f', 't': sb.WriteString(" JSON boolean") case '"': sb.WriteString(" JSON string") case '0': sb.WriteString(" JSON number") case '{', '}': sb.WriteString(" JSON object") case '[', ']': sb.WriteString(" JSON array") default: omitPreposition = true } // Format Go type. if e.GoType != nil { if !omitPreposition { sb.WriteString(preposition) } sb.WriteString(" Go value of type ") sb.WriteString(e.GoType.String()) } // Format where. switch { case e.JSONPointer != "": sb.WriteString(" within JSON value at ") sb.WriteString(strconv.Quote(e.JSONPointer)) case e.ByteOffset > 0: sb.WriteString(" after byte offset ") sb.WriteString(strconv.FormatInt(e.ByteOffset, 10)) } // Format underlying error. if e.Err != nil { sb.WriteString(": ") sb.WriteString(e.Err.Error()) } return sb.String() } func (e *SemanticError) Is(target error) bool { return e == target || target == Error || errors.Is(e.Err, target) } func (e *SemanticError) Unwrap() error { return e.Err } // SyntacticError is a description of a syntactic error that occurred when // encoding or decoding JSON according to the grammar. // // The contents of this error as produced by this package may change over time. type SyntacticError struct { requireKeyedLiterals nonComparable // ByteOffset indicates that an error occurred after this byte offset. ByteOffset int64 str string } func (e *SyntacticError) Error() string { return errorPrefix + e.str } func (e *SyntacticError) Is(target error) bool { return e == target || target == Error } func (e *SyntacticError) withOffset(pos int64) error { return &SyntacticError{ByteOffset: pos, str: e.str} } func newInvalidCharacterError(prefix []byte, where string) *SyntacticError { what := quoteRune(prefix) return &SyntacticError{str: "invalid character " + what + " " + where} } func quoteRune(b []byte) string { r, n := utf8.DecodeRune(b) if r == utf8.RuneError && n == 1 { return `'\x` + strconv.FormatUint(uint64(b[0]), 16) + `'` } return strconv.QuoteRune(r) } errors_test.go000066400000000000000000000154071453663023200347010ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "archive/tar" "bytes" "errors" "fmt" "io" "reflect" "strconv" "strings" "testing" ) func TestSemanticError(t *testing.T) { tests := []struct { err error want string }{{ err: &SemanticError{}, want: "json: cannot handle", }, { err: &SemanticError{JSONKind: 'n'}, want: "json: cannot handle JSON null", }, { err: &SemanticError{action: "unmarshal", JSONKind: 't'}, want: "json: cannot unmarshal JSON boolean", }, { err: &SemanticError{action: "unmarshal", JSONKind: 'x'}, want: "json: cannot unmarshal", // invalid token kinds are ignored }, { err: &SemanticError{action: "marshal", JSONKind: '"'}, want: "json: cannot marshal JSON string", }, { err: &SemanticError{GoType: reflect.TypeOf(bool(false))}, want: "json: cannot handle Go value of type bool", }, { err: &SemanticError{action: "marshal", GoType: reflect.TypeOf(int(0))}, want: "json: cannot marshal Go value of type int", }, { err: &SemanticError{action: "unmarshal", GoType: reflect.TypeOf(uint(0))}, want: "json: cannot unmarshal Go value of type uint", }, { err: &SemanticError{JSONKind: '0', GoType: reflect.TypeOf(tar.Header{})}, want: "json: cannot handle JSON number with Go value of type tar.Header", }, { err: &SemanticError{action: "marshal", JSONKind: '{', GoType: reflect.TypeOf(bytes.Buffer{})}, want: "json: cannot marshal JSON object from Go value of type bytes.Buffer", }, { err: &SemanticError{action: "unmarshal", JSONKind: ']', GoType: reflect.TypeOf(strings.Reader{})}, want: "json: cannot unmarshal JSON array into Go value of type strings.Reader", }, { err: &SemanticError{action: "unmarshal", JSONKind: '{', GoType: reflect.TypeOf(float64(0)), ByteOffset: 123}, want: "json: cannot unmarshal JSON object into Go value of type float64 after byte offset 123", }, { err: &SemanticError{action: "marshal", JSONKind: 'f', GoType: reflect.TypeOf(complex128(0)), ByteOffset: 123, JSONPointer: "/foo/2/bar/3"}, want: "json: cannot marshal JSON boolean from Go value of type complex128 within JSON value at \"/foo/2/bar/3\"", }, { err: &SemanticError{action: "unmarshal", JSONKind: '}', GoType: reflect.TypeOf((*io.Reader)(nil)).Elem(), ByteOffset: 123, JSONPointer: "/foo/2/bar/3", Err: errors.New("some underlying error")}, want: "json: cannot unmarshal JSON object into Go value of type io.Reader within JSON value at \"/foo/2/bar/3\": some underlying error", }, { err: &SemanticError{Err: errors.New("some underlying error")}, want: "json: cannot handle: some underlying error", }, { err: &SemanticError{ByteOffset: 123}, want: "json: cannot handle after byte offset 123", }, { err: &SemanticError{JSONPointer: "/foo/2/bar/3"}, want: "json: cannot handle within JSON value at \"/foo/2/bar/3\"", }} for _, tt := range tests { got := tt.err.Error() // Cleanup the error of non-deterministic rendering effects. if strings.HasPrefix(got, errorPrefix+"unable to ") { got = errorPrefix + "cannot " + strings.TrimPrefix(got, errorPrefix+"unable to ") } if got != tt.want { t.Errorf("%#v.Error mismatch:\ngot %v\nwant %v", tt.err, got, tt.want) } } } func TestErrorsIs(t *testing.T) { const ( someGlobalError = jsonError("some global error") otherGlobalError = jsonError("other global error") ) var ( someIOError = &ioError{action: "write", err: io.ErrShortWrite} otherIOError = &ioError{action: "read", err: io.ErrUnexpectedEOF} someSyntacticError = &SyntacticError{str: "some syntactic error"} otherSyntacticError = &SyntacticError{str: "other syntactic error"} someSemanticError = &SemanticError{action: "unmarshal", JSONKind: '0', GoType: reflect.TypeOf(int(0)), Err: strconv.ErrRange} otherSemanticError = &SemanticError{action: "marshal", GoType: reflect.TypeOf(complex128(0))} ) tests := []struct { err error target error want bool }{ // Top-level Error should match itself (identity). {Error, Error, true}, // All sub-error values should match the top-level Error value. {someGlobalError, Error, true}, {someIOError, Error, true}, {someSyntacticError, Error, true}, {someSemanticError, Error, true}, // Top-level Error should not match any other sub-error value. {Error, someGlobalError, false}, {Error, someIOError, false}, {Error, someSyntacticError, false}, {Error, someSemanticError, false}, // Sub-error values should match itself (identity). {someGlobalError, someGlobalError, true}, {someIOError, someIOError, true}, {someSyntacticError, someSyntacticError, true}, {someSemanticError, someSemanticError, true}, // Sub-error values should not match each other. {someGlobalError, someIOError, false}, {someIOError, someSyntacticError, false}, {someSyntacticError, someSemanticError, false}, {someSemanticError, someGlobalError, false}, // Sub-error values should not match other error values of same type. {someGlobalError, otherGlobalError, false}, {someIOError, otherIOError, false}, {someSyntacticError, otherSyntacticError, false}, {someSemanticError, otherSemanticError, false}, // Error should not match any other random error. {Error, nil, false}, {nil, Error, false}, {io.ErrShortWrite, Error, false}, {Error, io.ErrShortWrite, false}, // Wrapped errors should be matched. {&ioError{err: fmt.Errorf("%w", io.ErrShortWrite)}, io.ErrShortWrite, true}, // doubly wrapped {&ioError{err: io.ErrShortWrite}, io.ErrShortWrite, true}, // singly wrapped {&ioError{err: io.ErrShortWrite}, io.EOF, false}, {&SemanticError{Err: fmt.Errorf("%w", strconv.ErrRange)}, strconv.ErrRange, true}, // doubly wrapped {&SemanticError{Err: strconv.ErrRange}, strconv.ErrRange, true}, // singly wrapped {&SemanticError{Err: strconv.ErrRange}, io.EOF, false}, } for _, tt := range tests { got := errors.Is(tt.err, tt.target) if got != tt.want { t.Errorf("errors.Is(%#v, %#v) = %v, want %v", tt.err, tt.target, got, tt.want) } // If the type supports the Is method, // it should behave the same way if called directly. if iserr, ok := tt.err.(interface{ Is(error) bool }); ok { got := iserr.Is(tt.target) if got != tt.want { t.Errorf("%#v.Is(%#v) = %v, want %v", tt.err, tt.target, got, tt.want) } } } } func TestQuoteRune(t *testing.T) { tests := []struct{ in, want string }{ {"x", `'x'`}, {"\n", `'\n'`}, {"'", `'\''`}, {"\xff", `'\xff'`}, {"💩", `'💩'`}, {"💩"[:1], `'\xf0'`}, {"\uffff", `'\uffff'`}, {"\U00101234", `'\U00101234'`}, } for _, tt := range tests { got := quoteRune([]byte(tt.in)) if got != tt.want { t.Errorf("quoteRune(%q) = %s, want %s", tt.in, got, tt.want) } } } example_orderedobject_test.go000066400000000000000000000062301453663023200377050ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2022 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json_test import ( "fmt" "log" "reflect" "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" ) // OrderedObject is an ordered sequence of name/value members in a JSON object. // // RFC 8259 defines an object as an "unordered collection". // JSON implementations need not make "ordering of object members visible" // to applications nor will they agree on the semantic meaning of an object if // "the names within an object are not unique". For maximum compatibility, // applications should avoid relying on ordering or duplicity of object names. type OrderedObject[V any] []ObjectMember[V] // ObjectMember is a JSON object member. type ObjectMember[V any] struct { Name string Value V } // MarshalNextJSON encodes obj as a JSON object into enc. func (obj *OrderedObject[V]) MarshalNextJSON(opts json.MarshalOptions, enc *json.Encoder) error { if err := enc.WriteToken(json.ObjectStart); err != nil { return err } for i := range *obj { member := &(*obj)[i] if err := opts.MarshalNext(enc, &member.Name); err != nil { return err } if err := opts.MarshalNext(enc, &member.Value); err != nil { return err } } if err := enc.WriteToken(json.ObjectEnd); err != nil { return err } return nil } // UnmarshalNextJSON decodes a JSON object from dec into obj. func (obj *OrderedObject[V]) UnmarshalNextJSON(opts json.UnmarshalOptions, dec *json.Decoder) error { if k := dec.PeekKind(); k != '{' { return fmt.Errorf("expected object start, but encountered %v", k) } if _, err := dec.ReadToken(); err != nil { return err } for dec.PeekKind() != '}' { *obj = append(*obj, ObjectMember[V]{}) member := &(*obj)[len(*obj)-1] if err := opts.UnmarshalNext(dec, &member.Name); err != nil { return err } if err := opts.UnmarshalNext(dec, &member.Value); err != nil { return err } } if _, err := dec.ReadToken(); err != nil { return err } return nil } // The exact order of JSON object can be preserved through the use of a // specialized type that implements MarshalerV2 and UnmarshalerV2. func Example_orderedObject() { // Round-trip marshal and unmarshal an ordered object. // We expect the order and duplicity of JSON object members to be preserved. want := OrderedObject[string]{ {"fizz", "buzz"}, {"hello", "world"}, {"fizz", "wuzz"}, } b, err := json.MarshalOptions{}.Marshal(json.EncodeOptions{ AllowDuplicateNames: true, // since the object contains "fizz" twice }, &want) if err != nil { log.Fatal(err) } var got OrderedObject[string] err = json.UnmarshalOptions{}.Unmarshal(json.DecodeOptions{ AllowDuplicateNames: true, // since the object contains "fizz" twice }, b, &got) if err != nil { log.Fatal(err) } // Sanity check. if !reflect.DeepEqual(got, want) { log.Fatalf("roundtrip mismatch: got %v, want %v", got, want) } // Print the serialized JSON object. (*json.RawValue)(&b).Indent("", "\t") // indent for readability fmt.Println(string(b)) // Output: // { // "fizz": "buzz", // "hello": "world", // "fizz": "wuzz" // } } example_test.go000066400000000000000000000657741453663023200350340ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2022 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json_test import ( "bytes" "errors" "fmt" "io" "log" "math" "net/http" "net/netip" "os" "reflect" "strconv" "strings" "sync/atomic" "time" "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" ) // If a type implements encoding.TextMarshaler and/or encoding.TextUnmarshaler, // then the MarshalText and UnmarshalText methods are used to encode/decode // the value to/from a JSON string. func Example_textMarshal() { // Round-trip marshal and unmarshal a hostname map where the netip.Addr type // implements both encoding.TextMarshaler and encoding.TextUnmarshaler. want := map[netip.Addr]string{ netip.MustParseAddr("192.168.0.100"): "carbonite", netip.MustParseAddr("192.168.0.101"): "obsidian", netip.MustParseAddr("192.168.0.102"): "diamond", } b, err := json.Marshal(&want) if err != nil { log.Fatal(err) } var got map[netip.Addr]string err = json.Unmarshal(b, &got) if err != nil { log.Fatal(err) } // Sanity check. if !reflect.DeepEqual(got, want) { log.Fatalf("roundtrip mismatch: got %v, want %v", got, want) } // Print the serialized JSON object. Canonicalize the JSON first since // Go map entries are not serialized in a deterministic order. (*json.RawValue)(&b).Canonicalize() (*json.RawValue)(&b).Indent("", "\t") // indent for readability fmt.Println(string(b)) // Output: // { // "192.168.0.100": "carbonite", // "192.168.0.101": "obsidian", // "192.168.0.102": "diamond" // } } // By default, JSON object names for Go struct fields are derived from // the Go field name, but may be specified in the `json` tag. // Due to JSON's heritage in JavaScript, the most common naming convention // used for JSON object names is camelCase. func Example_fieldNames() { var value struct { // This field is explicitly ignored with the special "-" name. Ignored any `json:"-"` // No JSON name is not provided, so the Go field name is used. GoName any // A JSON name is provided without any special characters. JSONName any `json:"jsonName"` // No JSON name is not provided, so the Go field name is used. Option any `json:",nocase"` // An empty JSON name specified using an single-quoted string literal. Empty any `json:"''"` // A dash JSON name specified using an single-quoted string literal. Dash any `json:"'-'"` // A comma JSON name specified using an single-quoted string literal. Comma any `json:"','"` // JSON name with quotes specified using a single-quoted string literal. Quote any `json:"'\"\\''"` // An unexported field is always ignored. unexported any } b, err := json.Marshal(value) if err != nil { log.Fatal(err) } (*json.RawValue)(&b).Indent("", "\t") // indent for readability fmt.Println(string(b)) // Output: // { // "GoName": null, // "jsonName": null, // "Option": null, // "": null, // "-": null, // ",": null, // "\"'": null // } } // Unmarshal matches JSON object names with Go struct fields using // a case-sensitive match, but can be configured to use a case-insensitive // match with the "nocase" option. This permits unmarshaling from inputs that // use naming conventions such as camelCase, snake_case, or kebab-case. func Example_caseSensitivity() { // JSON input using various naming conventions. const input = `[ {"firstname": true}, {"firstName": true}, {"FirstName": true}, {"FIRSTNAME": true}, {"first_name": true}, {"FIRST_NAME": true}, {"first-name": true}, {"FIRST-NAME": true}, {"unknown": true} ]` // Without "nocase", Unmarshal looks for an exact match. var withcase []struct { X bool `json:"firstName"` } if err := json.Unmarshal([]byte(input), &withcase); err != nil { log.Fatal(err) } fmt.Println(withcase) // exactly 1 match found // With "nocase", Unmarshal looks first for an exact match, // then for a case-insensitive match if none found. var nocase []struct { X bool `json:"firstName,nocase"` } if err := json.Unmarshal([]byte(input), &nocase); err != nil { log.Fatal(err) } fmt.Println(nocase) // 8 matches found // Output: // [{false} {true} {false} {false} {false} {false} {false} {false} {false}] // [{true} {true} {true} {true} {true} {true} {true} {true} {false}] } // Go struct fields can be omitted from the output depending on either // the input Go value or the output JSON encoding of the value. // The "omitzero" option omits a field if it is the zero Go value or // implements a "IsZero() bool" method that reports true. // The "omitempty" option omits a field if it encodes as an empty JSON value, // which we define as a JSON null or empty JSON string, object, or array. // In many cases, the behavior of "omitzero" and "omitempty" are equivalent. // If both provide the desired effect, then using "omitzero" is preferred. func Example_omitFields() { type MyStruct struct { Foo string `json:",omitzero"` Bar []int `json:",omitempty"` // Both "omitzero" and "omitempty" can be specified together, // in which case the field is omitted if either would take effect. // This omits the Baz field either if it is a nil pointer or // if it would have encoded as an empty JSON object. Baz *MyStruct `json:",omitzero,omitempty"` } // Demonstrate behavior of "omitzero". b, err := json.Marshal(struct { Bool bool `json:",omitzero"` Int int `json:",omitzero"` String string `json:",omitzero"` Time time.Time `json:",omitzero"` Addr netip.Addr `json:",omitzero"` Struct MyStruct `json:",omitzero"` SliceNil []int `json:",omitzero"` Slice []int `json:",omitzero"` MapNil map[int]int `json:",omitzero"` Map map[int]int `json:",omitzero"` PointerNil *string `json:",omitzero"` Pointer *string `json:",omitzero"` InterfaceNil any `json:",omitzero"` Interface any `json:",omitzero"` }{ // Bool is omitted since false is the zero value for a Go bool. Bool: false, // Int is omitted since 0 is the zero value for a Go int. Int: 0, // String is omitted since "" is the zero value for a Go string. String: "", // Time is omitted since time.Time.IsZero reports true. Time: time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC), // Addr is omitted since netip.Addr{} is the zero value for a Go struct. Addr: netip.Addr{}, // Struct is NOT omitted since it is not the zero value for a Go struct. Struct: MyStruct{Bar: []int{}, Baz: new(MyStruct)}, // SliceNil is omitted since nil is the zero value for a Go slice. SliceNil: nil, // Slice is NOT omitted since []int{} is not the zero value for a Go slice. Slice: []int{}, // MapNil is omitted since nil is the zero value for a Go map. MapNil: nil, // Map is NOT omitted since map[int]int{} is not the zero value for a Go map. Map: map[int]int{}, // PointerNil is omitted since nil is the zero value for a Go pointer. PointerNil: nil, // Pointer is NOT omitted since new(string) is not the zero value for a Go pointer. Pointer: new(string), // InterfaceNil is omitted since nil is the zero value for a Go interface. InterfaceNil: nil, // Interface is NOT omitted since (*string)(nil) is not the zero value for a Go interface. Interface: (*string)(nil), }) if err != nil { log.Fatal(err) } (*json.RawValue)(&b).Indent("", "\t") // indent for readability fmt.Println("OmitZero:", string(b)) // outputs "Struct", "Slice", "Map", "Pointer", and "Interface" // Demonstrate behavior of "omitempty". b, err = json.Marshal(struct { Bool bool `json:",omitempty"` Int int `json:",omitempty"` String string `json:",omitempty"` Time time.Time `json:",omitempty"` Addr netip.Addr `json:",omitempty"` Struct MyStruct `json:",omitempty"` Slice []int `json:",omitempty"` Map map[int]int `json:",omitempty"` PointerNil *string `json:",omitempty"` Pointer *string `json:",omitempty"` InterfaceNil any `json:",omitempty"` Interface any `json:",omitempty"` }{ // Bool is NOT omitted since false is not an empty JSON value. Bool: false, // Int is NOT omitted since 0 is not a empty JSON value. Int: 0, // String is omitted since "" is an empty JSON string. String: "", // Time is NOT omitted since this encodes as a non-empty JSON string. Time: time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC), // Addr is omitted since this encodes as an empty JSON string. Addr: netip.Addr{}, // Struct is omitted since {} is an empty JSON object. Struct: MyStruct{Bar: []int{}, Baz: new(MyStruct)}, // Slice is omitted since [] is an empty JSON array. Slice: []int{}, // Map is omitted since {} is an empty JSON object. Map: map[int]int{}, // PointerNil is ommited since null is an empty JSON value. PointerNil: nil, // Pointer is omitted since "" is an empty JSON string. Pointer: new(string), // InterfaceNil is omitted since null is an empty JSON value. InterfaceNil: nil, // Interface is omitted since null is an empty JSON value. Interface: (*string)(nil), }) if err != nil { log.Fatal(err) } (*json.RawValue)(&b).Indent("", "\t") // indent for readability fmt.Println("OmitEmpty:", string(b)) // outputs "Bool", "Int", and "Time" // Output: // OmitZero: { // "Struct": {}, // "Slice": [], // "Map": {}, // "Pointer": "", // "Interface": null // } // OmitEmpty: { // "Bool": false, // "Int": 0, // "Time": "0001-01-01T00:00:00Z" // } } // JSON objects can be inlined within a parent object similar to // how Go structs can be embedded within a parent struct. // The inlining rules are similar to those of Go embedding, // but operates upon the JSON namespace. func Example_inlinedFields() { // Base is embedded within Container. type Base struct { // ID is promoted into the JSON object for Container. ID string // Type is ignored due to presence of Container.Type. Type string // Time cancels out with Container.Inlined.Time. Time time.Time } // Other is embedded within Container. type Other struct{ Cost float64 } // Container embeds Base and Other. type Container struct { // Base is an embedded struct and is implicitly JSON inlined. Base // Type takes precedence over Base.Type. Type int // Inlined is a named Go field, but is explicitly JSON inlined. Inlined struct { // User is promoted into the JSON object for Container. User string // Time cancels out with Base.Time. Time string } `json:",inline"` // ID does not conflict with Base.ID since the JSON name is different. ID string `json:"uuid"` // Other is not JSON inlined since it has an explicit JSON name. Other `json:"other"` } // Format an empty Container to show what fields are JSON serializable. var input Container b, err := json.Marshal(&input) if err != nil { log.Fatal(err) } (*json.RawValue)(&b).Indent("", "\t") // indent for readability fmt.Println(string(b)) // Output: // { // "ID": "", // "Type": 0, // "User": "", // "uuid": "", // "other": { // "Cost": 0 // } // } } // Due to version skew, the set of JSON object members known at compile-time // may differ from the set of members encountered at execution-time. // As such, it may be useful to have finer grain handling of unknown members. // This package supports preserving, rejecting, or discarding such members. func Example_unknownMembers() { const input = `{ "Name": "Teal", "Value": "#008080", "WebSafe": false }` type Color struct { Name string Value string // Unknown is a Go struct field that holds unknown JSON object members. // It is marked as having this behavior with the "unknown" tag option. // // The type may be a RawValue or map[string]T. Unknown json.RawValue `json:",unknown"` } // By default, unknown members are stored in a Go field marked as "unknown" // or ignored if no such field exists. var color Color err := json.Unmarshal([]byte(input), &color) if err != nil { log.Fatal(err) } fmt.Println("Unknown members:", string(color.Unknown)) // Specifying UnmarshalOptions.RejectUnknownMembers causes // Unmarshal to reject the presence of any unknown members. err = json.UnmarshalOptions{ RejectUnknownMembers: true, }.Unmarshal(json.DecodeOptions{}, []byte(input), new(Color)) if err != nil { fmt.Println("Unmarshal error:", errors.Unwrap(err)) } // By default, Marshal preserves unknown members stored in // a Go struct field marked as "unknown". b, err := json.Marshal(color) if err != nil { log.Fatal(err) } fmt.Println("Output with unknown members: ", string(b)) // Specifying MarshalOptions.DiscardUnknownMembers causes // Marshal to discard any unknown members. b, err = json.MarshalOptions{ DiscardUnknownMembers: true, }.Marshal(json.EncodeOptions{}, color) if err != nil { log.Fatal(err) } fmt.Println("Output without unknown members:", string(b)) // Output: // Unknown members: {"WebSafe":false} // Unmarshal error: unknown name "WebSafe" // Output with unknown members: {"Name":"Teal","Value":"#008080","WebSafe":false} // Output without unknown members: {"Name":"Teal","Value":"#008080"} } // The "format" tag option can be used to alter the formatting of certain types. func Example_formatFlags() { value := struct { BytesBase64 []byte `json:",format:base64"` BytesHex [8]byte `json:",format:hex"` BytesArray []byte `json:",format:array"` FloatNonFinite float64 `json:",format:nonfinite"` MapEmitNull map[string]any `json:",format:emitnull"` SliceEmitNull []any `json:",format:emitnull"` TimeDateOnly time.Time `json:",format:'2006-01-02'"` DurationNanos time.Duration `json:",format:nanos"` }{ BytesBase64: []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}, BytesHex: [8]byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}, BytesArray: []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}, FloatNonFinite: math.NaN(), MapEmitNull: nil, SliceEmitNull: nil, TimeDateOnly: time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC), DurationNanos: time.Second + time.Millisecond + time.Microsecond + time.Nanosecond, } b, err := json.Marshal(&value) if err != nil { log.Fatal(err) } (*json.RawValue)(&b).Indent("", "\t") // indent for readability fmt.Println(string(b)) // Output: // { // "BytesBase64": "ASNFZ4mrze8=", // "BytesHex": "0123456789abcdef", // "BytesArray": [ // 1, // 35, // 69, // 103, // 137, // 171, // 205, // 239 // ], // "FloatNonFinite": "NaN", // "MapEmitNull": null, // "SliceEmitNull": null, // "TimeDateOnly": "2000-01-01", // "DurationNanos": 1001001001 // } } // When implementing HTTP endpoints, it is common to be operating with an // io.Reader and an io.Writer. The UnmarshalFull and MarshalFull functions // assist in operating on such input/output types. // UnmarshalFull reads the entirety of the io.Reader to ensure that io.EOF // is encountered without any unexpected bytes after the top-level JSON value. func Example_serveHTTP() { // Some global state maintained by the server. var n int64 // The "add" endpoint accepts a POST request with a JSON object // containing a number to atomically add to the server's global counter. // It returns the updated value of the counter. http.HandleFunc("/api/add", func(w http.ResponseWriter, r *http.Request) { // Unmarshal the request from the client. var val struct{ N int64 } if err := json.UnmarshalFull(r.Body, &val); err != nil { // Inability to unmarshal the input suggests a client-side problem. http.Error(w, err.Error(), http.StatusBadRequest) return } // Marshal a response from the server. val.N = atomic.AddInt64(&n, val.N) if err := json.MarshalFull(w, &val); err != nil { // Inability to marshal the output suggests a server-side problem. // This error is not always observable by the client since // json.MarshalFull may have already written to the output. http.Error(w, err.Error(), http.StatusInternalServerError) return } }) } // Some Go types have a custom JSON represention where the implementation // is delegated to some external package. Consequentely, the "json" package // will not know how to use that external implementation. // For example, the "google.golang.org/protobuf/encoding/protojson" package // implements JSON for all "google.golang.org/protobuf/proto".Message types. // MarshalOptions.Marshalers and UnmarshalOptions.Unmarshalers can be used // to configure "json" and "protojson" to cooperate together. func Example_protoJSON() { // Let protoMessage be "google.golang.org/protobuf/proto".Message. type protoMessage interface{ ProtoReflect() } // Let foopbMyMessage be a concrete implementation of proto.Message. type foopbMyMessage struct{ protoMessage } // Let protojson be an import of "google.golang.org/protobuf/encoding/protojson". var protojson struct { Marshal func(protoMessage) ([]byte, error) Unmarshal func([]byte, protoMessage) error } // This value mixes both non-proto.Message types and proto.Message types. // It should use the "json" package to handle non-proto.Message types and // should use the "protojson" package to handle proto.Message types. var value struct { // GoStruct does not implement proto.Message and // should use the default behavior of the "json" package. GoStruct struct { Name string Age int } // ProtoMessage implements proto.Message and // should be handled using protojson.Marshal. ProtoMessage *foopbMyMessage } // Marshal using protojson.Marshal for proto.Message types. b, err := json.MarshalOptions{ // Use protojson.Marshal as a type-specific marshaler. Marshalers: json.MarshalFuncV1(protojson.Marshal), }.Marshal(json.EncodeOptions{}, &value) if err != nil { log.Fatal(err) } // Unmarshal using protojson.Unmarshal for proto.Message types. err = json.UnmarshalOptions{ // Use protojson.Unmarshal as a type-specific unmarshaler. Unmarshalers: json.UnmarshalFuncV1(protojson.Unmarshal), }.Unmarshal(json.DecodeOptions{}, b, &value) if err != nil { log.Fatal(err) } } // This example demonstrates the use of the Encoder and Decoder to // parse and modify JSON without unmarshaling it into a concrete Go type. func Example_stringReplace() { // Example input with non-idiomatic use of "Golang" instead of "Go". const input = `{ "title": "Golang version 1 is released", "author": "Andrew Gerrand", "date": "2012-03-28", "text": "Today marks a major milestone in the development of the Golang programming language.", "otherArticles": [ "Twelve Years of Golang", "The Laws of Reflection", "Learn Golang from your browser" ] }` // Using a Decoder and Encoder, we can parse through every token, // check and modify the token if necessary, and // write the token to the output. var replacements []string in := strings.NewReader(input) dec := json.NewDecoder(in) out := new(bytes.Buffer) enc := json.EncodeOptions{Indent: "\t"}.NewEncoder(out) // indent for readability for { // Read a token from the input. tok, err := dec.ReadToken() if err != nil { if err == io.EOF { break } log.Fatal(err) } // Check whether the token contains the string "Golang" and // replace each occurence with "Go" instead. if tok.Kind() == '"' && strings.Contains(tok.String(), "Golang") { replacements = append(replacements, dec.StackPointer()) tok = json.String(strings.ReplaceAll(tok.String(), "Golang", "Go")) } // Write the (possibly modified) token to the output. if err := enc.WriteToken(tok); err != nil { log.Fatal(err) } } // Print the list of replacements and the adjusted JSON output. if len(replacements) > 0 { fmt.Println(`Replaced "Golang" with "Go" in:`) for _, where := range replacements { fmt.Println("\t" + where) } fmt.Println() } fmt.Println("Result:", out.String()) // Output: // Replaced "Golang" with "Go" in: // /title // /text // /otherArticles/0 // /otherArticles/2 // // Result: { // "title": "Go version 1 is released", // "author": "Andrew Gerrand", // "date": "2012-03-28", // "text": "Today marks a major milestone in the development of the Go programming language.", // "otherArticles": [ // "Twelve Years of Go", // "The Laws of Reflection", // "Learn Go from your browser" // ] // } } // Directly embedding JSON within HTML requires special handling for safety. // Escape certain runes to prevent JSON directly treated as HTML // from being able to perform `, } b, err := json.MarshalOptions{}.Marshal(json.EncodeOptions{ // Escape certain runes within a JSON string so that // JSON will be safe to directly embed inside HTML. EscapeRune: func(r rune) bool { switch r { case '&', '<', '>', '\u2028', '\u2029': return true default: return false } }, // Indent the output for readability. Indent: "\t", }, &page) if err != nil { log.Fatal(err) } fmt.Println(string(b)) // Output: // { // "Title": "Example Embedded Javascript", // "Body": "\u003cscript\u003e console.log(\"Hello, world!\"); \u003c/script\u003e" // } } // Many error types are not serializable since they tend to be Go structs // without any exported fields (e.g., errors constructed with errors.New). // Some applications, may desire to marshal an error as a JSON string // even if these errors cannot be unmarshaled. func ExampleMarshalOptions_errors() { // Response to serialize with some Go errors encountered. response := []struct { Result string `json:",omitzero"` Error error `json:",omitzero"` }{ {Result: "Oranges are a good source of Vitamin C."}, {Error: &strconv.NumError{Func: "ParseUint", Num: "-1234", Err: strconv.ErrSyntax}}, {Error: &os.PathError{Op: "ReadFile", Path: "/path/to/secret/file", Err: os.ErrPermission}}, } b, err := json.MarshalOptions{ // Intercept every attempt to marshal an error type. Marshalers: json.NewMarshalers( // Suppose we consider strconv.NumError to be a safe to serialize: // this type-specific marshal function intercepts this type // and encodes the error message as a JSON string. json.MarshalFuncV2(func(opts json.MarshalOptions, enc *json.Encoder, err *strconv.NumError) error { return enc.WriteToken(json.String(err.Error())) }), // Error messages may contain sensitive information that may not // be appropriate to serialize. For all errors not handled above, // report some generic error message. json.MarshalFuncV1(func(error) ([]byte, error) { return []byte(`"internal server error"`), nil }), ), }.Marshal(json.EncodeOptions{ Indent: "\t", // indent for readability }, &response) if err != nil { log.Fatal(err) } fmt.Println(string(b)) // Output: // [ // { // "Result": "Oranges are a good source of Vitamin C." // }, // { // "Error": "strconv.ParseUint: parsing \"-1234\": invalid syntax" // }, // { // "Error": "internal server error" // } // ] } // In some applications, the exact precision of JSON numbers needs to be // preserved when unmarshaling. This can be accomplished using a type-specific // unmarshal function that intercepts all any types and pre-populates the // interface value with a RawValue, which can represent a JSON number exactly. func ExampleUnmarshalOptions_rawNumber() { // Input with JSON numbers beyond the representation of a float64. const input = `[false, 1e-1000, 3.141592653589793238462643383279, 1e+1000, true]` var value any err := json.UnmarshalOptions{ // Intercept every attempt to unmarshal into the any type. Unmarshalers: json.UnmarshalFuncV2(func(opts json.UnmarshalOptions, dec *json.Decoder, val *any) error { // If the next value to be decoded is a JSON number, // then provide a concrete Go type to unmarshal into. if dec.PeekKind() == '0' { *val = json.RawValue(nil) } // Return SkipFunc to fallback on default unmarshal behavior. return json.SkipFunc }), }.Unmarshal(json.DecodeOptions{}, []byte(input), &value) if err != nil { log.Fatal(err) } fmt.Println(value) // Sanity check. want := []any{false, json.RawValue("1e-1000"), json.RawValue("3.141592653589793238462643383279"), json.RawValue("1e+1000"), true} if !reflect.DeepEqual(value, want) { log.Fatalf("value mismatch:\ngot %v\nwant %v", value, want) } // Output: // [false 1e-1000 3.141592653589793238462643383279 1e+1000 true] } // When using JSON for parsing configuration files, // the parsing logic often needs to report an error with a line and column // indicating where in the input an error occurred. func ExampleUnmarshalOptions_recordOffsets() { // Hypothetical configuration file. const input = `[ {"Source": "192.168.0.100:1234", "Destination": "192.168.0.1:80"}, {"Source": "192.168.0.251:4004"}, {"Source": "192.168.0.165:8080", "Destination": "0.0.0.0:80"} ]` type Tunnel struct { Source netip.AddrPort Destination netip.AddrPort // ByteOffset is populated during unmarshal with the byte offset // within the JSON input of the JSON object for this Go struct. ByteOffset int64 `json:"-"` // metadata to be ignored for JSON serialization } var tunnels []Tunnel err := json.UnmarshalOptions{ // Intercept every attempt to unmarshal into the Tunnel type. Unmarshalers: json.UnmarshalFuncV2(func(opts json.UnmarshalOptions, dec *json.Decoder, tunnel *Tunnel) error { // Decoder.InputOffset reports the offset after the last token, // but we want to record the offset before the next token. // // Call Decoder.PeekKind to buffer enough to reach the next token. // Add the number of leading whitespace, commas, and colons // to locate the start of the next token. dec.PeekKind() unread := dec.UnreadBuffer() n := len(unread) - len(bytes.TrimLeft(unread, " \n\r\t,:")) tunnel.ByteOffset = dec.InputOffset() + int64(n) // Return SkipFunc to fallback on default unmarshal behavior. return json.SkipFunc }), }.Unmarshal(json.DecodeOptions{}, []byte(input), &tunnels) if err != nil { log.Fatal(err) } // lineColumn converts a byte offset into a one-indexed line and column. // The offset must be within the bounds of the input. lineColumn := func(input string, offset int) (line, column int) { line = 1 + strings.Count(input[:offset], "\n") column = 1 + offset - (strings.LastIndex(input[:offset], "\n") + len("\n")) return line, column } // Verify that the configuration file is valid. for _, tunnel := range tunnels { if !tunnel.Source.IsValid() || !tunnel.Destination.IsValid() { line, column := lineColumn(input, int(tunnel.ByteOffset)) fmt.Printf("%d:%d: source and destination must both be specified", line, column) } } // Output: // 3:3: source and destination must both be specified } fields.go000066400000000000000000000453211453663023200335720ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2021 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "errors" "fmt" "io" "reflect" "sort" "strconv" "strings" "unicode" "unicode/utf8" ) var errIgnoredField = errors.New("ignored field") type isZeroer interface { IsZero() bool } var isZeroerType = reflect.TypeOf((*isZeroer)(nil)).Elem() type structFields struct { flattened []structField // listed in depth-first ordering byActualName map[string]*structField byFoldedName map[string][]*structField inlinedFallback *structField } type structField struct { id int // unique numeric ID in breadth-first ordering index []int // index into a struct according to reflect.Type.FieldByIndex typ reflect.Type fncs *arshaler isZero func(addressableValue) bool isEmpty func(addressableValue) bool fieldOptions } func makeStructFields(root reflect.Type) (structFields, *SemanticError) { var fs structFields fs.byActualName = make(map[string]*structField, root.NumField()) fs.byFoldedName = make(map[string][]*structField, root.NumField()) // ambiguous is a sentinel value to indicate that at least two fields // at the same depth have the same name, and thus cancel each other out. // This follows the same rules as selecting a field on embedded structs // where the shallowest field takes precedence. If more than one field // exists at the shallowest depth, then the selection is illegal. // See https://go.dev/ref/spec#Selectors. ambiguous := new(structField) // Setup a queue for a breath-first search. var queueIndex int type queueEntry struct { typ reflect.Type index []int visitChildren bool // whether to recursively visit inlined field in this struct } queue := []queueEntry{{root, nil, true}} seen := map[reflect.Type]bool{root: true} // Perform a breadth-first search over all reachable fields. // This ensures that len(f.index) will be monotonically increasing. for queueIndex < len(queue) { qe := queue[queueIndex] queueIndex++ t := qe.typ inlinedFallbackIndex := -1 // index of last inlined fallback field in current struct namesIndex := make(map[string]int) // index of each field with a given JSON object name in current struct var hasAnyJSONTag bool // whether any Go struct field has a `json` tag var hasAnyJSONField bool // whether any JSON serializable fields exist in current struct for i := 0; i < t.NumField(); i++ { sf := t.Field(i) _, hasTag := sf.Tag.Lookup("json") hasAnyJSONTag = hasAnyJSONTag || hasTag options, err := parseFieldOptions(sf) if err != nil { if err == errIgnoredField { continue } return structFields{}, &SemanticError{GoType: t, Err: err} } hasAnyJSONField = true f := structField{ // Allocate a new slice (len=N+1) to hold both // the parent index (len=N) and the current index (len=1). // Do this to avoid clobbering the memory of the parent index. index: append(append(make([]int, 0, len(qe.index)+1), qe.index...), i), typ: sf.Type, fieldOptions: options, } if sf.Anonymous && !f.hasName { f.inline = true // implied by use of Go embedding without an explicit name } if f.inline || f.unknown { // Handle an inlined field that serializes to/from // zero or more JSON object members. if f.inline && f.unknown { err := fmt.Errorf("Go struct field %s cannot have both `inline` and `unknown` specified", sf.Name) return structFields{}, &SemanticError{GoType: t, Err: err} } switch f.fieldOptions { case fieldOptions{name: f.name, quotedName: f.quotedName, inline: true}: case fieldOptions{name: f.name, quotedName: f.quotedName, unknown: true}: default: err := fmt.Errorf("Go struct field %s cannot have any options other than `inline` or `unknown` specified", sf.Name) return structFields{}, &SemanticError{GoType: t, Err: err} } // Unwrap one level of pointer indirection similar to how Go // only allows embedding either T or *T, but not **T. tf := f.typ if tf.Kind() == reflect.Pointer && tf.Name() == "" { tf = tf.Elem() } // Reject any types with custom serialization otherwise // it becomes impossible to know what sub-fields to inline. if which, _ := implementsWhich(tf, jsonMarshalerV2Type, jsonMarshalerV1Type, textMarshalerType, jsonUnmarshalerV2Type, jsonUnmarshalerV1Type, textUnmarshalerType, ); which != nil && tf != rawValueType { err := fmt.Errorf("inlined Go struct field %s of type %s must not implement JSON marshal or unmarshal methods", sf.Name, tf) return structFields{}, &SemanticError{GoType: t, Err: err} } // Handle an inlined field that serializes to/from // a finite number of JSON object members backed by a Go struct. if tf.Kind() == reflect.Struct { if f.unknown { err := fmt.Errorf("inlined Go struct field %s of type %s with `unknown` tag must be a Go map of string key or a json.RawValue", sf.Name, tf) return structFields{}, &SemanticError{GoType: t, Err: err} } if qe.visitChildren { queue = append(queue, queueEntry{tf, f.index, !seen[tf]}) } seen[tf] = true continue } // Handle an inlined field that serializes to/from any number of // JSON object members back by a Go map or RawValue. switch { case tf == rawValueType: f.fncs = nil // specially handled in arshal_inlined.go case tf.Kind() == reflect.Map && tf.Key() == stringType: f.fncs = lookupArshaler(tf.Elem()) default: err := fmt.Errorf("inlined Go struct field %s of type %s must be a Go struct, Go map of string key, or json.RawValue", sf.Name, tf) return structFields{}, &SemanticError{GoType: t, Err: err} } // Reject multiple inlined fallback fields within the same struct. if inlinedFallbackIndex >= 0 { err := fmt.Errorf("inlined Go struct fields %s and %s cannot both be a Go map or json.RawValue", t.Field(inlinedFallbackIndex).Name, sf.Name) return structFields{}, &SemanticError{GoType: t, Err: err} } inlinedFallbackIndex = i // Multiple inlined fallback fields across different structs // follow the same precedence rules as Go struct embedding. if fs.inlinedFallback == nil { fs.inlinedFallback = &f // store first occurrence at lowest depth } else if len(fs.inlinedFallback.index) == len(f.index) { fs.inlinedFallback = ambiguous // at least two occurrences at same depth } } else { // Handle normal Go struct field that serializes to/from // a single JSON object member. // Provide a function that uses a type's IsZero method. switch { case sf.Type.Kind() == reflect.Interface && sf.Type.Implements(isZeroerType): f.isZero = func(va addressableValue) bool { // Avoid panics calling IsZero on a nil interface or // non-nil interface with nil pointer. return va.IsNil() || (va.Elem().Kind() == reflect.Pointer && va.Elem().IsNil()) || va.Interface().(isZeroer).IsZero() } case sf.Type.Kind() == reflect.Pointer && sf.Type.Implements(isZeroerType): f.isZero = func(va addressableValue) bool { // Avoid panics calling IsZero on nil pointer. return va.IsNil() || va.Interface().(isZeroer).IsZero() } case sf.Type.Implements(isZeroerType): f.isZero = func(va addressableValue) bool { return va.Interface().(isZeroer).IsZero() } case reflect.PointerTo(sf.Type).Implements(isZeroerType): f.isZero = func(va addressableValue) bool { return va.Addr().Interface().(isZeroer).IsZero() } } // Provide a function that can determine whether the value would // serialize as an empty JSON value. switch sf.Type.Kind() { case reflect.String, reflect.Map, reflect.Array, reflect.Slice: f.isEmpty = func(va addressableValue) bool { return va.Len() == 0 } case reflect.Pointer, reflect.Interface: f.isEmpty = func(va addressableValue) bool { return va.IsNil() } } f.id = len(fs.flattened) f.fncs = lookupArshaler(sf.Type) fs.flattened = append(fs.flattened, f) // Reject user-specified names with invalid UTF-8. if !utf8.ValidString(f.name) { err := fmt.Errorf("Go struct field %s has JSON object name %q with invalid UTF-8", sf.Name, f.name) return structFields{}, &SemanticError{GoType: t, Err: err} } // Reject multiple fields with same name within the same struct. if j, ok := namesIndex[f.name]; ok { err := fmt.Errorf("Go struct fields %s and %s conflict over JSON object name %q", t.Field(j).Name, sf.Name, f.name) return structFields{}, &SemanticError{GoType: t, Err: err} } namesIndex[f.name] = i // Multiple fields of the same name across different structs // follow the same precedence rules as Go struct embedding. if f2 := fs.byActualName[f.name]; f2 == nil { fs.byActualName[f.name] = &fs.flattened[len(fs.flattened)-1] // store first occurrence at lowest depth } else if len(f2.index) == len(f.index) { fs.byActualName[f.name] = ambiguous // at least two occurrences at same depth } } } // NOTE: New users to the json package are occasionally surprised that // unexported fields are ignored. This occurs by necessity due to our // inability to directly introspect such fields with Go reflection // without the use of unsafe. // // To reduce friction here, refuse to serialize any Go struct that // has no JSON serializable fields, has at least one Go struct field, // and does not have any `json` tags present. For example, // errors returned by errors.New would fail to serialize. isEmptyStruct := t.NumField() == 0 if !isEmptyStruct && !hasAnyJSONTag && !hasAnyJSONField { err := errors.New("Go struct has no exported fields") return structFields{}, &SemanticError{GoType: t, Err: err} } } // Remove all fields that are duplicates. // This may move elements forward to fill the holes from removed fields. var n int for _, f := range fs.flattened { switch f2 := fs.byActualName[f.name]; { case f2 == ambiguous: delete(fs.byActualName, f.name) case f2 == nil: continue // may be nil due to previous delete // TODO(https://go.dev/issue/45955): Use slices.Equal. case reflect.DeepEqual(f.index, f2.index): f.id = n fs.flattened[n] = f fs.byActualName[f.name] = &fs.flattened[n] // fix pointer to new location n++ } } fs.flattened = fs.flattened[:n] if fs.inlinedFallback == ambiguous { fs.inlinedFallback = nil } if len(fs.flattened) != len(fs.byActualName) { panic(fmt.Sprintf("BUG: flattened list of fields mismatches fields mapped by name: %d != %d", len(fs.flattened), len(fs.byActualName))) } // Sort the fields according to a depth-first ordering. // This operation will cause pointers in byActualName to become incorrect, // which we will correct in another loop shortly thereafter. sort.Slice(fs.flattened, func(i, j int) bool { si := fs.flattened[i].index sj := fs.flattened[j].index for len(si) > 0 && len(sj) > 0 { switch { case si[0] < sj[0]: return true case si[0] > sj[0]: return false default: si = si[1:] sj = sj[1:] } } return len(si) < len(sj) }) // Recompute the mapping of fields in the byActualName map. // Pre-fold all names so that we can lookup folded names quickly. for i, f := range fs.flattened { foldedName := string(foldName([]byte(f.name))) fs.byActualName[f.name] = &fs.flattened[i] fs.byFoldedName[foldedName] = append(fs.byFoldedName[foldedName], &fs.flattened[i]) } for foldedName, fields := range fs.byFoldedName { if len(fields) > 1 { // The precedence order for conflicting nocase names // is by breadth-first order, rather than depth-first order. sort.Slice(fields, func(i, j int) bool { return fields[i].id < fields[j].id }) fs.byFoldedName[foldedName] = fields } } return fs, nil } type fieldOptions struct { name string quotedName string // quoted name per RFC 8785, section 3.2.2.2. hasName bool nocase bool inline bool unknown bool omitzero bool omitempty bool string bool format string } // parseFieldOptions parses the `json` tag in a Go struct field as // a structured set of options configuring parameters such as // the JSON member name and other features. // As a special case, it returns errIgnoredField if the field is ignored. func parseFieldOptions(sf reflect.StructField) (out fieldOptions, err error) { tag, hasTag := sf.Tag.Lookup("json") // Check whether this field is explicitly ignored. if tag == "-" { return fieldOptions{}, errIgnoredField } // Check whether this field is unexported. if !sf.IsExported() { // In contrast to v1, v2 no longer forwards exported fields from // embedded fields of unexported types since Go reflection does not // allow the same set of operations that are available in normal cases // of purely exported fields. // See https://go.dev/issue/21357 and https://go.dev/issue/24153. if sf.Anonymous { return fieldOptions{}, fmt.Errorf("embedded Go struct field %s of an unexported type must be explicitly ignored with a `json:\"-\"` tag", sf.Type.Name()) } // Tag options specified on an unexported field suggests user error. if hasTag { return fieldOptions{}, fmt.Errorf("unexported Go struct field %s cannot have non-ignored `json:%q` tag", sf.Name, tag) } return fieldOptions{}, errIgnoredField } // Determine the JSON member name for this Go field. A user-specified name // may be provided as either an identifier or a single-quoted string. // The single-quoted string allows arbitrary characters in the name. // See https://go.dev/issue/2718 and https://go.dev/issue/3546. out.name = sf.Name // always starts with an uppercase character if len(tag) > 0 && !strings.HasPrefix(tag, ",") { // For better compatibility with v1, accept almost any unescaped name. n := len(tag) - len(strings.TrimLeftFunc(tag, func(r rune) bool { return !strings.ContainsRune(",\\'\"`", r) // reserve comma, backslash, and quotes })) opt := tag[:n] if n == 0 { // Allow a single quoted string for arbitrary names. opt, n, err = consumeTagOption(tag) if err != nil { return fieldOptions{}, fmt.Errorf("Go struct field %s has malformed `json` tag: %v", sf.Name, err) } } out.hasName = true out.name = opt tag = tag[n:] } b, _ := appendString(nil, out.name, false, nil) out.quotedName = string(b) // Handle any additional tag options (if any). var wasFormat bool seenOpts := make(map[string]bool) for len(tag) > 0 { // Consume comma delimiter. if tag[0] != ',' { return fieldOptions{}, fmt.Errorf("Go struct field %s has malformed `json` tag: invalid character %q before next option (expecting ',')", sf.Name, tag[0]) } tag = tag[len(","):] if len(tag) == 0 { return fieldOptions{}, fmt.Errorf("Go struct field %s has malformed `json` tag: invalid trailing ',' character", sf.Name) } // Consume and process the tag option. opt, n, err := consumeTagOption(tag) if err != nil { return fieldOptions{}, fmt.Errorf("Go struct field %s has malformed `json` tag: %v", sf.Name, err) } rawOpt := tag[:n] tag = tag[n:] switch { case wasFormat: return fieldOptions{}, fmt.Errorf("Go struct field %s has `format` tag option that was not specified last", sf.Name) case strings.HasPrefix(rawOpt, "'") && strings.TrimFunc(opt, isLetterOrDigit) == "": return fieldOptions{}, fmt.Errorf("Go struct field %s has unnecessarily quoted appearance of `%s` tag option; specify `%s` instead", sf.Name, rawOpt, opt) } switch opt { case "nocase": out.nocase = true case "inline": out.inline = true case "unknown": out.unknown = true case "omitzero": out.omitzero = true case "omitempty": out.omitempty = true case "string": out.string = true case "format": if !strings.HasPrefix(tag, ":") { return fieldOptions{}, fmt.Errorf("Go struct field %s is missing value for `format` tag option", sf.Name) } tag = tag[len(":"):] opt, n, err := consumeTagOption(tag) if err != nil { return fieldOptions{}, fmt.Errorf("Go struct field %s has malformed value for `format` tag option: %v", sf.Name, err) } tag = tag[n:] out.format = opt wasFormat = true default: // Reject keys that resemble one of the supported options. // This catches invalid mutants such as "omitEmpty" or "omit_empty". normOpt := strings.ReplaceAll(strings.ToLower(opt), "_", "") switch normOpt { case "nocase", "inline", "unknown", "omitzero", "omitempty", "string", "format": return fieldOptions{}, fmt.Errorf("Go struct field %s has invalid appearance of `%s` tag option; specify `%s` instead", sf.Name, opt, normOpt) } // NOTE: Everything else is ignored. This does not mean it is // forward compatible to insert arbitrary tag options since // a future version of this package may understand that tag. } // Reject duplicates. if seenOpts[opt] { return fieldOptions{}, fmt.Errorf("Go struct field %s has duplicate appearance of `%s` tag option", sf.Name, rawOpt) } seenOpts[opt] = true } return out, nil } func consumeTagOption(in string) (string, int, error) { switch r, _ := utf8.DecodeRuneInString(in); { // Option as a Go identifier. case r == '_' || unicode.IsLetter(r): n := len(in) - len(strings.TrimLeftFunc(in, isLetterOrDigit)) return in[:n], n, nil // Option as a single-quoted string. case r == '\'': // The grammar is nearly identical to a double-quoted Go string literal, // but uses single quotes as the terminators. The reason for a custom // grammar is because both backtick and double quotes cannot be used // verbatim in a struct tag. // // Convert a single-quoted string to a double-quote string and rely on // strconv.Unquote to handle the rest. var inEscape bool b := []byte{'"'} n := len(`'`) for len(in) > n { r, rn := utf8.DecodeRuneInString(in[n:]) switch { case inEscape: if r == '\'' { b = b[:len(b)-1] // remove escape character: `\'` => `'` } inEscape = false case r == '\\': inEscape = true case r == '"': b = append(b, '\\') // insert escape character: `"` => `\"` case r == '\'': b = append(b, '"') n += len(`'`) out, err := strconv.Unquote(string(b)) if err != nil { return "", 0, fmt.Errorf("invalid single-quoted string: %s", in[:n]) } return out, n, nil } b = append(b, in[n:][:rn]...) n += rn } if n > 10 { n = 10 // limit the amount of context printed in the error } return "", 0, fmt.Errorf("single-quoted string not terminated: %s...", in[:n]) case len(in) == 0: return "", 0, io.ErrUnexpectedEOF default: return "", 0, fmt.Errorf("invalid character %q at start of option (expecting Unicode letter or single quote)", r) } } func isLetterOrDigit(r rune) bool { return r == '_' || unicode.IsLetter(r) || unicode.IsNumber(r) } fields_test.go000066400000000000000000000517641453663023200346410ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2021 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "encoding" "errors" "reflect" "testing" ) type unexported struct{} func TestMakeStructFields(t *testing.T) { type Embed struct { Foo string } type Recursive struct { A string *Recursive `json:",inline"` B string } type MapStringAny map[string]any tests := []struct { name testName in any want structFields wantErr error }{{ name: name("Names"), in: struct { F1 string F2 string `json:"-"` F3 string `json:"json_name"` f3 string F5 string `json:"json_name_nocase,nocase"` }{}, want: structFields{ flattened: []structField{ {id: 0, index: []int{0}, typ: stringType, fieldOptions: fieldOptions{name: "F1", quotedName: `"F1"`}}, {id: 1, index: []int{2}, typ: stringType, fieldOptions: fieldOptions{name: "json_name", quotedName: `"json_name"`, hasName: true}}, {id: 2, index: []int{4}, typ: stringType, fieldOptions: fieldOptions{name: "json_name_nocase", quotedName: `"json_name_nocase"`, hasName: true, nocase: true}}, }, }, }, { name: name("BreadthFirstSearch"), in: struct { L1A string L1B struct { L2A string L2B struct { L3A string } `json:",inline"` L2C string } `json:",inline"` L1C string L1D struct { L2D string L2E struct { L3B string } `json:",inline"` L2F string } `json:",inline"` L1E string }{}, want: structFields{ flattened: []structField{ {id: 0, index: []int{0}, typ: stringType, fieldOptions: fieldOptions{name: "L1A", quotedName: `"L1A"`}}, {id: 3, index: []int{1, 0}, typ: stringType, fieldOptions: fieldOptions{name: "L2A", quotedName: `"L2A"`}}, {id: 7, index: []int{1, 1, 0}, typ: stringType, fieldOptions: fieldOptions{name: "L3A", quotedName: `"L3A"`}}, {id: 4, index: []int{1, 2}, typ: stringType, fieldOptions: fieldOptions{name: "L2C", quotedName: `"L2C"`}}, {id: 1, index: []int{2}, typ: stringType, fieldOptions: fieldOptions{name: "L1C", quotedName: `"L1C"`}}, {id: 5, index: []int{3, 0}, typ: stringType, fieldOptions: fieldOptions{name: "L2D", quotedName: `"L2D"`}}, {id: 8, index: []int{3, 1, 0}, typ: stringType, fieldOptions: fieldOptions{name: "L3B", quotedName: `"L3B"`}}, {id: 6, index: []int{3, 2}, typ: stringType, fieldOptions: fieldOptions{name: "L2F", quotedName: `"L2F"`}}, {id: 2, index: []int{4}, typ: stringType, fieldOptions: fieldOptions{name: "L1E", quotedName: `"L1E"`}}, }, }, }, { name: name("NameResolution"), in: struct { X1 struct { X struct { A string // loses in precedence to A B string // cancels out with X2.X.B D string // loses in precedence to D } `json:",inline"` } `json:",inline"` X2 struct { X struct { B string // cancels out with X1.X.B C string D string // loses in precedence to D } `json:",inline"` } `json:",inline"` A string // takes precedence over X1.X.A D string // takes precedence over X1.X.D and X2.X.D }{}, want: structFields{ flattened: []structField{ {id: 2, index: []int{1, 0, 1}, typ: stringType, fieldOptions: fieldOptions{name: "C", quotedName: `"C"`}}, {id: 0, index: []int{2}, typ: stringType, fieldOptions: fieldOptions{name: "A", quotedName: `"A"`}}, {id: 1, index: []int{3}, typ: stringType, fieldOptions: fieldOptions{name: "D", quotedName: `"D"`}}, }, }, }, { name: name("Embed/Implicit"), in: struct { Embed }{}, want: structFields{ flattened: []structField{ {id: 0, index: []int{0, 0}, typ: stringType, fieldOptions: fieldOptions{name: "Foo", quotedName: `"Foo"`}}, }, }, }, { name: name("Embed/Explicit"), in: struct { Embed `json:",inline"` }{}, want: structFields{ flattened: []structField{ {id: 0, index: []int{0, 0}, typ: stringType, fieldOptions: fieldOptions{name: "Foo", quotedName: `"Foo"`}}, }, }, }, { name: name("Recursive"), in: struct { A string Recursive `json:",inline"` C string }{}, want: structFields{ flattened: []structField{ {id: 0, index: []int{0}, typ: stringType, fieldOptions: fieldOptions{name: "A", quotedName: `"A"`}}, {id: 2, index: []int{1, 2}, typ: stringType, fieldOptions: fieldOptions{name: "B", quotedName: `"B"`}}, {id: 1, index: []int{2}, typ: stringType, fieldOptions: fieldOptions{name: "C", quotedName: `"C"`}}, }, }, }, { name: name("InlinedFallback/Cancelation"), in: struct { X1 struct { X RawValue `json:",inline"` } `json:",inline"` X2 struct { X map[string]any `json:",unknown"` } `json:",inline"` }{}, want: structFields{}, }, { name: name("InlinedFallback/Precedence"), in: struct { X1 struct { X RawValue `json:",inline"` } `json:",inline"` X2 struct { X map[string]any `json:",unknown"` } `json:",inline"` X map[string]RawValue `json:",unknown"` }{}, want: structFields{ inlinedFallback: &structField{id: 0, index: []int{2}, typ: reflect.TypeOf(map[string]RawValue(nil)), fieldOptions: fieldOptions{name: "X", quotedName: `"X"`, unknown: true}}, }, }, { name: name("InvalidUTF8"), in: struct { Name string `json:"'\\xde\\xad\\xbe\\xef'"` }{}, wantErr: errors.New(`Go struct field Name has JSON object name "Þ­\xbe\xef" with invalid UTF-8`), }, { name: name("DuplicateName"), in: struct { A string `json:"same"` B string `json:"same"` }{}, wantErr: errors.New(`Go struct fields A and B conflict over JSON object name "same"`), }, { name: name("BothInlineAndUnknown"), in: struct { A struct{} `json:",inline,unknown"` }{}, wantErr: errors.New("Go struct field A cannot have both `inline` and `unknown` specified"), }, { name: name("InlineWithOptions"), in: struct { A struct{} `json:",inline,omitempty"` }{}, wantErr: errors.New("Go struct field A cannot have any options other than `inline` or `unknown` specified"), }, { name: name("UnknownWithOptions"), in: struct { A map[string]any `json:",inline,omitempty"` }{}, wantErr: errors.New("Go struct field A cannot have any options other than `inline` or `unknown` specified"), }, { name: name("InlineTextMarshaler"), in: struct { A struct{ encoding.TextMarshaler } `json:",inline"` }{}, wantErr: errors.New(`inlined Go struct field A of type struct { encoding.TextMarshaler } must not implement JSON marshal or unmarshal methods`), }, { name: name("UnknownJSONMarshalerV1"), in: struct { A struct{ MarshalerV1 } `json:",unknown"` }{}, wantErr: errors.New(`inlined Go struct field A of type struct { json.MarshalerV1 } must not implement JSON marshal or unmarshal methods`), }, { name: name("InlineJSONMarshalerV2"), in: struct { A struct{ MarshalerV2 } `json:",inline"` }{}, wantErr: errors.New(`inlined Go struct field A of type struct { json.MarshalerV2 } must not implement JSON marshal or unmarshal methods`), }, { name: name("UnknownTextUnmarshaler"), in: struct { A *struct{ encoding.TextUnmarshaler } `json:",unknown"` }{}, wantErr: errors.New(`inlined Go struct field A of type struct { encoding.TextUnmarshaler } must not implement JSON marshal or unmarshal methods`), }, { name: name("InlineJSONUnmarshalerV1"), in: struct { A *struct{ UnmarshalerV1 } `json:",inline"` }{}, wantErr: errors.New(`inlined Go struct field A of type struct { json.UnmarshalerV1 } must not implement JSON marshal or unmarshal methods`), }, { name: name("UnknownJSONUnmarshalerV2"), in: struct { A struct{ UnmarshalerV2 } `json:",unknown"` }{}, wantErr: errors.New(`inlined Go struct field A of type struct { json.UnmarshalerV2 } must not implement JSON marshal or unmarshal methods`), }, { name: name("UnknownStruct"), in: struct { A struct { X, Y, Z string } `json:",unknown"` }{}, wantErr: errors.New("inlined Go struct field A of type struct { X string; Y string; Z string } with `unknown` tag must be a Go map of string key or a json.RawValue"), }, { name: name("InlineUnsupported/MapIntKey"), in: struct { A map[int]any `json:",unknown"` }{}, wantErr: errors.New(`inlined Go struct field A of type map[int]interface {} must be a Go struct, Go map of string key, or json.RawValue`), }, { name: name("InlineUnsupported/MapNamedStringKey"), in: struct { A map[namedString]any `json:",inline"` }{}, wantErr: errors.New(`inlined Go struct field A of type map[json.namedString]interface {} must be a Go struct, Go map of string key, or json.RawValue`), }, { name: name("InlineUnsupported/DoublePointer"), in: struct { A **struct{} `json:",inline"` }{}, wantErr: errors.New(`inlined Go struct field A of type *struct {} must be a Go struct, Go map of string key, or json.RawValue`), }, { name: name("DuplicateInline"), in: struct { A map[string]any `json:",inline"` B RawValue `json:",inline"` }{}, wantErr: errors.New(`inlined Go struct fields A and B cannot both be a Go map or json.RawValue`), }, { name: name("DuplicateEmbedInline"), in: struct { MapStringAny B RawValue `json:",inline"` }{}, wantErr: errors.New(`inlined Go struct fields MapStringAny and B cannot both be a Go map or json.RawValue`), }} for _, tt := range tests { t.Run(tt.name.name, func(t *testing.T) { got, err := makeStructFields(reflect.TypeOf(tt.in)) // Sanity check that pointers are consistent. pointers := make(map[*structField]bool) for i := range got.flattened { pointers[&got.flattened[i]] = true } for _, f := range got.byActualName { if !pointers[f] { t.Errorf("%s: byActualName pointer not in flattened", tt.name.where) } } for _, fs := range got.byFoldedName { for _, f := range fs { if !pointers[f] { t.Errorf("%s: byFoldedName pointer not in flattened", tt.name.where) } } } // Zero out fields that are incomparable. for i := range got.flattened { got.flattened[i].fncs = nil got.flattened[i].isEmpty = nil } if got.inlinedFallback != nil { got.inlinedFallback.fncs = nil got.inlinedFallback.isEmpty = nil } // Reproduce maps in want. if tt.wantErr == nil { tt.want.byActualName = make(map[string]*structField) for i := range tt.want.flattened { f := &tt.want.flattened[i] tt.want.byActualName[f.name] = f } tt.want.byFoldedName = make(map[string][]*structField) for i, f := range tt.want.flattened { foldedName := string(foldName([]byte(f.name))) tt.want.byFoldedName[foldedName] = append(tt.want.byFoldedName[foldedName], &tt.want.flattened[i]) } } // Only compare underlying error to simplify test logic. var gotErr error if err != nil { gotErr = err.Err } if !reflect.DeepEqual(got, tt.want) || !reflect.DeepEqual(gotErr, tt.wantErr) { t.Errorf("%s: makeStructFields(%T):\n\tgot (%v, %v)\n\twant (%v, %v)", tt.name.where, tt.in, got, gotErr, tt.want, tt.wantErr) } }) } } func TestParseTagOptions(t *testing.T) { tests := []struct { name testName in any // must be a struct with a single field wantOpts fieldOptions wantErr error }{{ name: name("GoName"), in: struct { FieldName int }{}, wantOpts: fieldOptions{name: "FieldName", quotedName: `"FieldName"`}, }, { name: name("GoNameWithOptions"), in: struct { FieldName int `json:",inline"` }{}, wantOpts: fieldOptions{name: "FieldName", quotedName: `"FieldName"`, inline: true}, }, { name: name("Empty"), in: struct { V int `json:""` }{}, wantOpts: fieldOptions{name: "V", quotedName: `"V"`}, }, { name: name("Unexported"), in: struct { v int `json:"Hello"` }{}, wantErr: errors.New("unexported Go struct field v cannot have non-ignored `json:\"Hello\"` tag"), }, { name: name("UnexportedEmpty"), in: struct { v int `json:""` }{}, wantErr: errors.New("unexported Go struct field v cannot have non-ignored `json:\"\"` tag"), }, { name: name("EmbedUnexported"), in: struct { unexported }{}, wantErr: errors.New("embedded Go struct field unexported of an unexported type must be explicitly ignored with a `json:\"-\"` tag"), }, { name: name("Ignored"), in: struct { V int `json:"-"` }{}, wantErr: errIgnoredField, }, { name: name("IgnoredEmbedUnexported"), in: struct { unexported `json:"-"` }{}, wantErr: errIgnoredField, }, { name: name("DashComma"), in: struct { V int `json:"-,"` }{}, wantErr: errors.New("Go struct field V has malformed `json` tag: invalid trailing ',' character"), }, { name: name("QuotedDashName"), in: struct { V int `json:"'-'"` }{}, wantOpts: fieldOptions{hasName: true, name: "-", quotedName: `"-"`}, }, { name: name("LatinPunctuationName"), in: struct { V int `json:"$%-/"` }{}, wantOpts: fieldOptions{hasName: true, name: "$%-/", quotedName: `"$%-/"`}, }, { name: name("QuotedLatinPunctuationName"), in: struct { V int `json:"'$%-/'"` }{}, wantOpts: fieldOptions{hasName: true, name: "$%-/", quotedName: `"$%-/"`}, }, { name: name("LatinDigitsName"), in: struct { V int `json:"0123456789"` }{}, wantOpts: fieldOptions{hasName: true, name: "0123456789", quotedName: `"0123456789"`}, }, { name: name("QuotedLatinDigitsName"), in: struct { V int `json:"'0123456789'"` }{}, wantOpts: fieldOptions{hasName: true, name: "0123456789", quotedName: `"0123456789"`}, }, { name: name("LatinUppercaseName"), in: struct { V int `json:"ABCDEFGHIJKLMOPQRSTUVWXYZ"` }{}, wantOpts: fieldOptions{hasName: true, name: "ABCDEFGHIJKLMOPQRSTUVWXYZ", quotedName: `"ABCDEFGHIJKLMOPQRSTUVWXYZ"`}, }, { name: name("LatinLowercaseName"), in: struct { V int `json:"abcdefghijklmnopqrstuvwxyz_"` }{}, wantOpts: fieldOptions{hasName: true, name: "abcdefghijklmnopqrstuvwxyz_", quotedName: `"abcdefghijklmnopqrstuvwxyz_"`}, }, { name: name("GreekName"), in: struct { V string `json:"Ελλάδα"` }{}, wantOpts: fieldOptions{hasName: true, name: "Ελλάδα", quotedName: `"Ελλάδα"`}, }, { name: name("QuotedGreekName"), in: struct { V string `json:"'Ελλάδα'"` }{}, wantOpts: fieldOptions{hasName: true, name: "Ελλάδα", quotedName: `"Ελλάδα"`}, }, { name: name("ChineseName"), in: struct { V string `json:"世界"` }{}, wantOpts: fieldOptions{hasName: true, name: "世界", quotedName: `"世界"`}, }, { name: name("QuotedChineseName"), in: struct { V string `json:"'世界'"` }{}, wantOpts: fieldOptions{hasName: true, name: "世界", quotedName: `"世界"`}, }, { name: name("PercentSlashName"), in: struct { V int `json:"text/html%"` }{}, wantOpts: fieldOptions{hasName: true, name: "text/html%", quotedName: `"text/html%"`}, }, { name: name("QuotedPercentSlashName"), in: struct { V int `json:"'text/html%'"` }{}, wantOpts: fieldOptions{hasName: true, name: "text/html%", quotedName: `"text/html%"`}, }, { name: name("PunctuationName"), in: struct { V string `json:"!#$%&()*+-./:;<=>?@[]^_{|}~ "` }{}, wantOpts: fieldOptions{hasName: true, name: "!#$%&()*+-./:;<=>?@[]^_{|}~ ", quotedName: `"!#$%&()*+-./:;<=>?@[]^_{|}~ "`}, }, { name: name("QuotedPunctuationName"), in: struct { V string `json:"'!#$%&()*+-./:;<=>?@[]^_{|}~ '"` }{}, wantOpts: fieldOptions{hasName: true, name: "!#$%&()*+-./:;<=>?@[]^_{|}~ ", quotedName: `"!#$%&()*+-./:;<=>?@[]^_{|}~ "`}, }, { name: name("EmptyName"), in: struct { V int `json:"''"` }{}, wantOpts: fieldOptions{hasName: true, name: "", quotedName: `""`}, }, { name: name("SpaceName"), in: struct { V int `json:"' '"` }{}, wantOpts: fieldOptions{hasName: true, name: " ", quotedName: `" "`}, }, { name: name("CommaQuotes"), in: struct { V int `json:"',\\'\"\\\"'"` }{}, wantOpts: fieldOptions{hasName: true, name: `,'""`, quotedName: `",'\"\""`}, }, { name: name("SingleComma"), in: struct { V int `json:","` }{}, wantErr: errors.New("Go struct field V has malformed `json` tag: invalid trailing ',' character"), }, { name: name("SuperfluousCommas"), in: struct { V int `json:",,,,\"\",,inline,unknown,,,,"` }{}, wantErr: errors.New("Go struct field V has malformed `json` tag: invalid character ',' at start of option (expecting Unicode letter or single quote)"), }, { name: name("NoCaseOption"), in: struct { FieldName int `json:",nocase"` }{}, wantOpts: fieldOptions{name: "FieldName", quotedName: `"FieldName"`, nocase: true}, }, { name: name("InlineOption"), in: struct { FieldName int `json:",inline"` }{}, wantOpts: fieldOptions{name: "FieldName", quotedName: `"FieldName"`, inline: true}, }, { name: name("UnknownOption"), in: struct { FieldName int `json:",unknown"` }{}, wantOpts: fieldOptions{name: "FieldName", quotedName: `"FieldName"`, unknown: true}, }, { name: name("OmitZeroOption"), in: struct { FieldName int `json:",omitzero"` }{}, wantOpts: fieldOptions{name: "FieldName", quotedName: `"FieldName"`, omitzero: true}, }, { name: name("OmitEmptyOption"), in: struct { FieldName int `json:",omitempty"` }{}, wantOpts: fieldOptions{name: "FieldName", quotedName: `"FieldName"`, omitempty: true}, }, { name: name("StringOption"), in: struct { FieldName int `json:",string"` }{}, wantOpts: fieldOptions{name: "FieldName", quotedName: `"FieldName"`, string: true}, }, { name: name("FormatOptionEqual"), in: struct { FieldName int `json:",format=fizzbuzz"` }{}, wantErr: errors.New("Go struct field FieldName is missing value for `format` tag option"), }, { name: name("FormatOptionColon"), in: struct { FieldName int `json:",format:fizzbuzz"` }{}, wantOpts: fieldOptions{name: "FieldName", quotedName: `"FieldName"`, format: "fizzbuzz"}, }, { name: name("FormatOptionQuoted"), in: struct { FieldName int `json:",format:'2006-01-02'"` }{}, wantOpts: fieldOptions{name: "FieldName", quotedName: `"FieldName"`, format: "2006-01-02"}, }, { name: name("FormatOptionInvalid"), in: struct { FieldName int `json:",format:'2006-01-02"` }{}, wantErr: errors.New("Go struct field FieldName has malformed value for `format` tag option: single-quoted string not terminated: '2006-01-0..."), }, { name: name("FormatOptionNotLast"), in: struct { FieldName int `json:",format:alpha,ordered"` }{}, wantErr: errors.New("Go struct field FieldName has `format` tag option that was not specified last"), }, { name: name("AllOptions"), in: struct { FieldName int `json:",nocase,inline,unknown,omitzero,omitempty,string,format:format"` }{}, wantOpts: fieldOptions{ name: "FieldName", quotedName: `"FieldName"`, nocase: true, inline: true, unknown: true, omitzero: true, omitempty: true, string: true, format: "format", }, }, { name: name("AllOptionsQuoted"), in: struct { FieldName int `json:",'nocase','inline','unknown','omitzero','omitempty','string','format':'format'"` }{}, wantErr: errors.New("Go struct field FieldName has unnecessarily quoted appearance of `'nocase'` tag option; specify `nocase` instead"), }, { name: name("AllOptionsCaseSensitive"), in: struct { FieldName int `json:",NOCASE,INLINE,UNKNOWN,OMITZERO,OMITEMPTY,STRING,FORMAT:FORMAT"` }{}, wantErr: errors.New("Go struct field FieldName has invalid appearance of `NOCASE` tag option; specify `nocase` instead"), }, { name: name("AllOptionsSpaceSensitive"), in: struct { FieldName int `json:", nocase , inline , unknown , omitzero , omitempty , string , format:format "` }{}, wantErr: errors.New("Go struct field FieldName has malformed `json` tag: invalid character ' ' at start of option (expecting Unicode letter or single quote)"), }, { name: name("UnknownTagOption"), in: struct { FieldName int `json:",inline,whoknows,string"` }{}, wantOpts: fieldOptions{name: "FieldName", quotedName: `"FieldName"`, inline: true, string: true}, }, { name: name("MalformedQuotedString/MissingQuote"), in: struct { FieldName int `json:"'hello,string"` }{}, wantErr: errors.New("Go struct field FieldName has malformed `json` tag: single-quoted string not terminated: 'hello,str..."), }, { name: name("MalformedQuotedString/MissingComma"), in: struct { FieldName int `json:"'hello'inline,string"` }{}, wantErr: errors.New("Go struct field FieldName has malformed `json` tag: invalid character 'i' before next option (expecting ',')"), }, { name: name("MalformedQuotedString/InvalidEscape"), in: struct { FieldName int `json:"'hello\\u####',inline,string"` }{}, wantErr: errors.New("Go struct field FieldName has malformed `json` tag: invalid single-quoted string: 'hello\\u####'"), }, { name: name("MisnamedTag"), in: struct { V int `jsom:"Misnamed"` }{}, wantOpts: fieldOptions{name: "V", quotedName: `"V"`}, }} for _, tt := range tests { t.Run(tt.name.name, func(t *testing.T) { fs := reflect.TypeOf(tt.in).Field(0) gotOpts, gotErr := parseFieldOptions(fs) if !reflect.DeepEqual(gotOpts, tt.wantOpts) || !reflect.DeepEqual(gotErr, tt.wantErr) { t.Errorf("%s: parseFieldOptions(%T) = (%v, %v), want (%v, %v)", tt.name.where, tt.in, gotOpts, gotErr, tt.wantOpts, tt.wantErr) } }) } } fold.go000066400000000000000000000026631453663023200332520ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "unicode" "unicode/utf8" ) // foldName returns a folded string such that foldName(x) == foldName(y) // is similar to strings.EqualFold(x, y), but ignores underscore and dashes. // This allows foldName to match common naming conventions. func foldName(in []byte) []byte { // This is inlinable to take advantage of "function outlining". // See https://blog.filippo.io/efficient-go-apis-with-the-inliner/ var arr [32]byte // large enough for most JSON names return appendFoldedName(arr[:0], in) } func appendFoldedName(out, in []byte) []byte { for i := 0; i < len(in); { // Handle single-byte ASCII. if c := in[i]; c < utf8.RuneSelf { if c != '_' && c != '-' { if 'a' <= c && c <= 'z' { c -= 'a' - 'A' } out = append(out, c) } i++ continue } // Handle multi-byte Unicode. r, n := utf8.DecodeRune(in[i:]) out = utf8.AppendRune(out, foldRune(r)) i += n } return out } // foldRune is a variation on unicode.SimpleFold that returns the same rune // for all runes in the same fold set. // // Invariant: // // foldRune(x) == foldRune(y) ⇔ strings.EqualFold(string(x), string(y)) func foldRune(r rune) rune { for { r2 := unicode.SimpleFold(r) if r2 <= r { return r2 // smallest character in the fold set } r = r2 } } fold_test.go000066400000000000000000000075261453663023200343140ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "fmt" "reflect" "testing" "unicode" jsonv1 "encoding/json" ) var equalFoldTestdata = []struct { in1, in2 string want bool }{ {"", "", true}, {"abc", "abc", true}, {"ABcd", "ABcd", true}, {"123abc", "123ABC", true}, {"_1_2_-_3__--a-_-b-c-", "123ABC", true}, {"αβδ", "ΑΒΔ", true}, {"abc", "xyz", false}, {"abc", "XYZ", false}, {"abcdefghijk", "abcdefghijX", false}, {"abcdefghijk", "abcdefghij\u212A", true}, {"abcdefghijK", "abcdefghij\u212A", true}, {"abcdefghijkz", "abcdefghij\u212Ay", false}, {"abcdefghijKz", "abcdefghij\u212Ay", false}, {"1", "2", false}, {"utf-8", "US-ASCII", false}, {"hello, world!", "hello, world!", true}, {"hello, world!", "Hello, World!", true}, {"hello, world!", "HELLO, WORLD!", true}, {"hello, world!", "jello, world!", false}, {"γειά, κόσμε!", "γειά, κόσμε!", true}, {"γειά, κόσμε!", "Γειά, Κόσμε!", true}, {"γειά, κόσμε!", "ΓΕΙΆ, ΚΌΣΜΕ!", true}, {"γειά, κόσμε!", "ΛΕΙΆ, ΚΌΣΜΕ!", false}, {"AESKey", "aesKey", true}, {"γειά, κόσμε!", "Γ\xce_\xb5ιά, Κόσμε!", false}, {"aeskey", "AESKEY", true}, {"AESKEY", "aes_key", true}, {"aes_key", "AES_KEY", true}, {"AES_KEY", "aes-key", true}, {"aes-key", "AES-KEY", true}, {"AES-KEY", "aesKey", true}, {"aesKey", "AesKey", true}, {"AesKey", "AESKey", true}, {"AESKey", "aeskey", true}, {"DESKey", "aeskey", false}, {"AES Key", "aeskey", false}, {"aesï¹key", "aeskey", false}, // Unicode underscore not handled {"aes〰key", "aeskey", false}, // Unicode dash not handled } func TestEqualFold(t *testing.T) { for _, tt := range equalFoldTestdata { got := equalFold([]byte(tt.in1), []byte(tt.in2)) if got != tt.want { t.Errorf("equalFold(%q, %q) = %v, want %v", tt.in1, tt.in2, got, tt.want) } } } func equalFold(x, y []byte) bool { return string(foldName(x)) == string(foldName(y)) } func TestFoldRune(t *testing.T) { if testing.Short() { t.Skip() } var foldSet []rune for r := rune(0); r <= unicode.MaxRune; r++ { // Derive all runes that are all part of the same fold set. foldSet = foldSet[:0] for r0 := r; r != r0 || len(foldSet) == 0; r = unicode.SimpleFold(r) { foldSet = append(foldSet, r) } // Normalized form of each rune in a foldset must be the same and // also be within the set itself. var withinSet bool rr0 := foldRune(foldSet[0]) for _, r := range foldSet { withinSet = withinSet || rr0 == r rr := foldRune(r) if rr0 != rr { t.Errorf("foldRune(%q) = %q, want %q", r, rr, rr0) } } if !withinSet { t.Errorf("foldRune(%q) = %q not in fold set %q", foldSet[0], rr0, string(foldSet)) } } } // TestBenchmarkUnmarshalUnknown unmarshals an unknown field into a struct with // varying number of fields. Since the unknown field does not directly match // any known field by name, it must fall back on case-insensitive matching. func TestBenchmarkUnmarshalUnknown(t *testing.T) { runUnmarshalUnknown(t) } func BenchmarkUnmarshalUnknown(b *testing.B) { runUnmarshalUnknown(b) } func runUnmarshalUnknown(tb testing.TB) { in := []byte(`{"NameUnknown":null}`) for _, n := range []int{1, 2, 5, 10, 20, 50, 100} { unmarshal := Unmarshal if benchV1 { unmarshal = jsonv1.Unmarshal } var fields []reflect.StructField for i := 0; i < n; i++ { fields = append(fields, reflect.StructField{ Name: fmt.Sprintf("Name%d", i), Type: reflect.TypeOf(0), Tag: `json:",nocase"`, }) } out := reflect.New(reflect.StructOf(fields)).Interface() runTestOrBench(tb, fmt.Sprintf("N%d", n), int64(len(in)), func(tb testing.TB) { if err := unmarshal(in, out); err != nil { tb.Fatalf("Unmarshal error: %v", err) } }) } } fuzz_test.go000066400000000000000000000172311453663023200343600ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "bytes" "errors" "io" "math/rand" "reflect" "testing" ) func FuzzCoder(f *testing.F) { // Add a number of inputs to the corpus including valid and invalid data. for _, td := range coderTestdata { f.Add(int64(0), []byte(td.in)) } for _, td := range decoderErrorTestdata { f.Add(int64(0), []byte(td.in)) } for _, td := range encoderErrorTestdata { f.Add(int64(0), []byte(td.wantOut)) } for _, td := range jsonTestdata() { f.Add(int64(0), td.data) } f.Fuzz(func(t *testing.T, seed int64, b []byte) { var tokVals []tokOrVal rn := rand.NewSource(seed) // Read a sequence of tokens or values. Skip the test for any errors // since we expect this with randomly generated fuzz inputs. src := bytes.NewReader(b) dec := NewDecoder(src) for { if rn.Int63()%8 > 0 { tok, err := dec.ReadToken() if err != nil { if err == io.EOF { break } t.Skipf("Decoder.ReadToken error: %v", err) } tokVals = append(tokVals, tok.Clone()) } else { val, err := dec.ReadValue() if err != nil { expectError := dec.PeekKind() == '}' || dec.PeekKind() == ']' if expectError && errors.As(err, new(*SyntacticError)) { continue } if err == io.EOF { break } t.Skipf("Decoder.ReadValue error: %v", err) } tokVals = append(tokVals, append(zeroValue, val...)) } } // Write a sequence of tokens or values. Fail the test for any errors // since the previous stage guarantees that the input is valid. dst := new(bytes.Buffer) enc := NewEncoder(dst) for _, tokVal := range tokVals { switch tokVal := tokVal.(type) { case Token: if err := enc.WriteToken(tokVal); err != nil { t.Fatalf("Encoder.WriteToken error: %v", err) } case RawValue: if err := enc.WriteValue(tokVal); err != nil { t.Fatalf("Encoder.WriteValue error: %v", err) } } } // Encoded output and original input must decode to the same thing. var got, want []Token for dec := NewDecoder(bytes.NewReader(b)); dec.PeekKind() > 0; { tok, err := dec.ReadToken() if err != nil { t.Fatalf("Decoder.ReadToken error: %v", err) } got = append(got, tok.Clone()) } for dec := NewDecoder(dst); dec.PeekKind() > 0; { tok, err := dec.ReadToken() if err != nil { t.Fatalf("Decoder.ReadToken error: %v", err) } want = append(want, tok.Clone()) } if !equalTokens(got, want) { t.Fatalf("mismatching output:\ngot %v\nwant %v", got, want) } }) } func FuzzResumableDecoder(f *testing.F) { for _, td := range resumableDecoderTestdata { f.Add(int64(0), []byte(td)) } f.Fuzz(func(t *testing.T, seed int64, b []byte) { rn := rand.NewSource(seed) // Regardless of how many bytes the underlying io.Reader produces, // the provided tokens, values, and errors should always be identical. t.Run("ReadToken", func(t *testing.T) { decGot := NewDecoder(&FaultyBuffer{B: b, MaxBytes: 8, Rand: rn}) decWant := NewDecoder(bytes.NewReader(b)) gotTok, gotErr := decGot.ReadToken() wantTok, wantErr := decWant.ReadToken() if gotTok.String() != wantTok.String() || !reflect.DeepEqual(gotErr, wantErr) { t.Errorf("Decoder.ReadToken = (%v, %v), want (%v, %v)", gotTok, gotErr, wantTok, wantErr) } }) t.Run("ReadValue", func(t *testing.T) { decGot := NewDecoder(&FaultyBuffer{B: b, MaxBytes: 8, Rand: rn}) decWant := NewDecoder(bytes.NewReader(b)) gotVal, gotErr := decGot.ReadValue() wantVal, wantErr := decWant.ReadValue() if !reflect.DeepEqual(gotVal, wantVal) || !reflect.DeepEqual(gotErr, wantErr) { t.Errorf("Decoder.ReadValue = (%s, %v), want (%s, %v)", gotVal, gotErr, wantVal, wantErr) } }) }) } func FuzzRawValueReformat(f *testing.F) { for _, td := range rawValueTestdata { f.Add([]byte(td.in)) } // isValid reports whether b is valid according to the specified options. isValid := func(opts DecodeOptions, b []byte) bool { d := opts.NewDecoder(bytes.NewReader(b)) _, errVal := d.ReadValue() _, errEOF := d.ReadToken() return errVal == nil && errEOF == io.EOF } // stripWhitespace removes all JSON whitespace characters from the input. stripWhitespace := func(in []byte) (out []byte) { out = make([]byte, 0, len(in)) for _, c := range in { switch c { case ' ', '\n', '\r', '\t': default: out = append(out, c) } } return out } // unmarshal unmarshals the input into an any. unmarshal := func(in []byte) (out any) { if err := Unmarshal(in, &out); err != nil { return nil // ignore invalid input } return out } f.Fuzz(func(t *testing.T, b []byte) { validRFC7159 := isValid(DecodeOptions{AllowInvalidUTF8: true, AllowDuplicateNames: true}, b) validRFC8259 := isValid(DecodeOptions{AllowInvalidUTF8: false, AllowDuplicateNames: true}, b) validRFC7493 := isValid(DecodeOptions{AllowInvalidUTF8: false, AllowDuplicateNames: false}, b) switch { case !validRFC7159 && validRFC8259: t.Errorf("invalid input per RFC 7159 implies invalid per RFC 8259") case !validRFC8259 && validRFC7493: t.Errorf("invalid input per RFC 8259 implies invalid per RFC 7493") } gotValid := RawValue(b).IsValid() wantValid := validRFC7493 if gotValid != wantValid { t.Errorf("RawValue.IsValid = %v, want %v", gotValid, wantValid) } gotCompacted := RawValue(string(b)) gotCompactOk := gotCompacted.Compact() == nil wantCompactOk := validRFC7159 if !bytes.Equal(stripWhitespace(gotCompacted), stripWhitespace(b)) { t.Errorf("stripWhitespace(RawValue.Compact) = %s, want %s", stripWhitespace(gotCompacted), stripWhitespace(b)) } if !reflect.DeepEqual(unmarshal(gotCompacted), unmarshal(b)) { t.Errorf("unmarshal(RawValue.Compact) = %s, want %s", unmarshal(gotCompacted), unmarshal(b)) } if gotCompactOk != wantCompactOk { t.Errorf("RawValue.Compact success mismatch: got %v, want %v", gotCompactOk, wantCompactOk) } gotIndented := RawValue(string(b)) gotIndentOk := gotIndented.Indent("", " ") == nil wantIndentOk := validRFC7159 if !bytes.Equal(stripWhitespace(gotIndented), stripWhitespace(b)) { t.Errorf("stripWhitespace(RawValue.Indent) = %s, want %s", stripWhitespace(gotIndented), stripWhitespace(b)) } if !reflect.DeepEqual(unmarshal(gotIndented), unmarshal(b)) { t.Errorf("unmarshal(RawValue.Indent) = %s, want %s", unmarshal(gotIndented), unmarshal(b)) } if gotIndentOk != wantIndentOk { t.Errorf("RawValue.Indent success mismatch: got %v, want %v", gotIndentOk, wantIndentOk) } gotCanonicalized := RawValue(string(b)) gotCanonicalizeOk := gotCanonicalized.Canonicalize() == nil wantCanonicalizeOk := validRFC7493 if !reflect.DeepEqual(unmarshal(gotCanonicalized), unmarshal(b)) { t.Errorf("unmarshal(RawValue.Canonicalize) = %s, want %s", unmarshal(gotCanonicalized), unmarshal(b)) } if gotCanonicalizeOk != wantCanonicalizeOk { t.Errorf("RawValue.Canonicalize success mismatch: got %v, want %v", gotCanonicalizeOk, wantCanonicalizeOk) } }) } func FuzzEqualFold(f *testing.F) { for _, tt := range equalFoldTestdata { f.Add([]byte(tt.in1), []byte(tt.in2)) } equalFoldSimple := func(x, y []byte) bool { strip := func(b []byte) []byte { return bytes.Map(func(r rune) rune { if r == '_' || r == '-' { return -1 // ignore underscores and dashes } return r }, b) } return bytes.EqualFold(strip(x), strip(y)) } f.Fuzz(func(t *testing.T, s1, s2 []byte) { // Compare the optimized and simplified implementations. got := equalFold(s1, s2) want := equalFoldSimple(s1, s2) if got != want { t.Errorf("equalFold(%q, %q) = %v, want %v", s1, s2, got, want) } }) } inline_test.go000066400000000000000000000060721453663023200346410ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "os" "os/exec" "strings" "testing" ) // Whether a function is inlineable is dependent on the Go compiler version // and also relies on the presence of the Go toolchain itself being installed. // This test is disabled by default and explicitly enabled with an // environment variable that is specified in our integration tests, // which have fine control over exactly which Go version is being tested. var testInline = os.Getenv("TEST_INLINE") != "" func TestInline(t *testing.T) { if !testInline { t.SkipNow() } fncs := func() map[string]bool { m := make(map[string]bool) for _, s := range []string{ "Encoder.needFlush", "Decoder.ReadValue", // thin wrapper over Decoder.readValue "decodeBuffer.needMore", "consumeWhitespace", "consumeNull", "consumeFalse", "consumeTrue", "consumeSimpleString", "consumeString", // thin wrapper over consumeStringResumable "consumeSimpleNumber", "consumeNumber", // thin wrapper over consumeNumberResumable "unescapeStringMayCopy", // thin wrapper over unescapeString "hasSuffixByte", "trimSuffixByte", "trimSuffixString", "trimSuffixWhitespace", "stateMachine.appendLiteral", "stateMachine.appendNumber", "stateMachine.appendString", "stateMachine.depth", "stateMachine.reset", "stateMachine.mayAppendDelim", "stateMachine.needDelim", "stateMachine.popArray", "stateMachine.popObject", "stateMachine.pushArray", "stateMachine.pushObject", "stateEntry.increment", "stateEntry.decrement", "stateEntry.isArray", "stateEntry.isObject", "stateEntry.length", "stateEntry.needImplicitColon", "stateEntry.needImplicitComma", "stateEntry.needObjectName", "stateEntry.needObjectValue", "objectNameStack.reset", "objectNameStack.length", "objectNameStack.getUnquoted", "objectNameStack.push", "objectNameStack.replaceLastQuotedOffset", "objectNameStack.replaceLastUnquotedName", "objectNameStack.pop", "objectNameStack.ensureCopiedBuffer", "objectNamespace.insertQuoted", // thin wrapper over objectNamespace.insert "objectNamespace.insertUnquoted", // thin wrapper over objectNamespace.insert "Token.String", // thin wrapper over Token.string "foldName", // thin wrapper over appendFoldedName "hash64", } { m[s] = true } return m }() cmd := exec.Command("go", "build", "-gcflags=-m") b, err := cmd.CombinedOutput() if err != nil { t.Fatalf("exec.Command error: %v\n\n%s", err, b) } for _, line := range strings.Split(string(b), "\n") { const phrase = ": can inline " if i := strings.Index(line, phrase); i >= 0 { fnc := line[i+len(phrase):] fnc = strings.ReplaceAll(fnc, "(", "") fnc = strings.ReplaceAll(fnc, "*", "") fnc = strings.ReplaceAll(fnc, ")", "") delete(fncs, fnc) } } for fnc := range fncs { t.Errorf("%v is not inlineable, expected it to be", fnc) } } intern.go000066400000000000000000000047471453663023200336320ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2022 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "encoding/binary" "math/bits" ) // stringCache is a cache for strings converted from a []byte. type stringCache [256]string // 256*unsafe.Sizeof(string("")) => 4KiB // make returns the string form of b. // It returns a pre-allocated string from c if present, otherwise // it allocates a new string, inserts it into the cache, and returns it. func (c *stringCache) make(b []byte) string { const ( minCachedLen = 2 // single byte strings are already interned by the runtime maxCachedLen = 256 // large enough for UUIDs, IPv6 addresses, SHA-256 checksums, etc. ) if c == nil || len(b) < minCachedLen || len(b) > maxCachedLen { return string(b) } // Compute a hash from the fixed-width prefix and suffix of the string. // This ensures hashing a string is a constant time operation. var h uint32 switch { case len(b) >= 8: lo := binary.LittleEndian.Uint64(b[:8]) hi := binary.LittleEndian.Uint64(b[len(b)-8:]) h = hash64(uint32(lo), uint32(lo>>32)) ^ hash64(uint32(hi), uint32(hi>>32)) case len(b) >= 4: lo := binary.LittleEndian.Uint32(b[:4]) hi := binary.LittleEndian.Uint32(b[len(b)-4:]) h = hash64(lo, hi) case len(b) >= 2: lo := binary.LittleEndian.Uint16(b[:2]) hi := binary.LittleEndian.Uint16(b[len(b)-2:]) h = hash64(uint32(lo), uint32(hi)) } // Check the cache for the string. i := h % uint32(len(*c)) if s := (*c)[i]; s == string(b) { return s } s := string(b) (*c)[i] = s return s } // hash64 returns the hash of two uint32s as a single uint32. func hash64(lo, hi uint32) uint32 { // If avalanche=true, this is identical to XXH32 hash on a 8B string: // var b [8]byte // binary.LittleEndian.PutUint32(b[:4], lo) // binary.LittleEndian.PutUint32(b[4:], hi) // return xxhash.Sum32(b[:]) const ( prime1 = 0x9e3779b1 prime2 = 0x85ebca77 prime3 = 0xc2b2ae3d prime4 = 0x27d4eb2f prime5 = 0x165667b1 ) h := prime5 + uint32(8) h += lo * prime3 h = bits.RotateLeft32(h, 17) * prime4 h += hi * prime3 h = bits.RotateLeft32(h, 17) * prime4 // Skip final mix (avalanche) step of XXH32 for performance reasons. // Empirical testing shows that the improvements in unbiased distribution // does not outweigh the extra cost in computational complexity. const avalanche = false if avalanche { h ^= h >> 15 h *= prime2 h ^= h >> 13 h *= prime3 h ^= h >> 16 } return h } intern_test.go000066400000000000000000000071001453663023200346530ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2022 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "bytes" "fmt" "io" "testing" ) func TestIntern(t *testing.T) { var sc stringCache const alphabet = "abcdefghijklmnopqrstuvwxyz" for i := 0; i <= len(alphabet); i++ { want := alphabet[i:] if got := sc.make([]byte(want)); got != want { t.Fatalf("make = %v, want %v", got, want) } } for i := 0; i < 1000; i++ { want := fmt.Sprintf("test%b", i) if got := sc.make([]byte(want)); got != want { t.Fatalf("make = %v, want %v", got, want) } } } var sink string func BenchmarkIntern(b *testing.B) { datasetStrings := func(name string) (out [][]byte) { var data []byte for _, ts := range jsonTestdata() { if ts.name == name { data = ts.data } } dec := NewDecoder(bytes.NewReader(data)) for { k, n := dec.StackIndex(dec.StackDepth()) isObjectName := k == '{' && n%2 == 0 tok, err := dec.ReadToken() if err != nil { if err == io.EOF { break } b.Fatalf("ReadToken error: %v", err) } if tok.Kind() == '"' && !isObjectName { out = append(out, []byte(tok.String())) } } return out } tests := []struct { label string data [][]byte }{ // Best is the best case scenario where every string is the same. {"Best", func() (out [][]byte) { for i := 0; i < 1000; i++ { out = append(out, []byte("hello, world!")) } return out }()}, // Repeat is a sequence of the same set of names repeated. // This commonly occurs when unmarshaling a JSON array of JSON objects, // where the set of all names is usually small. {"Repeat", func() (out [][]byte) { for i := 0; i < 100; i++ { for _, s := range []string{"first_name", "last_name", "age", "address", "street_address", "city", "state", "postal_code", "phone_numbers", "gender"} { out = append(out, []byte(s)) } } return out }()}, // Synthea is all string values encountered in the Synthea FHIR dataset. {"Synthea", datasetStrings("SyntheaFhir")}, // Twitter is all string values encountered in the Twitter dataset. {"Twitter", datasetStrings("TwitterStatus")}, // Worst is the worst case scenario where every string is different // resulting in wasted time looking up a string that will never match. {"Worst", func() (out [][]byte) { for i := 0; i < 1000; i++ { out = append(out, []byte(fmt.Sprintf("%016x", i))) } return out }()}, } for _, tt := range tests { b.Run(tt.label, func(b *testing.B) { // Alloc simply heap allocates each string. // This provides an upper bound on the number of allocations. b.Run("Alloc", func(b *testing.B) { b.ReportAllocs() for i := 0; i < b.N; i++ { for _, b := range tt.data { sink = string(b) } } }) // Cache interns strings using stringCache. // We want to optimize for having a faster runtime than Alloc, // and also keeping the number of allocations closer to GoMap. b.Run("Cache", func(b *testing.B) { b.ReportAllocs() for i := 0; i < b.N; i++ { var sc stringCache for _, b := range tt.data { sink = sc.make(b) } } }) // GoMap interns all strings in a simple Go map. // This provides a lower bound on the number of allocations. b.Run("GoMap", func(b *testing.B) { b.ReportAllocs() for i := 0; i < b.N; i++ { m := make(map[string]string) for _, b := range tt.data { s, ok := m[string(b)] if !ok { s = string(b) m[s] = s } sink = s } } }) }) } } pools.go000066400000000000000000000136251453663023200334620ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "bytes" "io" "math/bits" "sort" "sync" ) // TODO(https://go.dev/issue/47657): Use sync.PoolOf. var ( // This owns the internal buffer since there is no io.Writer to output to. // Since the buffer can get arbitrarily large in normal usage, // there is statistical tracking logic to determine whether to recycle // the internal buffer or not based on a history of utilization. bufferedEncoderPool = &sync.Pool{New: func() any { return new(Encoder) }} // This owns the internal buffer, but it is only used to temporarily store // buffered JSON before flushing it to the underlying io.Writer. // In a sufficiently efficient streaming mode, we do not expect the buffer // to grow arbitrarily large. Thus, we avoid recycling large buffers. streamingEncoderPool = &sync.Pool{New: func() any { return new(Encoder) }} // This does not own the internal buffer since // it is taken directly from the provided bytes.Buffer. bytesBufferEncoderPool = &sync.Pool{New: func() any { return new(Encoder) }} ) // bufferStatistics is statistics to track buffer utilization. // It is used to determine whether to recycle a buffer or not // to avoid https://go.dev/issue/23199. type bufferStatistics struct { strikes int // number of times the buffer was under-utilized prevLen int // length of previous buffer } func getBufferedEncoder(o EncodeOptions) *Encoder { e := bufferedEncoderPool.Get().(*Encoder) if e.buf == nil { // Round up to nearest 2â¿ to make best use of malloc size classes. // See runtime/sizeclasses.go on Go1.15. // Logical OR with 63 to ensure 64 as the minimum buffer size. n := 1 << bits.Len(uint(e.bufStats.prevLen|63)) e.buf = make([]byte, 0, n) } e.reset(e.buf[:0], nil, o) return e } func putBufferedEncoder(e *Encoder) { // Recycle large buffers only if sufficiently utilized. // If a buffer is under-utilized enough times sequentially, // then it is discarded, ensuring that a single large buffer // won't be kept alive by a continuous stream of small usages. // // The worst case utilization is computed as: // MIN_UTILIZATION_THRESHOLD / (1 + MAX_NUM_STRIKES) // // For the constants chosen below, this is (25%)/(1+4) ⇒ 5%. // This may seem low, but it ensures a lower bound on // the absolute worst-case utilization. Without this check, // this would be theoretically 0%, which is infinitely worse. // // See https://go.dev/issue/27735. switch { case cap(e.buf) <= 4<<10: // always recycle buffers smaller than 4KiB e.bufStats.strikes = 0 case cap(e.buf)/4 <= len(e.buf): // at least 25% utilization e.bufStats.strikes = 0 case e.bufStats.strikes < 4: // at most 4 strikes e.bufStats.strikes++ default: // discard the buffer; too large and too often under-utilized e.bufStats.strikes = 0 e.bufStats.prevLen = len(e.buf) // heuristic for size to allocate next time e.buf = nil } bufferedEncoderPool.Put(e) } func getStreamingEncoder(w io.Writer, o EncodeOptions) *Encoder { if _, ok := w.(*bytes.Buffer); ok { e := bytesBufferEncoderPool.Get().(*Encoder) e.reset(nil, w, o) // buffer taken from bytes.Buffer return e } else { e := streamingEncoderPool.Get().(*Encoder) e.reset(e.buf[:0], w, o) // preserve existing buffer return e } } func putStreamingEncoder(e *Encoder) { if _, ok := e.wr.(*bytes.Buffer); ok { bytesBufferEncoderPool.Put(e) } else { if cap(e.buf) > 64<<10 { e.buf = nil // avoid pinning arbitrarily large amounts of memory } streamingEncoderPool.Put(e) } } var ( // This does not own the internal buffer since it is externally provided. bufferedDecoderPool = &sync.Pool{New: func() any { return new(Decoder) }} // This owns the internal buffer, but it is only used to temporarily store // buffered JSON fetched from the underlying io.Reader. // In a sufficiently efficient streaming mode, we do not expect the buffer // to grow arbitrarily large. Thus, we avoid recycling large buffers. streamingDecoderPool = &sync.Pool{New: func() any { return new(Decoder) }} // This does not own the internal buffer since // it is taken directly from the provided bytes.Buffer. bytesBufferDecoderPool = bufferedDecoderPool ) func getBufferedDecoder(b []byte, o DecodeOptions) *Decoder { d := bufferedDecoderPool.Get().(*Decoder) d.reset(b, nil, o) return d } func putBufferedDecoder(d *Decoder) { bufferedDecoderPool.Put(d) } func getStreamingDecoder(r io.Reader, o DecodeOptions) *Decoder { if _, ok := r.(*bytes.Buffer); ok { d := bytesBufferDecoderPool.Get().(*Decoder) d.reset(nil, r, o) // buffer taken from bytes.Buffer return d } else { d := streamingDecoderPool.Get().(*Decoder) d.reset(d.buf[:0], r, o) // preserve existing buffer return d } } func putStreamingDecoder(d *Decoder) { if _, ok := d.rd.(*bytes.Buffer); ok { bytesBufferDecoderPool.Put(d) } else { if cap(d.buf) > 64<<10 { d.buf = nil // avoid pinning arbitrarily large amounts of memory } streamingDecoderPool.Put(d) } } var stringsPools = &sync.Pool{New: func() any { return new(stringSlice) }} type stringSlice []string // getStrings returns a non-nil pointer to a slice with length n. func getStrings(n int) *stringSlice { s := stringsPools.Get().(*stringSlice) if cap(*s) < n { *s = make([]string, n) } *s = (*s)[:n] return s } func putStrings(s *stringSlice) { if cap(*s) > 1<<10 { *s = nil // avoid pinning arbitrarily large amounts of memory } stringsPools.Put(s) } // Sort sorts the string slice according to RFC 8785, section 3.2.3. func (ss *stringSlice) Sort() { // TODO(https://go.dev/issue/47619): Use slices.SortFunc instead. sort.Sort(ss) } func (ss *stringSlice) Len() int { return len(*ss) } func (ss *stringSlice) Less(i, j int) bool { return lessUTF16((*ss)[i], (*ss)[j]) } func (ss *stringSlice) Swap(i, j int) { (*ss)[i], (*ss)[j] = (*ss)[j], (*ss)[i] } state.go000066400000000000000000000566521453663023200334550ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "math" "strconv" ) var ( errMissingName = &SyntacticError{str: "missing string for object name"} errMissingColon = &SyntacticError{str: "missing character ':' after object name"} errMissingValue = &SyntacticError{str: "missing value after object name"} errMissingComma = &SyntacticError{str: "missing character ',' after object or array value"} errMismatchDelim = &SyntacticError{str: "mismatching structural token for object or array"} ) const errInvalidNamespace = jsonError("object namespace is in an invalid state") type state struct { // tokens validates whether the next token kind is valid. tokens stateMachine // names is a stack of object names. // Not used if AllowDuplicateNames is true. names objectNameStack // namespaces is a stack of object namespaces. // For performance reasons, Encoder or Decoder may not update this // if Marshal or Unmarshal is able to track names in a more efficient way. // See makeMapArshaler and makeStructArshaler. // Not used if AllowDuplicateNames is true. namespaces objectNamespaceStack } func (s *state) reset() { s.tokens.reset() s.names.reset() s.namespaces.reset() } // appendStackPointer appends a JSON Pointer (RFC 6901) to the current value. // The returned pointer is only accurate if s.names is populated, // otherwise it uses the numeric index as the object member name. // // Invariant: Must call s.names.copyQuotedBuffer beforehand. func (s state) appendStackPointer(b []byte) []byte { var objectDepth int for i := 1; i < s.tokens.depth(); i++ { e := s.tokens.index(i) if e.length() == 0 { break // empty object or array } b = append(b, '/') switch { case e.isObject(): if objectDepth < s.names.length() { for _, c := range s.names.getUnquoted(objectDepth) { // Per RFC 6901, section 3, escape '~' and '/' characters. switch c { case '~': b = append(b, "~0"...) case '/': b = append(b, "~1"...) default: b = append(b, c) } } } else { // Since the names stack is unpopulated, the name is unknown. // As a best-effort replacement, use the numeric member index. // While inaccurate, it produces a syntactically valid pointer. b = strconv.AppendUint(b, uint64((e.length()-1)/2), 10) } objectDepth++ case e.isArray(): b = strconv.AppendUint(b, uint64(e.length()-1), 10) } } return b } // stateMachine is a push-down automaton that validates whether // a sequence of tokens is valid or not according to the JSON grammar. // It is useful for both encoding and decoding. // // It is a stack where each entry represents a nested JSON object or array. // The stack has a minimum depth of 1 where the first level is a // virtual JSON array to handle a stream of top-level JSON values. // The top-level virtual JSON array is special in that it doesn't require commas // between each JSON value. // // For performance, most methods are carefully written to be inlineable. // The zero value is a valid state machine ready for use. type stateMachine struct { stack []stateEntry last stateEntry } // reset resets the state machine. // The machine always starts with a minimum depth of 1. func (m *stateMachine) reset() { m.stack = m.stack[:0] if cap(m.stack) > 1<<10 { m.stack = nil } m.last = stateTypeArray } // depth is the current nested depth of JSON objects and arrays. // It is one-indexed (i.e., top-level values have a depth of 1). func (m stateMachine) depth() int { return len(m.stack) + 1 } // index returns a reference to the ith entry. // It is only valid until the next push method call. func (m *stateMachine) index(i int) *stateEntry { if i == len(m.stack) { return &m.last } return &m.stack[i] } // depthLength reports the current nested depth and // the length of the last JSON object or array. func (m stateMachine) depthLength() (int, int) { return m.depth(), m.last.length() } // appendLiteral appends a JSON literal as the next token in the sequence. // If an error is returned, the state is not mutated. func (m *stateMachine) appendLiteral() error { switch { case m.last.needObjectName(): return errMissingName case !m.last.isValidNamespace(): return errInvalidNamespace default: m.last.increment() return nil } } // appendString appends a JSON string as the next token in the sequence. // If an error is returned, the state is not mutated. func (m *stateMachine) appendString() error { switch { case !m.last.isValidNamespace(): return errInvalidNamespace default: m.last.increment() return nil } } // appendNumber appends a JSON number as the next token in the sequence. // If an error is returned, the state is not mutated. func (m *stateMachine) appendNumber() error { return m.appendLiteral() } // pushObject appends a JSON start object token as next in the sequence. // If an error is returned, the state is not mutated. func (m *stateMachine) pushObject() error { switch { case m.last.needObjectName(): return errMissingName case !m.last.isValidNamespace(): return errInvalidNamespace default: m.last.increment() m.stack = append(m.stack, m.last) m.last = stateTypeObject return nil } } // popObject appends a JSON end object token as next in the sequence. // If an error is returned, the state is not mutated. func (m *stateMachine) popObject() error { switch { case !m.last.isObject(): return errMismatchDelim case m.last.needObjectValue(): return errMissingValue case !m.last.isValidNamespace(): return errInvalidNamespace default: m.last = m.stack[len(m.stack)-1] m.stack = m.stack[:len(m.stack)-1] return nil } } // pushArray appends a JSON start array token as next in the sequence. // If an error is returned, the state is not mutated. func (m *stateMachine) pushArray() error { switch { case m.last.needObjectName(): return errMissingName case !m.last.isValidNamespace(): return errInvalidNamespace default: m.last.increment() m.stack = append(m.stack, m.last) m.last = stateTypeArray return nil } } // popArray appends a JSON end array token as next in the sequence. // If an error is returned, the state is not mutated. func (m *stateMachine) popArray() error { switch { case !m.last.isArray() || len(m.stack) == 0: // forbid popping top-level virtual JSON array return errMismatchDelim case !m.last.isValidNamespace(): return errInvalidNamespace default: m.last = m.stack[len(m.stack)-1] m.stack = m.stack[:len(m.stack)-1] return nil } } // needIndent reports whether indent whitespace should be injected. // A zero value means that no whitespace should be injected. // A positive value means '\n', indentPrefix, and (n-1) copies of indentBody // should be appended to the output immediately before the next token. func (m stateMachine) needIndent(next Kind) (n int) { willEnd := next == '}' || next == ']' switch { case m.depth() == 1: return 0 // top-level values are never indented case m.last.length() == 0 && willEnd: return 0 // an empty object or array is never indented case m.last.length() == 0 || m.last.needImplicitComma(next): return m.depth() case willEnd: return m.depth() - 1 default: return 0 } } // mayAppendDelim appends a colon or comma that may precede the next token. func (m stateMachine) mayAppendDelim(b []byte, next Kind) []byte { switch { case m.last.needImplicitColon(): return append(b, ':') case m.last.needImplicitComma(next) && len(m.stack) != 0: // comma not needed for top-level values return append(b, ',') default: return b } } // needDelim reports whether a colon or comma token should be implicitly emitted // before the next token of the specified kind. // A zero value means no delimiter should be emitted. func (m stateMachine) needDelim(next Kind) (delim byte) { switch { case m.last.needImplicitColon(): return ':' case m.last.needImplicitComma(next) && len(m.stack) != 0: // comma not needed for top-level values return ',' default: return 0 } } // checkDelim reports whether the specified delimiter should be there given // the kind of the next token that appears immediately afterwards. func (m stateMachine) checkDelim(delim byte, next Kind) error { switch needDelim := m.needDelim(next); { case needDelim == delim: return nil case needDelim == ':': return errMissingColon case needDelim == ',': return errMissingComma default: return newInvalidCharacterError([]byte{delim}, "before next token") } } // invalidateDisabledNamespaces marks all disabled namespaces as invalid. // // For efficiency, Marshal and Unmarshal may disable namespaces since there are // more efficient ways to track duplicate names. However, if an error occurs, // the namespaces in Encoder or Decoder will be left in an inconsistent state. // Mark the namespaces as invalid so that future method calls on // Encoder or Decoder will return an error. func (m *stateMachine) invalidateDisabledNamespaces() { for i := 0; i < m.depth(); i++ { e := m.index(i) if !e.isActiveNamespace() { e.invalidateNamespace() } } } // stateEntry encodes several artifacts within a single unsigned integer: // - whether this represents a JSON object or array, // - whether this object should check for duplicate names, and // - how many elements are in this JSON object or array. type stateEntry uint64 const ( // The type mask (1 bit) records whether this is a JSON object or array. stateTypeMask stateEntry = 0x8000_0000_0000_0000 stateTypeObject stateEntry = 0x8000_0000_0000_0000 stateTypeArray stateEntry = 0x0000_0000_0000_0000 // The name check mask (2 bit) records whether to update // the namespaces for the current JSON object and // whether the namespace is valid. stateNamespaceMask stateEntry = 0x6000_0000_0000_0000 stateDisableNamespace stateEntry = 0x4000_0000_0000_0000 stateInvalidNamespace stateEntry = 0x2000_0000_0000_0000 // The count mask (61 bits) records the number of elements. stateCountMask stateEntry = 0x1fff_ffff_ffff_ffff stateCountLSBMask stateEntry = 0x0000_0000_0000_0001 stateCountOdd stateEntry = 0x0000_0000_0000_0001 stateCountEven stateEntry = 0x0000_0000_0000_0000 ) // length reports the number of elements in the JSON object or array. // Each name and value in an object entry is treated as a separate element. func (e stateEntry) length() int { return int(e & stateCountMask) } // isObject reports whether this is a JSON object. func (e stateEntry) isObject() bool { return e&stateTypeMask == stateTypeObject } // isArray reports whether this is a JSON array. func (e stateEntry) isArray() bool { return e&stateTypeMask == stateTypeArray } // needObjectName reports whether the next token must be a JSON string, // which is necessary for JSON object names. func (e stateEntry) needObjectName() bool { return e&(stateTypeMask|stateCountLSBMask) == stateTypeObject|stateCountEven } // needImplicitColon reports whether an colon should occur next, // which always occurs after JSON object names. func (e stateEntry) needImplicitColon() bool { return e.needObjectValue() } // needObjectValue reports whether the next token must be a JSON value, // which is necessary after every JSON object name. func (e stateEntry) needObjectValue() bool { return e&(stateTypeMask|stateCountLSBMask) == stateTypeObject|stateCountOdd } // needImplicitComma reports whether an comma should occur next, // which always occurs after a value in a JSON object or array // before the next value (or name). func (e stateEntry) needImplicitComma(next Kind) bool { return !e.needObjectValue() && e.length() > 0 && next != '}' && next != ']' } // increment increments the number of elements for the current object or array. // This assumes that overflow won't practically be an issue since // 1< 0. func (e *stateEntry) decrement() { (*e)-- } // disableNamespace disables the JSON object namespace such that the // Encoder or Decoder no longer updates the namespace. func (e *stateEntry) disableNamespace() { *e |= stateDisableNamespace } // isActiveNamespace reports whether the JSON object namespace is actively // being updated and used for duplicate name checks. func (e stateEntry) isActiveNamespace() bool { return e&(stateDisableNamespace) == 0 } // invalidateNamespace marks the JSON object namespace as being invalid. func (e *stateEntry) invalidateNamespace() { *e |= stateInvalidNamespace } // isValidNamespace reports whether the JSON object namespace is valid. func (e stateEntry) isValidNamespace() bool { return e&(stateInvalidNamespace) == 0 } // objectNameStack is a stack of names when descending into a JSON object. // In contrast to objectNamespaceStack, this only has to remember a single name // per JSON object. // // This data structure may contain offsets to encodeBuffer or decodeBuffer. // It violates clean abstraction of layers, but is significantly more efficient. // This ensures that popping and pushing in the common case is a trivial // push/pop of an offset integer. // // The zero value is an empty names stack ready for use. type objectNameStack struct { // offsets is a stack of offsets for each name. // A non-negative offset is the ending offset into the local names buffer. // A negative offset is the bit-wise inverse of a starting offset into // a remote buffer (e.g., encodeBuffer or decodeBuffer). // A math.MinInt offset at the end implies that the last object is empty. // Invariant: Positive offsets always occur before negative offsets. offsets []int // unquotedNames is a back-to-back concatenation of names. unquotedNames []byte } func (ns *objectNameStack) reset() { ns.offsets = ns.offsets[:0] ns.unquotedNames = ns.unquotedNames[:0] if cap(ns.offsets) > 1<<6 { ns.offsets = nil // avoid pinning arbitrarily large amounts of memory } if cap(ns.unquotedNames) > 1<<10 { ns.unquotedNames = nil // avoid pinning arbitrarily large amounts of memory } } func (ns *objectNameStack) length() int { return len(ns.offsets) } // getUnquoted retrieves the ith unquoted name in the namespace. // It returns an empty string if the last object is empty. // // Invariant: Must call copyQuotedBuffer beforehand. func (ns *objectNameStack) getUnquoted(i int) []byte { ns.ensureCopiedBuffer() if i == 0 { return ns.unquotedNames[:ns.offsets[0]] } else { return ns.unquotedNames[ns.offsets[i-1]:ns.offsets[i-0]] } } // invalidOffset indicates that the last JSON object currently has no name. const invalidOffset = math.MinInt // push descends into a nested JSON object. func (ns *objectNameStack) push() { ns.offsets = append(ns.offsets, invalidOffset) } // replaceLastQuotedOffset replaces the last name with the starting offset // to the quoted name in some remote buffer. All offsets provided must be // relative to the same buffer until copyQuotedBuffer is called. func (ns *objectNameStack) replaceLastQuotedOffset(i int) { // Use bit-wise inversion instead of naive multiplication by -1 to avoid // ambiguity regarding zero (which is a valid offset into the names field). // Bit-wise inversion is mathematically equivalent to -i-1, // such that 0 becomes -1, 1 becomes -2, and so forth. // This ensures that remote offsets are always negative. ns.offsets[len(ns.offsets)-1] = ^i } // replaceLastUnquotedName replaces the last name with the provided name. // // Invariant: Must call copyQuotedBuffer beforehand. func (ns *objectNameStack) replaceLastUnquotedName(s string) { ns.ensureCopiedBuffer() var startOffset int if len(ns.offsets) > 1 { startOffset = ns.offsets[len(ns.offsets)-2] } ns.unquotedNames = append(ns.unquotedNames[:startOffset], s...) ns.offsets[len(ns.offsets)-1] = len(ns.unquotedNames) } // clearLast removes any name in the last JSON object. // It is semantically equivalent to ns.push followed by ns.pop. func (ns *objectNameStack) clearLast() { ns.offsets[len(ns.offsets)-1] = invalidOffset } // pop ascends out of a nested JSON object. func (ns *objectNameStack) pop() { ns.offsets = ns.offsets[:len(ns.offsets)-1] } // copyQuotedBuffer copies names from the remote buffer into the local names // buffer so that there are no more offset references into the remote buffer. // This allows the remote buffer to change contents without affecting // the names that this data structure is trying to remember. func (ns *objectNameStack) copyQuotedBuffer(b []byte) { // Find the first negative offset. var i int for i = len(ns.offsets) - 1; i >= 0 && ns.offsets[i] < 0; i-- { continue } // Copy each name from the remote buffer into the local buffer. for i = i + 1; i < len(ns.offsets); i++ { if i == len(ns.offsets)-1 && ns.offsets[i] == invalidOffset { if i == 0 { ns.offsets[i] = 0 } else { ns.offsets[i] = ns.offsets[i-1] } break // last JSON object had a push without any names } // As a form of Hyrum proofing, we write an invalid character into the // buffer to make misuse of Decoder.ReadToken more obvious. // We need to undo that mutation here. quotedName := b[^ns.offsets[i]:] if quotedName[0] == invalidateBufferByte { quotedName[0] = '"' } // Append the unquoted name to the local buffer. var startOffset int if i > 0 { startOffset = ns.offsets[i-1] } if n := consumeSimpleString(quotedName); n > 0 { ns.unquotedNames = append(ns.unquotedNames[:startOffset], quotedName[len(`"`):n-len(`"`)]...) } else { ns.unquotedNames, _ = unescapeString(ns.unquotedNames[:startOffset], quotedName) } ns.offsets[i] = len(ns.unquotedNames) } } func (ns *objectNameStack) ensureCopiedBuffer() { if len(ns.offsets) > 0 && ns.offsets[len(ns.offsets)-1] < 0 { panic("BUG: copyQuotedBuffer not called beforehand") } } // objectNamespaceStack is a stack of object namespaces. // This data structure assists in detecting duplicate names. type objectNamespaceStack []objectNamespace // reset resets the object namespace stack. func (nss *objectNamespaceStack) reset() { if cap(*nss) > 1<<10 { *nss = nil } *nss = (*nss)[:0] } // push starts a new namespace for a nested JSON object. func (nss *objectNamespaceStack) push() { if cap(*nss) > len(*nss) { *nss = (*nss)[:len(*nss)+1] nss.last().reset() } else { *nss = append(*nss, objectNamespace{}) } } // last returns a pointer to the last JSON object namespace. func (nss objectNamespaceStack) last() *objectNamespace { return &nss[len(nss)-1] } // pop terminates the namespace for a nested JSON object. func (nss *objectNamespaceStack) pop() { *nss = (*nss)[:len(*nss)-1] } // objectNamespace is the namespace for a JSON object. // In contrast to objectNameStack, this needs to remember a all names // per JSON object. // // The zero value is an empty namespace ready for use. type objectNamespace struct { // It relies on a linear search over all the names before switching // to use a Go map for direct lookup. // endOffsets is a list of offsets to the end of each name in buffers. // The length of offsets is the number of names in the namespace. endOffsets []uint // allUnquotedNames is a back-to-back concatenation of every name in the namespace. allUnquotedNames []byte // mapNames is a Go map containing every name in the namespace. // Only valid if non-nil. mapNames map[string]struct{} } // reset resets the namespace to be empty. func (ns *objectNamespace) reset() { ns.endOffsets = ns.endOffsets[:0] ns.allUnquotedNames = ns.allUnquotedNames[:0] ns.mapNames = nil if cap(ns.endOffsets) > 1<<6 { ns.endOffsets = nil // avoid pinning arbitrarily large amounts of memory } if cap(ns.allUnquotedNames) > 1<<10 { ns.allUnquotedNames = nil // avoid pinning arbitrarily large amounts of memory } } // length reports the number of names in the namespace. func (ns *objectNamespace) length() int { return len(ns.endOffsets) } // getUnquoted retrieves the ith unquoted name in the namespace. func (ns *objectNamespace) getUnquoted(i int) []byte { if i == 0 { return ns.allUnquotedNames[:ns.endOffsets[0]] } else { return ns.allUnquotedNames[ns.endOffsets[i-1]:ns.endOffsets[i-0]] } } // lastUnquoted retrieves the last name in the namespace. func (ns *objectNamespace) lastUnquoted() []byte { return ns.getUnquoted(ns.length() - 1) } // insertQuoted inserts a name and reports whether it was inserted, // which only occurs if name is not already in the namespace. // The provided name must be a valid JSON string. func (ns *objectNamespace) insertQuoted(name []byte, isVerbatim bool) bool { if isVerbatim { name = name[len(`"`) : len(name)-len(`"`)] } return ns.insert(name, !isVerbatim) } func (ns *objectNamespace) insertUnquoted(name []byte) bool { return ns.insert(name, false) } func (ns *objectNamespace) insert(name []byte, quoted bool) bool { var allNames []byte if quoted { allNames, _ = unescapeString(ns.allUnquotedNames, name) } else { allNames = append(ns.allUnquotedNames, name...) } name = allNames[len(ns.allUnquotedNames):] // Switch to a map if the buffer is too large for linear search. // This does not add the current name to the map. if ns.mapNames == nil && (ns.length() > 64 || len(ns.allUnquotedNames) > 1024) { ns.mapNames = make(map[string]struct{}) var startOffset uint for _, endOffset := range ns.endOffsets { name := ns.allUnquotedNames[startOffset:endOffset] ns.mapNames[string(name)] = struct{}{} // allocates a new string startOffset = endOffset } } if ns.mapNames == nil { // Perform linear search over the buffer to find matching names. // It provides O(n) lookup, but does not require any allocations. var startOffset uint for _, endOffset := range ns.endOffsets { if string(ns.allUnquotedNames[startOffset:endOffset]) == string(name) { return false } startOffset = endOffset } } else { // Use the map if it is populated. // It provides O(1) lookup, but requires a string allocation per name. if _, ok := ns.mapNames[string(name)]; ok { return false } ns.mapNames[string(name)] = struct{}{} // allocates a new string } ns.allUnquotedNames = allNames ns.endOffsets = append(ns.endOffsets, uint(len(ns.allUnquotedNames))) return true } // removeLast removes the last name in the namespace. func (ns *objectNamespace) removeLast() { if ns.mapNames != nil { delete(ns.mapNames, string(ns.lastUnquoted())) } if ns.length()-1 == 0 { ns.endOffsets = ns.endOffsets[:0] ns.allUnquotedNames = ns.allUnquotedNames[:0] } else { ns.endOffsets = ns.endOffsets[:ns.length()-1] ns.allUnquotedNames = ns.allUnquotedNames[:ns.endOffsets[ns.length()-1]] } } type uintSet64 uint64 func (s uintSet64) has(i uint) bool { return s&(1< 0 } func (s *uintSet64) set(i uint) { *s |= 1 << i } // uintSet is a set of unsigned integers. // It is optimized for most integers being close to zero. type uintSet struct { lo uintSet64 hi []uintSet64 } // has reports whether i is in the set. func (s *uintSet) has(i uint) bool { if i < 64 { return s.lo.has(i) } else { i -= 64 iHi, iLo := int(i/64), i%64 return iHi < len(s.hi) && s.hi[iHi].has(iLo) } } // insert inserts i into the set and reports whether it was the first insertion. func (s *uintSet) insert(i uint) bool { // TODO: Make this inlineable at least for the lower 64-bit case. if i < 64 { has := s.lo.has(i) s.lo.set(i) return !has } else { i -= 64 iHi, iLo := int(i/64), i%64 if iHi >= len(s.hi) { s.hi = append(s.hi, make([]uintSet64, iHi+1-len(s.hi))...) s.hi = s.hi[:cap(s.hi)] } has := s.hi[iHi].has(iLo) s.hi[iHi].set(iLo) return !has } } state_test.go000066400000000000000000000234441453663023200345050ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "fmt" "reflect" "strings" "testing" ) func TestStateMachine(t *testing.T) { // To test a state machine, we pass an ordered sequence of operations and // check whether the current state is as expected. // The operation type is a union type of various possible operations, // which either call mutating methods on the state machine or // call accessor methods on state machine and verify the results. type operation any type ( // stackLengths checks the results of stateEntry.length accessors. stackLengths []int // appendTokens is sequence of token kinds to append where // none of them are expected to fail. // // For example: `[nft]` is equivalent to the following sequence: // // pushArray() // appendLiteral() // appendString() // appendNumber() // popArray() // appendTokens string // appendToken is a single token kind to append with the expected error. appendToken struct { kind Kind want error } // needDelim checks the result of the needDelim accessor. needDelim struct { next Kind want byte } ) // Each entry is a sequence of tokens to pass to the state machine. tests := []struct { label string ops []operation }{{ "TopLevelValues", []operation{ stackLengths{0}, needDelim{'n', 0}, appendTokens(`nft`), stackLengths{3}, needDelim{'"', 0}, appendTokens(`"0[]{}`), stackLengths{7}, }, }, { "ArrayValues", []operation{ stackLengths{0}, needDelim{'[', 0}, appendTokens(`[`), stackLengths{1, 0}, needDelim{'n', 0}, appendTokens(`nft`), stackLengths{1, 3}, needDelim{'"', ','}, appendTokens(`"0[]{}`), stackLengths{1, 7}, needDelim{']', 0}, appendTokens(`]`), stackLengths{1}, }, }, { "ObjectValues", []operation{ stackLengths{0}, needDelim{'{', 0}, appendTokens(`{`), stackLengths{1, 0}, needDelim{'"', 0}, appendTokens(`"`), stackLengths{1, 1}, needDelim{'n', ':'}, appendTokens(`n`), stackLengths{1, 2}, needDelim{'"', ','}, appendTokens(`"f"t`), stackLengths{1, 6}, appendTokens(`"""0"[]"{}`), stackLengths{1, 14}, needDelim{'}', 0}, appendTokens(`}`), stackLengths{1}, }, }, { "ObjectCardinality", []operation{ appendTokens(`{`), // Appending any kind other than string for object name is an error. appendToken{'n', errMissingName}, appendToken{'f', errMissingName}, appendToken{'t', errMissingName}, appendToken{'0', errMissingName}, appendToken{'{', errMissingName}, appendToken{'[', errMissingName}, appendTokens(`"`), // Appending '}' without first appending any value is an error. appendToken{'}', errMissingValue}, appendTokens(`"`), appendTokens(`}`), }, }, { "MismatchingDelims", []operation{ appendToken{'}', errMismatchDelim}, // appending '}' without preceding '{' appendTokens(`[[{`), appendToken{']', errMismatchDelim}, // appending ']' that mismatches preceding '{' appendTokens(`}]`), appendToken{'}', errMismatchDelim}, // appending '}' that mismatches preceding '[' appendTokens(`]`), appendToken{']', errMismatchDelim}, // appending ']' without preceding '[' }, }} for _, tt := range tests { t.Run(tt.label, func(t *testing.T) { // Flatten appendTokens to sequence of appendToken entries. var ops []operation for _, op := range tt.ops { if toks, ok := op.(appendTokens); ok { for _, k := range []byte(toks) { ops = append(ops, appendToken{Kind(k), nil}) } continue } ops = append(ops, op) } // Append each token to the state machine and check the output. var state stateMachine state.reset() var sequence []Kind for _, op := range ops { switch op := op.(type) { case stackLengths: var got []int for i := 0; i < state.depth(); i++ { e := state.index(i) got = append(got, e.length()) } want := []int(op) if !reflect.DeepEqual(got, want) { t.Fatalf("%s: stack lengths mismatch:\ngot %v\nwant %v", sequence, got, want) } case appendToken: got := state.append(op.kind) if !reflect.DeepEqual(got, op.want) { t.Fatalf("%s: append('%c') = %v, want %v", sequence, op.kind, got, op.want) } if got == nil { sequence = append(sequence, op.kind) } case needDelim: if got := state.needDelim(op.next); got != op.want { t.Fatalf("%s: needDelim('%c') = '%c', want '%c'", sequence, op.next, got, op.want) } default: panic(fmt.Sprintf("unknown operation: %T", op)) } } }) } } // append is a thin wrapper over the other append, pop, or push methods // based on the token kind. func (s *stateMachine) append(k Kind) error { switch k { case 'n', 'f', 't': return s.appendLiteral() case '"': return s.appendString() case '0': return s.appendNumber() case '{': return s.pushObject() case '}': return s.popObject() case '[': return s.pushArray() case ']': return s.popArray() default: panic(fmt.Sprintf("invalid token kind: '%c'", k)) } } func TestObjectNamespace(t *testing.T) { type operation any type ( insert struct { name string wantInserted bool } removeLast struct{} ) // Sequence of insert operations to perform (order matters). ops := []operation{ insert{`""`, true}, removeLast{}, insert{`""`, true}, insert{`""`, false}, // Test insertion of the same name with different formatting. insert{`"alpha"`, true}, insert{`"ALPHA"`, true}, // case-sensitive matching insert{`"alpha"`, false}, insert{`"\u0061\u006c\u0070\u0068\u0061"`, false}, // unescapes to "alpha" removeLast{}, // removes "ALPHA" insert{`"alpha"`, false}, removeLast{}, // removes "alpha" insert{`"alpha"`, true}, removeLast{}, // Bulk insert simple names. insert{`"alpha"`, true}, insert{`"bravo"`, true}, insert{`"charlie"`, true}, insert{`"delta"`, true}, insert{`"echo"`, true}, insert{`"foxtrot"`, true}, insert{`"golf"`, true}, insert{`"hotel"`, true}, insert{`"india"`, true}, insert{`"juliet"`, true}, insert{`"kilo"`, true}, insert{`"lima"`, true}, insert{`"mike"`, true}, insert{`"november"`, true}, insert{`"oscar"`, true}, insert{`"papa"`, true}, insert{`"quebec"`, true}, insert{`"romeo"`, true}, insert{`"sierra"`, true}, insert{`"tango"`, true}, insert{`"uniform"`, true}, insert{`"victor"`, true}, insert{`"whiskey"`, true}, insert{`"xray"`, true}, insert{`"yankee"`, true}, insert{`"zulu"`, true}, // Test insertion of invalid UTF-8. insert{`"` + "\ufffd" + `"`, true}, insert{`"` + "\ufffd" + `"`, false}, insert{`"\ufffd"`, false}, // unescapes to Unicode replacement character insert{`"\uFFFD"`, false}, // unescapes to Unicode replacement character insert{`"` + "\xff" + `"`, false}, // mangles as Unicode replacement character removeLast{}, insert{`"` + "\ufffd" + `"`, true}, // Test insertion of unicode characters. insert{`"☺☻☹"`, true}, insert{`"☺☻☹"`, false}, removeLast{}, insert{`"☺☻☹"`, true}, } // Execute the sequence of operations twice: // 1) on a fresh namespace and 2) on a namespace that has been reset. var ns objectNamespace wantNames := []string{} for _, reset := range []bool{false, true} { if reset { ns.reset() wantNames = nil } // Execute the operations and ensure the state is consistent. for i, op := range ops { switch op := op.(type) { case insert: gotInserted := ns.insertQuoted([]byte(op.name), false) if gotInserted != op.wantInserted { t.Fatalf("%d: objectNamespace{%v}.insert(%v) = %v, want %v", i, strings.Join(wantNames, " "), op.name, gotInserted, op.wantInserted) } if gotInserted { b, _ := unescapeString(nil, []byte(op.name)) wantNames = append(wantNames, string(b)) } case removeLast: ns.removeLast() wantNames = wantNames[:len(wantNames)-1] default: panic(fmt.Sprintf("unknown operation: %T", op)) } // Check that the namespace is consistent. gotNames := []string{} for i := 0; i < ns.length(); i++ { gotNames = append(gotNames, string(ns.getUnquoted(i))) } if !reflect.DeepEqual(gotNames, wantNames) { t.Fatalf("%d: objectNamespace = {%v}, want {%v}", i, strings.Join(gotNames, " "), strings.Join(wantNames, " ")) } } // Verify that we have not switched to using a Go map. if ns.mapNames != nil { t.Errorf("objectNamespace.mapNames = non-nil, want nil") } // Insert a large number of names. for i := 0; i < 64; i++ { ns.insertUnquoted([]byte(fmt.Sprintf(`name%d`, i))) } // Verify that we did switch to using a Go map. if ns.mapNames == nil { t.Errorf("objectNamespace.mapNames = nil, want non-nil") } } } func TestUintSet(t *testing.T) { type operation any // has | insert type has struct { in uint want bool } type insert struct { in uint want bool } // Sequence of operations to perform (order matters). ops := []operation{ has{0, false}, has{63, false}, has{64, false}, has{1234, false}, insert{3, true}, has{2, false}, has{3, true}, has{4, false}, has{63, false}, insert{3, false}, insert{63, true}, has{63, true}, insert{64, true}, insert{64, false}, has{64, true}, insert{3264, true}, has{3264, true}, insert{3, false}, has{3, true}, } var us uintSet for i, op := range ops { switch op := op.(type) { case has: if got := us.has(op.in); got != op.want { t.Fatalf("%d: uintSet.has(%v) = %v, want %v", i, op.in, got, op.want) } case insert: if got := us.insert(op.in); got != op.want { t.Fatalf("%d: uintSet.insert(%v) = %v, want %v", i, op.in, got, op.want) } default: panic(fmt.Sprintf("unknown operation: %T", op)) } } } testdata/000077500000000000000000000000001453663023200336015ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/jsoncanada_geometry.json.gz000066400000000000000000002136061453663023200402450ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json/testdata‹\Œ%bÄ@…ïòÛà0È’®.‡9“.ãÙÃjŸ{ô]awîÐð–»ý&y6uD»Â´`Cºd[П»±í6¦K6»bê¯ÐÍT?mp·!KL“ì6ç©\¿ï¦>g392fm°›áŸŸg.G„#®I›—b â/Bßö3¼¯Ã¥dpb1”VQîS±fØ|þX”C?SOxfØkFÝ^l*´˜ýPá|–•™аõ<¦0„3;ÕÊÐf—´Ki,Õ2Šuž §M“iéZ ­¹UH}¯Ë®eàñrfÿ5ÉXNžÂÔú¦ÂéÛǶ|†ƒOÌçSPÇªÂæ$}åèÜzå¿Ë*}†¶ÇW,?åjGDânZùLþ|ý©.¥×­äS:Ÿ2ÀG_§P_»a¤‡3°TôðK"6âÓXŒœ·ÏäW­"c¿˜¸K6k­—ËÒ*ý™¨qŸYßÁáF3þéêqgñbp‹Ÿ Èq·þ`ýˆ¿® ÂâGëµ ëé¸V!vƒ £5)ܵf¹3«ïMƒ ¥NÌGRï‡= ÞÌ\®tîý»×§ûÚS˜’þÒI ýÓ*Ÿù¦Tz±Úf¡ýÚâ — †Uó°n¿kô,c¹\äµì¥^Ð4âóÅ‘ë¶ï¨•“‹M‰ˆ¡o0e,ÄÇZu—+R>lË,V)Öu?(ùlk_ Úö³ åÃzm{¥Šˆ\l¿ˆ6Å<—1³“Ê€Q™¿ýé•mÊTA»L¦—K§¼gý„`Bv·ËTñ?FÍv7›V…Âg4ásçb;u*â4;Ïû·½Š‚ îÑøÜðp3»Š—2¥ì]šý® y/{x%þ|S^7EeŒK¸Š¿œ±}²mm›“PrŸÕ!EG‚ìµ!±–Tô"a½(FØLƒˆiß‹·'ò'L£@Ç# w=ÌÂà¹kV¦/.£Sˆµõ»&¹ÛÔ’ ë¦ñãB­0ðÃ9ŠÏ{¹9ã²^ßâÀç*uÞG ¡Tk¦Œ#ß¹—ˆ¹_5ùU|ùI‰È!Ïâ5Fßàíµ4kcúb(ÍÏf—À¡c¶*|$a> ¾ÖÜÓ/ˆì€1ÀŸ Åé}q0>g,¿Go€µøõC…ïö¨@K®È›ÞwÈA!‹;ò^'¤”ÓÌ’y1Œ4#6Ö뢈ÑÙ-ðÛ//¬FMS[%?7M7ç¢Ó¯«sc;ŠŽ”J¼öÄJç19fµta6Úï1¥fÖËÃâ<3åÃeŠUÝÌ’~æ-%Bç\ò›Nª. ê©:ÃêÙ~m "|ݶŒÙÏ´[GxË)]`•)>Ée8· †×Õ7±0Jî6Öõ ¾§ù°eæØíÂÆé–‹†æÚËÙ„,Ì\‚Ûí‹¥ÖxÛ×êÊLûŽn®DD|rÂ2›Õw,úX˜™Ì :·„÷½Ü}Elóž,CÖÚW¸„’Ë'rù¨‰È¸õÀÄÃàÂz *¹ÛéE½…øÌdêar÷–è½ cª›¼d ·AñVs¼<—ÚÅ^£?É`âåR<åcÉŸRò~&凮j=…ÍE‡®|Ùs.ÝY»âa=mf-ƒZªÒå¯E<3z 4¥Ü\A³fðÄF§i›á§I~î8·(Ó›”u³¼Â0¸¥sòϱ©Dät^½B×î zË‘›Î Z ¦ªÍ8›GÄ·È#G­… ¹ÅÞ¤=Åxÿcü¹å,ög\µzœP½ õ Šg,^5ëœ8úÕqb? ,µüv£Ì¯å9¥l,z&¦ß×/”¬ÿ‚_.sˆŒe^܉î[{³ñÜFBA54æâDP¦ÓmYª´Únݜˎ©Š^# y"\Z MûìŠë$¦–#é'sJŒÝ{›NuiÙ]ËâÏÿ©wBüÛNÿæ–^v¤–ÅŠ#,mLu*ûáDFÓºÏ3á>§õ‹K•#ÞZ¨2f϶Π)¹†çÅ©(Zž/ÏlªÒBU j}×ÇÒsÃksìc ºBB`Ò¿å+Y|¹aÖ³ž-ÜÛÎëÎÐï…ˆéãï¯Ø‹TJÁ´¨$Âþõ /Óº6ꩺ×bí™ò(ƒw'` |=ûã6Ž—çºí£{3†ÎKbœúlÙ'ÊéÙèzàæé»û6 ËuÌ:×§&Å!ó&³€ªØ…);¯AV² ö^T•pEQÉL[U6WÅAsóWSæã8” óøLOSÈ|öl&¹Âíî®ãæ, Nü’ªÒo§JïñÌâ| G”“BŽ”_(‰Tôn“çô`ÈÑ›m.<Õ®³žSš |wgžr¹vwA õ·8qðôìz}ıAI‰Ô™P^a™ß8ã1 ¹Â"ÃóV4 t'‰˜&A š£ÒÅ)FõÓÅñ1Ø“³zÔ—”zf®T½Çhb®©(Aô½îÿ6ØbØÝ=¦ÎÄý…A]âš!XO0Z×9óz±s­vûýVÜù"™…ea8íNÆ¢„5üž§ú:¬K¨™sRöR5ú",,,¸“çWq‡ö­t_/1©`£=•/;®…™xö‹‘ ÷#XlqÄ¥×~õùc×–ôLËjg”â¼`þÛõ´Q°ó~»þkWPåÜ©QKX¨¤sýÃî¬x‡uã ³W ƱÙç_˜^,¹ìêÆgfM+'<¶ô&8ñ0âÈî¹Ìé¨eY¸ &ÙÂE8fBš£¸S¥›a ŸúLêxò¡e6@(޳*;8&÷cÐ?@—ðl“|³ôÅ’YÃÞ0ò¼`lfòæhê\ö®ÂoUñuBè-™YçÄüa¶Ï0KWŽfPÌkf¡A{ÞüÂÈlšƒKoº€ßƯUÕUè…£¼×—:ì#õßês/¸L.]–fzÎeã`/…ŒOéèý;óÚOnR”ž}&3ÇœZíÔæš[UNn¼UâÂ™Ê ÚõÀ9²Ä ¸ŽÇ»ØË¥7bƒØý(j"Ï¡.˜k›“‰µ|wË<8·söÌöêhq*ÿוY8#jgEžÃ¢·sø &1ÊÆñÀRäÈ&¾02f¶Ëa`þ±“sõ8}ŠWKôv"÷˜PóŸÅ†å%¹ŽqÖ¹§3Õ„,#|ÃòAé2Ÿiï“ß›dÕ㟈=8é¨ËaÚÕÙý̰¢z%¾(ÛXÉx&Žn ¬‚`²‘ä¶w[@òL¿ÝBüêËZ"#·âzÇWXÖFGþƹ˜µmµ‚‘j‡Œr'V=ÍŽlæ BD&,ˆÍÚÍ\0¶$gXú*±Ä±º*<àÌôÖjEª22Íü! Z†dÍØ0ÿñ ›A7NU•®À•’{\Àš6É8<^ö`ÖÚ¢ó³WÍ"þƒ9‘À^T p:«±ç£wYí ñg0ÜÍî›13Ó5UNç ¾8/¹¾6®Av;|¯òú\À‘/=¥ê<áYÌàçãq•ç}6oó…XP3D I2ßä Òai[OÈѵØ8‡pÞuÍÚ0‰)ÌjÒÁ=+L©õ°¯´ ¢³Ò ˜W&@ñKSrŸ7Õ-©±øâ||c#×›“Ì¥¹qª$içdÖº¬j ɲøºmZ|yÁ~O{¹+)삽¨=™æ•ã\ŸùNipïù'3¼Aª™y-ÍGÍÐŽzfÛoù[÷ñ…A#Â&»ˆ¦.?É–`º¼™ä¾)+4ÄÕ QÝHi ×Íú]Eòxv{‚MŽÛùŒ#÷ Kˆø•)j‹Vö¬^#G& ˜V­´7OÈöpÖò†rÛ¨ª!kùî‹_¸;œ°p¢Úá ÎGÏ*‰ÇˆaÊ“Ae«˜VGØðî:µ]ISÁƒ9¢·qä~tž.+¦ÚÝéd¥œ.[%1šÅOhÏDUÏ1þáŠ~Ÿ 8mT>¨ÒÌMÍÎû憓5k’é»Ð/»¤†À»-€ßüÙ„ò!E=Í/7Èà—ü~ZhM£ž’“ÿˆašD¬¡>â‚’‡î¢gØœNV2L†)_\kêÅ)áí„me𚌻hë kji¬è·^RùÉ3ÖZMPXûf!·E`4Tîq„öìŽ$Ž[<ä<ºä7Ãa8ûïƒãN§'ŠVüNõg©ÚQ"NF~Æ[R„¹“±xÖ¡VßS‹K&Á£VpãØ<;ýà2˜ìŒ;³H ±<š¬C¢Ñk3I=k[»Ð;l¿pNä¹f²öÈÏŒ#t³°Íô_óâáê>Å5ŸÅ» CA‚‡Œš=œ.N ¢îW$ùcˆ2{V#ö »ó(}`õ6±J­ÉqqiÿwŠ™øá9·šµß"–ɱ¹^ã}È`Lq•Ä𛥜f†y„‚Q£ƒ2Sš@VTËD€æ¥UÁžìMBÌŒ§ã[ˆHf?öäŽùæŒdôÔ pUã›+ÓFÚ8g¢öž%R”žq‰«gËåþºFèuƒ$3ÈïÓ«™øÁiêy·±q á =rDÆLhqûß×§‘AuÍ¡™ï·Á—<™ŸŸ†o`ˆ±ÅˆVÌÜÃî–S8”YñçÌÀ%ö*Aà-á–Ñ¥hL[¥VmÒ 9a3Gvpb šôâðz–™Åƒž Î[ãX˜þ!°Ä%ÊË@Ô È(7aÛ@ÓbÌ‚¸ÈùÈ*IáºX1_™³'Y+<¬Øõ :\îÏ}X†ñšV]fh½¤‚™,ipUÑ[Pë#ÉF2™ a¿/ÒþºÅ³’ñâ·0”i-©+0ïy¦zŒ‚ÙäŽWÔ(h9ےмô(0Dt<±ž&Ïøï×”ÖkAkRJIº4ò¦Ì¶`͆ÿ‘`o×i¤7–3Å †/ “¤=´bôSÈ ¾‡ßKi5_Ÿ`rõù.–Û±Fkuº7pÕÖÏtÛÿO§grå‰Ù ïg*ŠÛ8ÑYU5Ë£¼§¾@S{…JÒÔû×· `Å‘kx~kðˆdØÒ!‡ÁgP?”Xy4} å &.D.ŽÁ^4‚‹¿¥x¨×WV‚.v7J ®¬d­yÇÇít’éXÐ"8’¼wblœöÿž©p·Zþ/Ö8›ÅEÓǧäÚnc ¦º6S…;p›ô‰«Np= ývPÚ!w~.[¦Ê~¦öpk^ÊÊÃ`¼:d^Ýdcoí½` ñi~—ÉÞä_‡äe l ë8G±Iúžmôî/ž¦WíÙúÕCˆh^rTîcÂù˜Í‹0* W¦*õŒ»Õx 6 @>ÓîäÐ=î•ä‹Ap‰x¿ª 3ÉÈŒf$:Y©c>Æ‚÷B]R®Wíª1·æ×\šQh¨?g9ØÑ. 9j©‹ª¬wì.Ól­Òúç¬[2›Ùš}ôô’ÅPšÙ¼Öw0RÏ<¦þÕÏfC:dX'OÕïtŸ‡™ÑÔµ¤™]˜îgÁQ¶dÖûíqŽ”K´Ñ¦-÷¶Ä2¯ãΪ¬1.lSOIà÷tŠ( — V7(O™9@× ¸búm±+Á'IªÔ¿îª†–ϲ ޳Ù^”Sú3®ªÔåa‡aæR:MEîºjoSÑýæ<À™å8vEfÉd­ú»nuÚ,§Ò1ìØš%ꩊ‡Ù¸C‡X’g4zùŒJ”®uPýçÑI8ùµÞ²;uöà ¡ÓÈ·è7.y´+èƒËY>0§2q²É{eXŸÛ(¸Z €û[hÙ¾çúJ®ù2˜¯ùœF݇6Hª¦øk7׎P€ *S®†Ó¹ÁZ˜PÝÕ`i˜[¹ÿ°`ˆŸ3 ñƒL=z˜cÐ&EѪ¢wT,®§÷Ì.%žR ëËh¤eÄÅ%°P•[ÿpJéÃr×Oˆ |ã|\á,€Œæ•sºeõáxM$ô½ˆÅbÅ×»Ž}Q§¾*º»¿0¼îkñ,V·–6¶‚Õä@eñø~€ÂJ6hÚ‡f†\7Ž-sÜÄ?¦Ó¨.©óª†XúX¤xqûÁÓ‹ý=·júzŠSkÖ&m€± iÞ­ºú®!S¯˜ç]iUúžÐP³™ì'¡6ó tË›Í4þ5F6.„‹×xŒÿÏ8^Aô6:`É|ÐÑÀdn:¹åûÅÏOF<¸˜-*ý²«Z¬S&9÷‡œG•Šþ[>þ`.@]0˜½Ê²Ùý‹âîYâ«ñ[å“”dö‡`!½=ÍКÁ±?œf¾ü9OÖzæá?ðk4<‹lò}üËá1—ÜL^»S zEVä‘þÃ¥Kg_Nœ(Ö“=þENÎ|‘*—ÉóË€eh¡!—,ÀÏÄÜMç‰r0È$k¢Ã•³ i°L õå(”²®éP½gFU½Ã¿ÁÞ,‰ƒK‘ÉZ½¾ýÇrvÊôRÜ¢äæ?ò#ìÉ5yÌå‡eœQNWð5!î³r¦EqçÖ7.àiòŒçõ:-dU‰ù8©Žé!Tpš¶½âÊ~mœýÆJùÛùU+WKë–»NÞÍÆšC0É]Ç ƒ†”ãs3½´4H»7¬V8óõèÁªäžV¿9äu;‡³Ç)õ–Ùë«S}–w‚Ç(ß)È…“Ð0ºpü«xæÇ]ráò'Ë«t—¢ä¢WƒIÇb°(æ‹Ä»k7gðï|½Ó° Y6ëJÒV%•Á—âg(ùÛ” sâ©î?73ª»ûFþÅè›efpš0Oi_à äã0ï*RVF„qþ!®•é³)"Êi…¨N£þ༠6ÏFB;í2f‡\=†ÎlÞzÒ-fZbõŠ0Ó|`Áš|Ÿ¦ã£ÿÇØ•ælÓ²Ø u®0¦ýo¬£5÷÷&ÏoOA‰ˆŠ‚îôP™]Ílfž]8›Ão h¼ÚûÛ³.Ü2öM†àQÂo7‹™G—„sAÿîW`†Ýn3µÐKH§5^ ßp|¾÷¹jø[ímÃ4"‡è#ZzNíú“ jÂníißN:PÙõ#©½¯«'"’Ÿ#3SA®qã|!IPrîâœÙ]ÎZzŸï¡.›ÙéW‘j<Æ_Àb.ÕñŒ}ᬗô»ú¬?.ÁîÃZ%!ù¼Õ÷(ëꇙဉHwXOµÈ¸a„¬w6KûÝÆ«2,–¢7’/dÇqüŠPUêÙž<%nŽ h w9áÁ‘„Èn¯¿Idï¬}[½‘ 6­ã1¦W`)±ýˆú9מv—édê‹Q%4Ûœ&‰kÒTeçùÆÕ.­×`}pœ¨ÊýC¢*zj,Ùcè—ýH†”ò+G,Ùel‡ñ^ÍI=IÌ‚Ef>ˆŸU“ÀBM|Z…øI/¢ æ6êC]0$¸'¢¶#µÉW÷7(›Y]Èô^µÂŸúŽ£v•öké·ÖiËi›\¶œs/ßl‘OU7_ûÐÁt#BÇ•µ=XÝ0Ϥ–5wÁ8>Ï‹´©Ô¦¿.`dUéáQgÊLïì¡C|ÁòWF-Ošÿ(uœëÿ‰é7ÐþØnü[ •ÏªÕ Öë:ç £Zg ÆVÁRY@—¶QÈÜÒ£²(æè.˜Çß2sž®ù%¡^0“o°bzYþR«½ÐZ@–ªYåuÁÐk-˜(¾PÜ.ÆÒEA¼šòÀÜÚÄØ0É6ŸqvñÒÜ7 =ÆÞ˜¹§¨÷àšÃ ¿`^°Me‹üØko[x¹£Žzè› ÏH½ëj‰©B¼Óãy„ÿŸÞÌ@劚¥hõ’kùå7ÎP!Ùùš˜ÌPïKÙÔzyeóñ¤š¿©@©ãÿ -•_Ú3MgÙíi3¦as³Y“ɼÕj8+;Ø™õMÔ;^Ô«wÉÉ#%a»Mü•ÌÛî¬õ=¶¼Ÿ)GúÃeâ>ìiqiLå¯ÑõM¬ï¯ê…© ÷™¤Y_J·g(©¤ƒšògÃéÁ‰€¾¶e¶<ÑuÃ8Õ)»‘¾:ËÌÉl7KÏ}í/·™b‘·Yï¼$³Ú?cfv.VI&cÝÉF%_*J>$ÅŠ*;bùRÙóêxUÉÑý™Ef¦Š…CáS©zÍ/ÜsgªNΪr0%:̯Î<ÌÆJ†Ît+6M¦gØÍTŽüçQG.ÅC÷Ù´cƒË¤ÛMç– ,ŸÑ#ªÎ×ý[øÛ‚nÌ4ÌŽ£úÛæ×îp^ÓÑÒy¦ëÛ­VìÚ§u@$y`¤™Ùg­“êóíGÌ)…»=qž1q,RµUðó€²a3hÞlæò}ÙΚ9 P§8U®fç…«bÇÁ7- ±šÓ{ñƒ§Y“,ºEf¦ÿ1šadŽ>èE633_¸df½áÝð;ÚYaä]™¨z?/ʹ}*´«ö­ARÂܵ«¤‚âØŽì–ÑAÖƒ²g“Br´š¨ïJÕçÈÆ…)™›;„+Ûn.⪣ê®%a(|´°I<ÌœIÑ·tžb¬ÍZ.˜«P SŸV†8ÿÉÉC;¬ÌHøaúLoÿ¹0wcÛ4†0.²å7]8¡¾]@Ûû´ ªf3NkáLFäE²š‰+¿€3i_U~=Ú2åg!¯B|6b¹8N㸛SØ£YäøAZfü¸`oèEÅRç{®«‡&¡]fZ¬IÇ`‘„õ߆úó’ çЬÕl-ëE›$©ªC p%££Z;É(Ú½*Øq(nÎ+¸KTñWÄ:";7ã^Ÿë3&Fmòö‹må PJv18›ÍHÏ…ó²ÔMƺ÷¾‰={‚ˆM)¸…aÉÓA·ÔØÍ³àû« ê½ð¤Å_+÷o ß_+ ]f‘- €ñ QÐŽK#CÕµKRÕûHå÷„ëíhš=KÞ¥AIÅÇˉøyÌ3KþDÛëàÇùQ*èG ü©¶lãqÃÜSƒ¸Ôç"èñ³rfÛ€ûô)ÄU\o5Ïç]åw»q±?|tã¤Z‘ï÷ü ÓÌ\ÓékØÍ^ÍÎl˜Ïˆÿ fîZMsîPžÁ®€vt­9‚»SbÁÔHrÓ©~ ­·¹çÚYTX+xlL6³žua3+°aÎÆ¤‘Õ˜dÕ š÷qnĬf¸¶ü!‰@½Ê¶Îi5öyz±,D¿fø`qÃ.jÞj.|…ʼn+¤ºTƒ¬c-À¥¥ŽãK¦cz“3÷.·T“™SèbûEûe\l]ÓNùŽš… 4.ÍníŒØ6¿Ä߃J‘{ߟ×ùðí•$<¾»V§Ÿ†”ÊYu‘˜FŸ„Xo˜[+} Ö½ $l:#xÁ`4“¥lj3‡è‚EŸ%ó'Æ w¿²€¢”B£ùÓ2za±aVSx FÕ‹…/˜%»ÛôiÆ/µBäú­ö5îæ¨tþNü ¦Ò¢È2¥À§j §ÂþJxÇʳªy3÷áK"þJ$Ð¥æÙ]Ðl–ÿòYÓò5{n®×ÿŸ×æ»ÙB]°›íLu7KzïÂý{+S¯¹«áìÿSªd†¼èÈçwK»pî§Ëß±ìÈwÈ’4mxäÓUï<ŽºŒV(éÔ³è‹ÛO¥`‹ÊÌÆ™¸Û‘-_³-œwKL-EúO¹%AyV…ªo uîõŠ[üN¾Kæš|nÎíçÍ=•µîöüV¡-Y¹›³åI)»qáaÄ—.4'vɯ\óóm`[/héºuÑù‚ ˜ïVU‰Á.Ϭº7‰ÄÕþ_3°Ø™¼Opáï0ŠYBǧ™Ú@1RT9·tßmª¦˜ä¦–ªüG𠥓·bN³þ#éiŒÏf9µžEl‘«Š¶½|ÇED£#ÕÌfQ¨…S.X|¶H¦w4?ÿ ¨× Ý@f’Ã=ªÖ’(Ä‚I ù &ÎZã÷Ø›TnØÌ¥¹G‰Y#O7„³´ÇÌ ð8¸:DÄ;ÌÍR^ï ÚK¬f[`郕tUyØCF6QâÙ ¯¯RÛŸkíj §™>«8-œù—9,ë’ó¿ù;ò`æcäK3ÇF äò¯WW9MÁÌ뵨‘f¢Ã@z÷—ö­}v"íO3Ç}±ÜåbÊL6­õ<›m˜† NÛ_½xˆÁ[A&}×H¢TÄ`[êdÇ}nºKŸ¦õË5”Òú:Ÿ]â=p%™øÁVPÝþ-X(B¬ÏÓÖ÷ï„Yn*NíøZ¿Tjï)Pr¾÷ØVMÄ(¬P…¹MÉö$5}£|N¾KåøgѪÂnä™!ä‚%—Ùnë™§è·-ƒ[ ¢¿ ‰GŸÇ —fð3ןÓó›‰-µºQsÇ<8.KfØMü¢F³lφ9·ç²a5ssmRå ­`?ó ãÞB&£ª‡Ü-˜°çÔÆYFíÂÁÝ­ºe0m©æXŠóM>×ìØ™4µSK¢”hyÁD ²Ël*©·îúO=U¹÷"u†Lo˜!"vs1lîH’[ùÎG9Î%{ÃJœ©÷r[)mãäÊBÍš%»£ýÕB`5Ï“ÆÝìšè©Õb"qËý×åïËÌÔ+‡gõùË•N|7«F¤v#&Ö<±þ±‡ô γrþF·êjT!~`½Ô´\ÿÞ¼£/Óât¾$Pì2yƒ=;/D¾Ýg¼?¾i&ñ☪3†êq;ÄšÝ8ù3Íjè~p,ª.×Dìì´@ ý½ŒL™÷T¹`£ ¦ÚÓd8m[qzpâîÞ—®¿}þe~|2ÅÌyó5øÆ•‰ˆýŸëf-Á«ù¯9©4k©â^7a8`mÍ×+}ù,"áq'¡XíÂþÅ"æÓ,"úzë6læ#–‘nF©*ó’%ïËáÕ¬¬NÞ àõu~Í6•nîÉ¿ÍGT¼ÈZHx æf<UuéšÙ6,+³ÐaTSÊ ±š»…ün6ÑJ.˜F{þŽ\:òŒQ¼‹öÜ÷m ˜¯IXt¥_—Ñ\ÅÎc;úßT^š5Ϻo€fñ‚…CÌ£¤n÷±õOÿDîí_”z›õ Y-yM=ý fŽ›Å-n˜G:]ÍÔNŠø¥qa7hÚ÷8ãݲ©I\Ý‘þXâÙ³ûnÖ‰zÉO~œÃ§¿gÒ%IâË^üñÂq¨3:®_ZõÍ¡JqD—´Y£÷ øò_jŸMέ`»Ü0¥v³¤›š·|´…Ï\‚Ê1™’Ýj¸ß±M²›3Î8ŠT}`|õ‚ v8­ngœzâšc©_°bw°hqþuÙ™º %ÈàÇy Â¥Þ‡Áþª=ß0õæ±Ó‹mÿð†‰ *;5ÍT©FíŸþíR>>b®Á5ƒ÷µnáRÉÜú˜yõ·bïo2†E=Gmà \R† ŽDûáOÂ¥kò‰×¸¹ŒÕOMëº [ü» ‰ˆšsg¾R½pIÆCÕ«e–wÎZ!$º²;¾ß'{&#R3½3…ÎýŹfÅ`ì-+g~J§bÄc¼²‚õpÿs’¤öÿ ˆpSŒ ªÖ×õб‘x;ìáÕm…—¥` «ü‚kÊ¥½ìh0w×É·¿|»+9®Ì.ù9Éad5™/Û¨ÓDˆúÜ éÙ¹^v$1þ+­í»É~• ßí0;j8æ{¾pŸÓ„Ô>/­#Ç྘_nXûê+ªïêÍÞXxK¡´€‘”¢¯ Æ;½Õ¬ŸÀ(o¬€9BÂs$§r\Oàw{ԗБa¯wœÌüúÝœDV³¥ÝÍ Tá“& ™Ô®¤íÍÙŸkñp¦±„Vµ‘|`Žtù¬]Ó é'L’L†°‹™ðÀîÿËúå\óAsõ™ð®FŽ7â «…úêßëEÇ™’ªkãÌ4ïh¹-º©‡ãêE-„tPûofïß ˜éP1æÆ?3°×nv/åé7ýqx@ˆ$xøÌ¶A7»¾/Wÿë/@°fõáâÌœ£º`–ιÙhføÙL&íYÉf‡ y{óNYeÑçciu=ï¸7ñw3ýz5ƒò]qígÆZã{%M×.‹ÌüÒ¾-šg1?Ѵʵ–ÒôV ¦vß‘V®ñô7Œ²Ÿl+ø™±™ˆv‚[T2â´¤±¬˜kÖì%kø=öe‚Ê®¢”Üßþo"ª"]ß•LLލ²ùô>¯ÎyÛBÇM/™²ÿ(C±ŒÚÏÕf+-—Z; B©kŒRàÝù¿z ²Ï§LS¾º^;¦~\ஸ`½L•=ªÊKõ€ñ 0Z0Õô¹äîÞU6„$Nécç¥ó¥.˜‘ªøyÛÄ~Ô¬¢¾ÞòcJˆ§w¦™²É›ZÖáÿ=¿z{a˜½P–!ð æLÀ˜BÖaªL˜y7›+éØõ¬æɲ™Á+ænÛ퇒c!0ŽpnG½óôRÛÍšuœ8bËNÅ#§Y0q Ãç¥Ê˜¼`™Ý^™Jø£äWº5Õ.É*TötL &ÉšÞé§Ž8’[3ݸô’›ÁÇV ÎúYû‰¡Šºè7 €=0[¸>YÉ^§YI‹Ã&˜€`7®|Àµé¨ªdïæ¢BIFŠSÖŒT?"3Ïþÿšf@WàS.k®<[&Iøpæä•q=¥Óƒ™ø([¿`iÔ">,"ü8tùE‘}·–vyòˆXÍl3bÁœì;]ËSTå§þúÿÆEfÖ g¢Ê‡ñKýeJ¸w9»{ép¸-X9s®æ`’?‘¹ñCˆº<‚LÆŒ[°àv[¬¥ä·45µ×æ^éŠ÷ÂQè‡xYRUG7Œqœ_äª=­Ï TÚ{PðT©Ž €AÇHŒ}΂‰ÒÛ­zÇ@R[YÝL[E³`à$«&»™Qþ™[ ˜2Ogù‚‰Ij×ËôTŽÖÕøµ/êf–Y@VRAA–JÞ¶+ö+’ø³;2«o¶ÙÆ™t!í‡$›2‰âÒQÈwÁ6艠ìnVéš”$5$kûq—{§âä³òí¦æ=kuÇ ò4—¥z—”I+vþÀH¼0`@؀Ჶ›‰Pu ]ÍQ[kÁJÂ*þÂ,õ±²}?·š¡"B½G½ôë cĸT·‘µ‡ñÂX3W³pUúqµg’äc²s}%Ón˜BɵÿÁÄòPs¢é’À¯XI‡?å _š,:#Yä§=ÉûF…«3DÈÍÕìÈã©cî×"²šUœê97¹Wˆv⢖3å»ÿ9V°Tîærpp_íÉ"Ì&‘ó4 ¿jY5ù!&áZÑÿˆ"zdÐ/¡ÔØTªÅ÷êÓ"\°Váð…iÏ}÷2u½Ää³ÖÀÝ>«+,œq}`–dÍ4žy1o©k:‹Žëqun.Í$¨su”Œ9{TâÿêÄœÆ<Ýðó‘ú†©±– ®¦ß¶ó¼ìø¢6³­Ë ë:)”Êó>zqKUï"+"à Y*&¢C+Ü ~,œ¬b[µÈ™ð~Mf¾§è«`ô…„È8?²+Ἁ÷IÛ6“A¥l›]·œá›ZÍèÔ¥Àí÷˜u’@Ù¸ÄÀL«ráX%'ÿçVCwž¸ž:c!-Â1¯9fò›ðÿó¥¯InUDd£Çúûà@Ÿ÷ÍÖ)åêim1n«KcÌjfµ› q\úë>Jîæ^Úâãã}Ǭ@>~þªOðŒ«9ÛAóÆ9šQ‘ãã59áÜÓ6¬v¤æFÑ’¨½u\(yûTŸ‚Z`ýÕûT2í`‰äý=[2Ž7^öSy^°" }½-;sñ/>í"o”2‚e¢Ò¾r _ÿÝGu»Ðçƒ{Ù)j÷(×Âý ½ïvÐ]«÷w<×t.$á£'^l§ò:œ™:5E~WÝä0¥DW e2•s@ Œ®ˆˆª~ÿzÝô¨çç`âMÑC¨úÄ^8ŒõkáLšŠóƒ“4{ŸM? ²}œ̬£/¨¯‹½edXÝLŠòàX2sààö=ý÷Ög‘³êUxûŒ$µ>}\‡•Ñ3ù–G‹hÑ®¤­¢6o˜d…Q¯çÕEíÆšrÜ'Û§„‚K0îîO;DD»’y{áÑ–«ªa&ÐË}ê+aá!7×–»^íËÆtscª[ßkýˆDñ ] "³èf0”{ε ¦*Cå<,YŽôÖT×C é|ÃU…§²W[u’$S1êKÍÑè$ϽDùƒ ±¡óœ²š)BNjæéc?fJRà@ƲÞÄCÿ25…fÝŽ„Ì>€×@¾b©Ò½a Á8s.Ük~<Í5‡.¦‘û¡«ð.:àYøvSI‚q™‰5›âð2ï“^Pžv4«‰…+äC‰õª‰µ)œ[±«\!:)˜øðB.œDDZÿ£+ÞÃIÎû…`w³1( %ŒA)e*žZÎü£`êÀD g |¦_²fÖ`lÅÖ¢÷é¡p±sGLìýöÓ›ªÊ!ÏŒáÒxLN’sGfRþ.¶®¥=¸òÁ‘“Á'çËs1¡ÔÀÍì:Ÿ¢\=!š+ß¹7C7®>[Å©X Æ:þ°¿ôìÖ¬Lüâ˜õßzûšnÿ«z­\)‰Ç´^KCT1§óGÌ>¥µqÜr^ÊÆÁLeür富AÜW¶êÛ—Xô¬È¬=Ïý*Fô8æØO+¤X\@­Š|{2r¤tXf«Aö©›‘3×7H‹ ‚qªàüÒ… ½ÂþIåœ<•L5§Πd5(ZóMæƒSæÏA°abíÊ®oìÈPÕ‘¨X2yÚ¹4GW«Wfq(v:`üÇÏÌLg|ÇBj’Ö¹z–°;uЬÍÚ˃˚Á.ë»á3¡‘d.“"Ók¡>JóÍTŽsáÁB]aØÔÊZx§™Sï*s„ñȹ¡?‹$×#ÆÜ0-˜"ciÉ:ü†=v‚®Ôõo’™-¯¸Ü0S“ÈÍŒtØFˆ¨Œ©êªœGbƒ@zw¾, k¦~À^¦Æá~7ÏK¸Ý,¨ÄÔ1·3±ÊZAÞ€&ö²‹<+iIv‚½P»¹o½¼Ccü'ŒNhã€EÊj!²/νg$žç?˜’ùB §€^”ð3ø9i-­üƒõÐÅÓV6ݾ¾jf%~ÏJ¯ÍÝ”„ª¥}ŽTUÉK \:¶Ó«=œº)ôIú® n$y‹‘ÄãXJn]=„êxø‘K¦z°[‰1xæÏXôú{­Ffcc¶„|Ù¶e£HÒ:_a@yŒòÊV⓱ZÅy8®_¤fÖè‰Æœë.¸æ Í™JÕ{¼p–\ˆníE,ùx¥âþSVg ­@ÄŸìN\¸GLÔùý•÷€¤ !Jö›åJÌÚ½ÏBý±ï÷ÜÑ^@ 9òsIÄÕ3í_ˆm¦é?ˆkK¬¹Me±I'·`nIJÍvºÛÌæà¿œ1; V^jÝVH§ÛÉtñ Jµ±ë`JÎVéîè3œ½Ý^°`. ÷PªõôŒ™yÊ“ZmäfP‚I’§¶’é,ú³pqîMí±È‹3\ç$8WíÕÑ6½ þ;¥DT—ƒÍCß‚q*YM2šÓŸv9¯£Ã˜¹aüsÚ¼Pà˜(Š&úX¨þÖ‚â†%Ç)qðŒãß'Ú#0“êŸ¨—N¿Q™|»Î¦"FÕÝ^^ÍK›5ÒÌÍ,Ã5fýÿIΧ¹ý>Ž&ìsË¥ÄóQ¤ýjƒºªª2M©z}‰Rò"&^jg5e2Ó1’^Œ3gªèT×ÊÑ…|‹]7XÙç¼Å¿{‹¬‹è8¢í³IžÈû\ç»pBÔ±Œù»é¤Û4õL÷™_+åt(. 9ñ¾ï¶Aƒ‹—üÃÇŸ•`@}s²q·ùàL¢úo†ém¨Ú¡Í¡]NÍø`ÂuÑ)ðY*?vöÛQ鑾K«B‡@H>Gç “ÒLí£o•f0t)ˆµ:Èö©A0Ùœ Áôn\:sLƈ™¨õö ¹I*>’$“ô+³ù¿èyÇj¤ë;üq¶ôÒè “v†ä‡bb57×ø¿|þíËíNhÍz«®4®Žy ‡Æ¬ÖpöTËÏx‘=8øt åq‘ðâǨU÷;öc-Ϋ‡ê#Û÷j'ËL Iø¼z¶óAÜÂ%ê•òàx^þ/œ³ã¼äcý«fe²qeî¡¢óçÖ*~pá\ÈÁ¹¤Ýdµ‰€é\H×°)åæ mœ‹ÁSK"¯hظ:«OBdgØœšfê³0ô‚õÍ‹ 7ï#nX1§»aeÓ'†@ÐðÁFÎ\µ`#ŠïíB’YL¡ªŠžK–k–t˜Ïºt ":˜z±é´,±æKæn÷høñpXú±Ï4ä‚MF¦’ycæÝ) ŸÛš¢}ù^H'élŽÓµ°ÛS­ºWàŸè¼ÝKfͱíVi¦ÝÞ "ƒt®·®Qw³€5.û¬®ÁÇ^O³8lŒ‰(©Œm~ GW+ §òãÌž îÔªÌóÁub¿éš®‘pÍ<ì¹dÔï²ö˜ä²¤‘>Dr_ºƒÆ[@é“ß]ÔåbUy7óÓ 3‰1ã’„§IùŸÿ2—TÞoþD¦B{a^ÇËZ‘o>/Œ!XíJV«=Ì ß|xÚ!ác·šÌT>éð•Äh¸¯ú½$Åóãg^Ñ‹¢êÇÑ*³¸»àLeSYG¢ït™æ¦h{©mþYpÝQ€u$ŒßÍÞΡõÍUµ??ì= ?7;Y&ó¸°pªIóÇ2Ôʧ•Xš‡K³€Æ%yDo—!Ä;½RKaô‹š²ÖÅÍ’jîÙÓ~Š·È¤Zõ`Ͼ_ P­ó»œ¹Ö0Q*hÐã³.ŽC˵"é}k(‡™ñÃyŒBü?eÿ•öLÏ‚í‚úû=¸ÈŒ¥ç?nÊ%t?ß »æ4 ¥R)(çÐoNvÊæ0"’Êáœ-±ŽÐ ¬uêr¸ûù?5Ô º‹e÷”GMhÐ)N¶¼‹Èüv<°r8ÿKÚÔ…‡w»N”ÓŽqlÁZÛÙæ=ôÑS–l—ÏÏí/ÒÚœêTÀ¾;˜ªRÑ9HKÅ2ïÞfr0Ïí¾•:¸bæÝèKCb×=^«AOýµ”yleZÊÎ3NS«Ñ1¡úoBuWLÏåú±ËèþÆ‚Ä!c‚ûkE?åMoÕS]xÿŸ·c¡”\ Í5ÙÝ~Ôi0ôï:ÌøE)h0*ˆÖÂ%¯ëƸTE¯\ÅNÓ·1òÚä`ÁÆÙ¯ü¾d—oÎOã°õm ‹+Ý¢˜ˆðÂT¡ã–ÉïÀK—;¹ã{Óõ:néšêˆéß;@q­\ÍÓ‘s0Id:Ýyô{Ï’E5ße¡R,³ææ F°G® 9Ÿ¯6§$4 Oy¿€ý™Í Œý²ºëó5£›Ó¶”±ëÉ7£€d‹3$Õ‹¹º»OLÄ‹k6¯ “™…µ1†dò•ˆ÷5õÁÄëR$ö{6¶ŶV¿1UUŽ;ûIƒÒzÄ’ê c*„RšŠ*æ‘Yc0 –9AŠQ®…O?Ëbæ¢d¦uŸÙò™ÆzÖaßn>œ»ƒ¢åFöó"kC2YAšT•elÕGÁO‰Òœ$kÄWÎ;ŸL]‡'‡“¾©Ë Ö²ï]‹»é戡¨1QÉŒG¬bû›P¾“‘åƒ9ŠéÆH˜““V óU‹dî1løÝè ‹Ã3ŒF´³s›'3Ö*]óïk«¾z@ëŽOŸ3žŽ-‘WV'-Ö™^è~./6^æS&,™¯X,î"{]c:Blð‹I©Z¶Ž_È¿9œÌr¾0¦f2£Õ5–A¦Ø u}ÐñZ5V—jé>\íL óÀJs¤ ®­’ȵ£[´B'6Ÿ |85εVp {*.#P¾:ÌýÚ–}Rè®oým?ü`ÆÁüˆ…Çž¼â_æ2©ÊÑë/æ¾° ^IöKX²ï:qX]…fWI&&ÊayZTp]][¥ì§óû|fÝx7‘)ØÒ«XE>⸠PZÌÊ[Íý´.ûÈ𼂖ÕÜùäëšÖI|?½é`Zã‹à¦G.±GÁÞaìÄ!{Š8Ð[…`ê Òʵ¼ù¿ÐrÖÞpdYk_$bû~¶9ä§½¥åá^s;´bÁ¬P!ËÀdß,ŒÈÖæµà.÷JI©ëBµØ)ýÈÕ$3¦ž’´”#¯2ŽO-XCï…Tf:æØ©~;òZÕ9hïÙ»ƒ¤þ{;±Š+HfËÙ0â7¹¦—bùå W°Ïè^±ŽIyiîm_„ñwwYð§²Z×kӬʵh缌ÕcYÌqÀÈnmîR>(HÜ^˜¥äìnxÞ§CçT”¥§q(I«ZI†oʃæ1ÂëC÷¾3,e7§‡_[A‰Å¿±ºìrcò2{ÄFì·“ÌšwÂ+Ú–´Bp6&’±ùú¹ë¼EÐ Tn/Ç]§±ßÞžP6Ú¶/hå/f/f)ŽØ“lgåΟyŠÌPìMqÂ㑆ºxÎö·X…Ì÷}ëuÆÕ˜²g¡ ]†.3¾¸C`5–a¦¹ž¿²æÝ®Dé\à]ïocUBÛ^£ôÃ~["®Ü…²Âò²tS‰Ëž> W¢ÉƜ̼ÅeÃÞ:_±•Èzõþõ†Öú¤1X:ݾ>Ïþ`5nøÅT!±¾¨\IbW©Ç>tÉðWl•d²7_•WÂÙGìÀõÌî48u™³½Øß{SP­5Bk“±±0Sß-ºsÌܧãiû½!S…ÛÝÉwÖê.Kƒb½‹¹mr¥±0¸ËÕ@ÊtZ Ù8øšº(^§¸+ƒg½˜gÁyvWŽ[È‹‰&¯/YÛ•:·A6¯Úeí=@c,#ò[;Á… eæÚŸ¤ÓßÉN3x¶õ¾/{ë–2óÆ6ÿc¦H;wÃñÙZ 7¶íUäáŠFàWUVK_UÄu¿ÿQ=f<ÑW0ÃPàø ”ÂŽš|¨i/Ž“µ1*±Š­Ì´‚£(h]©“ŒÖ¹1¦ î`Qü´,ÉôÖ’®ªxÄ‘V<«·C~—2ÕMAŒhéWq¯esìtNù©ðp¢×ƒeÎ ‚ÆBq~y1‰þM•ƒèÖææßºñûdÌ–¡éÓJ®GÌÄf—p ûìh®Å)øIâSƳZÀŽƒÞØ1­1ƒ_Žœ¬Ÿé cļqšwÁMz”*/Òq¹Õ4g6’Ì£9ž©¹†¿¾ÛÊÀÓ¤;U~GwÊù–×Èi‡sQš] ¹à›,Ÿiȹb ì(Í XW\ýÿ'ꆡ¬g=„}§ZÆ]+,oÏxÿä$÷Ù@£RY'œÍÍ…Rs:<ãñSÈ‘hÀl¤þø*™=oÇöGüßzFI6£RæCŠ*ë·ÊüóÍxä3S–Î("yŽg3bÇí<ÝßÕdÖC*Ä÷½ss;îDsÁ¿ £v¸TLkáæFÀoÒñ˜¢Tjõš†¦íÞ}& L_œ ézœÍ¡–›rs÷ë›Å½,p0p2Ó§êý»(|œ#<aæp8*½Æ±3×ßqÌBÉ>g;µ®ÒýÙó ”÷qfúZ·\ˈ~kŠ.1î Í J-f8‰ n{'yB&Æê|ç¿ñ-dEçM¸p ÿ£qÈñCf lÖ±9µÌâù æa´t8#ZoqÀ©ì›sSó„1ðc¯îW&ÖS©•6[ÚÚÊL×Z fjâ“r‘$l¾X HàÎ2;ƒ“>X‰å+†8øSît,]»Çz{+9®S9´áãz%_Ó+*_=³Šl‹yg•)¿£4†û캱ðÛ¤7VË^ãxWg™™>@ÄÕ•íÎ4ƒþKc‚R•?IÐÀdª hTìjÇ“m›ÃZl ‰¼žX ʱޱ­œ83±Ta\p±qj‹¹®É©Å+¸ckqKè¥E4Œtv™F„ïªÊ•a£1sU–}Rü)‹ü>¸Ï¥Oåé}ÖµÚwü&i±kíj-vg¡m#U¹ßˆÐ‘ºâ­‹B¯të!ïudËM•çÒª¥ªã~…¬êW, ™ñ|齂É^ñeðÙâÖ‹«£ÅF³1³Ðü¾05ç(iyªÄvû®‚{Î Òmšá·ïëƒéòæ9A»ù¶Jˆ_Æ÷ÑA`Ÿ¡àÅØ-%çsIq·{'zO}ÏóN†Ûœ„d åž¬;uÙÿ‡ªÛraü¹.”>›DÂì–3Sòº•Aæ/þ<ŽLñ¿M¿wµžV˜WÖÖÔÛBH)⽇Éuç{¼)Z.Z×·Tz¢JKo¹•±ãü+Jd-'&òÃ)°mRdåB;œ…ž›Q `¶·å–²õÌxày8Tf®Ó&ŸýüêC_x­[Êð‘ìÞ®±l%¿¥¥Œë2­LáräL²Zïc“/Çd†G®Bšt•C N™çy•^Ì{´ÑôÙÇí„| VZ‡Æq8M…ÓÚÿÉðîíÿ¸ú•æÈÇŽ2Im9ÛÞý•+‰ZD9p䙥¾^!øªO·/ö‰Ð}í~¸”™ù´9?ý° ±_÷KVBš7§FëtÖÒÝì~ÜUÁ¼l'åÞªö˜¦ £õÔ¥œlÎì+b¹œ%ÌVRªxäN‰¸§KÊ2Ç029ÅÉáªú9]/w•WÎG.ø­àÒšË@m‹òæ”Æ­Ýƒ¥»åmÃ(ÉaË¡¾ð;†€Nƒ’­å±V?GN¶Í»¼ÈÄéêÎq–Q­˜ÙÌ~½¥lˆGŽ´Š«Öüu(ˆdƺÓo9¤Bj–â^rk1Ó¬e]RÃDZ]¢ÓAUw©Tð°¿¾|§íé1×GÍÍ Ä|8%âZN¿9œ9ðå,|¡ÝÏîpáÌ•«þZ¸Mz©úüøÑ´­Ãýµ¦´„ÝÅJÞ‡5=ŽÉlÍ,’±ÏLú½þs—Áæ#èíáBN“S"ûrq8§ÐäY®Æ}ÙœJ>r&þó•¢”h±8|[r·œÕr]šÜf臃ò¬¶dèŽÎØœ¢»µå;¬È‘éCÏm~8!ØGÎ%a÷Gѱ Õµ–ÃçQSÛ3Å"3NC~ÅÍÞnÌÁšû£ÑÅŠ—Ų–c!±»Ø¿ II·ýðèî„&Óû£]9]?^}¤t7ƒ ¨µbÈå³õ!Uy»Tx"¿rAm!­ˆýŽ77âó6Ñû³1…'fõ9Èþ~“ƒˆÓטßi9­²õô™ä^q£z]@à^šÌ k¥¦îºÌ-š#AgõŠR¶3"¸/ž)5ÖÊ0P¼gH®w¥¡¸^î`p⸌,O}ë[l¤C¤åÛ7øÈE ö¹Œƒ øÊ—gOsàiúáâ¿ÜуV˜*èáBö9Ëq®Ë%wךœÐÈòG_m?…æÔrX”Îó@NJ2—§\”»éæVôò£¯¹X'ÊEWz¿æX3K汬@¡¹‡GŸ'ß·-ý¦ΓR0G¯&ýlðÆf)Vƒ3ö+¦¸ÆÉÞ«z2Û Ø–KQî…³Nƒüp.G…%þ”çÈiiÑëåúÚ¾ÍÁ4ÕKoNA´WÄÎIâw;ÈÍlÍm¡2öÍß+26¢õõÊúÕE..Œlïâ›Cª oC4K:\}9#³¸ŒÍ¿õŠ2žÃˆ(ïXå­‡ÂÊ×,£Qa÷a­Œ:5Â}¿W‰Ò\×Â1îåOwˆªÔÒù ã«Ï¼Ô×=«üÃù¬˜„ÍYÄoGy8UÖU®"ˆ¯b­J³÷ÝæÏÍÝ–¢Í1\åÈÅÒy“AžNú«kÑ2ŠÿÉ­°}OÃá2Ç%Z—·¶Ã%qæäLdÿœnrç9*ăIv·w†RfÔߕđ{téÓšCL±‡üÃ>H9®°Ì͉ïc÷:óp¸ÊmŽ5þ” ÊÌÝ¿a¾ûÿË8., b[IøZê \ß`§¾r8rf´x„a|B´­O}(%®o+u LÎ%3×7®9´²Ùü¿Q‡€ç@Ã×r–oyèmpU®I•U.G´æŒ˜9ߕە]ˆÇ Rb‡Ù0“µ›j+'hs9¿¹ü½VUÛ^òI&uäR¹rO¶œÃÖäÝXHW‘ÄN^z8”ìò‚õ·x:K©þÏöYû“Ó².!…À‡##3¬zy¦ûÖ×ѣ1“°ÕáTSdøˆ£L|8!U]ñ*,oW÷æË†G¶ú·õÝÏýŠx¸ ÖÊQ¿[ßé £ØÃã:iŽÅ8¯épç[àn<Ë% Þ®ÚÍ™v}f„qYq0^æ’Qò§¹™¾ÂÔÝùOç9L5?Ø•L¼©§j- ¾²/^Ž®4qÍñÎÒØ©Šo}ü_À¹Çdý îZßdWaw„»– 8|wÈö‚´90%¯|1Rêáz09Rvr—º‚B7‡`£Ù™o[ãÆZ5ù#ß·¯·üŸ2zõ”$-¿íËÜ„ÌVóÅq' ˆiK‘ÍEáº;oÎŒ™ee1‰¡‡ã+Öol·¨o2¦²Ö€’eÀÕzIn³^ꬥw¦fÆé͉ _L,-Ö›eÿÊ¡ÁÜò0ŽÜ"3ã篑˭G+I}¥0óºþpŒR}äAlvUWî+…€ª±ac·uk«_|IŒråŸyý¨·ªdËSîLÇ-¿ÉZOAùwÍY—x䈌§¾Œ[ÎFØ£i"ØálYÚ4‡âк«e:ÅJG”?á‘f-î63än^k­¯zdÒ?ò™š»Ç¬^&%ôd”-/7v¹›™.Â+ˆH¬øæ‚ƒ‘+wˆ9Ý19"s.þîüÈGŸdécËäâ߉/HogËæ 8ÙD8åô§ÿ—;&QË+4öcôÏc\ñhùØ›,NìOòš(˜\˜fUѬ53® µÍ±Ý)Œ$#‚—:û/VŠ·Æ”™qÇóÝÆ¹­n¹º@çF)2«çò›á¡§zdrÇ®û”³9¸_A¨Qü•߉/# 9sÐ#çü¥†¢<òˆÌ𥇒DïAHrÇ?‰ð¼9ù38„(Á÷öÊ*Þ»¤Ý߇ïE¤eÞƒ5éNVAÞ_>ÖRåáæŽÒœ Ç?2)±¸­EùØæË ÙNݲº§©ªowî{p©ÚœX(™îj‡‚jEvåäw³¼·*¹ß)/Åó“œÁôgNtIQ™ýán¦û\ª‡››Ù#Oh¥ßÕUœÖ0+›ïþï×7ig÷Ê(eÛõ·ž5à60Oÿy–ý0Ÿç7·‹æáL„‚Gy9 7ÇWjì…}hß‘EÊÚ‡Séîý/åOæÐeDÚ\G¾ûtþ בÇþR7§ú'?ä•ü^šC ¿«ƒiºd­/ W¥ÞÕ"×ÀÞösü‰¼/íQæŒG¾LhÜ„c§ X®å‡#ÉZÇUÐ.ñÖwîæ2w^”æØ‰•)Ò]ÒŽà˜“ÏQðÄ )û^§={±_á’=ÈvžÏ³bsÌªŠ• G$ãzšxâ;ÒÎ[¥ü'*j‘dø\xÅ´qàÃÁ\2Zž±=µª¯à#²Þjo7•³8 ký'Tõ%éîKÄv­4%N¾òc^)Eêo“;_á‹yºUýs¥Xçæs¶À©”ñŠDìÈmþŠá]ùÌô°m‹Õ»cbÅ ­W,¬ª1O…2Üu»¹®,­ù¡*Epyc-×óã°úš R˜EËvìj áR¼²õÆ•C› Bxµ/Òþzý¦½1È‘ªÈó3ßi .)÷ *Éwž(ø‘þª̵³Ó ©ß®Ô^±— LBZ¤ˆ\ Oãm\ߘK0c¥w‰‚]½cXNtMq-ÚÓ‰jùˆ-3°›»4Fôw¨åLq‰ÆÖ¥Q½X,oçwÍàW?Пª]¡­Í}¸,èÓ€]9\î(þªîz{'Õ ËÚ˜*ß-uÌf‡¨¥,çØÆ$ͬZ¼:-–²´p©Š\á!’\öG”ýJ.Ö˜‰ûÚ'%JüÒf”ù®4ËÅíÊ‘‘™º’…~ÅÇ2›½N¸l¤S£+(Ù5©1Ó{9qG i ¹²þ1\ëjE\w P­¼£¢Ð7þÑåÐb&Ÿ^A÷·î†BIÍï†wäj ^—âã•W¡â’{ÊÓHRÙ- ‡Õ4°Œ‚[ÁQ‘cÅ3UE‹wFÒq’Ûð9®—ù`w“ù²Ê¿Xrûì'xþÎðõ«-óéŸåª{Å"ÁÈyPWE¦t¹ŠøˆgÂ¥SH•d®'Q]—šyDð\Åœ”¬{±í:ݘqŒùµÖ‘ÏçÅ\œmö(ýzvjî® ›Öõb÷õ—_ÇOK1=£‹ÉóÅ")%×±+ìê|w2“–† '?9Ý•f¶ÊÚK×S”éê-¹÷[±¶2fëþbBã¦IËqZOã,½áGôc²C dŸéÄc·`Ç÷nJU!I¶Ž/3+Å·Ë)ÉäZ™“ÆUsÛS^cZØe©1³ý;uö]•³¶UáWL”Y{ÆWÕmßTzŸm7–²¿Œ¡XóJ$Éä[Ù¹¾˜þñ/-yrðNw±sÿ6æË±1†‹°3÷ÛFAKÙß:‘Y /S÷h§J’N±¬äÓØë(Éé Üâp`ˆ7f™{ݵ$ÊBw0ª,!££þ`'ÝÞ•¿àC€e£‹â¸žˆÐ¢K¡ºf;ýLŠu°޼»XÇçPo£ôC¥¹Û²eB0ãˆeúÛW‹%\BN’W”vÅ0&®ƒQÅBê–^é°<ßqºÇ ¥¹íw‚×þ°±pæ™Hò¶)|±l$v¨ï`ت›õ->k59ÄʱÞXÔˆˆÀ/v9h5–(‰{Á½nl’ÁׇÕKLjm,3òÒblœ²ãŽða²1Ë‘r¡1Š×ø÷+ÝdS– ãkA{zoLVb࣭*c–éô7Ü}·´Ã»~»Ë$³ »žÍ+VhÅâ9G«NN’‰Ñ]ë<úb+Þ~SEZ)×äœ>}¼I»ÊÔ¢»1P0åÕùFfžÓ{—*zajQÅÓieæ³C‰ð#–¬J½V ™aS‹DZ^‹‡; ö•¿X©éòN7±¬­Ì»Èj©«Kä®ÑkÖâä;ˆR¿è¢*#ŠPcW°¡ÆÜ,%æ(–=Ï}ÆVLBØ·*©ìÌH(©ÙÊ ËŸ{‹iCqŠ0ï’MJU?%Cv€É{©Åv×ʯj öYƒäqf&CŠØ|jnãMÔcg-ÜXd)çÒ&{_6ÜI¡/–ø9Æç å!Ò˜× ½¸¬tf)2Ë´D)]ËÊÝP qº«†¢émÒ%‰Í'ÃÛMÔ›“Ü“{c]&æ;ÏP½?¸ÔÔšrfª£ŒS8eÞ1C^̵­lòb°0Â,Ôî3¶ÆØ ;®O’Øê5<ó½¶s…»ûÓJ§Ób¹®¡ ®`ša‹Ä¼D¯˜²”®þ‚e®«äÆžG”3Ð0=ôßJ ùòfd*W»T,·lìhóºr¥F¸\…šØí4DÆ>¯¯+æAÊ=JyÏcýÈKbù²{ˆïAµB*5Åêe»¡w¢òƤ*ðœU3Ò*º3k±Ûˆ¹ŒW ²[uBAqaæ|ÐfÖZÝÕÚŠË4ù›–ä`P¸ÏB cûÊ'{Úß ’Óˆ5_LŽšÚÔTå`úb+{A>˜Ò¦Ò˜o‹èÆFâ ÂÁèN#x_d6ö7OË›´üˆ™YtÖ‰ îru«˜¥è¬“3t?êÛÄ µ!…ån¡G'²ªäK¬ê [î×QAu¥¶3HÑ:0+Ø>V¥½ÍÈ¿'Âßîõ%uwºòEùpG<*"bÝ€•ÝɃºYIìdV"?“Î+òë¶â¾OkmL´#ÖäÚúbæâ…ÝV£Uéu†»F ÂÝmžFª8ÑÕ‚Û‡#<Æ8¯ƒÄdÛ¾i—YqcU–kl)ßÉ>"ãä`|Ÿq:kÉõäó#6ŽÐ»0*¸ÌªG¦eÝù e< #ÛUºçÉ:îKW?$3×Þ:Xò¥ŒCá‡Â F¾†EÜvÌrøïBë¥DÝw3Ó4ȯÁC¿3£à²6Lië|Û¹uvÏC’mÏs/­Øïmo‘Î3¡’{æŠwЛ†<Òa@B|”‹ÄòJûUéW–q¼n»Z™WUJ*°Âޝ‘y0Óà+cªø·–`¬Á¢D×›Ú˜j•Íîa¹Ž†² FDΆ±| úbbl{‘徿Á­ î6Í1—§Ù[52³+¯D¤¥_…zéÖFþ"¿uû¥XÍ:‘…R®º‰EIJ±´*_X¥Ô\m)ƒ*^ìÛ…db{t¦)\§‚’,ëSJ+½†/§—bÅ3ë’*rå4ÆfJW׈Úõ8àd²Ã½ó¥\ñðRûZ«)†SÙõš ®ËEnïä.“8¶ÍaÑpvï(NáTÌKx)µˆXKåÄöb,_f-*¾"5&!޵<å;ôbcwúw>ïdtÍ)ä¾1¾òƒ'oŸþh,<3®Wbßu7e©Êñˆåv_l±\þ ‰§OÑÌo•øÅ\(yw¨2ÓÞ§ÈrÄ*y°ÛÚ¼±´ÐŠå¦ ÕkÁEä@ͺy%q]MÈ"ÎjqZìhÊ­p)Zv^»x1—´ÑéËC|°L2ÌVf†¿âÌ?kšV»ÊúT4xÙÊÌôš§ê®–ºª¾±³h¶•t°1»Âð5²˜ÚòNïÞ…“i´¸ÈdxªŽ¹ûÕ27âü·J‹öž_´£edžiL×2Hõ— «±`b§Óÿ/U5k±'ÄýZ%•³¬A’±»Ož T‹9®t-öH'™”éa | ‹ˆ\–H˜ÙOµlRBÌDWg+{)Íö/_߃9{IL÷HQ±ºÊ”lñì”—mLs$Xçs½¿Jº—^Ò«äÕ÷Ö·/Áüˆ™âÞר¿lj¡Y×ÖÂŒ6 ±ˆ½ ÉíŸ×PrÎ;xæY|ÅãèV_Ì­‚s]#—ˆëX$bÝè7ÆN%G‹ˆ3žÝ1ZœÞqù`Šb[O´Gƒƒ|Âá’÷YB…%×|V#Yíi?SêX@X{½ðZ¹6¦ãö&½±”ªmÛØŠ&ÖXÌ3¨oCWú¹Æl…1:‰q|fcš™a×Á¥úˆyÄüêÆB¶’ucàòŠ‹˜ù)$í%ÝÊs²ë†’îmDc5Bº×Ñ&l»Ê¬i×-EÈš–#…_×VâïH>eŽ|§õbDéŒGLN…­„ªBhŽðBÕ÷EûÖHQÃY¼•eDðÕ×%ÌL³¯ãÎÅÓù8NEc"Bv†®ïü™-&/ÁuÄO÷Uu¶ÌÜ#<þñh8(ùÌ>Äa£atþo%µÜ7tçWäK3ŽÓ~nL¥ÖaÓ9G·y°£Of¿ïl(¶k·¾á×4[Qµy‹gÖ(²#Nÿ9æäƒÉ·§0Ùv²Òqª°Ö<µ·ªµÍ(лü±[›Í¸„‡³´·îD¿â«^q°×¨Tc¿ ÷z°$sù•¦+)ø`!ô)Œ•ò[×dqþ<U½,;Ú†Má˜Ï|™'µ’™–çioJF)§ã·l1¤tu[¹ó#K¾ß›òtÈ#Þg®âÈß ²±Güì¿R˜µIškÓpóqãÚ˜³ÿö?l/gŒ3âæbÏÃùÎæÓœÝ7­ÎFànl%ÀÁ`šãÕÊLåϵ±­À‘¬®©´*d7ÁÝý¶J.5yÄ1öI^¼^õ+û×ЃfÄ—æhüRör3üaFs‘|úx»´Jc9 òÅÔì÷!ŠÃpŒ>bú66æærʤ8Ï)ÉL†Ò/çGÛ0/Û7"k±‰ˆùwŒZçì1uKžn"9ÏurcÂcÁ?IÍKȧ…õÙº¶ŸAïˆ:­Mª$g©Œˆ¸ ಘ٧6¶á@/e)³Æã¡ó1ô{†æÂÌÝtM²O;Š,Ù¯g^Iª…)\/KE™A.¤1ÒRÉ«LQf–…‘VÅ…q­Œ¢ÞcjØû¸¿œ™ÏpáÍiì¸Ý©ÎÄwy={±Ö²Yªäø†Å‹%çÑæf«ãŽ[Gð¼—Ä~}Â_N úãúcÐíá<S¤p\Aó¸ 1*”ÈU¹Ø×™™Ö…%­˜0ö¦ÂÏSýª›ÇØÍqÉßÊYºÔ/U¶õ-‹VmÜî‘‘À…‘i]Ú„&~ôÁn·kgá[coLù·*ü¨sâ°–3Ó¢GÏ ØÚœÅˆ ƒ3&SÇJ› Ÿ±ôådp™o+Ž@GÏê{ 3Xòß{ ZÅ2àŽÕ=…,׋Çw'ï™F‘"zJmL„µâ2È-cÿcmêw¾>ëãZPŒ 汈Ómõ«Åü³`쪌kïô—cŒÓÇz8ÎðrŠ“R5ûTÚ×›qŒDyÄ‘#Ü)ê>â+?Õë±óhñÄ@Äq/›Sî³qlÓýåV‚B<˜Á—9‘éª v 8Û2ÿîüۚ®iësŸÙKä`™ÏÏk¬ûâwÜ“™Ñr£±‰Ñs¨´šS ]ۻƂ8²Z C­pœ-–½¿5{N|ü>]«XÆ%qÅJJИêp§ËÆ¢jÜNuìñ F.Ç>¼5F)21öï/&)þÛ84¦¤UøcØ3½RaøÈ§ ×Éq‡_¶ŠR͉(ùÆ$hf¹kŒ‡¹oBKa«©¬# Ý×,'–'mce¿ˆB?#—Z=òOmÈRÉG\Šû~çv±j,ýgîvîL¥|Ž!Ó’ù’7g1c˜4IRÛ#_Ö‚5Že>.h¥tm.T%nN³TiušHFña/w¥•z¸ŽÛl"Wõ;”Ycáf./AÇ «/¦Z*üˆeL¬i¯\Àö‘²n—ºR„רñh´nê™9æà"ñ´¦È_?µUÐ:0:5-Æ´qäl"ŠÓAÍQ8ˆ¯Ò d&¿Ñ ýE×Ò£e›˜˜¼F××>4âN·1e¸ãô€î³4ö$£«m2ÃÊIcäÄÁGK¹ä˜ßÁ€õLÛ¶DC ?çYš·ÅÍ{æÆ4ŒÝŽ~9sHÚ,U0l—êÅRQZ-Fiß·û–¢>Kc;i~1u"ÚîXZ‘M¤.T¼”.Ó¤t^‚ÆÈÄI÷©á{ÿǺï~våx¥Þ5°–»Dí ˆž€WxäÆ÷Ðr•ž Í©d÷üÕãé¨É û|¬¹Jà“‹Ói†q|_®Æ@ã /O­B)Ç6 ¹;‰@cÛx£1.¯5réöC{°øNÂPk.îË“æ€ß‰LÝAõôdl”Ó9œ¨8¾ÇBÍçjìѧÁÜòõÆÔ‘‡ÏjQªŽèè“ü~’¬1v¸OËžÆ,áQS³_¸Æ:•_þ,¹s¬[àÆ8cjærfS&L«r*3ƒ,üåÖjRšSmùzù_-“òÆf;XUcÛ³1&ꨋ(Äâ4´ŠVä“Ê9¥ïcíæª,E[ž„Ÿ÷¼âŒ_W”?~ =œº|¹z¸ áx0C©¶¸Œµ–)_ä}\ÝS–ÙïÕ"?\š™·Üf:õ8Åø $W#eb¾X0®©¨ñäSZº¬W>¢)mUƯǥg+Òƒñ5Eœ?m™Ê#£Å&éz.-Ño.i-å%qêbdŽYˆU¾#WJUûçܱ`ÏP¤ßa>T%®7¶7¦Ý$&ððßK×÷IÃxBO¡±<C Ÿ*#æÌÛbÄ0—=…‰ŽÙV¥rzu†AÈj±$âåå”°¶ÜíÊ$×bÐx$ÞXr0N#¿ÃÔ‡‘…4Vá1- #:}Ø´ý³;~΋Q? nÌ«tˆ„·c…ѳ‹$‚»¬Olø︹øY©ã¥lYT6¥®¿›ž8ìAh, ¿˜ùá´Õýn|òöÐáÖjF‡EŸ“9èjbî˜(¶™þö˜`uXöaß6ÃmL}žŒ4Æôó¼ÛË•\暘Ñúdõfv´EcNã¤)üpYÁ:¸L5à×çÃ̦'y«‹ˆ{J„+ñ,5U†æQ·2×ssëöÛ7ó8γñS,•dFŸh¢Fœ$9}–©ª§‹¤9Ôµˆë£Ö˜²˜‡«½XmކkóÑV™Y³Pc­í Ò˜ÇïösѪ©¡1KcΩͽxÇ‹8ë¢.,ã+&þŽE”Ø#v§Sˆ¢Ô[Fz‰ùO‹"+Pk¬ÄåjÜXAtZ¤çâ‹»/”ã>3lÎ}š–4Éür§\ E.Nù:ÓmŽƒÇ¯9j]gœ.‡ç§¸ÌÄ~º®aä£NâÆ×yuĵ(oNYœ‚î·óš­9Óû¥K•ae“fãœ9N±)’Åó‚Á¥Tô{·!7íLlGÝ4–¬‡Cfú:}l_·d™­ˆ2ÓXsSüqTi¤¨B¿·7Ǧ*u·BYËÏ8jLc$ÉËÓ0"›ÚL {FlÎ×ånsNÌÈ]ê¶6ŒÆ‚ø²Æì©)!ÕÒ2€dÏop¸û¼\…×ï©‹%”d‡kLêwÕùXJ9Mhκ\ŸK%”F‹•C‹Ök12/†áãr*ôåÂ)3æ­)2ö‡¨1³yÒ;]·„Í £Ô¦:@º¾0zÅV'3š¾œUÒ´ ºoD_ÌÓ§jcf¹?X͆û7ÇüŠ•3ãˆõËe’ÛbÕqŒ+/&>·§:•Ñ—cPʪ4‡%ïo6ÿ,Y˜u†23ížç{åçè´|]œ¿ú|x7ãk«/fÌ>Õ«üN^ŒÍËq†ÿV~xÅ”©-¶ÊmžÞb6Uó;Ìt+ÿœúˆÌKb'È­8”Bvƒ<Н83—’ ˜½RS3§‚×ʵ¥akÙ”$i¾â̈|~V¡äéþÙbok !3¬=v¨äj ·X»´þD™Îºì—/…Œ³Æ’#Ö4êõ²¾’¿ÜO8˜ˆp>â¬}zØâ°åÖXå·ôòó‘¦*_mâä[™g©Ä¤nÿèÆÎº~~vF &èáÔ3355}!˜T5ç­|ämòÒ\`y5çɧ8þV>ìý_&q-MîÂæÚ˜µŽ^=\pD®5’؈Wš³ÌòGLkKÓb' kÊÆ#öv½Ø2„‘gWãöNθ‹ŠöJ_̽Fæ¼Æ<­b^P6×ø}…nd¨Ã·]¦jË÷Éiãt¦ÏÆ,å UØZ|¦ÂlLSq]´:·ænÍ|[‚µ:ñq¦Ó˜¨±Ç‹ÅW¤-çÊ\™H[ÌZÁ:K§¸ÞQ ÉyÂ_ÏÕÜòønL¹1·ÌT×€7(æ¶~g³km©*>›†œ–]g"-¦eŽy´ìµaoùÈ%ïª;¬Muó/x—.˜ù[©æ²F8Þƒ-— ~*gBê»û—‘aÖ£Ò WåÒá.˿ȋY³¥á–‚ù¹m±b%ö喇½ÞYª•G\ç95v—âÙ ÇÎïÝ Ù#¶WFõŠY5†Õ¾ÝÙ›ŽØ5† ײƒ§SÍî!®_Há:… øqñÙÈw·1fcJ×ɶç>œáÆ*ǧì儴Ч] ™ºJmÌØcM }/Wƒ{©·X‡½6ô¨!9¶½Òx¡ùÁ¢m™´XS®óó–sI~8Z©(ŽýåJ•Æ8ãwš”GÛ:Ê0¦*¹zl¦¹¶ [û÷.¶®’ºórìß_,r^—7¦>’ÉË‹ùvn ã’¥VI*³G8µÊîBwúTëÆÛïjÕ_L’²:.$“®ŽÃôK©ÆÄÌV.:÷ë*¦)­áM©/æ\±§8£±8˜4²žiªÐºnŒ<"jk_Wûc”bõnúˆr°mÇnï‰Þ~5í6Ên,óŠ²Ü˜Ã½V¡÷1ocû¨1ç`ü)4µL'–­ýfÚ{Düˆ}ÜîÄ‘—%`ëË‘ü;3”s'Ž|¾óÀFŽ-­Zµ©Ô@^•6§džGkÄãú£ìp4æs{8÷_nØx1qä#¶iêr´¤’c~ª)èËáT*v(«eðŒŸ¶°Ë®”ÖµÚ鉂ÓZ»3j~÷šÿ}Ú3šãÐÀQ'~ŠÕRÉY¬æe€Ð‚8damú]û ÒT[.Á¿S‘Ô£ÇÆf+šSK„|±G1fí~»“ªïsDÙZ6†þ¦á¥˜¬4æZ5)MózH„Ü–2‡¤\),møÿ@¾œŠ(½š{p¬žžËÖqÆ(j—InsŽq”¬'.I‡{1U§ÂÜé°éH§åG®x©Íeh}r°œÇ6 w£NQF˜G– qÇQ3oá¹Å—ÁÉËÅÎ Ý}–ÄAëNØõZ™·>ðOpô)eΛìÚvïñåªT¬åYwÊ.ŽŸZNºÆžÅ‰Óu ðŠyfï—.#B±•swÅ«K ž³vcþÛ=¤¿qËzqªô:vlO´X:[Öü}8boÌPªkåÛÅqÄT×%Þ»JiÇ×Z\(Ø_î[¨Â×ôÌZ?³²£Í¬ôpúÝ#äÈa¥kªŸ%Ò©”Xy‹™’tïöåŠÍÖÅJW~*ÍŒX˜[²¯Ï¯ÞþŸAò2­wY¹Ô3®’ÔÖû.Ÿdyüˆõ¾#h-,"2ñí4ÒZ<Œö aP²]ý"Ÿk©4­òeÙUk“Úœç;§r¢N5ÍøÕ˜W,…~\cHäU9åd–GìEZWG±Â½Z¬î’¶g°×ÌtÕYMHO¥ý´í2ûk.ÇÉy¾X„»¯e'{^Nã­-V+é&ªâ£òyÞ·Õðª»ÛfÆÚ9Š™áм,t#‹º_/ã°µÃ$3Óݳ'ŽB‹ÁZ÷¤Nl¥\ùvGÈìWpÁòê -”®º#¿c‚ƒí“ëÆ ^-lm#Í Þº1dYD5—Á«ci¬‡âÅ„–‹V«»í}3¢”œ{ ¢üØS¨»þf õgWÅy5[ØH§cEkæ+‡–]n0¤§gY‡aÿ‘Ú`šbÛP5HYðåyIv+DQIÚ¨×òÂ)¶˜™‡+‹‰%çºFþëÙ 3¾à˱ÙáÒNçÚà­\ÒXÆ¡1ñyHûmì0+kŽmð¬WÛ´i *d˜G ÍIG­fÁ_î jŽS ùøð$¦EÖ)˜rZ}.úw¢µÆv>ÐÆˆ#ä-tóå<~±ŒñÆ–‡ÈÁÂÙ‡Zc á½ìjΆ©A6çšqÔ}¹*yòš¨N¤SÌÆ9=ò}”kSј+LêžBÍiiü,É4ó©ÍE÷ÁXã4Ô×Ñ7¾#Óýˆ-M‹®)ü[Ofú †^c²v"•Æ`ì¹'·~Q ^-gmgÔ∱ÙYìéŽëE ¯ªõ¢pŽÏTøé„çx¹ßŠJNß'1™Î÷“á’¸ÞrK±ÙHÔÀêÅD(…ç‹€ÁmýÅÔæÎ¥1ruŠ…~–?ä¸#ü4Æn¦Äœ;ˆ‰ƒ®iO’¾=ä.‡ˆÆ(T5Æ·crsL¿Õv¥6˜©#‘Š…RþKÁþJb™Gõmæ»Þ´u>ò¤q&Í…Î/‡ †qó€z¿v :Œ£¦ÂdÔudBçC50»Mú3Œ¦ŸR3iè6&ü³{´‡‹qŽl/÷"ÃÙËMÑÔ…‘à Ý3™¡Å —ÔývœÁ´DZ]1»8å`Lÿ6TeJ‹­VVœRk9Ïôœæ/e«÷…ãçu÷Åd¦–ôæ¦û&ô”kÃÃí¡|Þ¸îB'Fãà5^L9b¿t±éÇ‹%1Ü–_{ÒÕ†¢RYvóËò1~]¢pß6ë ««©A2.'®@¦vU¦Ÿ¯‹ à_ŒÆZc°¬ß9ú‹±q¤.‡RvÊùb+ëS¹‘ÕX>²X£Û]r´7˜ÿ©¬9qàjJuZè®]Ik#/Õé{PJìõŠ“§‘l‹STå«Ö^N8ÉNÏ’65ì,¿ ªË› #Dx÷m›­÷r·‡ÓAƒ_.0¦iÌÇvòbw3\¯¯hcªð Ïýx1)/­é¢eÉq: ªz°0Ó<…ÝŸ– ©]¥9ÃýÛµ')N3¼VsQ±lËL[µêËù$³…1qèTé´š(<{Â_N’9{ŒulVõż8³+`p‹W\0_ï/$d¿¾:CëÙƒ‘œåˆqPúp²ƒJʇãÆ#ÕÛ©=š#U¬jca+[KcÂqíCúÅ”tàÔN½$xz…Ùèè³æöj}‘<=ŸJSþÌÍâ2vge0Ã6eå XþQ(8mekU—¡§rÅy®+ÊéÑì<,!Ü^Ž\D¸åv&·Xôë²Ö#ˆë‹îš™þØ!!¿£ÜKDŒ!a—6•QjRát-غ~³ÏLG†)=êÀ o±hüZb¢~Ñ+ÒíáŒLó”BÌüùóõ÷¯z èæØSØÏÓqUï-Ö¸½™›‹*\]­5‹uÀ4K±Ù×&^Ês-ÛœÓÈÇfþ€\{|. nÌSèg b‡S°žq„_o£°4g&R¿¿’ÑÖß:“º/—ªÙ‹ãò«u¾10%w”¶-ÆKÜÜmuxŒ5|YÁ4gÁðm!²?AäÍ Fƒñ5²‚qÚ*×µj]5땸µÝ›¸Æ‚Èç{À¡*·¢ºªÆ#®R‰ËÆ4[ŒGì™{~ò^(’FUØÇæÔ_Jß,“Sãë´¹Ú®ôO‹)¿2èjÛ×YòÁäÂÓ@Ö\šx51îøa˜¬uW ¸æì>ŸhLÒÁÚâ®8^ñÙÐç½óüÄ&>uª2µËWCgOxcË‘&_ȶ(Ö|ã¡ÍCêæ€q×Ò˜ÏÈpñRŒŸÞ³¬€\þzœã„#Ód­Û‡ÐS2uÖ r%‹h,¥zœê›!faAOv5Ä®Zµ}@ŸIÏ‘-6¾‚†ÐÑ¢1aþ¦âÅB„¾ÏŽ£úcåè]¡Ã¿Ó–z/ˆõgèd‡«qÍEffüád†çn.54óTKu¦ÜëâT„é(~1ẫ=µ§+UcôÔ¡Åâùå¼–4/(sÜ'Í%YL®XUòòý$s,!þZ帶åR.ùç=0ù qc&¬¥—”¸Í¡f~ÏÃÍ3IjsnäËñ¡ îÕâZæì¯˜²ü«ÓóâܾŒ®÷¯9¦Ÿ…¿XhfÚo°¼‰nó¶æyÕš]»¬ß2 ‡‚ˆð¤"}_ò5f`fž=‘¡=!ëñßn-ÇÈq[SÊל·1‡åoWv°:´1³qÏs0#w³”üËÜ9R<±¿VŸô.D2g)ÂØ“¥¾œ@úÈGˆ èyØtzV0_=àwðùÆ0¢dæ‹…K æS!rf;Õ{1K Á®séí¼|»=œküq’ÉiÍõ¾ª´­p 13šJ-\ ç±àÆœ§kÄáˆ)Uçü:¶ïyž¶o— ËXëŲ±–Ú ”»|'\~ö.ÜXUìÇIfk‚O!Ók¦ðLñL¸Ær½±E3j_ciÙåì+ Yc¾½œ3JdrÊÃà¥ÖäMýÃ*F>áä1?)Àˆühör5#Ksd¿ÊáÛ%¤i¿¶ZÏŽYyÛºC—!¢ÚvÐ }AîE0¼äV¨ó¾4 ™ùÇúFäy~0²k¡1Þ‘l:Þ½˜Äؾ7î’yÓ#ëw$íî_†Ñ+×MêÃù0,¡¯-jˆpÌ^NÆÁü`4°ú`¿ï¾\.ó£æ<ÝMn»-ó±uÀü£p{Ks+ PÌ“,f¹ ɨËüL#3±¸oCHê簾–cQ±´PD$F_0J%.+ù¤”GPßCéÏç%£1D’ÆmÉ)I&kð‚‰ãÏ>“ÇõDïzj¹ª4WœŽo±Å2}ŒÔõ·î,ùpUY×ðõbùé»ååO¡5RJkcŽwòÅÜFV>·æâ'ÚœÕÊÖÜê<.ËÐÆ˜ø4àÍÙ½NmnÛ64¦et½ƒÅ?ãøôÆ\™ùÞ-“KfÎ.±"S»–(T(­ë„¡ÅK9}0sú¹žÉ‹ WðzNÂCÛÛA3Íýé[I<3c+ò|1G:ù|š—e]c ŽÐ_Ýú¾ùŽéøÉ"™bgH6æ¡W4þæÌvd§Â {9Wò‘¥t-Q"Q†Y+Ë‘¢£¾\˜Ù·IÍyæÎÔX™6¨Ý~ÍBæüBñPóXÉ_ bfõˆ³tGYiñˆZSÚXÍ(?r +ÉôùÅCKîŠKÒ8T}×¥«ê-¶dþíÌíTªÈFj¥.-Eäü=áÁ>_7‹ßiß··MÈ}w'KŽk‰íÉŽ5ò¼¶ÞŠÖ¶\ ™oÝ_Й¿\ÛôéŽÓìz;,«ÝÙ|^Njïóæ8«4b{9Z_»ÓQNWß6'¿ê‘ê)—‡šc™ëò`ÆŒŸÔåAGq0L‡®Æ ?S Lõ3Õ2S?âLa™u éáÈñˆ"ì—¯”Æ0ÌöƄᷲÜ÷²Í‡çí4ê"\S’äŽÛ\Iðû\¼”/ÿV¯‚Å\xÞQŒÏdJ¾êánûø½'bŽÈ9h29<®‚"ÉjôçrÁ už(³é{Á– —ú,©o“é;qª~ƒ²ºïöFnÌ™5k7üŠÖØßH‡n{í ëY;9{Ô–§íW\)˜£šQÜÇËZ:»Ytd-L;êjÔ*›S§d¹§êpÐ~… %r•ºÓC4»² 5fÉxÄÓŽ¯8L^AÙ™™Ñ>(‹veeæ–ÓŒïˆ)ì±Þl¦ßŽ j/'än6_˜ü&,~1]vg1´ê¨;TÇ#ÕR•éqÊ7çw¾â²$©*ÏŽÄêÉÆ¬‚mžOP…f¾ÔÁÊs¤ñjŒgÎ:‡€>³u4&6çû+;'Æ—Ùà9R·_h ´‡û{Íè'°yË^RWÜ'–òé¹1W…ÌJ=&„úL –#,îWœj©âZQ·T¨‚y¾E•”LWÌ?–$ÃÚÂJt—u…mÌ9b'ál.}®7›cõÛ"ð‰ÉÁk@šdîÀNW˜ ­ƒˆÃ•¥ÊRGWz†Æ´2×÷òøÌî°™â”Ùu„JùëômÆÑ ³Þ8ñJ93×7ˆP¸ò‡Ýmè•PŽ™|¸\ýæ4—ïÁábÜ\qsR"ìWs²•ñ§±u$w8KñÏZ½`ÉwdèܺU®xÃ'b}êÈÜÛ˜º™ú¼5’RmWÚΫ?üWwî@BW`‘¿)-e&Û”[ÊèWÞ¡óM‹Bé`ú½»|‡‹8Ésv*Åòò‚žQI©ã<W®Å‹Ì»<îËÔ¼3I]!‰9pÃ^.HÕ¤åFÓšâÈ}¯¶›³+Zdcð‡­ÿGîªê£«²®Ë‹“¸‰£æžËÒø”úö•Q²…ÕâÈ^ìÔª7s3\Â+N!s›÷tà_cŠ+q"ǽä6âžÚIy6ma[ÝüÛbÌS¯X+VõNäÜí<¹Ò@ÍZ©%©_éÚR8b©K.¸¬Rý?‚ëüxJJ&­¬ny6ãæUa~¥×°B#¸¯1Z×qÒƒÁ}Õ­±ÂŠŒ­ñøäGM¬S)ÎSJmm†”/^j:±nävn.¹P놌¡.‡«+qÃåÅ;,¶Á7F>Íõå\ Ê‹«•—Ë¥‘™Îžc’Lº²DVàÒÆ¶ßÎËAá±.<§«!l'ù¨K²+ý§<¡èö5k©W„W‹5‡çrøÉüK)J£*+Kä`z yhÅ•ƒÕ]Uõc[д4·ùqS;øïáÒ8e™CÐey[}ÚÆÌùˆc KÅRd.s€ÆzS^ÌX²ôÅøÁèZ}5Àúæ¼yŽø*4H±è¾}?XEÄxêxþŠ‹9Âúg1»Ò¿”ýGi>5æD¼¢©5Çîf6ߤ§ßãçg¡ý÷Wÿ\H‚🮅ýû•e’eäáäUȱºÔõI™ÚÿQpôqëù?ÁüÏ}¬œþGÑV(~òÿ‹ë œ/ÿ‹“æTêÿ®!Ðÿl*ÄÿŸmšœ®ÎÿYro6GF8ùŸ {)µbåÿ[!?Ù*ì§°¹; ,¸bó´ý"Ê_ž<ýr¾–-Í SÈáJáý¹d­u6 ~ºZðóˆ›cÍ,™ï‡øxÛOýB›ožd™þÐK²åªy |*æe(&uq*Ãä²9“;jsðˆ 9¦‚ø§ï×P×ÒÕÁN¿ËÓéç8EïrS¸nnYHHs;­Þá -—tÉ»?îÄæžeðzÀÊtâ šÂýj€öI-¿DE¢*«gCjür¸df•U`Œà:y¸p™ "š£±Rÿ‚"6A'»ã 6hêõ-G0‚awßî˪‡K¯ËL¢Á$ɨPJÁyQ͇ž<¯×+¤´¼˜Ããî²Ú9Ÿ›SɈûíÌ›v„™‡à×eªj2Í¡)½ä´™Wª¥påf èj·FÉþ§#"k íòŒå·N³_¬µ^“R×3¿ü@ˆ9¦×:>ãÖù"§¨ïÑÑ j°¬¢#‰Î—KUÅüˆD¾UürÊÏ1µ-ã"?  GÊjŠŽ«©L6óe?LÉSòÁÜ×i{c+®Æá‚Ò‘-¤pý­X˜Ùr!ʪ?-•²˜œ:ó´?`¤¿@.ƒÃ )J³ê*oNuž3~¹²"NŸÉKY‹î1g{¤w4‚±#æÈ*2ª}MŽÿ°Cë5ÈÇ]¯ ¸ë|ÍÓë²ËÇ}˜Ü牴A2óÙ³¥dº'÷XA3>#õgŠÛ;¡AÁýû$ž¥K£2r8·y"ÑŠc¸†.s¾|ÍYð.eR(Ž’õ$"ƇSMÆúw»Ì4çËÖ­9õ?UË󼹕<éËýõaÊqí_Ç„a »[Ý ý ÒÏ;žLú5ɬ&UÝcT»>>³nS‰ðWn{üÈÇÞ?§W*ì+ÓcŽkæZj޹T¾=§„ËW_Fƒ‚q*ÏöÌ·ƒ8ëïÈ8œG’úœOªÈþ®7B’ ³`lg  çoiaÿø:Þ1ÓùN¥zÀ0xÄìkÉ®#/¯`Ÿ-©¸~}ÌI–§G›SÒ¿S,Yá rƒÎ”¾ wšƒ)Ø’ù~ÍëÒxo‘ÅQµíûO¥â÷{Æ–d>»Nc|~p8Ülº“<7—Ê<¬°ºÔÏÁ‘3ÏÓáX3sUOe¥= yéõªJ{‚ìû“¾FxÝíØ4ÍÿkÞËŒ™ÿ¶¹¸ÍŽ»\òÙ/²#T®Â`+>¬úòåÅ3å¿ú*òS'÷–›{é~ª­%3W ‰“lsªá‘3_½Õrg3Í›ƒ×ñßá"ç!ÞÃIìî…̨Ô˜ˆµÜî§ùWŸù y8å2úõV««ß×®ôp$šÉ§”Å‹ó´wŒ6´Úa.醯p…Í $\ò» •S.R+$ÖþÚÎT-V<¬òô‹þ²9³k†mÐÝ «Á©ê´Œ¤šÓ€„ΧŒ[hõ_ °åu'x öôšO¸˜ó·Hýr‘Ž\!›V «ÃÅrCo}Ë ‚?\[N±æ :–ÃÄûȃ£|6T¢`yëI ³áÆ×{/}–ä%:ƒcél~F2YÎèz r¢õn͹,÷õx²d,E §ë`¹>~¨§ÀÆÖþ§,ié-çÒqá}äj­gF¸I§[ͶonÌñ³T'ÖJ쩤AW0£þBŠQóô1=™>b–L¹«/¡Po¹›^+þ–3Oƒ˜æ‚FŒ÷’)¼pq·¼;€8)VTWÔ øq¥ØØçévÌoÃ(Ôlöh9㌃e‡=¡>ÉAú§4\õšƒ–äýbøLéäÍ©èx1쀚)À ÚÚˆMLJó(°<òص2éÂËb†Ð5w÷Ãápµ­Kí¶ˆý>!в~è+š‰Ÿ…Ûl4EpuìÎíÜ—¥ìã<¡×8¨åaÄaã®î}Œp™y›.Îõ`E„}äXÓMØ+¾+—ûá<âŒ-ï‡Vеcþ—º|2„ao»ZTj#«{]áU'åÀ)V›³ïH~ûƒ]~C¿Õ!­èÆ"|žú<ê*àGŽ2°å Dì›m?ˉ–+ôgwqÄ®’ÕR.ˆÇ -fdþG6‡ùÅûcÌ`Ý™•™áß÷ÁÆyÈGÎÄkiИ£†¯[cYsIr8¨½â´DìiÈVZªÌæBŒm=Šæ ÓÍ»9÷å¿}ô™ÐEÒåJ’ò]®qŠÑÔ—æâyq'ûÙÓ ^¼¿x=4bŽÌŒ”=2›KQÕ*Ù\ÿÿàcÿg¨8•-þ¼9¥ÂÛš#3:{(e­UlÉÎCR•Ûn=Úv„ÉÆþ\õ?ÓÚø²t¡áäëÅÊ¿w®±Ž º*ç`†üŸÇÃùJÜâˆ$±1dy=üÅÈLfO”ýòô‘vÇ~"¥/û`I2Ëë…ƒG(ÈÆøï‘°×I×ÚòÛ߽ťRËD—¯¼€].Ç–Ü™üb!·Y)e!­ËÁ„4: ½×^ÿÏz¢»ì±1„ä4 üɤõr¾RÅ?ùn®ãñæÈxìÛ[_qJLëS<¬ã9(„®‹€¶'KývÒƒ©ØþøQ?ú|¨rW©·Ôxf"šÕÆ_¦_˜Bâ`_çÑKšRv7¬'ß³’ÌT‚¿ùoåÞ V«Ôå(o±>²12åÕ†ºc€6†þ–V%Nïï"Xqc²w7lij2Æ^‚ËϦâw2˜oã"ÌvãÚ$åöžmŽÀ+Ÿö†§NÕ7n"ŠxשåÂÄÉóÉáþöÙ?F~Tf¬sœÆB«â™Ä~°8–ÑtcTŠÜ=Qþl$fõ‚!¡Ënß·ÝÙ§X•½bw/õçg€jü?(ä× æeÙ@kÆÒóˆñ}³¼±ª´Qܯ3%sŒ¼ö›ÊtºL؃GÖ¸¦ÈTynKšÊr[ʈv=™ôùqz°1dˆF3qè³aðpLRŠÈÅ.;AQE‡™ æïïÁ+ ]OiT–¼ý º°R‘U÷,è鉗2OGMŠœñmÌQæŒZOIácËtšXd)ñåú2Ÿ6ì¤`!;‰œ!J…ašÒ˜¤à`~^~ùìÌb¿j¥,k^Ò¶™ÓÊ5jò-¢g2¬æóïüu8‘.n~gÌ)Éi•+÷xk}Nü³®8\PÊÓœyý (gF6®i› c_ý×\0Jj¶×ÉLõtÔáD$óùƺ˜>œ“Køêfço84iöK•íËðé'ÃëO§·5÷•¢ØnŽ%"b–›e&±ûýyƒc>$w]Îͱsäj¯Eô{‡‹´k‰&k»v¸4Hú¬Ÿ°—è]?Í`È#w[G-·Lžõ—p‰»^;É{5§Nìv—Geœ2ûW¢‚ˆ®ïzrDVË-±®^Zn<öêüws812çµPâ$=åÅOÅ¿Z¶¶š–¬õ-3ƒŽxdUAsª¦Ëz—ž`áä´×{”û9ttè4é)×Kp÷ IfúâÄl¸žrSc¯ÐµR˜×©Z—˯çïjìz÷ Ó4Li.˜ã;~O±¹CÒ´:·D¼Øh^¯¿FØÚñ6'OUæ0HvI»»%L²hê+œÎ#…s~ÔÉ}gÐëf¸•Ê^K°Væ¬^s!™µ×o9ìËᨛš»—ãöÄ¡üäêÉùöXü2Ë‚g™d{”Ò°Kù‘Y¬·–ÄÊÖÓ¥ÜÁh¢9˜ª}z8&EÄÚúö'_.§ù~sQÌ;csˆaa›G :œo»ÊiLÔœ‡Ùþš5úóͨ¬ÝUs)˜†$ÍÅïÔˆôpa(ãÙ v·¯˜SDx—áräV.Yó1éAçìT¹öåñ Dˆ_ëDƒhÕú7—érÍa¸ƒp7WEÉû›ÖŒëØ`‡þ¶æ²(Yþ>õýí’ŽS™GN,E2W·|žöz:¥ŽomñpÐ ã«Ïfþ–æÄ$ýî6K¡3xcMúvdŽÄK÷=Ü —:ì`y­NÌD·ºÞ׬$øÍeÁôÈ}_˜µ|åû;.©…ß¡M¾‘Ì3¨¹”áœøáŒÕÌæ<Òj-”ùo¿•‡ëEiî7ø[®;-NËÃêÅ¥Á2ËsAñ6jΧ»esjã~J‡¬JŸúÄ+èš#µÏG4‡„¸ï¹Þþ17ƒÕËv¹ú_^{u<–‹ºæ æ<§«qsÉ¿K#L\>§>³`Ú/ss# pzsb¡)G®™N˜S²HUÒzìÍIx–Çê%BW½,†É«5MÒatvÊ)©š#Ö uHÒÅþ‚·S€Ð=u·Ï¥qŽúÑÕ\¦åõp’–Åñ½aiÎ1Z/Í¥ƒªîqD,úÈ©‚b—'wØô‡ËqÑôýjÓHm_Í•€ ×"@3ì­ÎL÷]CBuÞ~7W;G®^×ééÅòrvÊ+‘ÌeB‘ÂrëÓb-^‘­î5bÆ0¬æ‡ PÅæü?ÎÌô9|0OSw=ÎæXñ‹†¯‡Ó2Žk¨îà·-ò5ªu~®ÒLkVKÔA9f™o/sþÝÁùš4ö'îp¢ÍMu„̽3h®$´j nÑJì^ËmÙŧ¡‘7gbfòÈß©°y±—¢å¡ª‚½ÄèÎ1³GîazŸ¾¸Š3ÏAï§ý;¬TÍqa=žsæ˜\“³ø×¡”ZfírÁñ;->œ'$ir–²}—@wd\ÏË åp©BΫ~ÛlêœÕ&qa•U÷Ùµˆè·~nkÇÕq.uróù¼›S†ÄvCoÎÒGêùæÊø;\Vj«Z<êäpiI-wC /5ñ¯#àÆb]@NÅÝiÎý•^|]ÜýI%ød]³äëBÉß<–-GAœî^×r·˜ûK62­û‚2=¦ùms)öry8ÀÚrzùÑ|äT4T>z¼Øï·Ch^Ä4G¦y:³½txÚ™‚¼/êl…Fý»¿<\rï“Ùç´v¸ëL·¹ç5‰eb=&ö‘ÚX§¦ßQ–õpQ•J—>w 䬞X’à®9Æ0jNÉØ¾r˜KÆ{<}ÙrÛiƒvöƒ¥¦“ŽÆ<Âõž+lE‘lÎ#Âíž{¬à³»\$—ºÌ9•5·Œrö½ÕyÚÕŠ;/à ¾gvë„ÒœcÈ*éºTë*Í\æYÁJ5¢‡s³”¥Ï© ¾/%{ÁU!Xêú¢4g*N5zyl‚[ ÷·ÖêÈÅ>ÿÀŸxÛ†Ñ:3INûVȧ”Îëݬ v¹H©úI¹m5šK€§:€v8¡Å9ŠëÖ§)»_…5éæÂÜ=&'ᔲ¹öØ1qÙ\E]sdÞÉ•žúYòµPÊzp&B†ýº\Ñ&¸¹ã§½û%Èï[Ig-ü-ö{—ù`š™ô§ˆˆõvYr¸ùŠÈŸâÛá§¹t¿.U-½¸>òzb[óºÉð´¤k¶ëÕ«¥ åU·©TËcçÖx¬“ÝÝòÐë¢^œ·ÉR£iú„Ô ü3’:/¸„’¸^ÎÇ]±e‚zÂ¥ïþ6Óy”Ú\RâÚ·4G¼M‹ö@?Ã!=3iÙR<šïa£L¦ÛœóLSëëUæR-.S¸ÜËoË0Ú| ?³JѰ%–Ãôç@p0‚"Ç‚GÖú‰ô|›Ýb˜4'!$ür|8T„äärtÉuÍ×ΕÿZ r¬ÛÀtŽÛÎí›ÿݹî,ÓvÒIk¿„ÙÊóù`UiÇD8³2“Ù_¦Ë2„Òæ²¹±´Äu O«b=%g…ú‘[òÕ]V?ûÁ·b¬mm$a¾îM\„kÖÈÙ]óê-| ŒO‰+ß)qæ®=}“?Aa©<í ‚ ÆGãáÌU%[î(»mÆ­ dU£‰c¿Øô„Œš½Bª8O›œðmÝ×\¸Ѳ.ÖÐ?w×!Ž˜úHàÎ×q(ÔËÖ ®P¹°"ÖŒT4n»êpœUÅÓ¨,5ÂùæÔyN­O!N÷±ªj„ç4‘²ëà.Z ^¿±ÀGAÀEôé)‘Î>07§©-n3ŒÆÀ;—~c¤™™³çÅqS„ÿ—Œw Óª¹_·M!,—Vcq舾Oã0Î×T×]i§¦ÙWEE”ÈK‰ÀÌx¹F x§ï ßG±L a»/¡’Yë‹«#xg¾˜ñòQk,;ÔqäÇ­Ïqš3¦¸¯‰Ä>=nqGd‹Ó4ö…ì3pƒ…gÓ>å:˜Û|ì ß-j,cª=ÿÊn;^ìûúy„»âŘE8f¡K¦m”ß…˜zè< .ÆÊ}2ó@¬;7Ocº,¬ŸM¥È)þPÊ¿‘®cqÖÉÈnþŠÃ!ë ]wa ÷…™¹+®$QÌì󀞯Ø>lê»0¾l¹kÅ»eŠ}Ð)‚[œ3^þ+ 3fYÉø}ƒõ(‘í»Ë*¦«JÑUŠyd>muH^¬ÄJõ= ÿÕ¥LˆxR‘šzuO3.‰5ç f‹“)uYPòeHö¼>eûf÷ºZlŒ e4ÙZ”Ã^LÝ¥jʘ^FY(‚×Mš§ð~²v»¸u¡Ëøþ̘:Ã(5®ÃîÅlÝÁ7æ±|¡Ï”Y*ÙâÐ1{ÇÑ¢p‹S„LÏÏá:ŸY¦VÙ5¹»® )ϳÍùb¢#ö?˜iýÞ…£îבK¬½Iw#ºˆ…å8Ræ_o“- –Ìðý•ÛžÒØÊh~0gwß×]¨Íºµ¶kB©Ïª;Žþ“L‘ÕÉÐk$¸äX¾˜Ð Ð~È3ÖÄõR5Øg¡~Ys÷×ÓÖý_kK2Åõ°’‰óÕð*Eì”Ù쎤Ú{ý.’·7DcNög(W’YM¬$i[õ´6'Ni™cª/f¡Á<±Pˆß«÷¤]hnOƒÕZ¿=é˜öÛÁÁCFØþlå“Q¤lYÛUh¼}±Ê,Þ">r¼˜…8ë#Öa ýgf>âçál™‰»[¬¦•q¥ïK'7(Vîzª/îÏ{ #v\UI­u»ãœ–~µ»ªàû`Þ É«ÌΈÄÌ1k¨üŠk¤ÖiLÇp‚¼™Åìd5Ù§îY˜ùî..åÜæ×iPcbXk¯.4ÝýÅÒL+àW¡ å~ÝiE\IæN¢]ëQÞå=8ÅjæUiÌ|¾85.öS¨»&–‘ò›‰“~Þu ¢«Ÿ"Ä™ÖÌ‘fkkßX$—\…dÄŠtн4Au/›µ5×|tĵÝk+:ww#uÊÉé•Nkœ€ÓÒVaXÞÝ™mWV¿ÆÔ5¸µ\vÛ¯Fœú´H-aW‹¢ ‰iRE¦|í>RKË •ƒ×¶ £½¼iÌ’”®:íäË¥ˆµ½T©™Òj¿TE^I0Åá.k¢tÈz°UDäºiÂöjLK2ib°üÝ¢óy6ltlUH®B_+D™Ö yŸ8w¡ÄDt0°\›‹ÆXÅ)1Ám÷ê'´Ëz,4e®OR®HùU éŒJÚ˜C²°0Íô\Ú´—ÖµÌ‰ÓØWÍíNÊ´BЀ_,½t¤HolÜŒPJsf<ý “ð’wÜ0¯No±B¤Ö¼QÊuÕÉËØã#†øÞ!{¢«.`¸Ê+6Ö˺@·ÙÙñÊÑ÷÷Òÿ–’eó0ˆc-ß É´ùmÔ ^v:¹3Ã[,ªº´ä¾lŒ+–RcÅôýу;­ÆlT«Nš«·Û;ß.4BƒgG4FuùŽpþönx)çtÂ#-!µ]Ö¦1I’Xeåcmãºûá:xiŒŒ@S™°‘Ê)+FÌ"Ä€V•²}{êêLIË9å7Vù‹îÞ˜S ólþcx~Me;]rÖÈp°¢±'àc_<˜túÑ7&¦Á4¦ˆ†Ó¡m°idÔ˜¹+®º†&?Çå;ÓÝ™‰¥+¨®G$N¼ß²Š™På}V§¼ß:µ¸`r .WU™#µldÙ©]ööAW¸·cõÒX ÝÛã3îIóQ û|•E!l{ty ï8R[ vÊïH…»¯'æ±ÏW{¸‹Â—éËŠLrF»ëœ"lwö_×`n±ÎüGìfÉ| ¦”m …åªBq´”­ÈdJ×ÒàínxßC6f©!ëa‰µùͺå5f¡iVFCc§ô]fÔÊ“þ'vÃÁÄ/7_‡»ñÆîL€1 y=Ûg-ÁWnÛãRX.¬†c•¿Xw}Ö1]§’‹¿!A®ejcºre6F:#ȾE:dZ­D˜ ª³ŠS8&¦‘é¾&š;zcÜX-¬¢’y°x0¯Ê Þ®ÓþÆPÌD óžÝ[æq‘´.~ mùúÂlGn,B¦9s¹¾‰—ï[cQ9ŸUc W¿_Oþùýæ[¨Èöz´ Y­'IêWkª4Î0Î\H”¢1WR¥Ëz³1G^Ë&Ó›°¯¿±0^f  ¹¬E‡èo¡Ë/f Ï––+,®*CwäˆRbçknsOGKÓC#îçia´Ãb¤±Ëªp‡3(UµOj5š…º;ÖšªÍyFÝ¢±‹U(î(†+8yb¥¿ÊhÌÔ[ˆ/Eð T(Ù§ô‚$ö¸BÛºäoŒ¥tise£¿°ÄLæUVc¢_SgÒmÚ˜Ã]WTLž§§Ðp㬼$ö>ËŒ,ÓÇ8½‘ƒqÍ#£Æ,üºT1SU^Œ¤Vöbz*Ÿ…-ö$3_Xe¦ºº)¼Ô¬Å+2àÔ%s¬`#Wh^W3”cM ¦f»e;vy=˜é/&³,{WLɸžI‘8hžþd£Sh˜™ç\«×Õ£1™}Z(cqðJ%ˆ½ÖéÝÎn­$½ö¹RHõz6"z¤á”~õ9—]Öñª\—ˆ†è<‡`ç,»Šê‰Ó¦6¨±ë+Ž\9t[l–,waë°1á߆G[Y0׬“RîS°Æ"(w¨W-w•Ë6u§ÀoŒsDqÃÑæ»PfKØui-Ê—3†Ý&i¹.ãJÙ[ËÓ<ß뉃.Hª ¡v0öÛ×…yJ¦.mTmô’¯'k‹ÓÕ«®Ûç4ûåÀ´Æj¹ƒLÅÑ-Z¡%`¯XvÊÚ§Êãk//Æ š¯Sòíí´HUsmÂ<Épµ 2 •ÆRÈliëB-óíFs7ºÌ[žâ³·3á&·ÙjB2Z|nÄWÿˆyíøúd)¸-L¬Åôbµ^¨;ì Q(v{R¶–º¯1ú§NE)µ_½*Ïp·SO‘X“=´.ƒÁè¶WH\Ö´òýì–~zcH§òË@¹Êr…ôÞQÉ65K¥Y7í;…SŠìc0îá'ìÃJñw¯¹›­`¼4ŒO™I¹»-ÈK¯Ü‘Ÿ‚Íýî¨ Î>4ò2Msu [ìRA{þñikvjž”ìGL!kêŒkÝE0ë Ë*~Ù „ý+zkÊïÄ^Lƒ™sNÄÆ¡+b_cHwÇ:]ÍÐÌÙéö<ÙJñZ ·ž´9Ñb0kŽ“€–ê¶jhJ5°>@Ýna£è µe( óãë2ŸŽ6Ñ$ã‰eÁ]Na\º{T;gE»tÙZbd´[ÈÈÌxokvn•«– ?âeI} AfÒuNeÅ£á¥t‰+|­¬3ü3|ꊚ¤*±kœ(µXs<¼D7eÌ5©’д˄U+i¡¬*¨_ @¨î+”ø5)!Ûß1Åx¤°Nð+…ã²ÃfU˜Í ‘BHåÂ0[šžVX-Õ=”åÁ†…¾uK#ZΰAéÄ׃—HÿrÖ˜§ÓÕ½¤âx¤;2ʱG¿Ï÷]S÷3¢©‰4(¯~ˆ¼¯L=9Ì®~pu™{xì0«G[1Ñ L"Ü×·Ýîy±1º‚š4F%+‘VPuàô}¬s·ÖÆÿp8§m÷lKª£ÅU•ö 3kÆå#àÐ#V”Š\Vþ¡û6·;%¼æ½³¦5fI\«Ÿôã)ÎëÍ3é~6wnÌÆäòømŒ™ÆÊßsýƒi]W[–¬YWwÂàY7S­”×å¤\Uã©‹w].ÇË•¢1óÒuÌù‹ï÷E®àÄ]¯ª5ªZ¯~º=²qÙ±̘™[ÌšÓeøtãmÖ*…_ï‘—e‹ÅƒIÖÇü9Å‚¯–Y^ ê³JQyÄ|_H·XIr½ãœ+¼~cÃ,™Sù‡›ÃÌtb\]>IéTÒT+ëÒ¶S4F w[Ô:eÈx(°ºœªãaÅï“IGɪʎ»ýb¶¢¨76RcàÁüJˆÙ˜È/6È¡ÜÒ¡+Ä}¦¼Cî®Èk[Wž)º²M¤*âè{1ß¹Hs/Á½¢èg‹…®ŒÁ-%Žšo®ü¹¤mÕáî¶Ú Jò cFIΪ³Ã-¯áA[…òmbÝU¿§‹} ’/F)ŽÖrÞ¼b%ÇœÂvHæ«áA–ñ`P˜¯^ÏÛ±¦±íí`Á\³PH ßU¯“¿1'ÛÐÓ_dæ¹®ücvÉR¸®ð$F¶|Ó`b–LWÕ%*` »3Š6æê@Ìn:‘w÷L)ì󑱇^_ùd€iŽYN­ÌWlá¶µ¤UÝ‹€Òª=ŽõÞYÆçðª®*%ËUscÉÒùl„ÒJ¯µ.d,ð`JÉtu¾d¬i˜mØ1ÄÁĈbÕ(× `c 6²Ù]Ð+ˆgcV™…Ù¸VñžÔ÷‘™<«—îºÝ>ÈOÝŒ×Nƒ,æQBcÚö=h…lIØYs¿!¾“VWc€±¯i¨µÅΕö|,­jõ›o·by°2“£M_Ì#ÉtÖT„éj‚WðxÇ㿺Œ€²Ú·îGõb#ÂüîàÎ÷Û˜™¯y…Ò‹—%pkóRµÕ΀ÛÝkH…Åü&2ãêŽûñi¨SÕÖöÆfhq†»^ýà9RàÛC9‡ãj —¥D‹KR¨®©û„ø>8´6“4óOg_‘ýZœ¶L(±ÓÕnæ<½ 3¾æ¾ÓÍGc3b,é©“x‰µ8Ü®P¢-f—Âèä_Îɇ³¯ÁÆWÀ¿ÆTÓ)V•ËŒëêSãÑ]ØHë9X-£¹§êBêWoï\ù …^ÕYÉå’ìW¹h,nÂÆXŒÃZ\ªA|‰‘”‚5!€y›y‡ÊG¬ngè§Nã¬wÐjæõhÁª{l‡ºx^˜Éˆ°úÉ ×r×Nx§ÇrÃo•‹—ÓM–·™¿^‰t¦áíÀ;E”jNlåi;˜ÓÜßcåúÇÁ+SNJwÂÛÖ&ÁŒAùeÐOq)¬×H øˆÜon„â—&3Ÿ™«rÔJu>_Vü>b_¬‚ÙæH†\/_R©Žk¢ÖF ½0ñ™ÔšCèµXꞟ2Ò›#©,®ßxüÎþÛr¦oôÑw§-k.ÍÝcMΔ¡¥§„—+›þƒf&] ‹™} 0 ÷SZ”8Ž8ßF&òšÿù»‚|šdb×ð12žËu{cÖœ²Œ#oqšØ ÐX†Æ·ò`)¤ØóŒ…eÑÚN¹‹«•u¢1üBÿÀ¾ýPˆ±¥²‘Ѧµd)´Å3ñ%éo@òbðæ,Ý®÷'“Gz*m.ø Õ\93j­ÐçÎm*«TVoZ©®U”¶6ŸÝ¤©Ê÷²Tje£iŒýOÝ|Ü|ª?\Àµî}Š[i¥^Ý©®×P$$.uÉ)ÃöúÁ(Wœ­Æ<Ç,çÖÜö38ꀮK"ÂvírÀåì;RÉ}ˆ×XZ2ÏÚÁ%—Á_cBµ¬+ìDEÛ˜GÚè’u,—b£”üÝ{Û¹üؘ:ŒmÌ¥*å>#Ù6W9ŠýzÊ~–·™™«²\§¬""üŠÅj.à[̈^…qUè}.J¥²&Kÿ Ý_WD¬/"•^¦YºÂvg=˜Ü1"Ün³Ñ.´ô§íwx w±¬¨Á+Zg)]¨%ÕU¨Xðîý"Ö¤ë”1+Eý——ÜozˆÑîˆòR¹Ãœ,Eçö‚­`÷ù¨˜"¸Å¢I’÷al<—q ½´¤eæZüÊlÐ…ƒ|¾«eøe‹µƒ‘®k=ÿJUâ¾Yˆ1¹kc¢¬©×I¹™däÂ8âºïµu3yVõú½¢g}v›…·X ¥Ñâu9𝨮hø­n²ï£Ô¦éRSRIÛ»±Ë Ùw\-~±ºž¿ø•-¼±ª ^˜KÊŸë]‚»óìD‡±Û…AÄym5-©n¬ˆc ã‚_Ô–| ãÀuWÌ16‘ÛùV^L|ÅiLUeºå4§ä˜U·Ë…¡µqÒìåL—«nâéä“Ò€Þý±SC7FfzĬ+pØ#Öé´1µõ°1&Sì^õ¢d_;|16¿Ì2‹Å¡S™]îkÇúª4—6Gq}Ÿž³Sâ6lá.z­ì+R~Ñ:O!¬Ø’LJÜpÄ–ÂkSè–ÀûsHéÜ—#«‚/›%É•v¼1e\6KÌ(YÃŠÒØ}+ƒ(‚öüX•{úë©]yÙ&‰ð4^lŒ3}ÏhyníZ,tFS^a:Zá’|ðÊ‚Û\P  ¸)sw­Ù¼ÖçýhFÃ4Au¿.n¬eSÛJ¤„ã$ó½°P¾Ïéãý¶–|–^\·aTV¥OmjI× $KRýˆ!yÏ|Œ$—µ˜µ¼Odã^_~QW„¯Ø‰×ÑRÜ6QUþ1h1¹6S€œ¶úÑF´”\w®…Væòn "® bîw„ײÛñ½1¯$Ö»½b®ÇúżTç³ áp\ ÓòeĨ+åù‹IÜ1˜ —1"6µD¹®)coôÙ} v ïÔ©­ÎW ÉRD¦¶ŽË­ÅþËˬ›‡ÝóÏÎS“Æ2ÿ|½íÎáÙ]ѵ vh,ncµ¦@Óï¹)¤m/˜.sʃ@²•Ýftºsò)“ÍL§²í1x´aÛ@7Vº:—I2±‰d襅v k×cP¹µHlKI½¢ˆ½˜›Í8WÝöÉYªÎŽb »6$pŒÐeA~Æ¡+Ùì¯÷ŨÜ]fˆ ×ì­w¥çÞ{¯§¾\Ð2kÎ%Ï´ö—+SÄè9_ ‹3f£˜åzpüºîs ÄÍ93³LN˜u] QÊp–’“ñü2$XÑÐSc-\› J‰y ÄoKœú7–6–àøE¢:ê Æ©S]À8pšFŠ™¸Û¾£Ð¾ärè,•ÅìÛ*õo©þÈ‹Räª<Á— §CÃÆ¡·´˜ªð­LÎEuÎþÜó¶öþ7?'o*=´¾uÒÓ£š"~*Õ\¹%çËé·GM2O©Ö\þËH¥rî§s§ïë®ÿ4©jÎÜA¸G<~—xÒ˜×0ÑóŸ…ZÙï»ÙXX®8M9¡TVßÏ5~ŸÑqF.ÃK~}VÌÜfWQrÌ¿æˆÜ]œ¸—{õ'½OÌÄ^J\¿Ñt ;-WŽ.U%#÷ç}gqÅÛ¹ ªªs8u©3åQç^“G×씚§v!éÄóåRØ}bàRO‚ÅAqY—š3ÍaR…¿Íñw„ÖHÞg¹ã27f¬Ëò7—excÈ_âcœÞÑ%äá4±çñèÇHæŸâ8"®}ë+P>Nèq-SÉPJk® –{G*ùóå寂+ §Rë^õ9&­Î›0ÕíTÍIŒì¢_mÁl-Uú»û#…$·ÔÔA=à8…sv€—ïäoE™i´88h޼–W ¯Nã .©Td}‘dZôû©ÖŠ1Úœ2ä70Ž>˜ÒrØXÈy¾Å.µÞè0toW“Žð¾ÍQVe]OÎs»tË»5»FcGëï7Ç„ôh“/תl}t2…ã:²ÆÖ¢€VÙƒ•8ä£eÄ=úmp ®ëu†èþrêùN¨Æž÷{ ‘¯—5æQU÷¦+œÌêÛØE†¿r1¸çü¤©j_ÓzÁ×MlÌAy´!uú£1v Ä¥MÀÖBé¢äh=Ubs÷˜O},eOYd(Å#f ª]Æó»FÄ×’ÝE„g ^b·ûÉvÍÇç&„¯ow©»ÙIJ Η6ΈÄ#¶¡?_«ª±KqšG,%¯¸ ±Ò ÍÿÈüm¤4'ÓïÊæ¼ÖÂÆéóóÉ¢Ug‚<¯õÚse4'¤q\„ÑÝ$kìð˜lâÅ”çôÙ˜iþWà/gŒšoa°KÔ®†Z9&¡cs0£$[ML·q„úbÜo#k@ÎsÔç'V¤¢æbdÄ‘/W­oN˜ÄUu8{‹­•s»1ø¸ ¬£ $kÕ„AO©˜ö¾hŽB~nî/ÇÎ׆Há~yrî¬Ú)¥ìFð´|5“rÉ;R‰rNÖª"×·&pÛ»4Ç–knŒË8dbŽFåpÂvíD-†»€úá"GœÒ‡+ÛûäÆ+é~ËUuG´²¸w„–p×ëÁ:ÆXl*˜;î3îhÁ¥ªÔÓˆÌí;$åªRÉŠKÙXü¶Tä_L2uöƒk©Äá|â$·<$“¯A!.YXûVctq¼ó7âtÇ­ÛIq+ðúSj’ù*5YKwØ:ÃÌTÐT’þΆü` f™©Ä«jVG]ÚsrÂÌ¿#‡ ²Ôï`ÿ÷KðmÙß yAúr¥ëÞ¬ÕYZéU¹ÛÃUO³m”y<­ŒËm¼˜$™éÔÆž í ¤ðáh#9ÙøümF:°|ùŒDxXš¤À® ¤+ ^c·OUcaÄ›º²7•Éu˜j¥×ÅzcªÁë!¡$¿Ñ{-ÅfM®ð>Q9 ëÕ Y&‰RžÏȼö­1O‘Ýùa¹Ò4fj)¾Ÿ‹y§þõ¸±‘¾z°¢ M¿ -tU¦¶¨aF¥‹Ìüˆ²-C/ÿÀÆœ˜IîxÎi¦>µJü ÜЀ´x† &;âíIÞ˜ §1~1®å·Ó˜»[]1èužpc&ߪ,\œmVÝIkeÒn,‘YòÑBÉrUÝ’ÙbÕ¤µäiqv•W]4“$®–‚YV7F54_¿^­‹Ãæ#—µxc4³P4Æ¥A¹µíLúÁŒ-¯ü!™Åk> —äK›Û §èzÁìô%Ï€Í¥ÍÆYÇKIB"æPgÿŠÝ5»»ôŽŸŸ½Ì³XŒ³£Ž^9±ÏÂÒ3ݯÌBöÚ*B–Ÿ[‹…Gü0o )wF•Ø¡ÿ«±…“\Ë=;bc\(]&â’qªî§n㢩1½z›¿L5 a׆ÐcÜa®}iV~0Þ£ñë*ÙñQÎ{”¢6-™Ø$îWßÖác`JäzâÝz2ãÑm+Ä^ê> Ô+!åÁ<És #Sº'¯e ØXp’Ê¥Mö_c±:§P‘­-ãÎÜÚ\È0ëV9^¼¶g~wÁíha7sYÖº…¿ó®8]’H2î¬Êf£NE0ÝÏ(]á¾m_SäT¹HU?ïÏò[?…”¥è¿MaÃNˆ¬§ƒøƒ’Ô×kUB†k`Yª¾Maÿê_Y<1ÕàßbIƒ™çÄaÍ{µtåo-;zBcFk ßX\Aëòm›mz©Òµ  4¶/ÆK…“LrLã%òkeÛ˜úôj ¶ít›B?Bö È)ü¬@uXbIcf ¼Û'Q@.¬×V&mMý·ƒÙK… SÅ×)SHôÚUHMÓáÆ@bÅW™œ^Êã;escV‘-v© ÚU²ò2™ÞÄ¡”ÐÓ®×R8ú ¢ WºÉ;ÀBi¦ŸýÅì¢ÒJ¿ö3( øOËØçŤÌìÄ»q²ï{þÿ—ÿÿ?`ýOe§o”OÐuMnÌdš!5VÍõMü¢î)·žŸ6R³7—E5zº)Àˆ¬¥¡i;1Xõ]‚^‰<£ÄJ§’8~ë]„rØ©³1¥èïÅh¬®„OÂ6ñb¢–—6תõnW‡ßሖz1ÿQ¢âÍÎ1¾ù7æ’Óã>dE“ÄWY0a¡xzµ<âã¼CF¦/&a¦¹0ýmÀ/–šŽX¹wU+iuy~â—®çFu½)©üW·7©üè?‰ÌŒ´¼c‰ó)tD‘Ïl¬2fˆŸóœCËf”k8ð7Okjf̃ÿc¤7æåâvcµ×#U¡]§r1ãÁô¶¬-®ã‚gG˜•bÚÛ5æž"¶3VP¾âùfOË8…Ä)$ÃHZü[¦Ôs)«ªý3ÙÑrÊ$ºr™G.̈™ßÔ©+zæÑÂ37[cö³ãÇ©ŠVð¯}M‘úÕ[F… ™´¤DHõê-›ÙH¤±„Vƪy\Át ½²Š5æë7æ3E[¼c•‚#õ§;z16ŽÂÌJ²R6׋ Cj%ïH’+¾aå/µ±;Ž]cšsKú¶TQW¡$aä³ ÆîvZÕ(>â’—~-/(hhSx°Ëè³1uŽ”ÙVBš—6_6’…x­S‡Æª±œXš%V4<õÈQû¼)ö3¾§¯¼2¼UfZ!ðZÇ>Fm¬î$ЕË`²1]Èè¬C‚!->±›Ö.ǵTÇ‚»Äß_Þ°mtcdu8Ð)“§*™O±$ûİ1™qïCvÃx1ÙVh镚º1`6–Ïù>î\æÝVªëZ±¨ç÷­ º¯b¬~±ñ:ÛjŒ]ÕöÆV¯sÈÆŠ!ékŠ*ã•’µ›ÀËp´1ŽªÔÕ½øGþþºÝ?»ßÈg°ÅÆbæ?­“Qš+† à}ÊUr¥ôh,‡wÅ‹•ð ‹ÞÚB±Ã•ö&jF4|0b?…ê‹ Ø!ÌÔVž¡çäSÅí„ÒJÜ+WfL¿‘ÆÌ§éZcvGtkÌ3…ev–¨ê*´Øx/úXnï¤Ò'ÂDÊĨ~vçC°Í>%‹0Û]ŠLI ^*¡KqËNô|mT‹®­ªá6.){$r~|µ© ¦Wò¡7i¿í-ªÝopSb¦º)&ÉŒ9¬™Q¼÷möÙÞy‹g.Ø»ª®—ÃU„çbcãÌ),«ât×Ñæ&ù¾1öFrÄêî>çJö«Ê6—ùåtPÅÑvÔ5Ááva /Í9 {¡v(ýzœ­˜ùëÕù!dþˆ£êúÀ¼×ñ®QPóß-¦Ö§³ái;sOk1EÌŒÅ)/mÂŒ‰­ÐÇy UšÖ¡Ûçá˜VˆVt¹Ñ”.{ÃÊÆ pãkþ‡TÌ¥xÜòè‹©Àx„Ñ%ÿ.1Ü‚Ùgq\µ#Ç5–+ŽDcHà:11†ûÒ&<­Õ9ð¦2Ré³7ø•Pÿùš‹šƒ["Ž|3¯–SØ+¾¹`—ôõµV\©qšc žúyÅgnŽÊ%krð>b b\œvqždº¶RÈ6væU-ÒË̯¹d‘Uœ¸¤ÜÜS(æXdpìµ ðÜä¯#bÝ—„_Ì1Û°½—÷l9gÀUÖ Ök•µh=F·‹‘à>Z·n§\3—ù³w{‰]*f¹ /Ñ»½ÅF$Ÿ}{fØÝ¿’÷'#¿½_δÖȽúŽË̵.q¾3Î4'TU¹N‹=IùÈÝÂh-ªV?ÄÃõk'ˆuJ%þK•û㦾x8¯ë¬»9fãÄ#k,›…–£ÆSÅxäpªÆŸ³ä;3_Ë%UmåûÏÌL»ë£V÷Þ\ìˆÌ‡ !“–››‰ßí/>)”UÌ„w9}r ‰£G<£1NW:³æT,óæ"öø|8’\ï÷2F;S¸ßÁÊšs2¢•¡µc¶7 @ZNé Ýz¤ÏV®~ÿîÛ ‡3HÑJt.:LŸüp¥™É³n9ƒ£ LK2my¸Kæz¿Ø>¾:ëU¬ž²Ÿ£öhÊÌG.yÝW·Ž¥'ìçXj‡[Ÿ[y8£dÜú*⺹OW>ãüÈk¥>ò¹ àw¥.a·fÔ|¿”Är]ü4)]?ÆŠßìtWF!xN.!Gn…Òz~oBïÇ`£\WŠ$~q+g`éÃ…ªìáÒå…d­ûiÖ^ÓZs\"¼¼šp«=Ü?ß|õ–ÏÙ”¿ái¦4ËóÖ³O©›³•µ€Tˆ×žfôvi.8l}šó¤ÜkCö_èàpJðÉ ™ý:ò2oNUHj÷ïór¹KË—}¨9Äg¨æÈKe÷+=/ó<îRþ郼ËÍ'ÜJä:ñR³½3i,<}·Ó(IqÝ©3Gè¬s)Ÿ_ÆæeÙb«áfo¥z±€æªU+öSjÌ+ÂsuF7²îÍW®,»qÌÍ_±’ÌãÊÓ¸N? ¯+ÒéQ„å\¡Y_öï¨91 ›mL”yW¾µ9|žºtEZ¾‹=†'Fç‘7H¦×~ ¤ÿÅJ¯Ð²®æÍ)O{³æ”)y]¢>ÅŠqpËeåÕ?òâZÕªª¢kBôì‡~®¦M:árÿjNÖÉíozNHæ.¹¹L«å+Ü\Q:Ë|^¦w˜æ‚F*ryõeò]?^+‡æZ½œŽ;£\?ž2¼*XôÓÇgÇXÇó¶oãP¾'úŽÄ‘;jPc¡¨»ØŽÝUòŒ»Ÿ@ü¼ )Â:'¨$ÑkW¯afóÚC¤±²Ò§¹x]ÆT{C\q½0hÅìM‚ülûòÅX#b`]Ù SrZ…ŽP¡à`sp“ì²jr(Üæ³©{ =ý I*¿2ß~¶]3r”XKÆÎ×ÙGŠGœù"Ì«ø¶òØÀS­—£1Ä8ƬÆ$Jù~Ðe)ã<ºµÉx…–PI™#Y‰„ùÂ6SÈ7Æ“}ð”{ƒÛ”ìVÆaœ2§1«Ú¶§QZ ;w ¦¼ŽŒÌVαÆÀ#¹Úù€U7]FÝ̉Íþ3ÈÌ«PcØeÞ£xÌBÍL³nÃc†Õ,”DØoŒISÛ¿¬ãH(%çÛ¤6Âo~«æ%yæBe»ÞÉ´±17P1±©ø6Nœª×'ÕO‚÷.¦ÌD¯~Œ(Õj±;±¯r¼x(ˆ€ÿ”bQˆýâÅ—6ã{<%ûïØÝfâ$KWÚ°~ÊðÏqJÁ¢õ´<ÍÝÆ¾ÃFÝ–;‚—Üæ9Ê[ó“Rå!îw-Ó—·¼P?Ïœ8r áù0sÙ’ÚZh¡ƒòÏbðiZÒ\Ù½Äh}™ú25þž‘¤GxÌñT¬þ]´ÛáªÖÕF—k¿â÷GqxÍw%«gýyhëòL2d½$­e<µǼ8; %3_+‘0JÖëÀ>©`±º7YÓ¯»¥Œª¬U¬šñÁäÅt†Ãƒ9v„ÄÆ8#’渔q÷[‡B"2B9Œ§¢–S„VÎ^ËÌük7¥"N‹+WX܆L•ëδ9QEÞv\R+‚hÜD§å¥1ߨ(3YïËÿU;o\¢àãÕo2YŸì‡«áô–Í­¥‹œ¾åû´³É_õŒáAK¡‰e]˜!˜}¾U Ì{‰O Ž5ƒÖ: ;œ”KñÒG·…_s^Œ92´âˆ««EK ~žáÃ%±~ëšëõ[Å™i #@N”8íÅÎcÈ=µ7‡ÿ_cgš$=bë}ÁÌa1w)½÷¸¬LA¾Ñ‹§$¥,Ëà #ÛxsÆá±bºûÄÉ®¶8Ÿ ZÍ¡Ly%ôa7‡ßCÝSlz84‡ÌÌ Weû³×޽k;ŒýÔ‡û]X’™3;vó8jz7WŠS¡Wý> µ{ w¨Áó\+ÉjƒHǬR;Cv›5J>æ=¼ç‘–½˜ù>oÓÊD—5³@ ±²b›ê*5dNðÏ.í–uIIS”UÈU'ÁinݪôìŠãé ß˜r)¯3­ŽT×`}%"„uËNv'ÛkŒœÀ²o¶…™0G ¼ø¦~ëš«Jð#4ÿö¥p^µ´YÊÌÆŒÎÈôúû},É›”í=øp òÐñö ’bO‹ˆPÄàF0ùá ªÂã+æ)´¼5íI–r¿<ülÇŠorÂçwHŽU{WË|Gn6¦dIºn¸ˆð={ÊxV?Ž‚Z@ÙýQ4õù5nÌš9Xbo}$à;X‘dݵîì=:b^<´ô®å)ºÇÚiçÔ¥k uö â}®SÅQãêSSh4º9@ëÞ@ïÄ-‡óРh{2TôüÁ:>°€R;ÃÇ‘[Âd¦ iNóJk*ã€wpûÀ Äzowlãïa÷áÄí-'ÍVqÛÕݽîr2ËT‡³UsF>?ú#·ÎeO–ðË+æp¿G#ž›p8#¨Ö]^•»Ôý7ùÊ2†fÙá2˜ÅÚÎiü}]áDu¯ÚÄ€ü/ÌfFc¯Åî{OFÒk^yç®ß 8TÇæÇ¬òûœØ!>–¬l&§ý8k”åÍ©Øwœ$fþ¯§ý"³¿šc刼O ‡Ÿ¹žÏ2aÙªF2Ú6‡_òþçd]§˜[×F%ÂÓs㇀ªÜkÕO£L*9ï1Á®È¹hª¿#»zKIªÝ¦vWÍT·»c ›Kà§ífyùÄ4ºD>¥5ÇÀÑT$ïÈЂXán/íÃ¥¨ñh;SÙþ GøÁ.LÉyýŒ¬`–ÇÌŠ±—o³N'º®mgVhŒ²Rbì°*…wŸ±\¿‘³`¦yÇŠÇ/av­iÐÖ„9~—m®b;ëØdËyzlì´µDpÜæƒ9±*I33›hÓ½­éJÅinz¡·zûQÃ©Š²¼«M5“ÓCñÓCiß º/¥hk¤’®Iˆ¶XB—rOjùá4t‘‰¾¡€†ðC虆˜iø§¤nŽF*£×x&pr‹û¥wWŸ79͹pS Ñ5Ñ7Gª”2ZH Åž%–XHs[9±1å}¬4Ÿ3jl9ÏÑD„OÍzéQã­×K”G_,ˆ 5F­k­Æ,-9óÖ}è6e–îî„炦À•:޵æ±Ñ)̃yŒxKÒ{ðè‡óÀÑ«L¦1‚Õk:Ë5—ûkqioãpæ#cMsª:Z›Ûò1X˜—¥q·/ÔØý§Þt·Ý(JsÛÅEmçŠú~ÇãXöØùÕÇœŸFä~šsŸáVÍ…fÍ߉Üüi±/ïæ¾¾ÙÑŽÅP9æÖ{cµ]SWey°Ê‡3¨L_d¦àˆÁIDs"´®Ù×þyÏÎKE°9ÚÁP,ÿRøuæ—%cÊüÜí _v-Ñl¶öSŽ”»]N´bBŸX† ~ÿaìvìÃDÚžEnÃå§ëcç²g“b˵»ߟ©¾-!>]#_Ž»ØÉÊ›T2Æ‹¸WׇSÂôY0öñ!jNõzÂÒWZŽ®o.‘ÂñØ#Â}Úå?Kº…›³Ð/NsRͶ É7“ù·yÎrÞÆ6`¶.?]þã +Zk£Ð\ªƒßvéŠ+l;jÄËu}¤Ê9‡”6·ŽJÈ¿GÅn$ømNÙìS¯NÁLÖvã+²‡½˜µøþ}š Gj=ñ¸’‰ òYžíûâÅAûÕá$èøpˆ\²^v8õ±¨mnÄá.¨rDQ ÊÃY€Bfy;kBsJQì¶blš³ËKïó ª5¥<¹|EbLøq%‹æÃ8Ö‘øØ9¡2/`ØÁ6û×§<=?\˜I­êQ–£¸;µ@Î æ°tðê6ÿ‡¶@eñ~Ýû°d;'S•I|ì¶…\bÍÀÑõeÛÙÅÀ;ŒÚ<3gwH=ö.ã1l {³Ìù&i»åo˜xôCð5”±×‡ìãâ¯<‡"×o§Èl.ÔÁØÃ¯¦„}såàXù·»#2Ý=ÙÌúï+›øùy†`ËKB,§— ª³5G%ipô³JNMžË]mråü8œöK‘efÓµV§Ô`s‘º=ÊÌØrŽÿËñæã\ÞÇ[qzŸ÷èW2ïÉ ø9W¥4Ääú-#÷¿¬ŸžúŒzVK—839-ÆáRÌLn®(4e÷s¨OGרo¿àpÐ1‡KBðß®ËsùØv5öá2%³Ó÷å¸(ÕžäXIrœxp8fc÷„8ë(/Èu¨±4W5’¿41ЮWs;VŠ„ölX<ò5—.1>rÍysw½#Ï>ßv Å8v²ËÜã-*˜õ>îrf…ìß+ôõŒA6g%„Ú3Ó8ž^¢gÝ ÕÑÏ3ÆòpäŽqŸfj?‹*‹œæˆÜâgѧ¬ áL\2wÉ͉$äþ½d)û}å™mLÞ‹Ž¤Ükî™Co8twuŒë\üL7…8ÿfU1ìÂá¾×ìê ð˜.^»92’4æŒû0ÿlÊÊ]cp÷^±G1”àš3rÓ½÷, ý|óÂõ4ôØa’9î‚£XýSòÙTJ·t´+Cr{ ÔQ ¡A×7™÷´KïÂå‚Cò-."xzþ‚¤6·RÇ>/½™ð®ˆH“R]×Z~º—])hÞ )fÞâæ´”Âo¿Q-®áæÓÕ&…Öôj¼¬Ð\W®Xž9ͱdæ8P—™îóPÈÛó`²œ ÷å“‹ÛûŸàq2—éD›•Ëá‹­xžÂÎïí‰x„NùnW¾ã³}B1º„õ*¶ˆyqÔáBŒƒîj\"“Óé÷`0Sš‘PLµ¶OM]ï>ï $1fÚÒí>}4´diØŽy‚`ÎïÌØ‘3÷ÿTØ ¯[u´‹s °ƒTrµÊÖÞ*ûKù£Ú”Œ;Æ»1C%ûèÉú#p ­¨}òÙ†ëH§;V¹D!m_uiZI±Jã4SÜXä:Øi,œËò×ÙøTæQî™ÔË—4£ç8£oŒC! 3‘˜‹ ¨`aT•Ê7_aé˘Ñ^2ÇScN¡ï½Ð–gm3CuÞO[\§GïÓÝsÜ2e-_øzîQ>.s%Âr]|¥1ÓcvûŒÒ¦gé3ç*K¥qôÜm¢š¾1­ÜQ‡Ö|(±¨ºÒ0‘y'n|­LÏ=šFfŒÒ”.=«z1¹4½ü¬OiP~ÇǂӮÁz—ÂI®[–Â8îOk”nýá|'– Ë¡¬»Ë:=lö+ƒ¿fV㜎[¶ßÎþáå0›¥,ÑÆÒ¦c[X+}Kc¦Æ>w…±ÕÚ‹FyDc(¨ò˜ì¨Ÿ{ùˆ×ªˆRݣ؟îd’‹?Ô#V:ŽwGò –ËÍ’,I÷ô²3kvi¼çÓÏÚ˜0“/ŒîôÒ¯¬Èþb3¿Bcž9±s§s$“µº»"¨OËK2ù`–œã\*mìxš’™³)XÏ^]ŸÆ Æ£N´§AÎÒLÅp¬WR <ÖÈk—b/6}½ÝÀ¡¯Yˆïà 6³Å©õ`@ÚlÉTC> ÙîÌ4+qÉáçˆ#¼þJ _ª‚§‰™I¾Ø)Í”:šN|ͼ˜ÀÝå>˜¡©°Ý1——Ôu§šÅã·¤6U2ö×­1 w·û½1ÑïMžÒ˜™m\.f°Rcb.…—ÊhyY]Ýe?Âo̪w‹œ·æ?|çVn,€Ä]˜Wïx7Ó<·iÌI)æq§ªê)%Bƒ‡_w`{¨áIˆÆ>nLÀ¨¸%èK0Ï$ïd¥ùbV.Qwi‰Ð‘ª1 ¦«m¯‡Ùè.yÎs¼]Ј5?¶·÷¾¼K²dSµvô¯ Y›e: µY–tkc\áã& Ué£#hçlì>Ó”÷ .÷Çl¡á?aÁ<ü[.µ¯i™é=Y)g†žßz°ŸˆfÓˆh êîï])IÈ2WOi4Bnߦ7a+ß‹ɜÛË Ô1A02,Âfêø:É„º-r]3~z™¶˜q•’ÉÂôwFWv“Ò¸\ï&ÃkžÄtÓi&ƒmLCA»Ÿ–h„Í­t,æ\¶3‡]°0ú—Vÿ×¶d×\w“ÝÜW)Ö¡|Vý#ª|Ç—5Æ‘ãKÈr–VpIŸ<Ç1û1‡qÊ]Ù¸×÷kGe<š®.¡ë +~­¡´1»²–°¼˜]óNqc+*¡1㤻4¯ïa ÛÁHQ<:BÈó³N§!÷nY|kŽ,sNwq¾ecb’1ýˆŠõÓØƒ©îÒìÚ‹ñÁÎ-—­´·ÇQ.Ã9ˆcºã6µ|ˆæLžE#!„ÿÌ9³–¶¹HcÎâ–²rýªZŽMÁdwÓPÐKåû~•òZ5§UŠÝ2‡¹’86a}§ºXÇRm®+`ÞXªtï)RCôÖ/„î‹óƘÃ0Óçùicœ@âîôT—aÛ˜LéËÆXñù zJS.)‹‚YÓV‚ o#AÎnÛ*Æm’½oëÄ(µÌø1§î|œüBñÒÔL[Y~PÁŒÇìi%k¯ž>AmiFRrOúðußßmb3Ý8üù—äñÂÀ’ÆecÓ¥¹11Z)…"ö÷*J•maéÆàKÉ›A•viAµ±ªSÀ7SÉf^ÓŽã˜Â˜Ð}"Ù˜©ªµ—s©Ï³T_.Ñ3aÖ)¬K·yLLãD¤1+ÂTÖ ¬ÒØ}é$ºGÜúÏçÕØÄÃ]e—ÆÅî÷OHϡߘTÎí$24o'üÆŒìm.£Æ—}÷áuÎÁ“Ëü>VWå|Íj.é3ô.¨lÝG„VŽÙ‚ve×9J—S fZ£4WrY™[Ø9’¯Â$Ý·Nž"£°€þäæÑ•p¥›&¾sÏÄQV¥1¼ºRÛ· *ªœ£?lKœ5ÆîKªHj$·h,Å “Z Ž›BðJ²ÿÑ}Üû`Nî>B*º´™H¢1sq¬:µDiÈØ·üj•X­Â~…»½¬™·ßÂô{1Kšcr¾mòb˜jjÝ.»u0¤ß r7YR¹ª$Å÷ƒO'ùŠ)¿˜[®Û'ˆdÔJ¯¼âxBÏÒ"S§,…ü”"f–÷Eà^35eÐ`ió¹C¯"Á·xCölFæßKfhË‘÷šî0ª. ócšc ‚¾ÜUR&îå[“dì¾ï‘KR.ÍîæÔ%>ö¨bÇ(gd?\úur¥Gîf§­_õ%ñëL»š¤”Œq®Öœ ܹtÁ.=$-{ì¾óÚ´ýZÀ=!+ÿe¿ûbf2*Œòýº®‘’¬/¦Hg¹¶wn5a3Ë6sŠÁ—r*=9ýîG.nfô³ˆã‘¢¬ËËŒùÞ÷ŠÈRôn‡ùZœH¦ÈûÛÒë¶§Nú¶¥¦óÅëç×)št-vÛþlf_¿2xsjJ†íǘ)N9{3—4_×ËEî2†s}ï¿ù`bb%ÛÀŒÍ¶Ûfꎢn[+R5m3J‘wª™Ó¸§ÑRI÷Õ*ÆÕ-Œ#hbSX;š“KG‘Þœwá2ØsËÈ6Çöã`ß?–†€"JerÙ'òÝå‰ï‰æÂP$£¼;ñ®(ÊÇ÷@S„ð± TFïFF8¯b ÝÅìî@s<ž‰ÙüVZ æ6ÏýÎ1›W*_ÕÍÝÎEW/øÈ+s¸dU•€/¯fsõãtàäò›Æ+ÀåãNÞÌeöZcšÎrcÐçWØáFÔÇî+ÛUsî’q7U,s'¡È¥«9IËÑÍÍ)qÄn9ò~SÎËÌÇSR²úI¦g.ÕñÕý˜C"Bïê(¯úåp†âð%ÐX—hU_¿pÖÕº[LÇÏËÕæ““̶¬ *41ž–Ìíøã8~*8œm½¡}ÿ|8CPÞåÕÈ-v8Uöá“wõݾ”2‹§{µÖ`Û±Žõû©GèŒ%“>»pÞ¡ç”—#žò ;6­ŒÃjÖËK.ì}\_=݃©!8ÇϬ+òæ¼|¤4±Â—`¼ñÜóí}èáòsé\©´¼Ñ»œäÒ1S2_ßo=܈…Õ?.ó:ü<\Ž%Zsi¶„OEÿ;Á’sÿ¾P±âñ%½üíþ‚D@Ûn"´»bMiþÏŒ|%ªœmT¥lõûˆbÇR‹ ªÍi•ßsXõ;çT0ËÕù¦Ñ>vÌ m‡/®æ4œm?‘€s·ÆÍÕØ@ž):Êü^«üKóš/MñЇs+ÐþP3ߣ<ÿ½Ø1#Í饇ÃQ\Y‘òá$"h—ÇàH~ìö“8Žã9ÂAÝkEå¥ÙÜÉàÓör û”?vÚm· 7Þ1' ŠŒy ´½ˆO?»Š0ïvþïkä!êÑWº.ù ×¹lîM£1+.o?|‹>7æQZ˽ír¾´ÇøÅÔE÷ÃwHÆhü«!¢ä¸zó$Bšûáâà»3‚€äyÌ>푹\{´ƒ%Í ½~#Œm{­±G›gÈ1U Æ€$%£u@ΩÁvwE°’ÆØ7Òñs½1UUÞ’$>‚¼M]g8%`W¨ÔhŸb¹É5gdËhï5«¹‡gU–­ð[¥AùØÃª¶$ÄÊÆÓœà:3ˆÃE1¿#±rïì[2b15€céjû®G6—~å(–Ãqêðúî%\Ø Ëe¡m·;Ô´>'F㬺+ ÑK‘sáÆ<Âuå÷¼<ï ä㺮)RàîÔ rÓåøˆ¸]Lc&l7râ2ks„XÑJº¯¤äv—¦~ ²³´äñE1¤!W›J°1¡ªzéÊ}%dæg¾Û2CÊñVtÓu2*CMï¦{™;ƒÖB͹ãóðuž0Ý9_Ì®-êy†)Ä/fo‚‚>ýži&ãЫ͸¹1Ø¥¥/æ¸ýš«äøÊX%³Ñ8ç)âøMùÂuGñ5%HlŽ*Ê{òå7ÂÇî¥ÁúØ©L¾:‡Æ‘yõKù˜Í†{yWŸ†%êyÒRåÙάó&ëe=9î‘X3Kê‰Ò1ºUw𣠭ÓXøœù/é­£Ê,2ž;Urî|fVÔ=ŒÊ)»¼-‚•s!/‡ÛN‡éãZ¢ø7üÇ1’»5•?±hì’q#Ê$­V¤ŸÈõƒÑJ‘>±íÞ˜•ž_v¸d÷ »ÖŒë ×'(Žñ=Oˆ!Ž05CòD“¯r0r¯7gbLŽÿ2hÚcç ’ñóä?^»öœwNr8U=?OçJ³íñ³Ò6w ¦U_ÝòppÐJã¢-pœ÷[àœyÊc9œ{øø–˜™žzq8½‡c5J¡‘Bº9Jޤ»¼bâõ3<÷Bµ²¾ÕÖéýTú~t󳲯›#I+c»TE?O›Ü¯àë¶ÇNôØÜÌzÚSPÙŠx rIÅ%7ùbŸÉ7œG öÉ™ÖF°ts¢[²«9¿ó¼js<–¿ÃÈǸI®%ÛÛœ@ä’ºlÎ3ƒw† ¹òÀ5'²ÅÉ9ßÏæî%‡Cáë…'Íq^#|et½OßÐk&.j,J„ýú#£+Ù‹®Ë‘ƒÊI-ƒNt"×B¦[9032³nÍÔôÐ×<½+3°X¾PâNd÷p»—¿ßÉ;lw—ïx¡æŽJsW˜ðâ9€jïŸö_* ® @Ü-S¹N-?/–Ý*InÿÎÆ*Xëâ4ùyM”¬ÆcI‘y<Ô\Ö åmnE$7VZ¦hóÞÁ$‚Ö,%Ú³¨¤ªÒx>št÷zs4¶_ïãþv~}Ú5Òb7ç¤íŸé)b28À¯e1ÓxS]¼öG•§ŸRsT;'Y w‰Ñ®Ð´“V9í9O3¿;"2Âï·¿±¤ˆ°û1§æ7•ëK ¸œeA5‚þ/už£ ˜ Œí“0µ\rtB¹ÕJbÌ:¡ ±OBˆ(Æ‹H"¼ée¦_…]ûÚá&C0z1nL]2ríw´Š“ÆpUþ®¡ðbÌJÎó㇮¬“U™˜êŒ?ïÒÛÁ Ó)²1 ‡Žõqmí®ÆÒAWlac¼U4êÏyF¬Í¸3Õk6Ÿãkïe^Ìs—9|øÉ_,™GÀg®8ë+áhs–’ùÊâÏ\wn«.%I|Ñ4f’é£ŸÔ +¿Ž§ˆŽ±XåÕòÆ‚GÄÆŠ#hýÀb’ÄcŽÞ§I Š9ÂÁ¹ÒéÈõÛ˜‚dçÕÉÌ+Ócc~»Œ ò6é-¬›/fLîÚfá©§7/T©^³J”Ó='†“Ûi&ÿ¯ÍÄNùݘ¤†Ð˜£†ŠÌéaÒ;ä 1âZë¢×ÏæhРØ^áK×®I˜'­U3^¦Ó^’ÀùbÂÁWÓ›bUúqí¼«Äw¾cþ¸µÛÈ Õ?—ØñwÅéõ]2]¯v?+¿f–¶ §ÁvB„çYhÛ©RøØùc/å=*¹d\k7§óð¿9 •ò”û ó~™ºÞ ª¸ËkÎïôD¦Pþ)Žm­-Þ¼<ûEhŠIâ CÙùw@äÎ÷”¥+éYsû¡ËƒÊO~žQ˜]ž‹°®\(ýù¨Fí$Dû\Gû|b÷ýPcv]ö’ž:Éü1ïlÃmN+ŽÑòí‘ÙT¹éXÀI`Õ¥…õ‚óóV’¸AÇì~någú˜Y‰s¤×%¼˜[™b†°ü'QD¥÷·Îáö364JÇæŒ$°s‚ïÖ)Js›eú65]Š*Í™‡¢F×^~3¬Ÿ7ÏRæ¨Ø‡Í¥ŠÈØÔÈ}xžÎîTNcY?8P0ÅÝ>ÍÌÙ>ÝÞUÍÅDöpŽ‘½9áR¢•Ö…"™{^×ÀZF)f·˜ñ÷]<Ü”_mNݱäU› Äü¹—–FNB‡ó‡³²ß¤¤‰+¹Ÿ<×:¬hNä£[|Êüžßk"Bc ‘ªÔÓ’Sžk™Æ]o„Uýæœæ½ÎO¾2ÒàpÊ¡E×ï½2\´ýdé¿;¨ö‘HÝ™‚¬Ší`ñÁj$NjÎðîaø,O½tç>‡päXß  Jƒënõ}â[CúpœðÙ¾‘f‡ó0½‡Âr'xóåß©còH 믺Jþþ·ªé·Õûóy87½óY7'$1'›³‘k¬9¥Ðˆ-†Ï’Âr—'•¿7ž;6¥ËÓbÏo~õKßû”í<ùU,9.WŽ'l·’ObQx„ã5K›i¤?XÌëêbKìV Õ#/¦/VÕ+gÝf¨ªìÏiX&øîA”’óOŽ–ÊL¾ç, {¬ä¿2X‘ ·û©»-,)ø[ݘkîÒˆÃHîÒ\AZ[¥¦H wo[”iîÕvÝÀ4å¶ÒE6ÅL|?a“uÖ˜Œäý)vF°.íö mL¯Ì“¾1A„ËO®]ÂxÑußÍúblînfEÊ:ºvŠò¼›. •c(y&gÔІoL¡xûÇÔ1–VÈÿb´w)²R€4Váu?Öš»ðÆ ÁB÷¦¥ Ý”\‚oÀCÅåõ¤/¦+%\=.¦´›f, þ\_3 ù–ÆŠs‹?åŠ^m,4§,ic3¹W=ÏšÇJ ¹z1ëˆÖlŒÄÝón›—»úŒŽ‡VŠ<Ö­ÆÞædr÷û{èHù¾} ½ÊáºÂÝ%Ë wiq§ŽÑãH«8lÌ<3^Œ?ç$9¢V³b“‰Í‰ñý¥–¤ë8%´8ýÆbÇO5ÆNîy?J…Í—´õ?˜i¬#Ä/¥²xK‡Þ¿”K„h‰ ©q¤³ @ {›ÛJU%œÈî•`y ßQŠU¸`¹¨ óoH¾¬ì§™Û”Ej,,´ä~HÃÏQ_Ì*3ß#%‹%ÈYŒàǪfbç÷Z:Ÿõ ÏÑ-Ò/tŽc•¡C§ ¥ã$تh¹Ê ûÇò,±n¨ân[Ž”´ÿÖ÷ÅȽq)ï'–;ŸNcá$x¿>½îÛ\œV~ÿ@íCå¾mN§¸++0Õ¯·¬qØýÁ%]Ñm™)¹Ý‹6ñzFˆJ¡»4ÖJÂ&9ħsÇ<™kÝ•+#(²1!%Ãr+×P‰¸×Zbæ%˜Rôþb¬akøˆ%»wtübž\v¹ןx°Î:+.*š’ò©úÛ˜£Rxœ±¨ÛÒ©e)ME]Îø)u¿'ùþ”ìÌÝéæäÅ<ÒÉîg ØÉ7K^±Ï6›bKTÈvkÌÉ-Öð)k¢Æø×7{ÊEãÁF¢Âƒ5J“Ð<•ÆÁ„µäÞ($ç+.êDãÔÈÔÅsËŠ«’ϲÒê´¨*Eæô+Ž£»ïe˜f%Ñò‡·ÐáØú`¼”Îm§ílLÅpkž6V™Â¸K“$ [ Rf60½Ô+Y^,Ãã§Ÿ¤îiÅ—hOc¶õ\ec7•!™²~©WÜG‰ƒ}ÿRìG9ÏÝÏOXB(uò8MåUw6cË©´9hò7xÅrÝ`P÷kV¤d±*³bkÙSì \èua-¥æ.-‹S³+–ôIj:éŸ$µÌÆwZÑÆXøRpshŒ¶ŒŒ'ç¡83Ÿ¹>þ0wÝØ8Êþ~x‘óÉ.=×.$/Íêx1‰SãkœÂÔst"y‘2YUŒó[‚FoùöÓ-ÖSÉîÃ!-7+q â±Úo³G”ûÝrc—× '“úÚÇ=ˆìö`éÈí5›Ñ:þÖ ¦1Éáq"èUð}Ð\iå9ªr†ÙxW‰ëÜlÞ„Ê)ÅðÇ\>Ø:´8jž„9$CWebŽ»2ŸZ°Gv)Êõ>}ó´‡ ‰ÔÇ¡®‡†/µ*h™åcf´q–B4Öâûá–rÀ.ú=n,¡H_m+¥1®jÝÝ¡ÂmCŒÓ­6«8feaþ½­OG€B–9ó"÷/Œß¦–³[xŸå×›¾1HqèkæJ«ÓyÞæŒ¥±Ô˜š™ó(…¸äpöb+®±T¥m²¿\icÀ ®­^¬äòâËДñ*Ø8ø-y°-¿Ð˜Ùp™x~)Ï,>‘WŠŒŸ ª‚Ǭ½ µª»#² CŽº1p™Õ0š#t8v¢ªÆ". _>•êç'úÝ®œÆ1kpÜ=ᕆ&瘹͞9}û¶.ÁïF™žDÂÑÃG¯O‰·Ýi ¿5§"™§1iÇWÄ÷i Èå´!ŽDXÆͽ=øæ8ÓÆLIâÊiŒ`)Z÷s–íàÔœäv.†*×n]fbÌ#ä:Ó05v=í÷“X"+Ýf «oãÄš-Aí„|çÊÒÆö:¬±­¯ò`AÅëm“2­»°1ÜÑÓ}ÝÖ˜KfÎé$g RS$™wï6,NÚæW!q;¦pSs¾|±²¯kêÁüÚ£ê;rÎi‚»ü™q¡1Õuñ`¶ó¹1ÛìÁ3…Ic¬ucW"”¨?™VŒNä×b]ŠX>Ö ³Ow«ûUG4æ*üšÁJ†ÑÒ•À°)rfZ…\ê |>€”™z7ØÃ 9E¼ åÚlÅÓ7µK©²ï*Ó™<æ:á½6 ’À\Ëì³Æ\UîôU]ÎÞgÕH ÜÂÌø1‡ñôRÎ>r o£b‹UJPå537fŠ´õ¨2ªwi¢eë»ø'.0KS)ÓX<®á»#ÌHBÆôžµ­ü.Íik#‡ýcýíšV¼æšà—û'YÁÖ:BkàËP’x±Â"Í&º¼~"ú‹Á ±Ñ*wÝ›ýÍôÞ¶–ÁK×*.h{1–Te®±jfã°AËã6°Ö„eŠÕyÅ9™ù©Ä÷’ºÍªŠšþ]´ïÏ{¦$Æ1š}GÄÁäö¹«¿ÒX!w“óŸ.j.–¾*ÍpA=f51*m6µm*ŽÐõ™‡ÍSŸípç2»Íâ—Ôß[ˆ²ñð¿DÆHnÇÉàǪËÙ³­‰‘ã¡1Îtq ýÅN‡|eI2~¾¬”¯ +F_7fBÐü33Ón1*Êã~þ|;ò[ŠGæÝׄï­"û[Z ícÚÍ{Ú#>}í)k49‰HŽÒJɰFS„Çc–˜ñŒm.Žîû¤i2‰óÈ‚ÜÇ}XÝC–O“©Rü¾ª+v™Á¦i°è}[”¸„1>•3ÌL¯¸Ò:˜/Ímn,¼[ùy´þÞ|†.´¹X4ÚB"„1z¬j|ÝwŒÅËÁŠ#}xöIè7iÌ3î´~©L'³Æ°äFkn‚ðF13ç­ÂÞØNoßXDZùÀ\Wü~cnU7;²Ö/-çõfb “®ÝX\Ь/Ɔº1·µ¾o,j_Ûí[õé·ŒW]fIXX¡ÌÆ£wÁÊOÜX,î¶™óz¦ÝoS˜­13VŒñÖ”äûM²"ð}0Þ¥Jw„±ì²ôv5;——•öšO¦¾ŒÝi‡õL‡äðtñš¡Ýþ{¸8íØ“Ì ôßO.ÎÞ¡+IË[¬¥­O¿éèâì±ã_Ó¿sßût)¢*2ºCy%ÐÎØÞMEÎx»þaêÅAÃÃÓ¿Þ üýýвQšXR.­-‹™¦®æY-^¬ÈeÎe>jCUÒ¸’s=KĜԥ.‰>XEY^¿tÄ–‘îïÐXÔÎ%ØiÇB¶±•‘¦±©ÖØNaÔïÅHÙÚ»Û½h #2»1N[§Í]š)¹þïÑÍ/VADyý„“p¾~3ÃDc|‰M2ŸQ[ ×Ç\Å&gà0GŒ¶ðÎ8×X”Kd›eä¤<'Ô®(?<ªpFÀèþ(¬7&iœ¾7æJ6’¼"×é÷ÔÆã¤ê`I~&JTc”á…A Zà ûã×£ÒÊ”‡ °JÆ}fÞXve9ýh#æm]÷“Ç÷λ±\¡Ë!Ë´fi$ã5ÅNcݘýãÅJ±‘ªÌá†è#.z1®`òá| ذž¶IqÚóiy¨3úÄ¡S/¡:ebzÚ^‰îûMÈLMkÿ(?´×;IGÓŽÿF›Q¡kb6æÛõ¤1þþg˜A¥¦\IØúÐJ‰Èp×F‘ä–€Iw˜Ý¥E¤Öâ !ÂÚföÕC)¶±}ƒÓUŸÊ.Ád§ÈÌp!»}•Ÿø`«Êë ;9ä^ 5%±c)5x¿4γqv¦keE¶Y•uhæµYRéÞà„‘Ígbeì>°×IÚY¸ø’j’ËS጗%Ú˜–ɧ_l§XèJ¯ …üb®™ »4v,Æ7s6ò1kî¯ßÎJ•½|T‘µ’Ù’§hLSZÏÐËGîÎ]ÓIpb*]ùs•éÎþߘ®…FcfÃkª±ZN»á¾¶²ÆBTÇ\.S ;0£6%;W É‹EDY—ò«€> º¥ûd°ÍŒ*Ìç “Õ=ç| ÿÝ7‰¡ß-©F>m©ˆž= ±ò'W€GiÛe§1æ`²ÇL¬ð•óZËÌí~3©Õ‹QYÊ|ç`¦q#ûlS݆ ¿ÚòaÈšnQÚU”ÖJH®åDz§¡+›P§4ØÄ4¨b-fÒ /fAäºÛ~1wEâÆJá8¥R¸ž&sfðZ¦aÆ{?_صûl¬xçዽÜïÊÁ<ÒY¸WNS¹®\m62Zëz¯Kß„ë¼b¨t5&K¬°;;Xá÷4–Œ¸~`ca$7¦Z¦2 [6sS™/Vb÷¥Yc®A¼^! Ö‘ñÇÈgn•×Ç0b$üÙ§t…çxDbÅsb r÷“9SèöèíB²JÝ]odìÃMðωJw¶+«=Óí=@cIÇ\èæŽ˜ðºo÷ƒ³–!j•\ÇüJõÈ•\mòŸÿzƒüZ-cå ˽Ól,£Rê~`¦Úó¥GDøý*&¥ èÆ”ØL0Y&÷î®1aÖ²»RWѪ”-Eå.m¤ˆ×SZÀF&ÍÚWÔxth½æ$¹³­ÌŒgÊË¥×Ù˜ºCmtªï/˜nÉæ¦ˆ ÷Sc’  Ñ #÷`9†¥!^sªK¾?Ì—ê:ÚGªÖf÷å–Ðf fyÌá¾®œÛ,ô¾S!"+ð°ÍÌl÷¨p&ðÁò`5' 3u /–%wDaci5bW«b_…™5ä`ff#×™qÔŠnLKñ¦¶ú'‘ÉÏtºè^¬äYy“|å ï8¾Û©=a¿˜d&|üÀ×âe|ÿ¦Ð˽ó`±2xõÐÖr$ÿãq%И–jÇOÇÏw”CóÅøƒq”k›MÅŽb@rÅJ¬ÜŒ/VÕ™iØ33lXÝ1?Õväé‹YVÊ|ýòÊ)d/æÆe£›Á’ŽóKOiånzcîÂU B°´y¨½kiýYm ´Ù9RfÒ©-̼ܘ¥í bŽÐŠ{’2YµscÅ_eÆá§'N)r¯õm2©×ì|ï«Ú uü„pö«_'8v>2UɑŪ"lźµ±“Ðo`æã‘ ”¸¤6%"þX5ºÞ23è äkŸ‡f=z–Ì8ØàlQ£´r°/¹¢”)–/î:fr.mN»®X^LFÏ܇v“m?¨»¬wRâë}<˜¯Ìÿ%sÙØIð”1=D”kÝOØ¢D1ú©üdnÈ?Äa(@»I䙸œc… H‚–€)0œKº2ñŠMe94Ûj¢Sj»ÍzßF6¥%·‹ÉÉ«å‚}­—¦§¼˜…ªêÝ¢!P/,™9 Šãµ*B+ënt]íA{sA>2"žYŠ“çŠ”yÖ¥©»ÿ;íD›eNw)N™‘ctt’‹`ÊkÄÇ}ò³$w~ÎÕÔ’m­>¡Æ3¹Â¥ t*Ë2ö1ˆª¬ðZá2¢8s:<ËéIa¿°á0P\;9³O ñÆ<+%îÒüRoæSxgr_Ÿ×³‘̶±ɵ²t?f=7ÄØ®Ümâp;ã^Jw壟†(VcF+cö7¯a›åN®öXÏP‹3ø:–D1ãT,‰6—èÊS%šöoíïÆ"1Nr¨Î°½Q¥…r?oòJ{ÙfUŸÑ;XÑK¿¹w^ʧ7TcÐË› 6uûå»ÔÇJ°ùšeÊ4¡àµäwŠˆœZ#™ŽÓ–@ðߟI ¶Æy–XÅÔEµÚã|k4æîæko“3¢¼1#™›¶Æ|Š `å¦~±!5\V×O8¥Up™ÏJÕk΋Þ^äycTÅ.ï—Šøz=â1G¶º·+ä1ƒ5}~¡¦"TS¢×ª)N].™5sQ¤Á_³ù8«i3sI½æ›·63ƒl¯\äw)¬˜ú%Étl¬,‰—(“†¢d´IxÄÀ=¦E}Ì)÷¬Š!_ÀçY ˜yæÌ°¥1ÑXyfN½“´š¾1³ä!zŸdɧ´|1Šô™À\ße—µO­FÌà©T*Yö§±K°æÆdŒ§Fës º¥Â/M烩fÂÚ<Ïš^³u)czŠà’X¥øÓn,™¿Ô™ûÆjÅsBfÖ}0+¶]iº8ñý¦TÒð·èþbr÷ÕÊáÒù¼öÃ_Þ3›½*¸´Ìêß·êà wq[‘QÅž·6ìÊ"å§4w˜åÙ®x]Ü#†»…›¾æJÁ(b8Ï&À:?gEª\£-íl¹µ®#ù˜ÕÅGÐqc^&¹Äõ"ËL†O‡ðЇ­zcÌUëu¤o#¹Å^9¦%G›GF2>f%¬¤¾ï5» ©åÏÉÎág•oM.±Õ;ìpÊQ TÉæ.f‡f­^/f°å'lš26q¶Ý®+±Üë1M±Ê«Î€ŸÙX‘ÎãI¤¥AÖllëf®æå8¿˜( üî‡ MÌ»4¢Òœ–¹ô¹¹ôÁ„ ¼4Í$cøAWUž…;4§6ˆKÔåõ}!1Ñf)‚Ê]Š‚h=8®÷»”s9&|ɵãrpÌLR)CS€üsú ÿò¥Ö‘Ïýܼ–)n,a¾'®© ÜåJ,i¶QMI³Sš–MC‡Uñ¾[ö©{´„Æ OíÀ‡ _k;þ±±f­›Ô"»{±1[ÛÐ.ÅTdÊ…Ef†/¬L„}`®þ™×¥¸lÄ$ë×á/Õ×Å^¹|œÓ°FbÌSŠmñÔŠŸû:éUµÎ€B‘Ó Bû¦qÊ ŸUlàÁ*2¯…f6=Ûü)hÿÆÐ ,üs»é×i¥4æÄúãTbEî60­$]~‚j.¹¤­ÍÆ Yc„á©ÔXEéôŪ™hƒ bÂÁâ3 ¯4ûÍÒò¦n™ªAÅ6>‹ÓÌí‹ÕÔ%|zîÏHc±ÂrËJ'ºŸ<LX÷ûÁ¬w‡íT&ÏâAdW,¨Ð‘n Ü_g/[÷üF·¦CclVÀrp"¨ŽÈÅ´˜”O†Ó(Ó;¸V¬Ø|ùÌ2G™Ü•jdúÇaÎ})¡˜¹KŒ¦ç<ÐnJmï‚{4:—Y›ÅIÒçxHârº«bp¸/Û(‚øYÈ\¦¼|O8F,Oc*2öŒYqD=fÕôv®Å× ÛƒE5"j<`BÐÁ>M²dÜ3@AÉææ NRùùuR ­1„¨R¬M ÀLz¿>®.kFäð¥Zï˜þ]˜¼·M%©Šîç% Ž~šÆÌhóÉì1æò ލûLi¬ ’‡øc4EÄZ|°Š•Üó^xÍê È_Õk:&è¾íJÜÝm­Íq? <W2­†þ=Â1{j„c-åK-eL=3–ó¬‡-"ì%.ªìë.ÚÄ!qý„Ʀ€hcâ¡‘~Ų¿Xš%×sØÇÌeã+ìz‹ ¿Xjqø¡Ò€×:£dÚœæ.µZ fos µŽ/%"j$£P¦ÊÙå~o‹äß™- K¯¼1wÃAöF¶1ËœQÅÈ{ÞX•¬«sÕ+áåï˜8éýd icWÕX GØÝù®"Ì+…‹»Ü×–9ó¾þã¥\Éë[ó>J‹kpÊ\q¶™™# Q!F~c2¡Ùö-nLY„ÛêÊš¼ž‰Ã‰âêÍ×}¾¹ÃÓCü&RJéù Œo,CC|”6UÂŽ w”£Í^@N1UÞçèÙÊÓÙ˜ñ¸Ÿz0.å­O$°6Ç|Ú Åz¡1¿N„¦Î:uKòW˘§Žô‹í,î3·º\öº;ƒ‰¦:òÚm~Ò2é}=ÑXqþ$\:à™§W^ón{°"ù6½^LÌŽ(SÒc¾v™ÝM×ÄBr=;{°élžO¿œ}Éœ-jFÑ5V¡…©Ëø«±ØÖ'‚ôÅjxe*Š££Í]¶¿âïÊ Å¥ce–G;ìî‡ Vî—¬á•9ÒÉcùz颥•ü8ç”éÐø‚G©­“ÚpKÑ+_Žº §Õì‡r—ÚþßJ‘ös3Lâ—6¦ÒPœv¿3' ã¼QGIäø bQXmK¶y̱Õáûè »U•œ÷Mr1Ó-¨Çd¦<ꊨ°1XVažWÖJ4&J’´žŒCõP´Øyõªƒ<|”¶Ón7¦·T}c¥±ž¸³ ³Ñ™Š‡kØ5nòÁ|$6?’àÇðŠåƒrÉšâ}êeëÑ™JÁ”³’“7 Í¡ÈX§9¥{s%Óué¨É¥zO/b–ä´Ïö%Á7Æ^&¶*%âòQ¡Øóã€ÕmæÌ)L×¹»ÇÔó»®[â`B0›•ÉÌ=ÕX8—e›™H"V‚$ý1ÿD AWæ³Æª²C2Ìe £Š• í#p÷Ca†­¸ë ì^ÓT¥ïJÿÒ§%¬ÍØÉÛl¨BÙ‹H¢®65äùe$\’o²˜)ç³*›“;­ëƦXs¥ {µâŒÇÌà•lë‰úÔ}{bŸ*%“ÌÁh\6'ù}áÔØ<†—s+-iW75&ò»××ëj)´N(HRsìûÆ¿m¨·Ù-…÷YònKĺhlÌSCtȤʾ®ÒŒYkô:d¿n÷&ÁS87«`«ét‡§¾öó}êá$âT×9¼>È?X-ÉÛ¤ªðx#h°¶ùf²’K¹ÌGÃw›JCáW›ŽÔÂ|a`™óB­Š×õžÎ<÷å:CêÒŒÍÌÚ\é±îk#Xc R[“þ3£e¿æ™Í¯ÍðËG^Ll„Î<¼"Ê3 FCYÄàKÄ*~cU–uO3VËàùkÌ“ÜcŒ«ˆð•ú›ëïF¯KüH‚‰d|R#Üçxi1Éœïº]»@y1­`~̱½<~%qÌ-—ìA·©Ì½Í;8*cêÁå%k=Kq„–ѦðÒ4Oqg0o¬”À÷DܘøT—{>pµž\(ùwnŠ Œ¥’QY)4°;ÔŒ$ÇÔ k̘ê”oGåË9sTE¸ŽÏU«øV ß?4sùÓ˜—å-¹/#a2Jg@bc`EêkÞIge(1ð·Mº¦m§¸ä/fùvC>X^Ѥ#r ìW&¡}²“)™/Ó¾ËêfÛ¾Y¦ž\Usô8®‰oi†úzL¼£ÁLç¬ÐI}ï»àƘUù{ÊýÿþßÿüÏÿûŸÿ¼a¹|C citm_catalog.json.gz000066400000000000000000000610751453663023200375520ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json/testdata‹¤SEšÛ0Þ÷þ¼-™¡«23s+x_¢©#¥OžÜ'=‡/f*ÉT­’÷£Çgœz¹<$+Ðî%§µãÀ‹S/Îó°»WE¹E8¯Y¹•à0Iážò£†ï:”LÉ9jÜPƒr»‚d ¸u€ÚÅ1I2-Ù!È…ev¥¿‘ä’ñb‰çyÃm²ýmº?¤O{ƒž6Ü)×èóª}T#äØÚ¹‰ÅœŽOÞ#dKÐa.;³™ÓѹE$‡QÆAµÉo•g½<Ôâë.8–[nËÞt"—ìr’Á³]zX(<y(a˜úuɼ»TIY~³}h¡Ø—ŸÊSØiz^~˜ÅYF¾5n!š¡X¡d ÊÝ¢8g¯ç? z`¡j\&ë^MóÐ3K犔bPRÎ÷Ò,Ë/²Ëýü·97<£ø´gŸ‘{Q¬ÈôÅ7¼+ͺvãžJž4¿Þ^¯Ø;ƒæ6ŽåŽ•ŽÏIEä°X,öHR$%’¤!B¦ž\ï2͏cfè™]ÐÐ7È%‡|'U±9¥*—Qù^ÑB‚årzÛèµ|î‹ e[[ªúýgúß===ã«Ë‹¯ÖÜGo´E£\›\ù©³ú7f8ü õÿ)‰[÷Éš?ÕítäS.ù”@>iyÅQÄSqDۆ(Fº(Âuéorϧw¹³sXGÕ´4„ÂåŸø§Kþùgù2BŸv…¥ÙÉ.U¦ye'(RhX ®{t Røç¥®>+…WO/a¬íg5º²@§‹ÿ1Vè7M?æÒ§øÂ?× ¿g0e3ï`Žwvá™B›¡Ùý°¿ð`=ûT³N1)W1?y··RL­ÐqàŒ³ÎIŠ®“L"‚ö—rÈ>+‡ƒÜëP¸»|S ;ë·…d z$\$ÔØN\ÈK—˜M•…¥ò —ˆ„ûk‡]÷§¤p°L$WiÄׇ…* C/þÝÁH•ÆIœx@Ä\ÄÖÐÉÂÍâÕºPF£åLq‘9¤\9P\äQ-9¸p !éµL@^íîí¹{«|ÿ8C´³Õÿ0qv‚¾ø§íi†°ñˆœR® M).ô˜VÏR!CãÊ» 7"ˆ„+ˆ„|&ù2G«]å9ÆåtªÅo6 ¶ßaúÍ~‡â7Ÿ×#Ux=Ñ FXèkga.\9CU¹³! Ýnq*ý#¨#檃â2Oj¨ã² A+ ªú (#‡ZÛƒŸráS<åéêP³‡Z¢’5*éFL•t)Vñ¬Æq8»A;‡S‚Þ8 ínÄ;úðN¸¼ïó:ý/j’?Ye.À+=ÜieÀo~ë{·x±Zì¿ðc.ü˜š~ŠøŸ _öõâ_ îd¸#,Ûáœr9S|ߨÆ"?Æ{e³\•áSÿÊê»·úFè7L?âú¹ˆâç^ývÑO¸ô)îî²N€/3u‡¡€# …žIÆ¿Eú}®½ëSìÝø×ô ñ¿„u§ g–yÿKWW†Æm€ˆ!æŠRû{) ]ôS.}Š üVè·Š~Ì51Å^Õ©ûã§×èaœ«ÛBË9`ÓÄ.qŠñ{Uƒø9Z•ãFC0èa§j:,Jçáðºº1-ž†50àÚ¿ÅþýE|§Jb®J(¾ðu­$á½$B¡`¿D«àJW¿Çn¢•S^o¨ŽD‚Å: ¤\ PÌáw5$Põ œ¡Q6“ ÁÖÈ'\cHºž¢„|{È'\òƒxÍ2%œ•?âôÚ•¾éÜP„0äºDÒ •ILA•^¿ÕFÎmõ9Þù˜Kžâü²‡Í$ H!æ¶ Ç¤¶á¼Î=w[8«œ£Å€và\y­vNÜò~šöš ²!Ę«ʆ ë„‚r9ÒícQàQ[„åÑÛ0ó@ÚÊãNÊÕM*D€3·78&õßÖ¼•x>E5x3¼Àó Ão¯%NäZb[õ”põDÉAMáçʹ‚½å|ØI^ØÑ™³pêqŠ^2†ÐãÚNRÿñ´Æ†r€m´‚}å g4쬶,ÀTµh´abTX¢"»…¸Œ^Ì ÅÚ•Xd(_ ¥r¥À1œÛº±.\#®Á$5+ß‘–xVÂË|ñnñSáqY‹Ð6ÜÎEMK€ë IË?<¼@ÔÑçFRG³— ¢…àÚ@Rs¨Sªž¨ §spo`¬´-*ø…¶ -9‘F“5^¬p= ©£¹¨¡ƒU;ã3uƒrQ½iÞ1×’z˜Ë/Í[x'\Þ#8û¼…÷€kíHÝÊ÷5xK{ïÜ-œêé–ZPzÌ…N˜A óÐ[<姸¶¹qÛ+fãaõFºpK€pÌLÉÔ{µî …€€‚†©¶XzØ“Ýñ.Ts‡6-ä í&Ù¤\ÙÐwÎ*mhä=ª#ÜÜSn‚ORÝÿm7ˆô˜µC W”´?n­A) ¸MéRSú€°!l±@¨Ç\ê«$ ÀS.pºß;Ðvñnçc;0ìÀÂA©½ añF®Àé­Þ\Égn“·u³<»“'©K]µP"˜+Š?|ÕB ˆR®(Õ¡¿ÔÀaña¤ñS•;À´ébñnãJ@g½sHä`â÷UÑãÉ^DO”-TÐ ´ev£¥)ÅÖ¸$“Äë…òåÕ0|òå„qMDD1ªÆöqš«B+Ø/­V…ùLy¯k[ôc.}Џ–£…öJ¡Ï}zÄ8.çUݰ´¡@]•¿›i aù˜÷¯¦¥ÉÊowÂÅM©`•¢¬¶'Ê´ lFèZ¡°ö17æÇ”˜ÿ¦NÊ`Ð*ØW!¿ÕÞÍÔ–â½¹ä×$YX–#‚DR®DRzﺲD ÃÄýr]Znª<õ„’.™úH…e+b@Sýs9çþ•ýBôD1Wôà𺴙†3 ñ·5åBM×C•¾]°‡Ü~µá3 Ažp‘' äY Îô3U8í—+|Ù"$]"­PGÊ é飋#œS.çÇåöÙ$X}€ ûÒÍ•ƒ§º7xíÊûOÓÌ`o ô™š ë¦Y'\ÖÉ#a-¬™ý|Õ kasYÇ%` ì7`Ó›±tô¨€_>á‚O#xqCy´ÉEÌU‡ ÃÇä;T‡)ÎgÆj¦Lã¯Ïé˜K:Þ€´³:SNÕLݺŠñëò{¯”½‘”¦§\ÀRZy4°û\§Fn‚üôðž/pºËõÛ;Ö²¦›Æœp1' `^ý›Å¿\/~¶(”¦sMXÜm€ò¡ÑA]c‘C¶Ã­ú^ é¦IÇ\Ò1½rV† •ýtÈ%{l oÊÅ›6Òœv®Š"×XJSÚñpÙ Úh¤Ñž/çuÊv~•]ÃhñÓ%}Þ‘LPf!á !‘<ì±ÀN¸Ö-Ù¤~67‹Ÿ«}þ{»ø_ ®„³¯÷¦®ô0‡¢"/Ñ›&sIÓ­Û¸À»-œº™šàLOré>Þ]®sct+8wo•/`ßwcU5 Y妪«äjz^ŽF¾„$†\C·Aò¾2 X6;,{VßówÙìæÃM¹péëýüéåê=ü8ª=œ¡¾{«odBaÄSîòM£ö½¥-T.Õ„Lõw £bö‚7íðÒ©êd¼¿œHo ª@¹PÛÓB(†š¡ƒ”«ºçÚ³wÆî.×çeQ,Çõœ-³ª¾ñ·Z†¶4¹›01wyáüqK Ç ã½®ìø:H¹:H[xÍ[¸F“k´Á>mª íàý)‡5 4á¥Çì 4ÁY8ò¨=Jîµ°}n$îK$þ»ÐAÌÕÁ&9øtU;Ê.œ;[à }¶õ‡=¥s…!’”+º]Û_æâ7èWÁô-z1l “¹†-¦¶óÒ{5‡z•k©˜o‹lÂ%˯¶¬ÎªïtáÌ2Ì¿t¥qeó¯¦q¸~n@÷s§¾ê)S¾ÓSôSee-o nÌ…»ÁíõFØ78ÉÕäí–È Ù”K6ݨ9üÊÍÕ ˜–AOTù#dË®&FÎ8)£4Œ9áÚ¬$j$#œÍmËÓ÷iﲓ„+ŠDÞ+y<¸‡\‡6ÜàF€‚}—/~žbu){Fåd¢íÖk-2ð”!“”+“ ŽÆ 4Æ}Èú¬Å‘b\Êõô¯Ž ¥Šp«îÐüøxº¤ðMƒM¸`Û.°q·;ŒºÝþÆ`Wx¨i$ó©GQÚïu†Þ¦ÔùÝ﹞:mÌæ#w:’ïásyÆÌp(¼žÜÂ+UgáOð»ýŒÏ×´3ò¸ ÷~·S¹¥ÎÆÜW¨ùÖàÑÑå uSý2u_¨ç=V!D=t‡Ý^Ôcèaùú¾¾}â‚5âbj/ó×OÏ_T¿ò/¼ÌzŸ ½O¾ÜÛ3ÙÛÛ«‡˜«‡˜¢‡ûê×w_X}À…> @¿Øk tÑÃ:=$\=$=Ôp#¥fNÿágú dÚã¤ú›4- !?ä’RÈ·Âô” =¥@¿è-€Þï0¡÷;èßìµ!Ûè].ô.ú q÷m€ÞãBïQ KLoôˆ =¢@¯ÓW£—•µz†>(½ä 퀲aÙ‹Vå8…‘ÇŒ\vj^}®*(Õ¾Q+}s¡Çèô[}À…>3ºbM¸XÁÚB¬C.VJÙí…àÛ®‡”«‡”¢‡-HÙzÌ­ÈÅ t9Šo»º\=t%Ö·k‹•RŽ»ÜkÃ2èz$k¹…Xû\¬}ÊZ–Îè¶ë!æêrCBˆ·€ø€K\êlmÄšp±&‚µ…X‡\¬Ãǵ? ñ”K<%ïö;q¯ÛëÁÉÞåÕsø3sxyqøþÇø›³ýÃËã÷¿žýß¿}{ù J%ô’þ{ŽŒ¼ûãÈJÀÚN<ðÿìœÅrÃ@ @ïý Á2\ËŒ—rk3'_F'ÛŽÇ0:ì%,ÏË“i KþÉvŠÖÿC㊡ñÄP¨bX\1,žU +†ÇáŠqňxb1G[zœf®o´knÝÏít€°§ù÷¸Ú,æB6,% ”ä,ÒOË€ßl—ÂPá6n­Ñ«w§Í·>Ô J¹ºŸ{éy'n7Wh´GW t‰RÚ×ɹÝP€ÒT½éΛڋL,G™‹}bã„ÚP)bFÚ97` 4n`ÎN—ˆëÕ$b 𪠿²WôÆ ÅRЀ( €Ä¡K…D Ih@PBŒßùJ´IÛ&;W¶‰Ù&­†84 h5dÛ<€”3„¡¡H@v2³“YüwnóªæL{źn»;ßS%‰DxV£á*uú¹z/·Ü±æ<Þž½Ýþ,îœý]ˆÆ½aæµPK«7'ì݇Ž$É®Þñ÷‘ › ïÙm™ã¤•fád®÷Þ¼½°ƒ„ïIL™¬Žšì C&ø'ù}IÖTöí¹Ó°2{ZkVêè¦a „FB™l¶^Íe&EKÑf= fÖcÖ£îȬgÎ1ëé_žõÔ”ÍzÌzÌz.H#¡‘P&›õ¨¹Ìz¤h)Ú¬ÄÌzÌzÔf=µ”tѬçü+·þå{æµ}í¥Ÿ}ÿó¿ÞÎ7/_? ʽ¤°QÐlWŒ‚rj=.äK¦Wc ü‘Ç÷RzXÄóšÿ¿q]aBß\i®5ŠšÙ|FF)†)«B ÄâÌÀ EP@$ ÌÃü ü/JUTÅ *r<30cÆ3CF”½÷'½÷z§Ic죄˜4ö“FϘ4““““†FX#lðŤÁ¤Ap“5ÂL Ƥ±303˜4P•Iæ™4PU1ƒIƒIƒICF”½w&™Z‹0iôzfÒè˜4f´IcO¥¯åÑ90âoxˆµh<Óîœ šJC$ÃñJFÔTj*AŒáá30ƒáU`žáUQõÕ™ÁðÀðÀðp¡ÚöÔn=ÙrÚö½¦wÏF¶œFʵ~¥úöö»ßþŸ?þé_'€Îq¢±¥Y¶”·+Ĺ-F|‰œØJ`Ä}ôˆx” ¢ W†nnn霌ÿ´r'Õ=«ŠBH!ó˜ÌWHFR´^U¯Š˜ä&ŒO@Þ»odŸÿ¼îUd÷Rž¯ÈŠ,E–"K‘¥Èêru¹º\U/E–"kRB‘¥È*„B0YЬ­WÕ«bfPd½wŠì *²{JsF, gK‚÷–ÿIœ"ÛGÈýÛ=Í­ä´Ž¾yDœ¯ˆ¸–÷×KÙ´ÇEÜ, Öé¿Õß'Ì0ççÀ  öp bÙ’`ÌÀ Jª¾ªkæa¾ò *ª¢*ª²ž_DUTm÷JÄ{/ñ–O$â­> ÿÛÏñ¡qØÅбÐ'°GÄs‰øˆx¦u$â#âL"V†k»'ÌXP"&ˈÚn±I"Æ Ì0ÌFÕ¥%b˜‡ù fofS¨ª#€@1#ß*€¶–f„ÚÏÐñ€ú  P(T‘©©T @ ³eDm·¶Ä ˜˜AýB@¨J…y(ª¢*f@1ƒº÷½Ü|¶5Ï\z{G=þØFúê³­Ÿ¾ûÝ‹žmÍyì%—uζ×u$Û#â¶ÎÙÖ#â¾–JQ†+à ·4*†[:'ã?­ÜCÕ½³­ !…ÌcfX«*EëUõª ·† bÍY ˆªOÕVê7Šè3åZÒ³Eôm'¢щèDt"ºÁ„Á„Á„¾À¤D£b–DD'¢+„B0DôÀ )ZŠÖ«ÑA ĈèÝlŠˆ^òl«¸÷“UÜ#ý*î¿ù½èUÜeöÅVq—ºÚ*î¼§ÅVqçVzXÄù’ˆSào\,7(ÐSé©,gó‘©[úr³<ÜòpÌÀ rªÒÿ`ÞòpTEÕWg…”Bjyx<3dDÑ{yïåV‹ÆÖS‹ØsPÎöŒGö|þ×Ä^K_kÏA+«í9¨¥¦Åö¤=.⾎Eãˆx[Ë¢A²5(0(0~×8¿›í(4Ÿ63(„B0˜a3ƒ­WH¯Ê™b63ØÌ Š6›²™áE÷®àPpl·Ú|FÝfÀ&–QÏ6±ô6±üþol>ñ¦™º§¹å}[çÔÆñ`è`è0$3$S‘©ÈÖ¬ÈB! bb Féy®D“_•™ÊlÜ:+Û÷-EÌÊÆÙ¬l`Vö³[¶›•™•i3´Ú E´ŠLEfVb bfe0oVfV¦23+Ëi–ˆ _3ŸÌÊf}`Vö]ô¬l¦Ñ׺ðµåÕ.|µñLËÌ#O6Fº—¥QQ Ø/é^–ÑŒH0˜1÷²030øUmey÷²PU1ƒ"ë^ÖÂÌÈ·  y›3Bígèx@ýžJ%€@™šJÔ0[FÔvk»AŒŠ˜Ð/„ªP˜'€¢*ªb3 ¥÷r§Z[Î3—ÚÞ@?¶úµèÛÛ§ï~ùÇÁ—úHH]{cåÄ#âzEĵԸ߸]"€¦=.â~EÄ9¥¸ˆ·%%[ŽÆAã`§µ2ŽÓëX:kW˜kB !˜Ç ̘¹¤h½ª^õ©­!ˆXs¿_âCàCxVêßLòÞ ŽíV›Omy{ºÍgcóaó9‰˜Í‡Í‡Í‡ºetjtjr¡“aóaóÑ|²ù(„B––˜Áæ#EKÑzUcó16 Hm6Åæ£kÖ5+8Ø|Z™)âœÉ~rÎdÏœ3y{ås&³­vÎdöåΙŒåΙLçLŒÙ „sfb™ädDÚ°.ÄVƒXwÎ30ƒXªŒÕ0¿毟½™M¡ªNŒ¿€¿3æ­hÏe @÷z&€öÐÿôYý“84Rœkù’­µÄE\.‘kào|‰Èœ·ñB{Žˆ7’­²X¬¤9¡Ü‚’-ÉVF4(0(1+$[ÌÀ ’-ª’laþU1ßH¶¨ª#Ù’l1ã½&2¢Œè½¼÷í^‹ÆÜZ„EcœY4öw,Gè&Œ(KÞæ–÷mKÃñXSn'¿iú”8Js95W(¤Aì€@ Äè0O4lV™©ÌÆ­Ó°m”yÿ4¬¥üåiXKõ–þKôÆÆ>â>ôcµý‡c.s˜õˆx¦u³gŸÿhT „fÝÝȈô‡ bÓç?˜Æý¨ú¢ã~˜‡ù™žyTEUÌ ÈbÆ"ÌÈ·  cÔ-Bígèx@ý¯¯|²nŒÕNÖ¹Üɺx²ŽªÈ$€* PQÛ­í1#€bf@£BU(Ì@QU1ƒŠй¥t§Z[Î3—úÞɺã­~íɺ··Oßý2úd]Ì -ç±—\Ö‘ˆë:_€·u¾="^èdÝñZ'ëH8ƒqœÖÊ8N¯g`©ù<ïGTf !…ÌcfœO„ˆ\R´^U¯ª5±¥ Öâ!¶DF”€øøP—€¾™÷®àPpÜ{öpo[‹°ùŒ›O+Ø|~ÅæÃæÃæÃæÃæCÝ2:5:5¹øÖ:66Í'›BH!d`i`‰l>R´­W16có‘€TÑfSl>ºf]³‚ƒÍ§¤ZfÄ9“ýäœIΜ3ùùg›Ï¯fó©{š[Éi›Ïq^ÇæsD\×±ù7çLŒÙ „sfb™ädDÚ°.ÄVƒXvÎ30ƒXªŒÕ0ÿª˜gCUTEUTåÀ@Õ«¨Ún•ˆsÞK€Dœë™D܈ñY"þ!N"Þ{„D|\÷¹dKÁØ#îWDÜG`ÄãQ»–ñ\gÄq%jk ”4'”#j(dD¢ö‚ƒ±NÔÆ Ì0~GU¢6Ì¿*æQUub$[’-fDè5×1CF”½÷€÷^oµh”1¶‹Æ8³hìX4~ýÿL#LŒ—ضñ\gïÀñ Ò—Ùã ™áASiˆ¤@8gÃñJFÔTj*Al5ˆM†ÌÀ †Tex€ùµ0ýìÍl Uub  ˜‘o@ë˜-@-ùD-õôW_øFJ%€@™šJ(Ô0[FÔv@AŒŠ˜A%€¢*æ  ¨Šª˜AÅ hÛÚ­wœkËyæRç;èñÇÖÚW  ooŸ¾ûÕÿô¯?XöŽóùÑœxD\×¹ã|DÜÖ¹ã|DÜ×YÒ}D¼-%Ù’p4ã8­•qœ^ÏÀRóyÞ¨ÌB !˜Ç Ì8Ÿ¹¤h½ª^UkbKA¬ÅCl‰Œ(ñ!ð!$ .}3ï]Á¡àØnµùôžËÓm>•͇Íç$b666ê–ѩѩɅN†Í‡ÍGóÉæ£RXXb›-EëUAŒÍÄØ|$ U´Ù›®Y׬à`óÙêØ"Ιô³s&ã›Ïz€‘'ô4E½Ä²Qêèao—˜Lö÷ÏK"n%î7Þ—1ò·äÄŠÑŸ¢EÑrN9ò0㞌H¯ÖyƒØjÛ@ Ä@Œ¢Aû\Ý¡î˜|r¨Šª¨Šªl*¨zU÷ª‚Ø“¢õ2bK·:‹Fi)ÂY´Ÿ8‹jþÊB?ûþçó›ßþô¯âÍçâ™—,·Ùr`Ä}•GGÄよCÝhsrñL(çÌ €@eD]®.ÄVƒØ%VTÌÀ Ì ï¡*ÓL\@0ýìÍl Uub,!,!˜1o@gN-@­õLí ¿%€@  PE¦¦R@5Ì–µÝÚn#€bf`U  0OEUTÅŒ/DÅ èÜR„:ÎÐýôwÑhq»ÇXMNóŠˆk©qrbºDM{\Ä™ªÈÔT*Ι±šJ•µÝÚn±IÅ Ì €¢*æ×Âüõ³7³)TÕ‰@  ˜‘ï@kµ -Ÿ ­> €þ7(”JUdj*PÃlQÛ­í1(f`f@Q• óPTEUÌøB@PÌ €–òhëgèx@ýïVàZk.T‘©©T ¼Ï ¨a¶Œ¨í&€‚˜¸˜P(ª@aÞ \TEUÌ €b†¸µÖÒ"ÐýDíùô@  P¨"SS©@ €fˈÚnm7ˆ@130ƒŠªP˜'€¢*ªbÆ"€b´å9ï@k+£•¾—wÐã#ÍwÐ#ô‰3Ï¡fµ2z{YOÍ:b/sÄ?Œóò¾‡Ñ{ßžþ0vÃÃøhc+3À2Óë™e¦?`™ù!Î2oçØûjvŽ}[ØÎAÞ5T0T0T0÷ÕÃ_i‹ Ä@ŒÞ óôfb†ÊLe¶Ý;+ÛóÓ‡È9}°!²!²!òÖJzúÃȆ‡ñáÆ^žþ0Їáa|°‡1ÊlOÕÃð0>Úèýù=Fó0<Œö0fnóé£{ÆG{¥¤×8spí8¸þg´ƒ«æ‡cµBc^q-5n…PºÄ%—ö¸ˆ³¥Gäs²Ùêœ E E2"W,» ˆ­±iéf`*ª2¡ÂüZ˜¿~öf6…ª:1K,=ÂŒ|¯ÚSÄ ‹-Ÿ [}@ý_ŸÐ_NÝÓÜJNë GÄyôˆ¸®#€7¨"SS©@8gÆj(TFÔvk»A Ä230ƒŠªP˜UÌW(ª¢*ª¢*‰U/¢j»U"Þë(q?“ˆÇñ§ð+q‚kÞ·u®…åKr†"Z­D4çP‘]i‹ Ä@Ì$æé+FS*3•Ù¸sVÖrN)bV¶ŸÌÊF~`Vöcô¬lO%l;Ûܯ˜•ñž®ˆ¸—ÀˆËrWW«Ï)4*  3ŒnŒndDúƒÁÄz±=ùœ30øUûaþU1_žŠyTEUÌ È®Ä Ì¨÷  ûÖÐQÏÐþ€ú¢ЙF_ë Ö–#ž«›)PuPK‘IU 8¨E•µÝÚn1µ03 Á¡*æÔBUTÅ (f8¨ÕÊ,3Bgèþ€ú?¨ €¶²šZKM‹  i'€*2   (TFÔvk»A Ä ˜P(æažŠª‘ª˜AÅ hÝöˆsQ3Ÿ ³> €þ¿ð¸}5tl)­%€ö‘@k \Œœ¯ˆ8§À߸l•ÅÚ`% ÉÖø]F4(0(1’-É30ƒd‹ª$[˜'Ù¢*ªbÉ–dûê’m3dD1þ½{ïåV‹Fë}‹°hô3‹ÆxÀ¢ñ/úúžæVrZçõ#â¼Î7êGÄuoÔˆæÒIp †‡Å+QS©©1Ë ˜ ¨Êðó¯ŠùzæQUQUYBXBPµÝ*÷VÒýqO'_ñ÷Tˆÿä _ñ[cn¹5æ$be¸¶Û7ñ$bã~‘DL"1ßÄcfff£*‰æ}ª¨ŠP̰Æ|¦\"Ð~&€>òìŸF  3¾–ºå¥ÐC²]LªÈ$€* PQÛ­í1#€bf@  P˜‡y(ª~Hªb3 slè~"€æüžz„ qFŠYµ_"¿Õ8Á°nWDœ÷÷ÏK"n%î7ÞW»ÔÜQVá«ÑU´œPnAQ–(+#€ˆm b F% ˆJL%Vw¨;®2ƒ¡*ª¢*ªÒÑé診Pu ˆ˜­Ï[ºÓYÔsÛf€³(×3gQ`µÂŸ¿ònùÙ–[TЗÛ-?–Û-?¹x & „f,(€@eD]®.Ä@¬[­€˜AÞ[‹ªL30ó×ÏÞ̦PU'ÆÂ‚óV´ÔÜ"Ðq&€î ñYýƒ×Ü-?Ûj»åg_N²»å  ŠL¨J•µÝÚn1(f`4: T%€Â<UQ3 ˜A­©G×.ùD-õô/£¿Í½¤´ÖuíœZOk×[Jk×î¥Ä‰¶yµÝó³mÆaEƒàð2¢QQˆ9N´Å Ì Ú¢*ÑæGUTÅ ¢í«‹¶‚‡0CF”ãß»÷^n5i´½Üú•zm9Ï\jǤqü±Õ¯ýJýííÓw¿üçŸþõã«­éni–-åmo¾ˆÇ:kºˆû:kºˆç:#â}‹ÉÖ À ÀøÝøÝøÝl‡@¡ù<éG˜éB !˜Ç ̸h"DÔ–¢õªzUÌÀŒþfÄ' ï¨ÿ¼¦çåó7ƒS8ÝoõŒl[Ìb~¶Øc<°Øã¯^ô´ûžæVrZÇ3rDœ×ñŒ×u<#GÄÍ’ 3‚á„t=Ž+‘ШË]b –-ÉÀ Ì |¢*—.Ì¿*æ+?ª¢*ª¢ªOM.¢*ª¶[%âÑó!ï'qÍïHÄGè"pèéõv¤ZK\ÄåIµþÆíŠˆó–ã"î«ÝvhÙZk` h9¡Ùš!#’­„ˆ²5f`†;ª’­aþU1ßÈÖ¨ª#Êe1#@¯qÛAFtÛa­÷¾Ýj˜¥nO¿í0ÝvpÛÁm·Üv0~7(0~ ÈøÝøÝl‡@¡ùtÛA!¤‚yÌÀ ·¤h)Z¯ê¶f¸íà½+ZÝvЂiÁàÔm‡Yg XÜQëÙâŽþÀm‡¿‰¾í0SÜʉyÉʉ-FÜ×q¹_âr)³§°ˆ§%f6  3èzW2"¡Q—» Ä@¬[’˜AùDU.]˜UÌó¡ªNÌ’ R`ÆêÇèžSˆ:ÎÐýôo_Yc5tÌåдœš  ŠLM¥á„  PQÛ­í1›PÌÀ èZT%€Â<Ì_?{3›BU”ŠùNtK9Í´å´Õп#€@  PE¦¦R@5Ì–µÝÚn#€bf`U  0OEUTÅŒ/DÅ è>JÄÙäíälrKœMþÕï½æÙäœÇ^rYGN<"®ëœM>"nëœM>"îëœM>"ÞÖ’lI8ƒqœÖÊ8N¯g`©ù|°q6Y!¤‚yÌÀŒJä’¢õªzU­áª±æÐ¬ćÀ‡ð¤ô ’÷Þ ŽíV›Ožu{ºÍ'³ù°ù°ù°ù°ù°ùš\èdØ|Ø|4Ÿl>l> !6KÌ`óùHQFÔbW fpÕH@ŠV£ ®Mª&UÁÁUSFJ×CúÙõñÀõ¿¾’S <q‰åcl).âK,}F<.1ÕÒÃ"žëØjŽˆ«ƒ'´5šæ„r еlt2"­Dcb Ö<Á Ì ¯¯EUÖk˜‡ùë§…fS¨ªc‰`‰ÀŒù$fȈ2bü{÷Þë­Ú·áÑØO<=?àÑø‡hF+£¯eѨµôµ,¥Ž¾–E#o™EƒECüH@Æ^J r›Œ¨ Öƒ‹f`f°h *‹̳h *ªb‹‹‹†Œ(#zï,­Ì‹F¯gþ€EãY4X4X4X4´ÁÚ`c¯õJ r›Œ¨ Öƒ‹f`f°h *‹̳h *ªb‹‹‹†Œ(#zï,­Ì‹Æ8³hìX4þ‰EƒEƒEƒEC¬ 6öZ®¤aÑ ·ÉˆÚ`m0ˆ±h`f`‹ª²hÀ<‹ª¢*f°h°h°hȈ2¢÷΢Ñs»Õ¢Q[­ôý½-ÇGÞÞ±h¡G˜0òL=@½neô2ö²žz}Ä^æˆ'?ä½cìÛÓÆøhÃÃð0æaêÛò‰©o«˜úþ9ÚÔ·÷83Ô¸Äp6¶Àˆ/1œõh8KË'ór¦¾ÂÔgpJ(ÑŸPŽ©ACF4858]b 6™ú03˜úP•©æ_U°ML}¨ªcêcêÃŒ½†©OF\ÊÔç½ßkÑØr¾wiò.}0õšwiÛ¶ôô‡±´‡áax£–S_?3õ=ÙíZf_̶WêèkÙöò¾šm/7¶=¶=£QRˆ6—mmOF45±‡bÛà ÌÀ ¶=TeÛƒy¶=TEUÌ`ÛcÛcÛ“eDïmo¤òtwRIÜIL½æN½´§?Œüᆇáaܽ¤2ç™KËï<Œã­}íÝ··Oßýúó.¾vñ…î‰k9½är…}«•ÑÃ"®WD\KûÛ%ÆÉ´ÇEÜ×1õoKd&£e£e‚-Á–`K iWžô#ì× !…ÌcfœO„Ø ¤h½ª^Uk¸*Ä@¬…@lŒ(qªrªÆ' .yïßLÁ¡àØîµùÌù|ÿ[ù`þ7þ7þ·Yç|úèíaxFÛÒ³¡=1†2†2†2†2†2†ÛˆmfÝf_Œ¡Œ¡Æ•'1†*„B$.f0†JÑR´^ÄCAŒ1TRE›M1†êšuÍ ÆÐ9ÚŒ8ÛºŸœmù+m>?ûþçó¯Ÿm>?¼šÍ§îin%§ul>GÄy›Ïq]ÇæsDÜœH5fS (N˜± Ë$'#t¹ bÙ‰TÌÀ b5ª2VÃükbž UQUQ•ã:ª¢j»U"Þ·\"V¤´³)ÍŠ”¥÷Y‘2òlí飴‡áax{ÞLE3Ÿ˜ŠfüR­§l*[›ÛB¶¡#â…lCGÄ Ù†ŽˆÙ†ŒfŒb5'Ì`ZQ– «bA ÄØ†03œ¨Ê6ó/‹y¶!TEUTEU¶¡«¨ŠªíV¸”ô|wÄÆñÁô>îˆ2Ò|úÃîaxÆL¶¡~fì"*/º‹hîu”1Ö1ÏeLEGÄ3­c*:"ÎLE7µZÊf0-(ˈFÙµ b“©30ƒü¹U™Š`毟½™M¡ªNŒe†e3ò­hMÛó“3àƒ©Yœµç¯ Ú?ÚÃð0<ŒíîT9Ï\zzçal[ÿJËÌÛÛ§ï~ûÇ?ýëV¶ÌœÜj+ëXfŽˆë:–™#â¶Že戸_qN).âmI“Ñߨɨ‰€cGÀ1$q¹]Ø1B !˜Ç ̈˜±EHÑzU½ê3[C±±2¢ĹƹŸ€ºä½3‡‚c»×æ³×§ûßjú`þ7þ7þ·Öêöô‡‘?ÚÃð0<ŒžfÄ.µýd—Úÿ0ž¶-m¶Õ¶¥Í¾Ü¶´±Ü¶´i[éEÓ¨i¶y˜¿~öf6…ª:1ž3ž3̘·Jœ}Û"ÎEíõLâ윋j¿ Þ}Sf“ºê%rb©qhÝ®ˆ8ïq"s—DÜJÜo¼/³û戸%’­²X¬¤9¡Ü‚’-ÉVF4(0(1ÛH¶˜$[T%ÙÂü«b~’lQU'F²%ÙbÆzM3dD1î½{ï-ÝjÑ¥µˆõ ýl=C±žáƒ©×Ö3Œ¹—§?Œúц‡áaìÛó‰Ñ>ØÃð0<Œ9úöô‡Ñ?ÚÃð0<ŒYæÓÆöÁ†‡áaì[IOãÃ= ÃÃøÍ÷üXÃÃð0fjóùÍ÷þц‡áaô˜æ{;yí£í_÷0<Œ}Ÿóé#¬‡áax{J[zúÃøpÊ·‡áaÌ^žþ0>œòíax{iOMùö0<Œ<òó›ï§|{ÆÝÍwÎ3—öÞ¸öøcëó+ ½½}úî7Ÿ ý°-ôÔq²¬sꈸ®sꈸ­sꈸ¯³íˆx[rš…H>ÃõÑ™å>˳Ü—ÓÖ8I_¬ªT)„`30#b"de”­WÕ«>³51k![ #J@¶úÙꟀºä½3‡‚c»ÕæSÒx¾ÿí£-¸àã+}¦§?Œ·àÂÃð0¶^žn Œ¡Œ¡Œ¡Œ¡Œ¡Œ¡Ä6b›Y·Ùc(c¨qåY@Œ¡ !…‰‹Ä…Œ¡R´­W1ÆPc •€TÑfSŒ¡ºf]³‚ƒ1to·úßr}n}ïÙ|òñÇý+m>?ûþçÓ?Û|~x5›OÝÓÜJNëØ|Žˆó:6Ÿ#⺎Í爸˜fŒÙŒÙ 'ÌXLŠe’“ º\±1ÌÀ b5­U©ç0y0TEUTEUŒë¨ŠªíV‰¸ÎÔî—ˆ·”¿,o©> oŸ%â?ˆ“ˆƒ×¹×QÚ5‚k-q—K×ø·+"Î[Ž‹x¡MGÄQ[ã`P ¤9§Q›@!#µ @l5ˆ¢6f`†ñ;ªµaþU1߈ڨª#Ù’l1ã½&€2¢ŒøÞ½÷{¿âo½„X4ú™EãÉWlÊìaâõl«Yæ5=Î 0Ç%·÷ÏÕL³2aht ¶-ç”c ¨ÉˆÝÕ]±Î„˜Á„ªL0ÿª˜L¨ªcÂ`ÂÀŒ½f-†ŒÈ„á½×[M½ÎaÂØOL9?ׄ‘{˜x]—\‹OÌÒB) &•T“º^£[ey½y}Ý(Û­ÎjËyæÒÊ;eùñÇÖóW®¯{{ûôݯÿ8`}]ü…³ãœ]YçÂÙq]çÂÙq[çÂÙñBë뎈×\_§ùÔ|j>5ŸšOͧæSóé¼vñ‹BH!ó˜!^S)Z¯ªW}jkb Ö ¶bF”€|às€€Ô% oæ½+8÷®@œ¹´§Û| ››››››Ñ©Ñ©É…N†Í‡ÍGóÉæÃæ£bó1°Ä 6Ÿ•eD­!fpÕ`W¤h5 âªÑ¤jR\5{ÈNË\ÏvZö¯tÕüìûŸÿÍþÛŸþõCœ«&Æ£R÷4·’Ó%•Zâ"ÎëJ="¾Ä”·q[ÇUsDÜ%•(i”4産ÕrÑɈÄãÕúr±ìì(f`yU9¯aþ51oª¢*ª¢*ÏÈuTEÕÆy bRô7óÞû­&–}öabg&–ýË¿6±ì©ô ³­e^bW90â~EĽF<.±ÝÌžÂ"ž,!Únc6Â93XBÈ{2¢nµÄ@¬³„`f¯Pu-KÌÃüõ³7³)TÕ‰1<0<`ƼQÝSy @K?@ËxO=B8#ŬÚ×ùêýˆx»"â¼§¸ßx^q‹eë¾ÌwúGÄ-e¾]EË9åVe‰²2¢Q€QˆØb bTâ €¨ÄTbu‡ºcR‰QUQUéèQUw‹@LŠÖgȈçþE΢Üjˆ³h?qÕüõ«þö÷_yµÂÈ«­VeµÕ £­¶Za¸¶a0¡@P œ3ƒJ•u¹Ëu¹ bÅjÌÀ òª®ešy˜¿~öf6…ª:1––Ìè÷  }Ÿw  µå0ó×O ͦPU'ÆÄÂÄ‚ùIÌeÄø÷î½—[-³í%À¢Ñë™E£¿gÑ8B0aô±š £•Ñ×2aÔR3a”´ÇEœY´ÆDJ–ò”Œ¨mÔ6‚KKf`Kª²4ÀßCÿ!NDZާ¹•œÖ‘¤ˆó:«¸ˆë:«¸ˆ›UÜÚnŠåœ¤¦‘V´Z— b –­âÆ Ì ^¡*£%Ì¿&æYBPUQU)²×QUÛ½ñÞf€D¼å‰x«Ï½Ç\k‰’Tó¾]"PÖñXX $X(“•ÉŠ@“ 5W¤Aì€@ ÄÌz`ž‚bø¤2S™[§aµ×òôiX7 3 ÓH„¤‘ÐH(“Õ\j.Ó013 ƒyÓ0Ó0•™iØ6¶ˆiØ8›†íßÄ4lîu”½¯3 ;"ÞLÃ4‰Õ e²šKÍi»0 1Ó0˜7 3 S™©Ì¶[§a½¥ˆeºãÌ6êËtñù"í_Ä_¤˜<Í}™‹´GÄûBëˆË:iˆ«eº‚áœF7F72"ýÁ`ÄVër“eº˜Æý¨jÜó¯Šùò|Ì£*ªbE3aF½UÝÊ6#Ð~&€ŽÐ_þsü5Ñ0©kŒÕäÄ1×¹&zik¢GÄ™ªÈÔT*Ι±šJ•µÝÚn±IÅ Ì €¢*æ×Âüõ³7³)TÕ‰@  ˜‘o@G¹0ötæÐ_­/€žF]è{Ê#⼎zD\@ÏÎå@™šJÇ´Óª(TFÔvk»A Ä230ƒŠªP˜UÌ׋0ª¨Šª¨J"&£j»W"Þ÷ˆ“YsœIÄûño¢%â=ÅÔší ùräÀˆû÷ñXmIðœ$be¸¶[pÎ ±q¿ŒH"^­í1ë$bÌÀ ÃlT%ÃüZ˜¿~öf6…ª:1(3æ­èœ[ @÷³+©û»WRÐ$ÎCÌZHâ,u,&qæ=¥µ$ÎÜEÙyIÄ)ð7v¹Uá«ÑU´e ØeD££#Êe13ˆ²¨J”…y¢,ª¢*fe‰²//ʆ0CF”ãß»÷~ï¥æ½ÏF?3al>šO66…›%f°ù|¤Œ(#j 1ƒ«3¸j$ E«QW&U“ªà઩9æ¾ÑþåûF#å÷\5Gè¾™Ücüeks,xù…ßÀ˜ÝPéÿ³wiÓìJµÇûwlJêawïiá[øQ1†Mü{ô|RµUõkSÇÄ6ÿˆµ–¤O•Ìxò–Lc¹±üžãžËK(åù±¼…<Ëëw<;ú[ÿúìèœvŸ\`ZÎ »ß×sÂîwÅ휰û]q÷ˆ§EÅ€`@˜3C ‘t£#ž&Ý&@ ĪG<13Èý¨z–Üó0¿^{£M¡ªMLìWì3ú³è}‡Úfèøô·ÿÕý}h­že€^ñ4ô¶lO2@{e€2 (TG´v[»A Ä ˜ P(æažŠª?Fªb3 õJ; Ð'hÌßa€þÎ; ­f€¶~œŽ3@#Ôi©4 Ì™qšÊÕ­ÝÖn±ÎÅ Ì`€¢*æÏÂüzí6…ª61(3â£èuåk‡Zghûôw  P(Ôi©4 0@‰Ù:¢µÛÚ b PÌÀ Ì`€¢*æ ¨Šª˜ñ b€b´ÕðèÓü¹ÄØc*ý ôþ±\é Ð~øý_üõŸ{Ë7@KŒm¤˜Î±ïŠó9o€Þ—sÞ½+®+*Ž!ì«ø:˲eáX,ä8«9ήG°´|N÷“™AÈ ó˜sEˆÉ¥EÛUíªVC; be Ä舂ÂþT5 ß»ãcŽëјOÏWÙqÏÁ˜ÜsâwÜsð{»ï9Øt„~Åqsÿ®¸ ttɈd&2Ù™ÙVHƒØÂ‚@ Ä8=0/•Hù5™™ÌÚ“ZY£î¸4å™V6¾ÐÊîÒßH ë#·Ú’#d9í«¸/ÑïrÛVq +*ŽWÜWq<çÐÛ]qrO©åÉÐbh™SŽœDNÒy"Ä; bî)Å Ì`A ê»Z0óÑ=¥¨Šª¨Šª|tT]EÕø$UAŒœ¨Ek@sƒúÉÜÌÕzyn¦ÊÍÈÍÈÍÈÍÐ&Œu´H¹¹¨ŽhÑ•›1¹ÌÀ ‡Uåf`^nUQUQUnfsA¨*7bZ´$73rzyn¦ÉÍÈÍÈÍÈÍÐ&Œu´H¹¹¨ŽhÑ•›1¹ÌÀ ‡Uåf`^nUQUQUnfoA¨*7bZ´$7ÓjÙñ¦yŽ“ÜLÎßñ¦ùí~Ó<õº+Z;,£’Ú’TMÛ©¯IÕ”T·U|Zª&u©Ê¥ÒH3¡œT͉©Žh ¶ƒˆIÕ`fðÿPUªæÏÆüµ6…ª61™™ÌX”ÑuDßûßû³QÇõdD#—{Le|Ѹ,×·F4~øá÷ñ×ý_þÙŸî‹hÔ¶ÃÚ.¡§+Äk…_R«Û*^sUKÊa[ÅuI &Œ}÷s"wÅ㬈Ë–P@( ¿[Èï´…ås²˜Ì B!˜Ç ÌX§1µµh»ª]36´èú£ò‹ÏëfDŸW÷y}ÌßÍèeãOF4J(WxyD£ˆhˆhˆhˆhˆhˆh½È^ör›Œˆ†ˆ†åSDCDà ôÖ ˜Ç   -Ú®jWÅ  Ÿ—QDÃÆcã±ñˆhÄœ¶èœþ]qf[[ H†–9åØÖ,‘mM ±Ó VÙÖ˜vTe[Ãü»bÞ­¨jcÊ2e1c½_3e†Ž¨#úÞøÞó£!ŒjÚÂh³ÆøŽsú¶áœ¾ˆ†ˆ†ˆ†ˆÆbYƒÉ^F v›Žh ¶ƒ˜ˆf`fˆh ªˆÌ‹h *ªb†ˆ†ˆ†ˆ†Ž¨#úÞE4ZÛѨqѨù;"¾;¢1ê>k»-‰´kcÅKâµmŒ„ãb0ñ¸ˆFѰ“½Œ4sʉh°ÛtDk°5ÄNƒXÑÀ ÌÑ@Õ³"0óëÕBÚªÚÄD4D40#ŠhèˆÑð½§G#¥õðdD#—{L¥|Ѹ,µ~cDã‡~ÿí_ÿÙì‹h쉔ÛH1­0ãKju[ÅyIà!å°­â²¢âƾŠë9»â묈Ë–P@( ¿[Èï´…ås¾˜Ì B!˜Ç ̘*BLm-Ú®jWµ ± Ì(?*S»øÞ?ih%i@Uò½ãûÇ,©×£©š«†þòTÍ%U#U#U#U#U#UC©¤TR.l2R5R5–O©šÓdf2ÁûmÉÌ÷U<–†5m¬8fqŽÌâ4FZfœgq²8uD‹µÅÄ@l'f`‹UYœ0æ×ko´)Tµ‰±8Yœ˜‘µ8ã5v\åÛâägËNq:Åé'‹Óim4|3XœäjÑbÍâ1§813Xœ,NTeq¼Sœ¨Šª˜ÁâÄ §8S­×‹³Î,ÎöâSœ5„³,Îv…p–ÅY[gYœ9o<ÛWTÃÆ?lj)kðµèZ˜²v‘@ 1¦,S30ƒ)‹ªLY˜gÊ¢*ªbS–)û†¦ì~fèˆ:âþïÝ÷ž aä’ÂŽÆìµàþŠ×‚÷FèWŠáœSÛwÅqI¤!å°­â¼¢âÆ¾Š‹Hƒµ‘Ld˜3C¤=¥#Z­ vÄ¢Hf`†HªŠ4Àü»b>‹4 *ª¢*ª } ê"ª–GMà’zÙ`÷<3ëkMàa—xÚ)ñ²æuâÜöU\VT¯¸¯âzÚIür±­­¤CËœrlk„ŽÈ¶&€ØiKlkÌÀ ;ª²­aþ]1_ØÖ¨jcÊ2e1c‡_ã$¾Žè$þQßûõh£†°%„Ñf!Œ±-„ñú·½Ëi‘†¾& 06^Õß–T\6>‡Ð{! aXt [†–9å„0j:¢E×¢ b§A¬ a`fa ªÌ¿+曪ÚÄ„0„00c‡_#„¡# aõ½çgC±ô !ŒQ'!ŒÑ>'„‘ëi!Œ|ÂÈý´FÇÝ„„0,º„-CËœrB 5Ñ¢kÑ±Ó v a`fa ªÌŸ…ùõj!m UmbBB˜1^Ä QG4´j@%<› é×£©\bì1•ë‹TÈýc©/¾š£¶nz =]!.ÉX”Ôê¶ŠÛŠŠsÊa[Åk’7aì«ø «9îŠÇ©.1m‚6Añ§øSüÉIÖKëåd‘ß3„`30c‘"ÄG×¢íªvUÌÀŒº4 ß»Ë Ö|^Ýçåïf8ýœŽGS!ý åÕ©+H…H…H…H…H…0C(m”6›·]E*D*Äz)b2‘$I’˜!¢#Z ­†Z´-„qø÷nF°ñØxàTc”k˃-ã'?ØÒCü„F¡_)†sBwÅñœÆ]q>'„qW\<B§6æÌ`”‰0鈜;{,ˆ±èùÌÀ Þ&ªŠ½Âü»b>»¶UQUQÕÙ T]DÕò¤ |…œÓó&pyf×ךÀ#¤–j¹¥^V”-n¬¸®¨¸¦·%&p¯a[Å lжXæÌ`ôuD&°ÅÄNƒXecf«Q• óga~½öF›BU›‹“ʼnýQ‹3Žxí°8ÛÌâ|ñô1”}nV[⿵+쫸/ñ8Û¾Š{XQqÎ]ÙxÎmãwʼn+kòµéšZ&”;ЕåÊꈴZˆXçÊbfpeQ•+ óga~½ZH›BU›W–+‹q 3tDÑ÷~À÷žMa¤Þû†FŒ“FÌŸsмµÓš·~ÜAópÜAó(Ò`m$DØS:¢µÑÚb" " ˜" ¨*Òó" ¨Šª˜!Ò Òð…gnõÑ»´s‰±ÇTëçýciéµg;ž'.1¶‘bZa¿]qcÅùœ' ïŠË9ç]q=Ëâdy´ Úä+«ùÊnD೬M§{“™AÈ ó˜s}…)¤EÛUíªVC; be?ÄŽèˆßžo¿¡ÕGmòrÅëå6yd“³ÉÙälr69éô@z0ù³É­"Ô"69›Ü d‚yÌ`“³É·¤EÛUÙä blr ˆMN›b“×ÒÃŽ ³ëìÂì¶Á&ý‹Ú#ô+ÅpŽé|WWTœSÛ*ÎKlò0öU\\˜m±¶ƒØAæÌ`¾ˆÅèˆÜ {,ˆ±èÂlÌÀ öªŠRÂü»b^èUQUQ•犪«¨Z5¯\Ê8å‰ œê'œ•¾oˆ/眕¾+®çØÖwÅí¸W“;Ø m±6Ì™Á&èëˆL`‹5ˆ±ÊÆ Ì W£*æÏÂüzí6…ª61'‹3ú£gK¡ï°8ÛÌâ,Îo«˜ÅÉâdq#­,N'¹ZG´X³8AŒÅ‰˜Áâdq¢*‹æYœ¨Šª˜ÁâÄ çH;,Î'gλ,Î×Ûom‰ý–sÚWq_bægXQq¼â¾Šã’ŠCØgÊ&¦¬Á×¢kh™Pî@S–)«#’H b)‹˜Á”EU¦,ÌŸ…ùõj!m UmbLY¦,fÄ5ÌÐuDßûß{z4„ÑG¾v„0ê,„Ñ„0„0„0„0,º‡/º„-C‹CMG´èZtAL303„0PUæ…0PU1CCCCGÔ}ïB£‡ðd#—{Lõú"„qÿXÚ‹o¨m‡y]bl#ÅtÎÕùwÅyIl$å°­â²$6ƾŠë9!Œ»âë¬S–@ °[ ìÔ„õrº˜Ì B!˜Ç ̘+Blk-Ú®jWµ‚ØQ+û!vDGÔ€$‹$‹64 ª}Ì÷nà0p\OyZ¸®òò Oäääääá_G‰£´ »Š õRÇ d"I’$1CG‹Ö¢íª &Èb‚<)š6%Èck¶58><Èkê;žE“g‘JüŒ OºJ¿®s‚‘z=ì™–”[=ë•–8N{¥%–ï9(ã•¶µÕ€`hñJ BGd[“@Ì+-lkÌÀ ;ª²­aÞ+-¨Šª˜Á”eÊz¥EGÔ}ï^iyŒôd#—{L9}¸,¹|ÂIüc)¦sNâßçsNâß—sNâß×sBwÅ×Y! ¦,)€@`·Ø©7,ëå|1™„ B0˜1W„ØÖZ´]Õ®zÒjb V¶@쀎¨IIío@õcïÝÀaภò”¾åÙÑf·©Œ×yF ‡Ý¦Ò®κM¥¶ÓnSÙôì°ÛTH¤?C‹ÛT÷øÕ:¢ÍÛæ bnSÁ Ì` ó¯P•£ónSAUTÅ ™Ìp›ŠŽ¨#¾Ï÷î6•Û†Æñ'‡0FÈBBBB]‹.aKCƒ¡¦#Zt…0@L30CCU…0`^UQ3„00CCGÔOþÞ…0J±]}G£ÎBíž´É#ô+ÅpΓ6wÅñœ'mîŠó9OÚÜ‘k#™È0g†H{JG´6ž¶6‚ˆE‘ÌÀ ‘†÷¤ªHÌüçŽPUQU…>ÖQUË£&pºrÚa‰ ãkMàÚ¾3×e…AyÅ×slë»â¶Äî5l«¸3 Úk#ÀœL`‚¾ŽÈ>m±1«L`ÌÀ rõYTeÃ<̯×ÞhS¨jcq²81£?jqæ2v\6ÛÌâÜöâûëͬ¼Ä0LyŸa˜¯Ç¶Šû’ŠKªÛ*§]6^SÖàkÑ5´Ì)wš)Ë”ÕI¤±‹)‹˜Á”}Wª2eaæ;SUmbLY¦,fìðk\6®#ºlü¤ï½„GC%ÅGC¹ÄØcª_3¿,=|Â9ózºB¼Î9g~WÜÎ9g~W\Ï9g~W|À9s§ÅÚbM®&W“«i!}ËÚdº>3„`30c•¾ÂÖ¢íªvUÌÀŒº4 ß;xÍçõìÁ÷kÔôjϵ ž+Ï•çÊså¹Úcí±gî±æZž+Ï•Âs幄 B0˜ÁsÕ¢íªvUž+fð\}ï†VžkëqÇeã)N.Oùµžkm;.i¾ŸÇç8˜wÅqEÅ9å°­â¼Äs c_ÅÅÕݶ4¶ {Î J¾Œ…ŽÈZ8mK1‹®îÆ Ìàu¼+Uåò`泪¢*ª¢ªpù"ª¢jyÔîW;Là11s|­ \Ò¾÷›ËK5§}§ÓÞÈ.eEÅñŠû*®Ç½8}±­­¤CË„rlk„ŽÈ¶>P 1KlkÌÀ û»R•m ó0_ØÖ¨jcÊ2e1c‡_ãÅé£:¢ƒï¾÷ëÑÆ(aG#çY£~ÌIü8®ÃNâÇÑŽµÛÙo–>#އ.gæZiÛPˆ?æùÄf“™É¬=©†Å®²C k35ìÅoŽºï(G[ò²^»6VÜWT\Û¾Š{8íØW§IêÉ‘$Ë“¡ÅÐ2¡9‰œ¤#òDK@ ĺ#I˜,ˆ³¨Ê‚€y˜_¯Ò¦PÕ&æH’#I˜Iú˜ŽèH’ï==ˆ©¥ !Œ2{´|Äã %¦«ôë ÇAïŠzô®ø ÇAïŠ=jm$æÌi`OéˆÖÆãÖF1ƒbfˆ4¼-UE`æ=Šª¨Šª¨*ô±Šª¨Z5KK}‡ \g&p;ÛÞçs¦­`/ÈÖn7çÉ.&°AÛb-æ\;A_Gd[¬A̹vÌÀ Ì W£*ækGUT=™,N'fÄG-ΖÖs®cbqÖÈâü¦ŠYœ,N§1ÒÚÈâdq’«uD‹5‹ÄXœ˜,N'ª²8ažÅ‰ª¨Š,NÌ`qöØw¼§\óÌâ¬ÞSöž²÷”½§lð5øZt™²LY»ŽH `Ê‚S30ƒ)Ë”EU¦,Ì3eQU1ƒ)‹ÞSÖuÄÿwï)PúŽF›…0†sæÎ™;g.Ò`m$DØS:¢µÑÚbßTHf`†HƒHªŠ4À¼Hª¢*fˆ4`†sæcÄWi_qbq^ùsΙ÷rÚ9ó^;gÞŽ;gÞ;gž™²_‹®¡eN¹ÓLY¦¬ŽH €ˆU¦,f`Sö]©Ê”…y˜oLYTµ‰1e™²˜±Ã¯qÎ\GtÎü¨ï=?ÂH¡µkG£ÎBíì†Ëþ]öï²! ‹.aËÐâdÛBï^W)´®u¥|ÂÜ ED7ðÂå¾€Ál&‚ñ´7 ‘¢,ÔeV…ŠëR¨DºPbÆ‹±øšÎ ¤åw4J'¿»žA W©1ùîŒç¹÷¿ýßÏÿa†œÄú‘P¼={°Ý”Zx¶S¡ªœ ¾2:YYtH$R#–'¤TÙ&Œ7ŒMPN­mH·øï…§%Ä:î“y³[nÛØðEƒÿŸ§ñ(2ëzâØÚi›‹óî‡Mzê­åVW>ÔÌ^àBøÀXPZo®ž÷?³óþ÷ 2eg¿¤FIð ÒŠ*ûÏ5¾•šo¥þ·vŒFáè†Amv¿_N®—‡çÒÃýñ×?CøÛýË U¹"š*üµ¶äÒ' £§r pΖ<ƒ59àœº@»`‘Œ¿×Ö%ÜZÏ   á!V·xFäføsEoÚ°ðD Á¡Ó²AXjòíó¯KŒßî§Ç­³-;5¶Æ)-•p q Ñ€  ÄÍ8Í¡ µí„x’²‹œÄ  )'™þAÅcóip¢ÆLzâÈD™á›8c#yejgçC¹«CÊi¿ ‹2íÂ’AÍ¬Ü ju11§‘X\lgd!Ú±ŠÄÿÖ(n;É"#µµÐ—éûÍþnž¦¯Û‡ vÄVbºµ_Ñè(ˆÙ°ç_6 Ô^W©g'¾P U¬Å'„q7=NóþeÉ6ÓfWƒ;«vP< 0È vÁŠâ¤^òðR/7S/9²¹Òϵ¤^Xhd àìbågxÉ+‡ýrX¶ íc „n§`"šÛ(¸5ÂøV  Â­=€j„>@2p—ûùyút÷ømqǧ¥}º>»ûôðt·;~ïSi§[KRäÌÆ­h©²Ug0>!à–į+w9j—TE G•5ótxšooŽóÓa©6›0éTž†E6S(jªFÖ6DHû,cë°ay º(•ÞÍÓþvG ¥üADÌOƒŒÍB5Húê‹hQ_eoÕÿ>/]ý•Uï¦y°Ýz8ûe£Š¥E¶¾J1î2ƒ!–J™ö Ê“šsuë yâµ44÷¿|ß>‹RŸ·åªdÅ ÀMJ ¡aÄ Ze(Áö1 Ç/÷ oí—çÎR>;µÈVhÅ8×BXëAå{]õÝ·z˜.r­, §S#ƒ"‰KŽÈŒÄC¼’|A9'WÅXë ®A÷þ»]òñÍñéiÛêJ¥›åAZaH€Ð*unäNÄLˆ¤öóTŠ„¡S0lP,"…àÁÈïº#ÊöÞÙ` \€()gµÔ´zZSôúMµ§¥£®ç·;ÎPLeƒ?×bqëëé” !+ýáÓqz<ÞµïÀšË÷öÐ2Û)Ro@’¡iž\®w*äIµLI:3•‹ÅáËôríøíóÃýáf!ÜLK 2‘Ÿk×-Ÿ ø…¨\|žïï÷/ßæi“ÍC…~®Þ3“sh* 1@1OaŒ3fÉ—(öÖGÓãiöt;ðì¼N&ÊUg€"’…2L€{(c[ðªz”tz>(š®Ãw{‚†Éø×*½ EšË²ÀÐ(!ehtÿÛ2¬z' E,Â~®Ú‹RKRƒ¡58„@ã4ÈØ7L]ßÐ4¨@%í=N7Çýr!®g¸?U³òpÿ iÖ’“!–+ 3¶úžòûׯÓË|Ø?<|¿y å©°^ÕxÄâä(P :,‹³–m‰¡²Æð4›äÚË}ÞZ³àòœa©F@ÒØÞä’q4`ä*|² ‚€’ãØ¨dÑ]`BIÎÖ(ßž— õv<؆Zd æV­&$µ¨„oÔ–_Gwí|Æú½¨t<*(ëjH(p^cÌõéW]I›»R+Zª¬ÌÍö·Ó|ÆÄ¬_Ê«hQZeõ½÷q^æ§Óí9c³~¡ª¢Es‘Ö\þ絛_ŒºcgÄP‰«µqEý´Òm#1ÕPdåÕñC¤ÓÐëÇ:,Ÿîö_÷ÿÚh¬6(ž¥ÊÞÒ }EuÖ5QÖzˆ«¦x÷-ßUy0áßkØö#³‡ °ˆ=„¯ Æ6z㥆Ã/á@3b\q ®»¤Â”?×! S戌,m!}yÕÞJGŰãUrDÙn?(3•´‚Œ<2¸9œÁ€$hïZ“;U´ TÙºJì$Ëïnðýüõin|_äÛÞ_±õÐÄÓÉKý"'L‰‚Îdk´q4”ެ§¸©¥nPMï€Z‡O·Ó••ŽCmõÔ˜ë2TÑÂPeob.«"wÇŽ· Y?X¶ÚÏxU´0TYù•ÉãÓãýáGÑý£؇Ôÿ ¢ižKZ(ò÷9Û‰! ™üž Ø­Õ¼ÓV«’]ûƒcôRÞ¬¯§5 #qlGu‡çæõDo_¿9…Æó]O'$¡Á[¢UC<¯ðöîcA¤ÑÑ¢³ÊVÆ8¯ÌàÆ^«hÑ[eël»eR¹À¤(žšíöæç}ãêFº±]Û‰Xób´Ý{4TªéÁ&*gTÐò›„Ã3þ†:¿At:­úº.Œ´Ea4È‚‚ šÕ@# ÙeÈÀ¬AXIt›—õg¸ÿ|ÿ”¦nh%þ-C]2Ï;sýf—z†¨T-‚š8¿ivegí¿ Z5|AÔIB‚-[]ýíãdæûåófzpûHo (£FÜB˜ˆZ´—ypìVVÀä$ou¢P€jÑ©YÊÀ²ëqæóŽÞf¯¥×5«{eq‡VoÇØ£\›ÊIjÖhlD‹Æ*+ËF¯¥¶FÕhªÚ7m-«¬h,½–Úqáaüµbº×AîçÁ¿[‹NÜÐYE‹Î*«:oöå¿.×P^ò×õÔ–¿¨}Ж_æ³÷ýÓ•T®Û/ˆ^µñ¾–~µaA(/`o§SÿŠüüðtørIæ` `‰†¤-$UÖ éë)}z|~¹²ÎÛÄÿ®Úõ÷Æ{m§ÆÊeoutõl°¡4lha«²³ê‚eH³v*S„§ ñ6¥ ²Ö2üñ%o~œ;ÆGWöø/{W·ä¶¬_hÉBhü\îÚÎnêdëd3©äÒÅ¡(‰;©”=ãªy÷c”Ç9h(ŒJ”Ç¢]ºhNñûÐÝøo4è’ãÚ`FÓóTù&›Ç%(…‹±Hßά"»ŸE„Á¥˜£ÈoçgpAÊ 4frÐf9·MšËiÁï›v~ó+â€ÙÓ ¹£>:å@)¼3ÊDä¨mÃç¥2 ¼F@£{úÕʃ‘GTI L2-H˰ kÙD è ¯=X­  ôÉ0n* A›Œkú  ã Tä@©l¨bñÓ"õ¨§×cQUå¶/iv9újo¸?Ç1?³hA >(«•ƒÁçÂ(yŠžœ£R®-25_@‰ÈRÙÀº’ZP%·ZËO}1.Ý¿oiPÙ³lPÄtgÁÝ,¤çÇžô\TÎTJ –÷mÝF#8—RE¨h-¥L?žîÓþ¶`¹-6 PŒ–•¾{UvíÖx…õů­œ)©ÿⵕ“²ú/^UYéèpŠZ­ Š'rTˆŒR¡ª==$žwøa=}úͲ¤Iƒé›#7s¥‘Ìh'r|ˆì9ªäSBÓïÂäjso´âK§ÈÁQrÍe$דB‚FKy%Ï@ã… 1É(&9L* T&š'eò¢eÁí¿iVÂÓ|*rä¨l¸³4ºe1‰!ÀèS(üc ¥õ_¿¸Úd€bpòÂÞ÷…?˜¹Ö€~¨S¾î:šg]“Œn)@ôÈx"BÆÉ†d¨âÏJM~Jä@§Û,”œâÄ‘&µ¦¡ÙžÈ'2¸Ï¤›ŸˆËÈÜ–ùÌJ¡íÀŒú¸çpmÂ,D†8(É?ü¶`¼i`W“_O¼÷6¥X&¿þŽæÍG©¬QÏ’[z›‡6À´pÈÚQÚ§`ˆP0 —štß”|Œ…‰(-pÆ ¨#³R Å&k»uVíåÀÐ"†=ýFT"¡­Õ Ùsñ£Z‚&Âc"÷2áZPà3QhÀ€>lIF ffäŒæ¨I-zVÉZƸ|Ö•§Ú3;ÇÔ ‚> ¬˜2+4ã €»_î—÷&™)¸!Q ë¾'ÇD=±óúŠ^…5²áÓçUÎWeH;ÍQ3z|>|¢žÊOõáî6‹ŠßHáDÀ\}¥Y¥Slk«åÓ¯#0Ñs²¨ͳ¬e½ ™´¸K÷\¡ˆJ1Æ4q8e43BÐúh™F?+©CŒ‚¬ˆÂ*`Æ:!£¤ÕÓ,„SL*r˜Tö,¤Ì0òèÉ5Z•µW,">2œDÆP“Ý­  dƒ³ÿšbÝO²AJA©ÈRÙ°=Ei¶ÅÆ3¨'ݼÈãûóþô×\!j HýÙ¦¸T”Vܸjœ?œ…bF iÅA¦†ÁC ?FŠ*{V±¥ š\ßY——¥¡+¦äÍwGÒûAŒàÆãã‰"{·øÀI¡MôÄEºÍºB‘dòâ\ & ¯I¿«²'ìÉÏRBÂäU9nYg탯Yò‚”òØ?Ô`9å±óDŽ‘=΃£SM0„ qd„¥™.ÉVêþT•·DìåCl‰° Aº¢x4=‘£IdŽ&%^~Rdú]˜¼<·ŸÊ­·àOå{‡Brta¦Ý”Z*fHH8(@CçYF3DƒCfqEh€O„Gˆi* D¤ÖhÈ•á͇â}ß¼_¶M=7—øÀ,Ú „9P‘ã@e¤YìßÓLÐ3Yï–ËMVÏÂb8P¥ ÊLT(ŒÀ„æ¹%Ò0ŠYâ³[–ž6©|7è7ŒKÍIØ~»[Ó.R§ßEÖgW«&i‹ªÉ³¾lêÄýa²ÊsÉeroT¢d:C¼Ñßbì$\>»9¨ q†0Ó«ÀµQ³Ä¤Q ´™SåzôMÁEÚeUä¡ÁGVUa=\¶†$„òDŽ‘y„>dÕ®8 &ý.œæ«š§‚q´Zº_íƒèèi{n¬€ ­%9ýë©, ¬Šû4ŸÿèòéÏj«*¤’´Ùõtuêܼªyá›mŸÝ¦ùœºmV_‚ Eÿáä%]5Û,8æÏÚqÀø^ŸÒ Å *r4¨ìñ$_%ÇN›Ð 3Ï¿£ÀuH¿6ë_=±&äC\#Îù³%šíÝêðÎP !¬aì “Š&•y˜‡y›uëñe!”¬„Ði†‡‹#JÙg^ªU*Çâ°´>¢³äš cÈ:lÙå¡x‹ÏŽm²6Ô“þòîïoÿýn_HòŒEk*nÁh‰¾A$ +Œ¥ÑÜ2¥I|VY-ò¦îÛ¦J·s3)Ú´[ÏHbÕ¬å½u$óꩬÅ}úmªIÜójáýfWõå¶mò¢ëÊzEÙ~æ3Ȇˆ"óØdÛ-±È 6YY§ë~ÃŽ ”ÿè‰LOQø4_:6Û°ô˜-DÉ­¶7Oä¸Ùã·ûUèÂÉ'"ÖƘÐÃý‘@„€xÑìn«¢+ª"?&S Ý¢ ïZRÙã©>Lº¦jQÔnš9Cy¦/΢ Þˆ³\y_~(Þ¯špkß±d È ÏžÈ"2Ò¯v}VUÇ¡j«4#cSOäP‰Œ.ÿVÍçŸÛ*ËïÒm½:fJ"BzàžÈ™¿V.Š&éêl›þw{Vä¶iz¢éCÂy´` FQ…¶4+x×?TEšwÝùP‰‰wEØÂÑêKÁ‰ˆ‚;Yàôb<ÍL&Xy´6`-Íír/ÓZNäç2ÿ7ÿaï«ìϯ²??æM¹™Þ»¸½+C}æM³kó"ðâ÷âöMÓ†Þ¼Ygõªø©Ù㺠rn4PÖ 9z‚Xi«%=áiÝK3u †B’Ýʪq'wì~h³Ígrîmšo·sr|·Ùöoª²¨ûnïj,·@+©ÃÒÜmãT¨ÈQ!2Ч•/„fá3§wõÿv0™`ˆ#„5ÊrL¢FP8µ©]mùŸ`ýÚdùxåºÙm·MÛ‡ÿà¹É6›Y}ˆrº 7zú¼7yÙi›7sqO^ÚUo÷çðÂHÕ 7uÿìïfo}”hçôÚêÎ ^û±¬ÉHæxù½¬ß¼›É@‹Ñº¶¸§/î¾;Ù0á<~{'\½¶XV“´·ï–Õì^$uõÚWèµô“8íú¹G•F¯sPyc§dÍáaíýŽiï¯ìkôØ|Ý6›2xÜ®kó—xë›m5 àtmcÏj„íî¶*ó=“ŸÙg3z"M<ÌØÉ¬K;16ïÏ_º®3ã׳ xíg§ÇÙââ“ïoý”=4»þ×¢ëýÚ¹8«ùó<ûL-˜¬«s»Ñ¡ô•Žp’­Šäëß$uqßOáHTÖ •yZ’º4>ɲi?fíbn^mV/šMòD/ÍWåÙÉ aäà™¼Ìë²ë›ö!iêê!q_,’nwû§i\C÷U%‰«A]RÜo‹¼/iß®¡9©Ïãa‘»Ùô&s@OÉSÚ?Þ¤|~¬˜Ô\*¾Ÿ×À þð¾ÊúeÓÒ‰"C&c‰·–Y×ûû8ë»]™tÛ,/ëU²,²~×/­tc Ø X †ù續”L äƒÃ´F+-½‚Çè|ÆÊïºÝæ’8mëÕÉéR]L]Ì<8§X6uŸ,³¼H>6Ëå!†Œ>cšÐ§É9´PÖ(±“1¦ÈÅ”anƒ›YЦAeϦ鋷h6¡9\Y/š·}“%Ÿ‹^ý!fb|ðˆ1q† @{ñD® Dæ„0óŒ4©g@rð¨o ˆ¤’ØVY^„Nå•7(險\$yS5mò±ì×IVm×ÙÜ&ùÛ,©KÞ©2äÑ `"¿ÖÀ-?lÀqüP#8rI\ë7õ²\%mQ/ŠÖ=(^8òàJÓæc‡Ý¬Õ‚1ÒújÃ…2‚¶¾ÆA®È8-õÊ˧L«ûùØq >Œ¼ÂÌCÇ‚<…PÕf†‰$Gd˜lÚU0–Ü&ÙjþN$Î0\Ug¤)Mf“m¶¨“*a"Y&ß Ï ÉúØéU‘ÝVáeØæSYUYð~¡USB\–­-iز¢ÊšÇá(#îªÅE1’’ë ´œ|~‡ ›ïý^z£pq¾~„@1àó3 W<Êh~ç¾,«]ä‚ò0õœ+OåR1Úýú0:01Š­“(Îr‰àó6ößq¦Ì%*îö¯`Aª ,Ǩ£,lq†låϸfðºp #·­«#œVsàÀyh]ˆœ»Ž8J`?hö=—øÖ­r3Р]Éé¹¼t×íŠCd¡ÚAŽN[;¨[οQzÝÄ {›ž¼xyVȈ«IáÒ¡$_v¾¶YßmýBúŒE¥š¡GÝ9êDF¨ÇR:ÍX\šæºݧ@×Ýøën¼Dòx(2‚ê3¸ µýn6âKú×­ëFÃu£aþýëÎÇu£áºÑpÝh¸âDB£®G³ð¼ÔP³×žô¡&Ÿ…WhoîÊí¶X±ZÈÓèñDŽ‘=žè»ä¬j>_ ‘bQf*ÙnQ6IÝ$OW‹¤¨Weýâ#cðÂ…:i@jÜ£î‰u"{œ ‡ïÁᜈ)Ș$3×ëöùU÷ H¿«R h´`O¿ÒG ùcl—W(Ì֓í÷gUu›åwIÞfÝ:¶Ï?¦")rr¡'r܉Ìã¾— mYÎȪ¬ÝfGæ‚9²* Ã»õ¦h“/wè”MÓR‚ãÇ„‰È$²Ç³}˜¦„|8¢RŬ0Fé™=ž¼³‹¤ØøûºØ¤ŽÕkhjÛ"ßµ]ù¡HE•=$»í"다ËÛ¦ªþb5SLpnÇÊ9VDöRVÔNÅæ¹ë3òø¦à!˜H¯®¤0L°ÁîJÐáºòS‘,³²ÚµÅÄc*Å (Ìcë‰[" ÔátU.ÏÏóìú e&:_¡ñ$ß…TKë?ƃÁ#º ‡¿4Õ ?×ãì.ƒ-ê>@ºpÁéÇìÃ÷3ƒç$0©6Â?“†_‘t…+­“žUmš*ÔÀ½Ým¶¿.ö×¶(öŒ¥Ã÷~+‹ÿjºY#&ß`Bäk"¿ n H¹e™t¿äf)aü:$¬5–YžFðé¡b„R/Ë#°j³íºÌ»Ã*ÐMÝÿä&…ûœ–§€#¡þR ŒC¬(F @íÅ!ÿüTœ·YŸ½€ ä6”’å ô \\ZmhWi„áV(}i‰n¾„ãïée,mÿGcוqŠÆ®s!…–Cý¼qyТŠa©¹íV¢U¹ˆ¸°Ú(3Dßu}³ñmiÙâÉÃÂ:!"ÇŠÈ¢>³>B1$G."PJn™ãý+k—·»OŸnîÊŒ"ÇgNAd"rÈDF&†8èì ß_w¥B-¥BEI­5WÏ–ÜŒäÞù TÀ #M„â̺¶Ý+q³-êþajÿ÷ó«_?¿ºÉê²/?Ñ{¿å5„ÝÄõË™´H3ÌÂ¯ðMS»ÅϘ;BÊ…m¥yúå#Sd(AîEË\5 :Cd(ŒäÑ>u}/dĆŒ@ÞÎ$0 >%T‚¡5”Ú ñ(…”´>?¡¡)4€Sžúú;¹)è¥aûü~?uÎïù*®7ÿü^´±ÎÊ»]\!ÿröêu.û mDl+tÀð?ýwSy³²m^PÝŸ½vÐë.ã-¼û³ïH'/ÒÈ~}Ð~YÐÃОNd™"žÈñ!²A«(S¦¼2ƒZ²´>Ò`}[tT‡-Éßüç§²/~(«âæ¡ë‹M¬Æ—µŒ{Ü=‘ãNdŽ{„Êyx ¿+¿©ï¦h­D†ÒýÒxmÇlY«x4ÜëÍÍ[(ÿ!Ë‹›6ÿ-«vÅYVG=b} EìºY‡@ñpâN¤ähŒ &ù’Ω¬C+?_ö–þQ5ù1Èé‚À(ôÁÕ¡Ú"´˜EA‡f\X…’…iE:ó=sD%=hOä ‰l¿FèÂñA44GÁ¸òhx"GƒÈ^b˜õܵ…§l´ÆJÄ)‘ãVøsgÏéò&s/~ùZÞ¦Öüí«[i˜'‘®<µ†ßZQPXδ@”'r¤ˆìñDß ¶<çØê¶¬eL+ñÁ„ÔÞ´wE{“·å¶wžïFøE{ds…VYP^•õEŽ5‘y¬3?vM•õÅâ3Ÿj‘®7 ¬î‰¸“ \ *L>/’As¢¯’£fõ.«’±ë(›m¿j›Ýö)ýSV/’ºèú‚\›8äèœ0R©˜wÑ›œ.`Š^õŸ€é5 uk‚ àL™Á0RjÃi¤‹5Qx¼ß¾ûùæÐªE>Æ£²—\xM®Á£½@ \j¶Ð Çç&«·ÍýÓýÌsÐâ€<ጟî#Æù±^6³©a>¹z»6.fÏw@ ‰ig†JñÚÞ„o.»1"rˆ,’ö3ðÝHÁ$Xm…}Ö­»1ûÜfä) òL38ÊP£ôŒFxHtèŒQŠÜ˜ê‰%"ó(}™ë„õ-vá~y³Ù”.‰j—nNOöÛþ.œ†­÷Õÿ#ïïšI~DOø ¦w—.³3ÏŘ›Ù½Æ(22aŠ„ «»þfýÝ·ƒŠªF€{ÐtwFíÙ̲˜¿‰žôò—Ëåüø«L¯³YÕNý?òÞvÇÒO‹CwC|Ü/¶‡Þ,œúë°ëã×ùá¸8vó÷m?\úK;˪¹³(à^DôôL))%ùgÕTÎíoFS)*Iq¢rÝTøX-,{‹­Ãq¬†­Pé1€¢(gP¿*Ä|ÙíëçõòÎ>”™‡9é·g:ó¡óÊæÀDxŽ¥îŽ©²yAD k`5iXA˜NÏs8S‘;DÅ ŠJÔYš{³0TÀá™nú<ã^ÌÏû«û2ßïvÇùr1펋§ÓE’ekYåšäôê¨rÎ#fb,ç<î(ç+Í~3^oŽÝ¾:r²ùB‰‡n¿{ ˆÉ@@¢ž€ ¸‘Þjê…2×s'‡—­q¬&Æ8tÇû:%Ç-\¿)sÛuœ$»ÆùI(VSBl»ã¼Ûïwûùf}h°àÌÙDÌýû³¶Ät@$¼d¡ì`õ/X‡ßëbsèú7Òþ8ÿ´Y,?÷X­dŒ³¬¤ä¹“30gw´üzb *ù iH!(­×ÓöphÏk6<ûÉ÷cšo&G£4¡¤¸ U­ûmokSI?~{ÏÆ@…‰Ã«{ÁDa j,7(Zà Kзg¥V†!›r‚ ‰ÉØ»hõ¸»½ö.J¢ž'ÉÎxž¶‡C·œî¾¶—œ¦ŸÚY¼£ªPBÁ0—HãV¹˜’^ôÏ·šTóC·ÿ²^¶-Pâ ÏsÍ”3žRBLÏy\£ˆg`'hòÔ{Šf\L¤„)…5Ò‚µ¡Sçñ‚EʹŸm·xš?o/‡úê7’2ŠÁ™TK ­gQßz–µ¾8lqþ~\ošƒD.~jK ©ºc…b ÃD]Ðnb¬¦ È³f¹Z¬·ó/Ý~ý¼±¹’¡ÓF&O‰ˆ¼èK#À(ÑjR ñ~BaÂâñí)•𒍛„;Jš2¦Å@Ê•Vî3ä²BܳÝ_SIÆ£Ñôïäo}óu¾ïï›:Ðø-ê4Š-°œóQÊSº—aá6O£³0[ •`g@p†6 …j ·Ì–_ÖÛ¦~ ’ɵþJûÆ<ñCC‹èu±l PÍ„áŠ!U'bÀ‚$Œ-¢ÏÛÝ/Û“Eqèõõ@8¡¢4YÔÓdÙ4½®>–¦{~îó4~éæÇÍÓ¼f/oÝþù/3„‰ƒLYÔ3eY›©õ–¸·h({AbÅ uv° §Åq¢ôž¸o‘æbFߟžqo ŠÆD9IT)BrgrŠý¾_“w›/MÃÂfš{¨–wÖ!¸'u'żcÑ@3)U–»üÕ*SÙ”„‚HPb ñ¥mÞ¿¾öÝÿ¼ÿN3²±ƒ^üÔ¦º”¢QÑ ˆ’l”h¹œ©â¡˜¿íwË®é Y©:­é¦ R „KÛLPãºV7f(Ìïü1*Fˆ’¨”ØQì.ªårB¬ÞñµÙ½Ì»/Ýö8ïsÒŒï+ãÉÝÉ Ä JƒìB7«Ý]C ¸0r!•ÀšBŠ€+ø9KÑ ÂH,EбA•¥å-N(ZÆæd¤< B…Lød»ÛÎÝö°î߬÷`ÁÌü®ót0RK ²AÓÄ¥ìE꯺†ZV¶kW7ÆÈ(d(¥Èå>£?¶{?|ó_´ý€Z¸b¦à:dQeM€Õ‡¶¿=æ¯Ýëz7{è{s˜@‘¡Ý,êÛͲ›í®>´Ýê"zçN<#¤IË#Ë)‡Š«_BAã¦k¯Bö؆Á™ ,Ø J`ƒ¬6¾ F±ü{·c–œH%k ‹¶¡ê;á ¡žºçÅûæØÏî Á²G½šªó0£dQ’eg(ÇnÓ½~º¿% …ƒ"Šê€’E=J–¥ ÑñÛλåçÖÉj~ss9ÿWY¸##0)ƒ3Mª§Ôeu=MÕd©÷Y¾Ö‚„ìŠ#(nd)Lð÷iõÒmç«Åöisçn´®Ê ƒ¨gȲ Á¾;ÇׯcÑjûÌ¥ §àY4´Ÿd­öWÚ|oßþ0,O[ÉS@^û·ßê²ÜmÙy¨ßas1”s®RÈ0q• 5p­ßVÝ~~x_»o¶¿w—sl‹,Jtƒl”îç„Zý|Ló—nÛíûX¶—Ý”tïo§™ßGÌÇ}·xmÓ¡Ä?žVÙ›ipäôFE [žfh>´š’çy½éFAð„+a‡lF„cdÊXø6G6â§ÖÊümwXÿÚäQ&*Š?žI9µ÷x‡YnšŸgøN;nÇýzyœ?)žv¨ˆæþãYî:›ÈÑ)y!,…RÒ„ãÛ¡í±|@4ÿ^¯…¹á:K’ݯ²‰55F·úiºq5i/>ïöËþ@òPÑË®!%@¥(Ì r–‚I/ìLZ‡iõdÉô å%áå_ë·‘PñL~_æýP%=#’ àœ.&ŠYq¸MôX)R"ƒ#äô¿ƒPU7ã"™A%``È¢ž!Ë* ³ÕG¶|xZ®þÔ—o».k’D©—]ŽŒU·xêö“,w»ÏënþºÛò0}Ü\£p†&‹N0I–|'Ë·ùr³îíGÓfý©?ÆkOäûü(ä$ÈCÜo6ÉαX ªù¾Úý•I€¯÷ó¹å:L’]¥«“™™P1b“´b@ýK×/nGŠè¿mº´—v|©“Ú1ó$3q RBeNöq ]tA¤Vƒà>ú¸T_dtnÅY ÜJJeé5Ý“K#r…¢-¢ÚÊ“¹Hk°˜sœ0ÅõB Ô«ìÆ®š¹×d¥óõŒhad00eQÏ”eM]½ív›¦žØÉÙÄJœ÷•z€eíêA³i9gºæ™¿.¶‹—±[_*êÄLÁŒ%/×tfbRØÏÁÌ•2 †¡?W`3"“áyóŸîÏQ$49¡©¡·ûmtç~ôY³Ôó¼KWY’ÃGÍAK´˜*§oÓ2õµ’~—þåy—!*\YÖä:loý)ô‡NLÄP¾?kÁ!Tè2Ì™‹zɳ½ˆÉŸ\á˜ã·'æu³>Ö«$…-Zëæ–dɺ¶ß2E,Ë®^Óóžd<ÓÌ¥ :%=Ym¬×Ãè\Y•C8Ͱf’BÐPZ, w¾Ç<Åö[÷/Ýv±]vóßøqß çc@"è•4Ó .ç\ ^4/â¡Pªãúw¸ãîÎ3!jŽf r-‘ÛŽæŠÔòýI?ç4å²—Lu„¦¨¹‹Ã}½Ô>¹“’CÁFz ƒäBKl¢Â÷p5Eò@T#u¥Êàq(R(a‰*8g,’âwaÕ•uI…© B¦`oL}v;£”$<"4Â¥–-¥E\ÂÉÅØ•XuÌ*˜?/–ÇÝþkƒ 2GÎþPά²°CPUqSÓAU¤x„ËȘ¶¦&«ïó¦ïÇÆ.æNo[Þ6PžõmCÎÅ‹GÜ·ŸYý<\Ó÷d}”M?þ³ìþ16í h)L¼ª™‘™‚Õýy_e*nbnƒG1Ò¯×râ   º:ÛìäLòÅ ºy¹«®¯K¬¨†k U®,«qÕ÷ôÓ3M«¦<Ôï@¢úý¥‘­Ž:ÃŹ ¡»½´' ÊÍX™¡h!,~±y@´ªqWwµšM1 ûÍp,{«¯>÷ǸóÿÞ}j¦Êp1ÂoÏÚ2©„™W”ó¶‚8 Ú1§ÊíVP²¬†²šˆ$wÓ÷´ÒŽ®²ÉK²JÃóåP×µÙ)!QþØu¦BAþˆIäŽÚDm•°’‚;§ðkia£ PüžÆjÌDûîi½ï–Ç~b?p‰>Oä,(’ì6EßxÕ ~àÍÄd˜b€Ê¢*Ë®ªý2©I ‰óµkÍÔ1w<-àéŽe3¡¯ÏD4€%I_Ô¢xŒ0[p²6û´Û§“7¤g‰7>~Z¿¬·»ãb?û¼Þ}éö«ný4¡Ù[÷ÚX *ÑÚ)×b%ýb’ ß*“ ™¯¦DX~ýÔí§dÈ2%Æpmê0G ™D%ïÛÝa÷|œ¯ÞOÞ¿ÙS·¯Ô›W0šÏ¢¾ù,»Ý#§ê}R6Ò¬ˆG ‡œ ´’4Ëθ^v»—M7ÿ75ÏþûÿïýÇ¿OI°]ŸŽÝþµ/î|ìÚC©•^Æl@È¢!Ë.Z­b½EZL¢¡Å,»Ê»n¥c¨õfª“ €Dù fÎô÷e±yÙ¯·O·iÿ0³—þÿô;½VÍú¥.Wø’hàK²ß>â¯rK¹Vk¦®\PtÊå.×û§ùÛbüzK¿‡CÛªÈR^î¶³FF±(EQ²dˆUCŸê=ÎP@.S*´2-°£ ¸±k:®Ô£w¨8˜Ñ p:ÅlE“BafèT ý½ÁÍ9ÊÃë[SX´ ²ƒ¤ò>ÆÀ±‹EĘÙ3Cïx™5sǪ±!Q œCTQ[*HD%C,Þ«VgHQrW/Z 'Èað`3.y»ˆä–ø´‹®wp1'd6¯e¿“¡@ ˆÌ0{êÙÌ¢pa$ &‘y?B`Ð0( \‡‘MrquE1ö»çˆª'aǸ ü¶ßµ!(ÈÍQÜXIþ…¹†‡z¦èömßÒ…"Ò€|@¨!ã ¿G5µ¦…û]¹ÛœŠ¨RKd,ÉAû¼ý‚ “Cõ•šÍ¢¾Ñ,Ëê?Ý£iµjFè…¤1Ç»'#YQ3à‹»ZHÆD‚_Ž«6V!ü!AÌÝöýµÅ@h!J*Ä…ÒËz„ÁX„± ]õÆvÙµÀƒûŸ€Ð4¼€@@ʧ€£Ùjb î–ËÉU±ï¾t‹ÍäÉŠœ‚áÓî饻mï»mû–2`ëtYÔÓ%Y¢Û,ÞÖÓ"¼tÛþêël9%Äi-ïú4UË×·iQºå´ý±Ø¼¬^ClvßnpMÏ0….Û9kY5äoÿ®¿¬·LÝ~ çõúËÔ½Þïòz7ðäš8îËn2Š4*¦] Þö]·f=JÛÞýÔ#âõýØý:íˆØîŽÝ!¹D§QÅË"o{¦ìIæòõí§X­&wì4O-U›õ§ižºýúK÷StÆäköS÷<ñzy8|î“ÏÎín;µ-ñ¾]ÿ:ýýÅç®ÏA5%Ãëb»~î#½^·?C‡L¿Á!˜‰" $Q””Ûõ‘Ó¼"®)ÆÛâ¸\Ý®•ýi¹_lŸv¯ë/³þ¿jÖˆÍ?µãé °ðÒ¦dåb©ÖÏâímóu@ZiãÔŠ0Ïk×r>R#ADÑtël±\uOýùã˜RJ`M)|BÉçK …ÉŒ,£¸/¾™}_qó×>{U·ãa¨§Ô£(>Ž¥UP¢â9bç©ÏüzX->w}Ū×.3=RU2ŸEæ3R`½è.–°üÂÝ÷a:óO»÷íÓ)Šé‘¹ŸêLIvkÑíëÝöð¹ûef4d>¹\Û‡†^ÈÕÝ®nCõ{ûŒò@=”Ün%ÉR€ç¯ÇÓ9Á‰Dµ~ ? ˆ`pºœãw ¹ø©ôOqC•”`àto{·<ô'‰o›õöe †àâ÷Š&bŽÑ„šå¢0o]·ïõrªc8ù€ÙwÛîewX¾L‰’|ÇHªÙ–‹:ÁÐtõMgÙYÓ§J÷µ×ª]«/ÀN:zâYHC•¯"Á‹„qÐðÌ)üëó³žR(Ô-®"gËÕ~÷º~­'é` /…ENÏÊe¿ôõ$ ˆ~™&¥Àûöp蛜ä`;©ÿ[l£Ê³¡:Agß<ÕAª)YE)ð2|fÎL%”,™Çþ€y¬Ä.ÂÑDºuÖ›IÜçqÛmÝXî%l¶(UõTYvA5ßvÇ_vûÏßr¤.NéÜ@H¸ XˆÕbòH]‚œF²ö8•¸äò8÷·ç} àÈ%ÀvP40S6Ñ“d˜áÚPS=uóAžTh%%Çq¾ºD¥aJrϘjíZLYCJÁz…04aËØãbNQÚJš´RáÓúðy~²@OéLžæw¦¤¢ç:wéõÞ¬Yd„%k í~²fÞ.ÖÎL¥0¦5cl"lzYpÎXýªßö»_¿þŒ)1ê‹Ã}hHà|†æµYP$”ÇÐ…ݼ657‹¯géÈ<‡îp¨¿z&Eš^I§ 9’o°‡-Œ–sÕ=ÂTð $Û*ŸvO_çOûÅzÛí'Ÿz•ñ}/™æ|!Éb GÈ´¹6É2Д£ê'Ý-û3C(è¡BâœÝÐu[!/œÉ[VŒ/ÌÃÙ.ê0•¢æ7 —Þs÷£ÜVï9®ï.F¡õûTF4 eQ”em¤ãæuÞû§Ÿ6íUЬT¯)Rcï0ì½$m´TIJQhÑÍVØã ‹À WOÎw3%ÊO‚ñ1ý’ÿ2ÚŒJ»Škr+—úæ°²§&)ÎéâÚÉ>ýã«eùü°Ü¯ßŽóç®?åÚ÷»Æ; WÁdÊX°ö¦;Õ8¢Tù¨,—Z­$ÙÈ]:‚àrÎ3b÷¸©8kîP“P"¼ŠB-ùU(ã6B»ãâàv¨ü¼ÿ¨ñÍk™d µWIÄ,%Âs±@ûíŸø«)ãÖn·¹u}êäš|ØêMb/}¼=Ôño ¡/ô‘?œ½}­k#P5Òû¢‚š¨z™€ÿöýÝë:½§“¦ù—n¿~Î+gõ¿zðæÆ­åHõà”<ìœq«»?íw¿n۰ו8ßúP¹Ñ2q*ù7k­‘’ÑDƒ8—(N„󾳎N”üÑøv¸âÏ:!˜ ´¨Yq:§Ú=?Ï«n¾ï–»ýÓüÃIê«Æ_ÿ~£ãa5ápè«ë¿ï—7ÇöR¡m77´«Ãñ0ÿ²î~™ý÷áÏFs ²Cˆ³¨'βžø¬Õ‘FaF¨)Uh-|°„1ÑEù§@Ñ\þ ¸Nz[oŸúkaÇ×Í„¯‹õv5d‚åáðpÒÖ:Cõ Ivefvã?~Ó{ ÞLmܲ©¥rZƒIuø[¾.CQÑ(G%ŽAv‹ã¿Œ4&Y|Ú½û¬}Âf½}oOKžº+… “Ú¾OQœ8’Ý+hj˜ Rr&O´'ˆ;¼m‡Õ¿}3šHT!4TsÕH9M Q…§ A»éKƒT+¬†*Hc,¬ f—Ó3fÄæÊÎ$BŒAäz3•éI¦ê–OÄ[lÞ¯HÍõ…‰¹˜õÏjH¯€;™pòpkñ\‘‹ +$íÊëù§va¤&©ƒ 2Ä"`7@~¼ãg/û§G[xQ¢sžzÕf*™DQ¤tm}Èø¥û”äÙèþïÓü}kÛL¾æýNô‘¬¦É6bOó€Ë:™U $É®7›Q ýÖæRn¦ú=Í ú¹´Þ®­‹Ÿíç0µTs!Ü `6w‚4P©BÒÜ:ÔAh D Ð"x¨³ÅU:_0áøã7§ó­7SÓ<ÑÅKu´SYú§õ)te±ÿ:œ >äkcPЈÁ×’E‰m]yæ²èDÉE'r1©‘¢dèÅðâ0—¸ÞÅÕö#˜dwÕÄ%pqÓ[\U…™åìßV±›”„c¼ž‰T–?Å×êWÉxšéÇùÀÑ/øTâOñUÞ”?/èÄ Ým·Ýi9˜M°˜ Qí¶Ïë—ïE¾Fù]…Ýs“Åòoí U-×lîAd: ,zQ<õe³û´ØüÕÒK)Ö­þ–d^«Í—nˆ’=¼ '|M[ˆ€ÌÔ” J;õBŠi§ÃP Ÿû ³_”´y^ÿÚÇñ¼µ«gÎEXu¸ã”ECÛIvñ2ÖYP¨’Z1AŒdY½™Ê J¨˜ dïñ²;æ‡õöeÓwÛaÇÝz«(8ûWQ» !»âˆAdÄXÂé†-œ¬„ôQ¿:îöÝC1^ÙtÉ¢,ÉYn~õ­_þá¿ÿ[=í^çyËVß |¸_ðÜ7Ù_çù²>¬ÝÓ÷˜ÌÇ‚ˆMŠ#Ù€E=B–]wA@Ý [o¦öM‰¬¤z˜‹Oßì»íñzäÛv»Ýºªú¥Cé]8/¡ÈáÐvjõtý ó«¬M¢âÄN‰ÝAò…û§n:½LãÞ‡¸}o¿Ø¼TC¹ÁQ<ÕÐ+b˜ße&=GX^RûAºÛ.6ó>éü©;.Ö›vOUŒÔl…$Éî!Y}0Èvñeý²8YeÝö˜Ù‰>Vy|ö÷3ðÞa0¦@ä c¾Ì–MÝØI²ó¼¡ÝSùN(©`’êê:㇨€cey™?u›î÷.ìš]çu,Ö×™,ꑲ¬†Ô÷æO†39~®÷ÚtLÓª©öv¨ßo3ë1 ó’E=H–Õt“·öÆU¼øIÔ#%Ymâß5„¨Å€CèO%†AÖbhá P_i²¨H² Àl5UÓƒþó œbjELØþÇèÿê$=Š£™)$#„jÍÔíueЀ«u°Û÷&HöÂçè¡ùÓúpÊØ4ü§í’l/QÛ^ bÔìYVF)×+öa±}ú´ûõ1êšYUaw!®×wžʸ#и¼§©¤gÁ‹åçõöe~ÚÿÏ[0e&\sn#¤USC Û”RHYŒH”`Ë¢¿Ÿ‡?×[Hõ-ºÃ9“R@öØ`ÁŒëÎúeýôÒëÁù97])ŠLÔ?±T’F02û˜G‘C1üi¹_~\à¼oá̃Š}{zmÛLa,¦çpj~W)Žîû4{í‡ÅK7^oÆ|ÕA …½|V®¹±B(AÒ£¨†&(’Â^ôÆ9ä ¹Á386 tæ„VÀ‹+ç:Qy æxF¡HEsWº™Ý³´ Á›wÃ0÷ak%P,ÆQr)¢ñ>l1Y€ k°rIó0ê]Xß/z.³w«ë< $îÅ‹:’Ôwòç™ARaާõnžÞ:Sïsk¯¸i²¢¦ÊKú('`(Lá€ã‹y †„E°î<;ôõñÚ…™¦º™ä®uš¶b.aÒ‰ç4ŽL8ºl‚1;K@)N”=Ã¥½h‹89¡^` ¹ÇýïßùáøÞN:Ù WïfQ•e÷CÍV‹Sy…Œì¿if\H@¿?k}WÝ=yK…!q„º·çþ=~žaŽæ¨q±›cv‚Êe€«yQq}*~¿¾¶’s@ùãY;±*Æ LˆÂ,+ŒIƒu,oä§{Ý-?ÿÙ•AÙPà ÛéYî5 †·Mñ¼4X‹•±ÝB-¯¡\_CƒXõœÈȃ‘8©Ôvu-”%ØôÇóŒDÛCœÕ(‘(’àæÔqæúÜ¥š¼íLªÑ`·ÒºË¥{0’ã7«ŠªsF(m®;}gœÁª.Þ£N–dµÁ4ƒ3$ —ïϪµ‚ThTQDJfw*j5žê`¹Žåäø¶;¬ÛîÐóEÁ«SÐÕœ|´]Ü‚.Ó4Làéuôë²mËe åeŠêï”:‹ɨŽ~žaÔTÏåPªCUÊ‹™ŽÏµ±ª×VQ=òjaaŒ‡ª›s.M÷åðÖ<ÎGL§q0*. ãö\› (ý`]m*RgðL…… 7cî9ª¯öZÞ gQ‘emïWÛúæ‚%ÄwËÝÙÑôÿ1?}ÞLÊ5ÀóŸj®}5 ÉeB E\DQr+Ÿ¡wÛåþëÛ)Ií §Õ!ÕÎ!Oc¥ÆY**w8üÒç¤8¼uËõózy˜â¸ê^»I >ívŸ_ûÏÓªáë[÷Ôßjš”¢ûõØmû0ÉI)úë ݾÛ.§‹÷cŸªe3-ÄÛÛDí§8ÿ òú>A³½;Öl>ä­¿êÍ2XI¯„íúe·_O ð«ô %½üÊßþòës8ÖÞÛŸÞŸï-J¿~+‰z®$ûíƒþ0Í„þi½ºýs×=õÆ^M¿Yþýò˳l¹{}Äúy]WS,èÛíîx ¿Ÿb)ývsJËb‚¶‡<5Õp £œhõ†ÓOþ‡onÚW’>¥”\¼lw‡ãz™®—]:Ý=uw¥ú§ú%8WENâ…Ê%¤‡þöOüÕTÒfÝûc“ß ò7 SuÖõÛ[w§±žÚÓÜ]Ò pD,`’‚(”Ó õ¶ÞwóỞ’7ÒÅuðÒ€’ ‰ÝR)â4 u§ ¶Bîb.ç4—ÙÞÉ¢ä˘ýe‘!ÔöÇíýÙê1„Rø„D4†P×Gõ®F}ÈdQ“eÉwñþúi»Xo~MEò?ïÝïÃãm±?L¢úXm/é%O ÌT?YÔ3eÙS}6OO3‘jêƒ7ñ´rÈS5÷ð r¾/êîŽtU‡:r=©|5 ÒLýµ"J$œ"Zþõõewì—Šõtf&EŠªç<ùÞ„…Ð\2#5é]‹[pòº¾|+üÍ¢h/á÷eÜ*!… åFÌr’#çÃ⾜]ýÌðéÝÇHÌaF"…´°sö4#–]P$ß®0V!¹;ä™­& ŸÎÚ™,PùFrrRG2 6Íç\õv*½ ¤nš3ùäÁò]:ïöûݾRg6¨§ŸR³%|0²h@L²„˜`VS³|;¢›^)ß-¦Go±qts¹õ¯ŽN‚Viüc2ä¶¿‡ŸJ0=V·¢ˆ… ígQß~–]¥qöôͤ®ÕZ—šÄ\Òõy½ï£}Þ·yBæÏF#ù¾Kç p–W'‰zÌ,ûíCšIG›÷—õöþ÷• „£Zqa“rF¤õ—}HI£ˆŸ½oy`û¼q½oqìN¡"Ýþ¡\‰Bœ&D–‹×~ 'ˆt÷þðy˜c1öõù j0ŒÚ,šO²³æû‚Xûo3² ëíÏùÓz±Ù½ŒÂ ÐõGœ,_þ# Î]ŒRþÜjJ¶Ãq±}ZìŸN%¤Íù|²hh>É®/ØôëÉÓî—ÑËÕ>Bb„i÷¯Qåò*ð‹œµ,PÃ…±Ç‡3»²ë@•E=U–eªÜüêŸo}<;Ç£ß)wu_ññÓb?U6Œ”$¤ÿ§rår¹Ye<ß—' ë¼¶0+x„’ÜPû)”¬šÙ-Gͪ¹Q…ð¢ÔNŠR…óž Ù€-®öÏ÷]·™V, ‚VLÓvÞÛoÔL‹¬$ûíƒþ0ÎU™‘¡އ´_tö»÷ãÓ¢OËÿí0âÎÒõL„Œ‚PšIì3·@&oõQÍ'OÚaõ;Çî—öX¡Z oÁ€€4¨ ÚEzccBC=?™Û|›CÞá<^¨¶KìEÎR0¿³i h¹œ’h(l:¤âÏW’‹›¸^$rÚÂj&Ã,«ÕÝ“1ýd4«‰`ò|﨩^Ë2eõ¬Â5Û”Ã0œŽŽÝ¼ÿÞÝv~Ø-?wÇ;‹xqÉÿ’‰Q«ç™DC·eYúuʉà®*’ÿýíJxßž*ð½¯G{¤ú¡€°ÊÐvõmgYã Õ[™„o£ç,eåDÎ(«iHêoêÑĬÈÁEexÖjiæ7d=As//g\CÕÍzÛÇK9ñJN£—+m´³èFW£„ÃÅ Øš8 ÞÔZ ÉFãW“mËH³Ãr·=ÔA,„‰X¾?Ï8JuïROHI‚D,GcM BˆRlh>‹úæ³ì†¾,ßö»ÿnÝyRûã)µMœ£º¡ŸHrÒÕDÆ N±¤Š4TjTL4XL9ëj¢B0¢ð¿V¤† •]úg:G×G Â"TS½é_N/ÃdÐäæcÑeÀ•Cö„Q!˲ßþÉ¿=žõþƒ³“¦8¢åjÈ&0l$&âÉ[ûÁ: KJдèsN¼=-ŽÍìã«IˆYÔCdÙ5ƒ?º8d•c5-Fv“MÆ1uw|ð×_-¶/ó×ݶéø£á…2˜OݱëKÜ>2k0TYiàË¢ž/Ë~ûGþj* ~\éæïëT&vºØš>vßv. ûuEO5™¢*7­’êõ~§cZ¿öñéÉÇtùÑ¡ñO΄5û:‹zÂ,Ëw¾»çݯó'¿‘'âJêYýÚ¡ùOÛ[Ç81!Ó÷a›Ýòs}êMŠ51ÒënÿyÞ{ǺýϨœŸoåA-DÝÏ2ùŽ%ú²ÔQüí_ûؽ¾mÇ®`’ÒM‘y-[ý­‰?Î?É Ðþ_ëüÊ¿$‚j¨WõYv¹óà˜EQ0T/…$ÅøR»F b¾È*Ä7j«Þ´Ö6»åb³þW÷ô-T3SEäáW«×YJ@ˆé9§ YÁ&èpÎùãºãPó­ëötIj¯‚d·÷ÊÍ–]•ÐI9ìô<ñö®9 :ºä>#4 H+ã S„c‘þé‘Ã)(‚¯8ÎÊ©Þßúåz4ìWf‘׫Ú-Ñ0E>g³R˜ƒ5± ( âÝl­uª±”êŸG3D“¢·Ô6Äg,7ën{¼#ôVŠaÀg:ks™› æî %-÷q­&Ç?î¥zµZ7ÂHt2ƒ»8½‹1÷»Réâ§z%”Œ¨Õü SºÕC§\œ½…ð¼Û¿þð]ŽgçœQ$ I­· »”Œ(za¹H!²bÕzÏíñ¬,…~üü‰J¼ŠNA. ÔPj(­!l..ááâ¬Z/`î®\®Ûm·É[ˆÉsàTbBÏrÒô^åýn3Q¸ïµ“÷·¤#þõkþÒÀ Ãçû«} jf Тå|åw{Ýú©­‹m¬qeI]YP…¨€ãU?pßד/CõWÇtá9döw¢íqJ¦Š!{§o/‚ƒ¹8©¦L³ö@×1EÑSÓ r—?šª(¤B–P(@PóF*@7,×å~qXýˆå<ŽóÃñ}¤>zÕ&ÆgΗ$êy²ì.žŸ e5Ißúîåe½}™V!ã!ÈÄv{[¡#¦<ªj±‹»gMo-4Ãòw˜&ô8_vø“Cm'cÊ‹ñ„0›y úš¯·ß¶ƒm»t?(O½§í¡K^"J™ë‡wh LIÖ3U[_ýå»ÒLVŒXš,êi²ìò¼¢Õ Õ›©~i)Â7}”/›÷Ö…,ž ¹”›¾¸ÒŠ<H”2 [˜¨:Qîô\PúÁšzB ’zŠú…zBñ Õ> ,ðýy×M‹L—ôCÐ^¡Œ]+À™äŸs®¼–Ú#‹ãåM:Æ™*.ˆX(§5¯‡Ú•x¾uc‰xé¶Ý¾Oâó#Éëaö²ª[&3b.ßžéî˜Õ3ÏÕ8-Œn]YÊFîã+FH(8 ý’DH’]ƒ_êñØo¼ó¸þ¨”ŠÔÎí tÏLäR xgr,L©š)ÔEÁã2M‰8v« —‰vˆƒRι´ê?žH–µ€Ä@”E=Q–]PÌØÝUÒkê+Gm=56Q¹*¿}czô¡;½Ž‹Ñ8áÈ¿[‘¡¨èYž§$ê!³ì 2³¬¦AI#åð˺O:Ð>}b-*Ä.Šæ^]÷…¨ K¢Îgñ¬V¼4hVSÂ|w$|ƒjžfO&Þ•AA# ÇO”"~mÞþ¹˜±qWFLsÚFw¨8±S^f€•ýVò×î¸Ú=Æ_¢²Ý÷@œ‰G@PÎëÍÓH XŽÉ1¢bh’š›;Uõ¢E-²ÓU!åµèžçýÿn/9ÕDDòÀ[’‹€ÝæXMˆÑRÎËÅóónӜގ#ª!DC ,B¸%`cY÷„Åœ‘ªc&{œ `…h5)Ðá6ëc7„ú?T[ LŠ çIY44d•¦›«]=ç* [0Œ¶-X¨ÀuÛ}µõ¦{š÷)¡»×n{|4Gx&É¢ž$ËÎʭߨîÕøgóþõ¹À‡7Ï½Ž•jHˆå|J£÷r6Ñ›+y(r”ÊôÛ‰×År¿k¬7tÉS³. ©1Òk s{ùËhúõï>û‘¸€º‰D=÷£xPèèJ¨†NW¾þó­WóE"ˆEÍ­Äxéã¶žTQoð,wïý¦}âMrü^±Ý§Ýu¾G‘Ú÷ƈ>Êã¤qÏ–½éÖøãV™TÆÏ½;v¶"Ö˜gíéåyzýÕm"I«ÏZºq©¾UãD&Ñz‹M¦›Ê!ÑTó«>žïX¤iÆ‘¼PVÛµ‹©ù¨¦Œµ­¯‰“ÙB9ú%oò¦JNæRÑ{¬CEí&'C)u'ÝOô¶q¤ê ¨ rs®žâ“¸GÂXP‘Z8Í…XÔXH¢Dzu=àN +¨d—Öêâë§¶ßRHÜ‹u.$Éë-õÀÔº™Jxq¥ö[Jl¦NoïŒÄ7L¿ùšÄuiºíÓüùé0=ƒC( l@®t†c\Ë p‹„s—^TÏOpø #Њ(‡´ݦw7:hÆi¡ñd$ã#+ *#øMŽÖ® 1¯åˆ0‚‘Bo`ÌëíçŸk6×m¬ })“¡äû}¼P·ï¶Ë‘ùäwýs %²(‹z¢,;#úQ;¬/õÕ‹É TMîårÒ«Ú/ý]—C·_/6ëÃ)—QÖýhÙrž˜œi5RÞHfsb˜‘{Ì9›ÚçNìJV.Í1àñÛ î¡Vu8´20dQÏd×dìÛƒ‘©â·gÂÀú"S¯gaPÝÝ‘kEK°)|Êèeû6‘²ˆ‘Ü0nïórz—Úb?´]Çɲš‚z”É4“Qîˆâ½øÉ&A(%#H²TZp}|]¼ýN²ïN¹Êg«IqþìQrÚ¶}©,b¬¦‰@K(Ž,—…P9\k åäþT3íÅ=ÂÑ™Í%ëÅÐ8׊¡ô›´TwgV˜X0‹Œ2­&BÊ÷齈o*(ßLª_¸Î¢¾ù,»¸Y8öûð¶SåãîK·=~PaÉZ0ÁHHUÞ÷å…¾r’¢¬2 Qa®²|lí¸ Â6;—>°0FnGuÆVJ¡ÄÅrB{«¯N•‹ó$"hbv½›ü^¦öåëÛº•ÄÞ@ Ëð¬8¬ ÔTœF`¼(c€žÁ óï€jª¬ôߟê™ì»ÿyïw‹Ã5ƒ‘9,êÄLÁŒ…«v¥›˜>·±D…#/ñÛÿaí¤=Ã!u@º‘Wý`8Þ=Ïaô®Š*…l¾,6/ûõöéV.õ° |éÿϰû8þz¬i«f›Xˆ ̃¨ ¦}h/37£ßþ™¿zö.}߯Ÿ¿¦/|¹íí~íæÿ÷ügÿm'؈OÔ]6TÆn·U¯Q YQÃ÷¸Ô,+b!C‰,šN²¼Dô›†ºc#A&š-ÑT_%YÔÓ$Ù-šáÅ6nMÐL † ’žéî`»ø’‚£¸D̨ #‰ÒÓ‡ýýMwìæÝÓú8uÆðLœÃR¦šþÒ|l<¶\©˜8±(§±&Ü0‚ÑÂù Òí£ áˆˆêß­§lÌs=TWìx)l.„ d5wDî‡z”…2CJëqý½ÿ—kïåƒûÊY~–%´Š úÁì«®äêšýÑŒ,–×E¥Ó«$¯’“*Õan¦ÙŒ‚çßw»>³5’xâsÌx_¯€¤ûÊT"3ws¶"‘q«N ,ªbVTë…zr3õ/̈’ ðûã{Êqš?ùÛÇh óøe Žß>¤™ä…êOË–_—›\:ñúÓ¿ê²–{¦®+þöAÍœ©¥Û?g}ü'=|ô1ÉÇ1½qß›×ã/·ª'Û„ŒÓ¡ÝIäÙE{’r½ñÕ?ßöÅHÃDQ³(ä®éFA½riu¯\EøÊ„èý`µo³( ^TØ™Œ“+7ø_JYŸgÙ¸§lD>o¬7Oµï3T[LçL^ooÝò¸»õÒøÿ¿ö»¤[¥¹Ö‡åfwxßwÿ×~½Ø¾lºÿz]l6ÿÙkjö¶}i]?@Ô"ðÇ¿š• •a¡K¢AI– ƒÿ‡½«ÝmI¶¯2/!vÇùiÉö ¾ÖXN‚ý%4É2ÙQ³‹·º)Y~ú Ò.oiƒ‹Å}Û†~0ÐI³ºêÔëÄ>F¦#·SS®jáÞWÐÆ®Y¸.Ù§S6T®HQ]”šd©»í,¨æSÞ¤mKÎzš[çþAÎ!`Ro2wÆzµd Hg\ö-ù8 =μâáé ÏñVŒ¯)=²ß9ñ3Þ<Ö>\û®s¡µå^ý&J|¹£`ŸH¾‘D[€ŒŒ”Íø§®'0ϾFˆ5ž+ZŒÇ4ícd žÚ÷ÆF€ÇÖOÏäéRxƒèDïÍQ=D›9*# ÊDS˜@÷¦ps>W¼&9G ß\öñÞOeøa,Ÿ=7} Ä»qLQˆF®¤ì Åw?÷ÐÑ¸Ò ùþùæ©»Ä3-ͱ€Ž ©xm75Î1ûgn€ˆÙF®#µ8V%T²T0Q&ÚN]N.pí#§GD",‡S;a{E¦"™ …@~…,â-¬k¸§X‹ò,D—Bä)ÔÔ™r…Wà¹b±Oì£q09D:Õ™>Э?,©‹–=LÌ#GÃ!<ߎY+Ç©\`<2½e•¸¡w5J½|±!Þ’”ä#ÌmW‹÷¶¥K1]£F„MŸ4ÚaÂ|%xØ 1 Ñpb`Å Ð9×–6gƒtQ+ïQ:22cØ ¨o}}C•í[¨;H„Ö¤otˆè±t}¥6u÷×¶"¨Rb=Dé/¦ 73ÎqG_sï¹KÀ©™ÍØGë{r ûôJ¶fE°¼ål±€&£à9útøúwôöû¢}8ibëÒžýb «ß,m&?BZ(gšü¤rOq.Üv19”2¬;#$9uh¦¢hå<’CZàœëP™þA8”…­¨027>=–¹pG-$TºÐ'½Ÿ»`±|\iœÚ\(f|/Dçϳê ^÷BLKüåRl5Aèh½î€¸UóFxÔñ¤¥©LøìŽNs¦§œìƒ1ÛäHBçÌ6 LjòWO²Å0bnQì÷çõgs[ Ôó'¢Ce´ìanú¢!ç’£™ ™UÇÖG(&8€H8ÎXOã|lê ÂÝÒ@ô1!T¯0ÀèÑ( h2LÕff"Õ,[ò5)CJ$º'VïFò;jy »»Û¶KoÒ7Å–PñAéÈ¥ï£u6Z 0ìâz>ƒq;ɼÔ)ÂàŒoûè¬'ÈëŽR3X®¡"@ƒÌSI´ôR©ç¹ZhÔ~qø Bk—;š5Æz¤ø=3Î-¢)WH ~ö0^€/âÖa5ˆ€ª9;õ48ý3r¦4RÔÿ`x0™F¤.¹¢ÖtÉqD!â¤)ÁŽ–Ðû“Ÿ•z>ÿÌïO¶¡v¿=˜ÞÅIgVçýöV¦"G‰'R¹4nï!ÿîëBGBOiÒch(=†§æÝýwœÛqt|øùçÏ]”ðáÁñч'/ŸOoõï]¶¦Üsg×¶o'¦ëö}Í>’ûnñÝo”Ò€exû¡ËÊHýðÑ—õè48c$QeCåŠKâý¶,“OExƒQþAƒŒ¾xâÄ€œ@¸2`|Y þó\hm¹W¿ ¦óþ$ÚÒ8¨æÜÔõæÙ!*dž+ZŒÇ¤„é©iûÎiÝ\~ WCÀ(‹ë&0°Ú8DåË> Þû© ?Œå³ç¦ eè‘“(Kõ‘Oì°€ºK¼G¨9R C‹P]Žç €ˆÙF®#µ8V%T²ÀŒ~èd V.pí#ƒŒ5èáàô5uˆ ¾B‰5â¡¶<• µñˆ<µÓ!¼Ï‹}bƒÉ©@úÕ} [þXR-{˜˜G/›Ñð|;f­§rñÈô–a”¼†bוñ•£/Ö#Ä[’’|„n÷¶Ýy}@Ìî—'Gy#xÞž7‚çày#xÞž7‚çày#xÞÃ÷pë'ïáÎ+°ó ì¼;¯ÀÎ+°ó ì$¦‚°Åv"КÛ&rOq.ÜøØ2¬;#&©ÅÒ o8Äeˆ}‘>(ãœHY"*C8Pf ™ ¥FrÁ>bù¸Ò87¬C1ã{!z)Ä€xÝ 1mzÖÖJ]J–pI!° tõbA”ËP4å_à Èp—ìƒ1黥¡sf…pÚnõ$[ #æÅ~~JÏ  XBgù¿vˆ£ê… 9Tl…b©÷Ü ÃØˆÏ£Ø‡Ã"…P”îÞèçÓá›hÐ(zÅF¸(H–c£õ5ÊjØô‚PÎúÕ¬—ÀoåÇSçxC ¢'æö¶(pÈ„øB|~#U)•±‚cG›sâ‚ûØ€˜âÂT o–? áôN1DîÒ£àÃeí¸ „=¹× ÿØ#Åwa}552ñ¶HM€ÙɨÌ+ç™922Þëë!!H4VB¼ëý™5ŽëôxnŒõÃJ‚ôHÆçDòÝúŠ7—É*tšÌiÁ}„8“o–Î\è„|IgaÖtZ>—ò·z>ºÉN~ý{ça\ˆFÒS–N¸ AOBÅgYèÑ$'ýßé%)97hII€Ë•”·,¸µa RãËiÚ]émÚ8kTV=^.°‹…yß×/ûJ‡‰B8w½lŒ»ë&¶ôåH*C9ôÚ£XË.X‘,5–ŒÉ9¨#äc¦Š¦€ `! `¼Fb¥Ï{[Ì׬50¨¥¤²1„ÍhÓC°Û]ƆȲEÐ>FOhÈu0¡™}¤Ç8”Å‘j[BB çLæI¼\WÈW$$“P@Ì7|zÿá§Ïì*ò<éœ 1u'«¼]ìiÏÎgû6º$½‘U=<ãûüþãûχõƒÿ3ûô’¹vôÇì9Vš®ÛcfÚ,Ü󕾜¹ï»×W«v¾ÚT4T|÷¢B4ÌÜ‚IÐcéúJU¡å'w6ýf•uÎEXú¾ÿ,°ªä±×ëãËôfáÙ]u"üÌY!_ö U¶oõ˜ Ô>^%$ðÕˆòîóZL×|1¹™qŽûø…¢Âʪ¼;¬L-BêÏ…š²ôHV³Ú9&•ä…Ô³‚S¹<÷UºÝ»Ÿ€Tê/Ý´c[8Î|?aÉ ªaÜ̧§¯?”ÕÜvŽÎewý÷™ÔX‘CâS¯bý¸©FýIGfðeÒ²êÞ6ȃÔ*@í¡rE‚ÏÁAê5ŸŠðÿ¼`ª™#,”0çØT^I“:%À(¹Ë®L0¦ÉãT€gì£õ=¡+ß¹ÐÚrB©È›¨(ÕOωË%DÀ)™ýUî`³ã; ^ã¥p?6A•é1C4¢Ii“©Õ Ãk%l¸Q‡j&À”:gã æxf×¶¢v(Nl>-£]FmÕB=ËÂOy®h1ú**…èk·[Ú‡*3~{Ù†=. ² A- Ð/\ ‘Çp£ƒ½2¾rôÅzð"ƒæÏ(—ò†|?XZóÑ䵉‹Âûf À ¸K1[ÀÏñòQö…}RÊtõp¦àïM–ŒªaÃr¾×‘”ä#N}ïU·„ÂÑÑFªMeùŒ!dÉRÁ½”ƒc‰p‚ÄœdÅå 6[B jîS' Ì´¥÷Îë횊 ½ò„•‡Ÿúœ%•VN P›åÇTLïz>KŽå†¢ØSìyY²ÂΑ,‡Ú~–Ûß#ˆÝÄÖ¡«ŸfÍQE„¡ôÔuù”¦:ˆDw–}Ýk+—L [½ Ž$7ˆ¢¼š º´s– × (÷ÑYº(¹£Yc¬ ÆðÒåã-;gœ"’_°@æÎ”Fªä8ô0ªDI‹r‰™‰T³lqΦ ÉyME­é0–~BØ­ÆkœšZÃ!.Cì תèP¹J "1è£u6ZÂyFŽöüå­Œ+¤¹>J•‰wO…̪cë#@b"¶C±¼Ld·Ž Ú÷Ü CXˆ©?"¦ÅHË/Ä´0ç£ÁÏè%n T©eÙ ?«OÃd€ sfœ[DS®pœ‘F5h˜Šå®é1Î…Û%Ôƒ¸Ô…‚é^ª;^® Bn3Ä«[­éƒd8Ê1 ~¯ÍÁ¤ƒ÷ÇG'úùô÷K•bB³êXâ2ŒZe§ Ñþ°¥‡ˆv¦šx[ìíLôÛ”å‘NbE[ªxŒ;z&ÒiŽ>þü÷÷;M_;š‰ë„ì±’/\gŸÆ7 Bëë$Vò—>~úUO0¡z])Á=¾ ÓTßø_¬ZúÁÿ¡ßh˜"êÓ{ö;X²Œôs{ÛG ý[Dá~2!âY´ZÑrcl´¾þQS&ÿ/™ÏTxH¾[_ñ&=?]˜5–cÍsy€ta}55’È=³+€ÜëoÈ÷鑜ÜG€'c Í©ìUB¼ëý™5ŽëôxfŽŒŒnÆúz舥‡4z !_"—ÆÑ¤3«äF¬"8øpòëßéxêo¨B Ô|¸ Ñ@äD¢G-ÀU©yÒUO.APå—ôçS’s0·>«`E@7. #fmÖéA´¼†y6cqЦЦŠN Ì*I)•±ˆ»- –Zx³,øb-Ži¬JKû"Ë‚‚ÖŽ íy¸8ÙÚ0$±ãû3éÑ4äp*Œp>XÆ&É$ésºqe„„s¤Ç8Ôî“¶]®= Á‰Ü¤.0Bš¢Dw$zHFG^ßzJü¨°ÎGW¦·gý åDŒ³&À€é:€é½N¸ 0§âiM‘Þl×/’ÃÐ<\•hÙ „  ª8¥ƒÈ#[‚(Ð`„£1ìÏŸŽ>þsÊñ#à4ÝÁ´å%síèÙÈsÿ»m?ü:wxüûw~ß=¥0‰c£¿Nr¼QJ¶Ç”å7/L\ïæ¿î`Ù÷?é&óý‘øª~Y G!iù©™b¨6ãkª¨Ò‚®É?÷œ #¶¾ÈAÖ}ÕtW¯€-žžµ6F¼õ5’Z†F;`¹>@)ë1ÜÁØÆ!9#5ÉëÈ0¥tdty—‚BfP gQˆ8`âÈÑvSã³5YÔkÏø&À¥k¨\‘`‘€k`€ŠOe?ÊÊ]ô²Mí8„í™ ÇŽ­¯q64:;u=@À“|îêÈ·—%ϵ¦ÁˆF(Åvê‹ÐȘrD`Ý~,_pGöqÕN£íp JC)éÊøÊÑë ¬¨ÔGl£RƒB–¨ˆ8S‡£a(žÖ½Î¸ì[òufÍ[ †eãÇÏ97} Àš.L97œ‹°¸&*  +^“œ{|F§µ\˜ñ{ÛÒ¥˜®ÁRGŸ±Ö÷cax û‹}bƒIæB!P…ÔÀrQØþ Ì7ý©½^”¡Š¹ÐÚr0`•` LõO;Ä ]U/õ¼ÿí:R«Œ é1ŽÝÔ݇‰•|ŽˆO-ìŸR5}¼Ù¢K!kê%æ/;¿ôëBããc©¤ÒÖYAN稒ùßÞÊ*¼ø¬ØŠÂÿC2‹ëá¨y&@.(}¦Aã¢#Y Ɖ uG]‘톢Ø ’^v»µ#Ù›µ•U‘ ÂCKég¿ýòäY~rtqP鯞d‹ƒHg=iLƒ*~{Á^¥oQâäÀ1„:•É ”ˆ?ÿô99ÿߌ:ðfÙëH&ôH‰­®ì«øádR9 %±_»3¤GGáÝÑÁgþÝå4=Œ†0ôé1Ø CL¡sé1<Øôbƒàªì!¾›Þ¥‡QÔf)Qãë"=Œp<€!ØÃ €ED ð,"ÀÝ4|‘ƒôwÓÜM{xjÞÝOc à¦J“Ê!Èíü j¬r.7ÑЈwÃ;w9û€Ê™€I„d>bç—ŽNŽþù÷þøÖ/«aFº* Tpè‘p,鑆3Ðöþã®÷©K•}mý¾>CMFþå¸G¿ô6:DäÿØ;×ÞÈqcaÿ¡c,/ü¸™ rØì vöàÅûIP«Ù-­uQ$µÇ`þû©Ç3%¹){Ûd6Ût°%êaU±xIÝ”9©.A_Ñ|)öî Ó¦°HJÌ5ïÿ'_KµÆàý/ßH•Óš«t_¢ìôdo^‡ï7¹X}<„ ZTŠÑLHe “<s޵µú¼Šž(%%³÷Ž·D ø´øÝ.ŒÕBhFg[oÇ>ËÇ4›—ìÉPlT*”˯7 9a•&8D4ãPÁÙÊj!?–Íi]»ôSÙ£¦ç´´kLj¦†ËõIªÜ°¢@zT -˜”Œª&¢Y5•QÕyÖ¤gýS—wHº»7!X߸´Œ|iÕñ©ñÛ”ÕB/_‚wº½•ƒÛ‡q0E ¸Pä+_ÜÖë/µK‡ê4ižå…{f«TPJP“œEF1Š:Ë•0‘vêõ4¯ï‹ÿV÷…D3©Ó‘3mièèíÎ 2Žh¨Âr)åbM[íúKmŠÛ¯åUéš1íúöönÓe (%•ŠKLXAãÜhÜX‹F0Í/`¹åVC`/3oŽt!—0)Lƒ` 9¾`Ñéð—úiq!Í‹¬i\µí ¦XÎ…d’)Oï0ù1©l顯@{W¹c6ºtO»>ºõxÀ ) 0iÌB¢Df¨…–þJç%A­Ótíî7—¡å±MžG@Tge³Mb$h…JÎøâQiɬ|ŒD*àšÛKn þZ¾i!îË5L #4 "š)¨ì’E¦ ?Ä U¾i*š•S™WyB7i“ßN;qþ[ª_ß…†Ö†+Hô˜ßãÈ¥R†+º'èý?>ø  ã ’ãü»¬bÛ‰GÍ È…z`ˆ‡ÓxCÕl&¡0_=éÔœÔLAÀ´YPTÆ(E0½øíâÒþ¶û¶ºti7ötáÂènÇô|Õ__¸w¸+9*K²ÍE ²ÏÿNw]š{»>iŽ`ä÷_XÔ™ D4#PAØ•cué÷m5µÀ}t`Éß²Ð4@é.”ö·.úàªCÚ»cÌñ„!\̶?ÞuA‚½ŽMÇSw)±6çp ç3R˜¤NÊÂÁÜè/Ót‹2õ4­tìÞ»Êeƒ PðW½õËšôéÏ"¥² µâ_ n? RZdˆ”ŒÔÈÍ……S·y»w´¦ÇNb—I·»Ý®K†¡¶ß¿ÆóØNÆ…0¸€eV[À œ5ÉÏo¤fm“ôú·ÌD=£Ç쟉¢¢™„ÊVÍkÑZ0Ü C!4ÕƒÜ2ËÈŒà ¥!¨)ÀðÄi?ÅPÊJ«ŒfÕbÒQ. n§°£êAJ(©z%˜U̘ÅJƲߧ]Öwâ¯*wäÜ_rá§ß½ÿùÃ{¿ƒ¸0Ì÷_áy\­ŒJRrnÑZf)¹eˆ¸"ä_À꩘a @­ˆ~ùûõË´a¨—úû¹C")aì³&l(üòþ‡¿þý}x‚dN¡å©\/æ÷¯yÛBçǾ]pK|,Û-Iz: µ&¸‰Æ€6Ò¨…!„PŒX"t½Ëö¡!ŽnÜB`KÅà›T4CPÙ "Ïû}xŒ)ká1ú² ñq2FxŒ!†ðüHú1Hº@A:À[óEˆåGzfÕq~ ¯9L i%P´Š£ëÉ{½T–h1~-¾6B#hË_Õݸ† ˆoÏ‚'ÞõP$šÅðˆ)£ìÊF(…’SÌH›mÆŸ“û×D%Í*©ŒªìÚj#ú…Ï¿Âj°b±ôBX#9,ý+¬¶ ø¢Œ}—'O\›Ì7ÍJE³J*[œ?vo«q¸®þyr'wUgyßI—yñ6$”®Êft}“UÉè^ÞW%lñáD‹úý•E ÀÔ¢³Ù·c»;]Zš?ôùé±m•£üw"óÊãè†1mÚôè×—ùýÆÌ!™ÿÝÖò,£P—R­8gèéâi”´Ô\£ËDVkÌR/—íæO®oÓ¼íîÒaì]V§÷…Hò<(í4÷·ÿ •AQÆöÚ5ÓK4stý\Eƒz†`áã#¶ =~*»¯L±ÔŸð,¤Eâ(BÄ“˺«Òª··"0aKeh”ÌÂÅ7¹¨h梲 .b§8ËÚ^6U\Æ!NËóèÀB2ÑœHóôÔ]–_O[ôËæÐ&E$Ɖ+¤#¬`áH¯‡¶`osá )˜Õ–sͤzñö©wËF·O¥«öê®ô,ùèºËÒô¼W&|ÒùÃfhÚh‹’)V "Ÿ"¥ÖÖ ®9Õg‡7ËœËæ OT!s(+G8BL×—u9–7./íÚvÆ>‹Ë_óLP6¿”(–tƒY扲]¶O˽kÆòPº>è$A«Ý0dÇð•ŒÆe j–ðõ¶Yû©žDÈÝŽ®ʶ ‰B<”ç¡1Â;†V XpîÏŒÌóHHâˆ×àî!ý¼ð´'Sj‹$©„æ ½•"üt„âZk ™Vä‹w‰~Ën22¶§b’ÍõK M#Ái¢©Q&ÚG C3mHZ“âD1P¤µ) ð“uÔ$Õæß1]‡¤Beœqð,Œ+m ¨M YÆCv±FÇ`™h­±Gø˜)‡ m‘â‰Bh§"†Q¤æ…åL"(øò]¨ºÍ¯ÓiEQ< ¥Ëú!¢åq纛t»pÏ@(G蕦u5û´*—΋@Yø‰†á´ëú6wÃI`GMk©æ-¥Á«sàä²MSÄZbIp­QÖ]ÛÓ€*ÇohÍnOcwÉÒÀq|7ôpÝÕ…ðµß˃Ýâ•]0Ñc€'CEÖ/dgUÀÐô|½ýwu/^Úý]“Õer›÷öìA8 ú´Ù5m_·§!õáÃÑÍÁëò“K!±ü@ÐßçIÏkö‡´iÚŠj¶!:·ÎF‹¤Ó¸½Â½ˆÈ^áMµ‹…5·÷ùkØÄRáèÃØˆÖüa¹àF c 4úež‰_Т93Vj#˜æÅŸ¼ÿ=»vóÔ~V߇‹ G«´ÖŒk.™|Éâ’MÈ/ôÚGºP«» ºÀåþž(¿móMG7ÍÛfÌÊ/DCh×L» ûÐô$_Šà8<ÏQÄJÖ•óûŸ\íš1›û2!-DÆa1X‡4ÕqHf%”÷.|å¦M tþ`]CíºOGb7œuÚÞ‘gwÇ(è«Ï†¨†ãá½Eƒ'0Iš–M9¦i`Œñ®si^¸üšôªÂ>\LýSÀw&rm5CÅ4p£_kcBø–ØÝŽþó©î4áÎë¦8W3ÄC×ET„ç!Á‚f­ˆ n­”VêÅËLŒM_?4 mó¢jg⊢¡“ÚZDmµÆ,ØAð¥5ZmJÖ¢yñÒn)˜@'‘VŠÎ2É wwÍ޼ƒ¿xsÊ·2†·Ì¡\C'VÓ%µ}0ŒªlN·Á@h…!­q¨Xä‰X~ô‹—vøçÃþ,¹°ežp> Ʋ‚Q ¦„`Z-€rƘxÎÜ6H_²ÖšY°šè&¢Y7•Qcô—2h;Ì•#”7º1OÔâÎÂgŸçÐJfµ¢Ö«ÊÝíP‘ŽÑúÊvâËÂnÍHTöùõî¼,l]yÊZW¤¢YØ>}"…õWú®†"ë\Ÿä݆-$gäëI'Â2%™±4Ü­2aÕÿAª ðW…Ûõîc’‡')›}™o…ñÕ¨W·qˆhÆ¡²uR»=ïcŽ…ç8œÈ„gX–¶s´ o—"»D/];$yD,‘Øeª»«ó[ycJ{WYUOÅɱËcÓö.(9 $ Å)õ]ÖÔY‡Ö¤h2LÕî¢i«cIuÃØ»¬¾"Ïc ›XXЬ9žªh‚xï±yk,wnÌ¢i,w§ÃÁõÄHÑ4á‘RÅ4|¡Š¥»SÖg»2©ã]F*²2Écja㢉ÅOeÝEÕ²†f¡v‰ÅG×Eíú¸Úö¨B¦ˆÉ2AhÖÏkPЯ~ÁÙir,c_î.- ÈvÕÅ%`uÙ÷m_6Çé—Îõc醤xÎS2«´I©‰h¦¦2Bý—r_þýƒl’zíÔY?£ÞFý_]_Þ¸ý»¶Þ•ÍŠwU6 ÔAjÏ©)§å[él’4oëšÍ€‰,í‰g£;¶ý§®$"Áæo}Ö®vé]vý³î‚s~_·âqÛyŸÛ‡×Ž_½vµ›Ü‘>ÌF¢É0ûŸ 8|Eš±¿ÍëG«wç¬SÕÏ«lZßÖŠ,ãòû—™Ç;ƒ›= šs—zÀ_ó͵OjYê׃9ôÎMG]Æ1T!/î¹Ã— ’»zy*Ï…‹þ*æ?g>Þ†)F ÀHFi5ɸ²JÐgsïÚfûS>>ýÐ*¿V*¢ZgÙƒ™Ni—Ÿ*ÜR‰H:D ÊM5‚s‹Ö2KÕ(%$“ÂÐf­¿ëè+áV¶w탼|þˆ`˜f¨)c(íêE9Vs”šžiIowìÒá®®ÝØ—yêšåÉï‘Vlñ¡6 D«&£=Šh-€'"ÆK–N†K§¿†Š`÷j”L_€üÑæ?2ŒrIÉQÂ5‰€Y¶ä’’k…¿ƒ+"œ§¯ÑÛöÍ(TöðìðÅ^<.v§²Ú_Hˆ‹rtC—å.çÊ6–¨ËP -0iТk«µàœ@ÑFÓz¹† >Ÿ/\ú”Ê„-zHíÏ‚UíX´’¡f”BJ…Ú,‹ùH ¦î†ÑÕÛm…®9gR † µïÈwd(™`–Àf…³„³Ü*Ô‚ÀMÛÒÒ¡<6Ùxê·ÖWðÄwÖŒf’I«Q>‰ŒÒ44g™ ×ʳn®&ƒW±¯[&AKª–ˆfµTöàL0\˜ÖxüþTÓ*Æ”Zvn¶é¶7®ï˽óâöÄ€RFq¥hA‰h& 2BUÕvxqa¹0Ú¢e%7žðFƒä†Ú@ä9PT­e3Œ_(®æôpµwݰ9! V"ýjoQ JQ BØeQXmWjÝûW`%ÓÓ2ZàˆÌPÀP/‡ †‚ ‚!õÐV â¸ah•æë H¤4˜µ`•Bš|ûÕøR DÃ5JZÞyèx!ùÜdÕ±/›K)»võü2ÛK)ëÔÍGÿ–m³¹¸O¯Oß÷Ö.3…EZ0e”ÕËØÖJ3Ë,mŠ’ÖY¾…ñúxÏñâ¹âÄ“ÈhA+û,Sˆë¥M¸@ÉŸQj”J AK}œû£îv~Ò5nüÖ’ù¯¯Æ!k¦´lÚÈ×ñ0ÜpRÕ¨hf¥²Ï¯s×ÿz¸_Tì®Ëqî o'†rùU—¡h ñf"#Póii.< 5PhŽ¡ÈúýÕ”ü£0˹º7ÎÕ¡í¯îϸ ‚¶®(,–~9U#ž“<,hiÕ)\Öý«™{e¶ˆËãÍŒ²ÜâêPf…¸†Ï¯rWRÖîÔ—Ò™¨ªþ±ÏrW• m2žr-Wï*×kTþà& Uûy‚†~ÅË×þÞÕí¸^7FÞ«•·Õ…K¿•ͱréà†GOÊeZYß…·íWBKCLEEs¨ìó[éù¯u¡ÕéâɬC•m~íÆ4ÛgÝèúm³Èå‹=˜`42#™¡¹N£•ÀVÓ(´Föù­ô¬"(Ô»¬HKž n+ˆ=9ÿ|5û[FKÁÀ€”ÈhŠ”=þú–qÃ"EèHý¢Ò4/²¦qUÚµCy»Q !QFY!@ÕEi¶§:¬± êÕtZk-œ¦7Sò¼Áb±4¥¤’BqÉ€Pá6•VÀ¤E\çl™5O£*ÂAQϽŒÎCIaQ¡ärÛBO{ˆ!aÆŸN†Fhf%_ )?ÅwOäóÔw¢Ý DdK¿Ñüùâ&AL™òDN‘5ûj{kS,ç²ùm¿IؤžÑ De+ y,±É±4 ÓCøíâÅà–[!Ì £và Žà¦©Úã±lŽ%´uƲbã <Ój”²9αƒy†»æ›â©Zu–÷mxo‘Fa™ÿ¨¯î³2Í>!­D»}{{}ÕK¸ ö±§{ÆU×IëK¥+p‚ÓD”•iÞ!v‰§ˆ*ùEâ«xjÔàš}zØi MÉÆác0–NÑÄRÁ㈘t(›ëM.¬Ð(9~ýU„|,D¤¤,³ ^¥=5£ëi‡g mê¢ vY¯­R çÚ Võ-zâ\¬Ôš#tNo^Bža?ºêl ÂU•ïâ—[Þ”îcºw•;fãv#†\j- ³æ_é™ËæI?ZBÍ 7¸\Ú'”ÕÀH =LÅÆJÒ%’&DêDJ‚Dr&5aÚ»ž¦ÿšvÿ¹Ûí¬Í-Zh¬¶Òr#”gbÞ(T¨…¡` % k(˜1ÆpÍ(Xï†öÔç—_£Ý6Sk×6¡ðäL-‘[…l9û=)×”GKkµ\¯¾š4Ÿ7‹_ÿÏÿè‚KŸ³4Å e%ep™·çŠ=¬‡‹[ßý…“`´P.GÁqÜJ7œ%èÙ Ä0Ò ]¦eh³„Bi…B_¨$ÛþÚõéªÎõ[LÞ`(×4öˆh& ²Ëæ¸å|;ûÊÕÇÃÀÒµ¯T4ÃP™¦ˆƒeû‰‚X¢x[$eµ±Š="Œfl¹n rtcZ´ÃH‚Öc«~8òçQ/jЊ‰Ç2»è¿¸B0 FkBAD3•]öÏ–9@ØÅö ߢÐL*àl "¤¤ `5(+¤ß?N W‹RÓl;ˆˆf"*{ÔA¬À¼KÛ•Ë­zŒKÁ47„ë+Òl§¤i"=E@“Žy‰x]oÀ¬öPs ãd/Œaˆ4’«ì®=éxß3êÛªr}èh¦õk;npi AY$e‘À¥Dó‹b’³ž¦5=|šPás¯_dl¢¿Jæ_ôel‰œ¥(¨bÚÚUÆ–JZ-ý-ê&‹ècQD”´‚k†K­ÁQÛ$¸Š¦ÕˆmAa–(‚I+á÷¶¨9Ý©åG{j4)©·ðDækÊæñV{YYhT€§²l¡U.îGÛ€0І _•Ec¬5ìQ P‚Y\ŨDqÔŒ’F!ZX þ¨ðÍ QÊ2€ËM wÆÝv.³ñ±ÈË™äÒhÁ¦ßïr¹›Ã–ðjmÀ€â”WJ´J1ÊÛ»]6Ì‹ã7Ö½ó«Äi”l¯×8ZÊ¡¸V‚ÉaÛžÆî4¦‡¶¯³qt}è5ý©‰e ®.˯³ã¥ÂÅ8véàú›ð¶ëªlœy^þ“ÎSB›¯EÞIs@©h¥˜ášQ¡¸âÌâ:¨YYM›”©ò×:Æ_þ:ËŸ÷öže鉈%ÈÆâ¬ý­5/Ë>÷,ß„`½ANc\ù´øc\haµb_UéOõCz(o³Ýö©\'\rkƒš §X#(%QÑŠ “È쪛(…œA)Ëù„Æý&KÂÁÛ0Fq¡-Q?‰9õÆ,ãÆ>˜þWL^$@µ®ž€Ú¢¦H³Œ1ñùMîÊÐÊãNô«ñºÓX  äµñ®sƒïÔ­´¬§§Êûòpبz›Go)—Y Áø’LrÎV³Á·ãcZùFmgšvº¨hÖJeŸ7žbøïê/ C­„ð·þoÓ€,ï«Y¢•Üœ¿T‰5¾Búûˆ ¥¦Ëº2¥7]u:–ͳÎ^O;£O †Ü(Ch‰h¦¥²ÏAÔXh®Qθ4T‰dÏ+H»îžì³1£v~|AWß.°òT_ùîOó­õÜù ãqﺬl6®\íOó; ‡|_‡7nŸtÍÑ+ÁHM~½gÃX%5=‰ŠfóR­¿Ûtó>ñáT‡Dü:kp•We÷Œ6„ÏŸD”V¡ÍTTö(Õ¦7¢m•6 …Ö(½“nF.Íÿ±÷nÍŽäÖ¹à/Jî@>Ú-ëH3-ÛÑÝçhæ¼t€™Ø$TÉL*Ü—þõ öÆ!ªPB±ºüö¸ô`Ug+̯Öë²V W’)#Ú¨2ï ->Ÿ»‡iyêž|8Ä?Ù°uâ&”„jNˆÏ|M´”T~f/´ÑF¾ÂÌÏYš5.¤2½é›0iÁbD„ !«ãB®ˆòÍêżyp_LG¡”à=ë‰æR*Q¼ÌkÓÀÇ)c”›¶( N'7ÜmÁ×-óôÒÅÉĘ´sc…ÝxÔ4ïÃþxíîáR4V?øg7~1Ù˜Ò†+MU¯ˆœ~VA$“Zñ¦‚©)ã7˜C`-æïC‹¼Žè!”zdÆÞSGêT“”°n=¾‘øJò>¬Mÿ>`rx~³÷AHƒ4JÆ|‰ŸÏ—6ƒÎ>·vË9Dô7:É©Rª^±øŸkÄUŒ1žêËOhþvÐÈõ»bŒh¶Äðä€bl ˆá9@ ‚¾Ä芻‡eõ¿-s°Ó #QL"{ÁTß÷š]ÉXR1"UĘU…í¹œï†ešìisc·[ÖÑ­@wçýo~šlÇ%épå‡êë 5²^,ïv››Üp±3«Bçç.£¾1œ RJ®Iß÷±†&µ¬ÎN° ØÆ¹œ±&›˜ÈŠDÑÁ®.DeÞüèºÝ´ àø}°ãòTçì5x_º>ì×å<Ý¥á ä%8ìŽË£{«B&¿‚/€PT\†ó)çÖíËDrÅ4%œ’^2]ÎmÝ‹ ¹1W°^ÚjGÞº×jó¯I¨é•4”kB¹ê?HÚkyƒÅÄÉŸNnìV7Ùà±t¹ÍîH¿»rúarÏ>†]»å9󈫛G·^q¼Ð˜„r÷ÒùùÑN~´ÁýœeuXív¸í/À‰¢œÐø¬¦DW†ʼ^¿è¹"ôãÇ&.\Àí¦)ydÉ6äñ~6|;ïÂê\·.Kè¶Éa‰œŸ£Ðå÷^64é6lÍ=‡Õv»%„åØí×÷øö‹”‰º™6uú³¾ƒŽGûÁ¥âÁêæn^æ.)8jëtm2ŸnŒ0';¸­—²^+‚¡a;µ-€ª¬ì¢iE°Á]XÊ1?È(øaÿ†p;¬~þàç=Àú °/å×Î â gë `(Z .@¢«=Ÿ‚ÿÈ,AÂX”ñe¶G?àç".Ô9b»ot\¦ÎÁj`õ c³jWhe0E:ŽÖó?zÊ"B„w3$íP ‹\¯^cwväOîL5ÀÂ:ާ¶oüØómʠú@z^n h&þÁ‡.Rq¢[»,õˆ“§¨³1»˜—‚»mpóhçpƒ ¦£TAz)UuµK=dÉŸÎâ[§ÝmËt¯±jž÷ÙBÔõ¦T^τњ)A„2Lš“› aL‹+P¯jq‡ez-ꆳóóÁ­>ÄâÞ²v»óÍȯîälíÄüìö©gyxˆÃô?ìrNö†CxϤºú¡ïß¡'F§ ÅíP3Õñ¾:B8Sx´Û‡®Š¦ÚÖ†ŠT=Ÿ—Ÿ.~XÖØaþíÿ 1Z˜ž(n”&TU!Ö•'JËomˆ™€÷@÷É/QÓóžÅw­`FókÉ—_cBˆaTÐ\ Èg{Üwvë®ÐÊ/6)UZsÝS*l&_Á¦ÒT "þ!6†¨W `êÕ_a@%ÀeòcÒÚK!Û=_Êò:´$vöGÇ?÷þ¡$*RÐr…jYýÞÏi¶ÜMîèæôLÊäL2ŠOÎÜŽÿ1¦“ˆYƒIð‚‚¦at@ë¶›"iÆr²ƒ/Ý2wã2œnÎV fÛÌ”þ¢ X ¡uL°6dö'HXëNÛAY ?2Ãb~ÌØÀ¤f Tp“!û–ãE§ÝËéåîé˜6²L8„l‘VB1!9‘ZFÕ7¯GìãéT7‡í6;t¯Gv0Û2<˜†‡4¤•¼Q¸Ûüè¶ÎF¸Ë:ùÙdöùä—šg¦Ÿ2¾üí÷à Ï_[¿9È´[ÊwÌ¡|k"ØdóÇÓ”ù‹7W´w³[c…±MÂÈ^,ê +‰þ JË0J0R4qËÊÏ4 JiÉÙ'†¬æ[ ·.Á†bL ¢A® ò†X@3"´áLÙ ÓØÔ¢4ë %½¼j¼»£üér­þËy7}y—&!š+J5‰Ý­„3!ZèUª§JÝÏ1H8>¸RQfæ"BL9Þ\ÆjP/Èø¯Óôsx™\üÃ7Í„PKíJÊ5¡\õ¿'íuÅæ¬¨Ýá¼wÝ6·"]Ä©s ^…„ÐRùç4‹÷C¤)î.¯‚Ëø*]ÐB¯3 ñ¥”×°ÛÁ„í£J ÈvK[È'û’bF´—]L„àêñ$-^¡uiÄ!c›Õ‘„hðn­rÍ©PZ0N´àMŒÍd9‰^ XžäÝ4n.üÛÖÛ0rC´´—†SÃTcc!e†|öqðŸç°¹P7‹÷!`åu%@Ñýäǽ«ÐTø"<¹KŒe`Ê[F‡ë°™—ºáÈÿ6»sXíԭ线Dål[ôS½’JS®}2@^ilä:ZÙÊÙ-Ä«¾6lg&t Z«÷!Zò_;{‰«X"W÷‘™N"“ ßS@Á-M“ëÆ$Ú9T–yzG7V×ÚH5HIØ2SAœ+€’6œWÄ…o„‘}’ùÅ0KEt ‘Ÿ÷ð M,Å‘w<…—[ÂUf¤ÊŸ2¤üíëv‹*¦®—½425-(”õRÕ¦NÞ·§N釟¤ˆí®œb(œ"„C@©pèžÒR*c¼§$ЩÚì)Ó÷aXôãþ­c]Ü“cCˆo­\™Ü.âE¨î¼.'gç.¸õèg–÷î|_›ï¨xøùg´¥°ñé=ØÕ4`)’·/Ë9tñêë¶å¸¾l3€ytó9>ŠÐî[$ÑcÿººK3nÔ@NGL“|èÜqçF´[ u:‚Œ{,V?º÷©É@X³±Fã°ßÏËêÆè÷º¿n¡~Ч²"Ai™M#ÆŽÛIÑ‚9èˆ FKþôË_~„S“yvkpÏuŒH7|G 3;;0ÙËåµÑ¯©ÇÒNñÌÉ®v¿ÚÓ¡Û‚]1Å[¡cò¬ìw—„ò—Ä¿Hj˜dFkÃz¢®÷}åWZ=ΔèžG ΧÑ÷îé˾4 ,>j»ŸËËÙsÎU†U|аŠo XM¦Æ#\+¥(7=k®¨¸Ò²gB¶Qeõ»#´§Ýúåy ¥ Wšª^)øµP‰Ê°b+[Á‰Ô”ÙyD¢2’HØ-›µˆdŒ¦Y¯û¾yh²US*HqF4w \àn¯™ÉÙ=ՃỒ5S®DK>$ŒßÈKÉ©Rª^±øŸ¿ýÀ7"#*>EDÅ·kDT—äMÿ]Á E4Á!ô°Izz8³#€Èà yÇ”^õHJn(¬ä¼¢P*Å-¯@•€2NÉg;Ù¹ós÷´¬ãkgê`Ï›Û.)Ö‡iyB::Ï$ÚY Âà)o†t,‘ tä#Ø]¹¿ÂZ‰ƒ‰'TŒq‘0%âÔà&…-CdÊiÐKÚ3¸J«Â}Á¥>™èž‘Ô(,2åÄuLŠ\ŠZæå"`ÃäìÚ=L‹E±:88CF ªä† ¾I$ùÞm§î¸Œîr}=šˆ(ïp_iéñ$L£AšcïÿôZµLF,ÐÏ{´öÂàQ"†å¬Ã­[êá=W´§º×ܾè¸áõƒTãšF3Yð‘<çÈð-R‰h88ëPyá >`Š„"æV.°²Wíä7\fR¬¼—Â’.ƒgÝ9$NÔTr ì’í. 4ÛT¯¬…~*d 4¸¯i˜‰ö+±P†û>) »x ÀrÃJìjü¢”G¬ûlH†Mødÿ>1\KE¤ŠQsý3ú+fJ7š3z=ä´¬cro`cBO» Ѷ<„?½œnVò0«±p0…ÕúÉÏûbÁ.H÷a]4<ˆ¥_†Æ‡MD|9`ñå)]›Ç¥ëE‹×GÉ¡¸(T¢Pi•äP´éÑ„gïf·ú¡{°G?½Ä7μw€ ÕÏ0<*IÔ÷)€êI< â€z†e.¡äÕÍd„+®du› €±žàœLAX- ²S·aßNPŒá™(‰gȨ”G4e —¢‚bzª˜*«ä7ÿ„öúzõÝeóîäçbÙh»Å—àïV:¯Å1Ë­„H­”a½éû^eè7×óX×ÜÂËäfX·ƒ—§n^ºÝt^‘-ŽË¼¤Ä“áìpp@”K‹¢ó~èÓrºÌ{œÎÛ¡ÛìÑuŒEÉóóå¢è°ÚíDÅÁž|°“ÿͽžÁºÄ•—™[X#aq°^5Èù² çXÎ3Øõ£¯@^Z,ÓŸínrFÞ;YÆÜTy°ëX\ë@ê±, 8\÷^$[bô–¸Þ..Cqgîrt“ .ÁKÐr›ù­æHrÅ4%œ’^2ý "ι~ÑÄõâ~öÁÛ Í~'ÒÅ&¥îº”p–Fò`¡,øßÎ[ðÞvó;B¬‡Œ`~å2v6tn»å¡+¦LÑÀ¶Ý6Žú¾ÍÖ´'ÊÀ¸‡º³³¸)ÿéŒdË­ Ôòs·ºytñ„ÖåøÊ& xñÕwZ’‚º H4Ññu2»½ þÑuKü^€^Ìmu…qzQòþâ›yYÿÃO?%‰\ÑÖ¿´Ã×Ä÷»F®í‡4ÏÛ1ˆÂ·_8±NéüÐЕÉ'|¢+E†ñY¼>º.®ènð‰Wâ„14H5ŒvËI×7~ðˆCÊz² ‹¨ù€+•JQ5¢mˆ§K;‰˜iˆšIˆiÚI8e)«»hø†}÷`§ig‡Ýn™n*LÁ”b”*"H/¥ªVÕ%JèŠomt%ïñ“KºF Þ){-‘×?ÒxúÖ.éÆ˜G0Å ß¿·J Ú°Ìa]¦n˜ü çÀîÁ£‹këNçÐ=øÉá@«¬uúWöT Þs¢)}#±ÑÅí{Ö‹Oꛯm9¥Jçå÷ëÒ~7êÝ|žüºyÉ Žpx»;‡°ÌÝèìy ]ðarpJÉ·[žK\¸W˜”u"f6· rÊ(Ñ×:{:9»Úyp—í1»»Q)¥„(£8ך2¢®‘ɯAvy|\´«³Ý6¬Ë4Ýfg˜’K%8‰íû¬ÿýtSœ\Ûé·p*ÛÙøÚVwts°S7-vÒ•HÊ]ýÑÏîO7™kb5”Q%¸Dñ’Ë·/á2}ZàS<0»ƒÝV aU†rI¨!Š÷ºÎàœñi“Œ³ÞКøe14¡â«œõDs)•øJË(7· _¡Ë÷–À‚š±2ørª[œ»‘µÂr(€uc…ñ®vºtÄhþíÁ»iŒ%|;ù=®¦ÝË’vOãWR ,¬jĦø&À‰4‚‚LÁ»DèM[jy¯h5?87ÿÛ »F”ÑÜ÷’JeˆÒ7hˆf¬§=+5„!ùµ•y«ÖEXªc"AR"%#’sÕz7°1#cËG“b™•¨dËïG»l wvs“Ÿ‘vêV5_…p7˜ÎeO5æ2µ~Ó¤cL—&„Æú UMlISï+y‰ÈØèRj2–k‡É·ŽeE9¡1(ˆ&¾ì"¸}Z‰ž+B«`S__ìÎ-yWtúå/?þç%§ûïÓå-ùëdwn"ŒŠÉ4ç¸Ï`øN“Üa™F·v—:„ÕïÎÁá<úù¯q"î¿Ü:¸¹âD ¥‘êt6‹`½›Ùj§5s¹£4¤I«ËQ@FÇ7\²àG?§‰R ^y2V÷èæð‡ThÂúÖ6þÇe=þáûç~r›Ïvú9¼L8Ã*ד1*n“>ædS#9Ñ¢–ŒËy7¹¡µœ¦vÂ;À Nní(¸ŸG÷ f½Þ@[2··aõ§ð¢nˆÓbC´0QS.©ánu“}YÎá<° !ÎËÛŒÜ 7Ì`w»ÈìÔ?¬öèpÞĺÉqyt˜oR?ÏqÆ´ ºÕ7(˜EÌ… ÖC8N`W;úå× 7þ:¾Ìöè(ŒùY•§ö—¡p,¯œÄp8w—Ñ)»ó“/0¡bVœÁÎóºëf·7"Ë$¤CI…Z´{¸¹½\L~òáÐ]‚‰ DØW“+ßXsORJ‰$*¢ÙË!LF1F`'»Æ¼gú€ÿ|‡LV;üê@I6¸¨hL¸ä+ݲáË N´ð:lîdã4xLÎù9T²så©ÓæÎã’¦êqÄ0…[o‘à%²}9ý„Ñ=cœö”.)ÿýOP£Š™Ø‹¨EW—`.srv¸a!Žì"pÀÔãRˆ  ]ËÁ“¶í£ß|zl"?å€Kw»Ã2-@aiÛÒ9j˜0º×Ðæ|mÀ¡dñYí¾—§'œÐ­ÎŽË<½t£?݈[‰xm6œÜCè–9m䇈µê†'Ó†ßY_ÊܦN¯n «BÚº™:LÝÌÃ2œ7°ë§Éú9õØ,£ë€jÈ!@—sˆ †SäG;+ºqßS‚v²[pÝy—wÒjHñC…1E…±Ùµ[ÖÑ­˜B˜ô'™ðQN?Æü`÷zŠÜi²/ݼÌ.匢·[¦G‡™‚ºÁ¿O¶ÄÀï‹)LåÊpÈ CÓ(.à ò•™ ür9þàR “¦a?‡¥±© u|¿½¨ÄŠÁöúxŸF+œbåñ%âŒ;¡Nøo€ÞÃÿöâ Œ ¢¾l"Tœìü!Å‹–ö–ûï®Àíí©Û÷`Ž¥½ƒ¨©ÐOÍÁdÍ!‘º’úÆÂ’+8AC»ß.ìÆœÂ©/k²Šíl&·§ÛÁB‰WNaX:¶=¢ Àñ²±'±H V•5®rErAÎÌAŽ¢%â•ñ5xÀ…?N  ²µ×;h„±õý¾˜õ§ö]Y”«Vaõ§d¦“•†´åš#¤,RûR FèWúì;$xÛúÝS€å'è-3 †jíjJ¹³±E7nµ*ÞÓ¼Œô][ã.p )äÛ+µ€8ßî]Í(1{€‘pÖçÙñÄ¢®–Þ5¬v;à…Õå‚b¸÷]ûè3P´ÈßÅéb퉵:ãq/HaøçZ'ÆvÑ mYyÂIßýü×{ý—[¨-ÊÕcÆð»²´õ%áw ÷€¹ãÍFÖ«¾Ó[óVTVÔ…ÝŠÑà@;Ù~²c”@‰ø+¨Q¤±qTØRgÍÁJ“úÊHü¶`WO|@x–ÆÆAà'çæÂegŠßq6_Ö—ì‚N2>­þ’ýúª9³ çÕN7âL)F©"‚ôR*^וްü”ð–ß>ÍŒ”É”kˆý@•»Úw›Sëò´Å‡ \ªÈï*k†œs) «<õ`!0­eJé×nï–£ k=òÆ×àÌo<Š¢Œ®z;ØqyºL&¬ÕÇâ`aËVªK Á°æ†úu ÝäB¸™š=Fk¦Ê0išQE!!ŒiñiTáƒ;v;;|ˆM°ó˜²<`Äl@…åÄ•Q˜EJ ÕOöyró>ÐxOn9èÊeO5†©Uû±ÐÀ_5·¸†zÈ Åò1Cº+3£QIQ ±*™&L'Wè¾iÙv¾ %¸F„¸5 —ëÓO˜±iw‡°´ü%ö/‚K&¬§‚®Õ5 È?þ!dÏ9/“jBh©ˆ,g°'÷þªùûS¡è@OöÆÒ:SÚp¥©ê‘‚Ó+Ì¢‘4„1©L™©)ãåù“›ÇÎÏ—ù帜·xÌàᢚS#b:U-%•õäyfV ¤ˆ©Ê"Y™žŽ‘‚“=mþN½@Ñ@̨!”R¢d¯ UåÐX}›r ±–Z·Ê%÷…=jIHÀ²â§ÎŽÝòÀNg ¡ï’(%/ªvKüQMÝßãÈÔiuƒÝ<¼.39‡[¶¿Ñ&%\qÍTQ4¥ŸGY~Ê(ó·Qf‚Þê'¿De2þšêÐF|óج6FNÝ3b$Œã€qãÞuËÃÃæn¨Å ¥ïYO4—R YG•Ó@MT”1ÊM…qç#Z¸ŸÚñ7Õ’y8b(ÉÙyìÖsõN<žägh âd¶¸xOï ô¾ïï×Ý)ÍT¤ÝX´|[Ê÷§ÔÀB%)Àày& ÉÒÅ>äÁ¸k $.8òU,¦‹Š`£*Ñ+ Ïá‚‘œ*!¥ê‹ÿðùqCƸLñ)‚)¾]ƒ©p¾˜bÄùC¡zvò¾ˆ¨"%`äYÝ¥Å~ÌF²^ ÅÐ9þ¡‰÷ƒvcžsÓ¼2uH§ˆ Zû¢À–´H2IC²\iD‰ò{Ž<Š<4¬ƒ|@‚By »@RíçÍ­!öƒçCËz„ëè`æ‹ùG‰äŠiJ8%½dºü¾ „sc®Ð¤ìIœRîÆ—9ÍXS4’QBr<S°i%c¹ÆƒDšO¸BÛþóÑ­“=ýäNÖÃ&®Ù*ÞêMKiŠç`×\$* 5½’†rM(Wýï7´´×²Q|Hór8:‘£ž_"ØÿŠ:ñoyRÇoëУß|äsôRWS.‹‘})ÀjD‚äÅ(œ›¿:)µ³›C<»‡4cŸ`r´©_‡§qÞkSyJÔžÕZš<,SºcõÚ—;v»—n°i­™¼1!„+A„Öš3£êêXNÛ´Ô‘Ãnä¨VÛÐaïí~JV OKÁƒÄ TRhîû6¨…onìÀÍY*&RÎËœž~ŽÉT4¨[°“ëö«áVUÎáü”›Ýjƒ£(dé` {0 uvw5‹ç¥ü–‡ÉU—ˆºì"p’™h‰^WóqåÈ–uÂúv "r8¯û†A—b€è¦’3Ë{A1£¦-í“Ãs¡´fÞ³Fê.W©ÃX\>«•¾´Ä“[c`D;Ï»ÕÙ1êM§€·îïg¿~€KðF„ž7?ºà¢8´-~;­îáµÌâçG;ùÑF"+ê;|žp»Þ€•öRpq9@ÉÂ(^┢JÖc=³ ßâceª"Üøƒ­9“|÷¹BXŽÐYz ¾v‡t¿=!Ü\ß¾‰ÆY¨˜Îm¿Ž •UDB4¨í. ².» Óº<¡%éë55 €¯kÑþòzî§e†PÖKHR‚ÕË Ì[Æ.HxeÅ ˆ»“]÷s|¤Ý Žó"Õp6„–a/bÁÈ °z"M1² ,ÑÜ¡…´];Ám!E…{&ÅÀuŽEþË?niÁ^žƒ!åÆñ“^ÌnÂ5èÜòœ>Âß’,«ì4 ÷ÃÃÖƒásgáà‡ñNdà÷DfîÂÚüªþÜe"ã[\'Ý0ùáC7;»¶wŠŒ^bΣ%·Ázúê“Æ` ´ÊÑGՔݢãÂ{´¨ $ܦø –¯ U A$Ä+–q4{[^…ám,©C¹r…xB/Ú±¢Z‘Mþðg‰r à9P¯ƒ¼E!'WÚ¯ˆü–xg‰p’õ@-çõ=„‰ðö˜*ÞËê][⨡SDƒ_/Å_êóÑ­ÁvJ߯H¨ ¦£TAz)U}¿t-‚ÊŸÂò[aE›ï 3>øÓn¯«láerGŠëåB 3ÏÇóüéÓ,@L*B‘°ÍgxZf˜ˆ’ˆtÊ›i-z&z#ˆì5)l¯þŠ£uŒÍ­œý?ÛOþUz4ž–ÍÇ8&wøâ\µ&ŠµÌ°u—iá¤~1DF ¡”%{e¨¢¼ˆõë=sKµZj1¶‰‰u(ùònûã2œ·Ÿü¼ÿ!Ò à6¬Ë4ýäþíBeÂò~W‰/=‘Ýæ¦×Èÿà÷‡)ÀQ™6D >gµ¹Ü>]Fõ󇔄(´‹õ„áç<¯Î‡Kœ’¹Ÿ»óUØ¢®¤ûîÌTiƒwvÍî¬;ŸF ¤ðe[ˆ›Þ@ºÈUd‘{î^ÐŽë׉‡ƒ²~è6,Á WÅÆAx¯¶Ë‡õ[°Ã‡[BJµšHc—¬õÇcÆÑ‚–¾}*†o‡=¯tw²/n*ÁßDSIiLaq“zL~šR¢?íÿÌà’eû&0h…)ÄJœøAjTkT‹“©xO³“CTü¤PI4ˆÌP #Ó5L8\½Ý³%Ì÷tjõd=ë1µðg`^ËÏ~öÁýä†óºùeºWÜÀ™ àB÷Í}¾Âèž1N{Ê—uuC3Æ(Å*-ï?Ži—aá¤^»ÞsÌYâD¿ÀÎ,l<ýNÚÑ@\ÌtBdcÅÂþ³]±zAi‰š\XºÙ=Äp¶[ý¼òUm—€7ÀNñ iH––Rd‡ß2Ô]†9,sX—i»‘Ž\öT3a‘Zµ:º›Í”jäm8#1ï ‘Ô–üê•ñXÝæ«§.qa’Ù^GPŠ"µ–„ Í¿y{ÝnZ†•ÞºK¢¥ò0…V=·‹cò®òK{´ÆfÐJBŒ¢ÑˆsœœÞê&ü£K+#ÜØ…'? Äwkêõ¦8ÈàøÉÐ**„r Î_Â4PF¡•ˆë*”ögŒbu{A* $é”cØ¥v<iJÁˆgPæÛ 5çp½æ’I¤H`Úó„2˜Âk.‹çd¨¯N¹ÁÔ­ëE 8‚5"ÊêˆI‡Ôˆ@ÀP¥…pNð²p4HÛaõó‡.,݃p'GüÖs\'ÙÊFÝy¹0AºEBx]ù°šj 5XyÎ,ýáB´H= !#Ϻ ¨ûD=ú¢M 3…³pér¬,f`_–s€â œU/¬TžKD3T¬Ç+æ€ XšöE›7ÄGÔïu)Üè†ÕÙÍæ/ ä ïò.'°ã €ôÎèâÍC7‡´F4¯F•@„ãôšH/\mãEáýÕ‚Õd³áÊR¡A:Ù1­1LýèÜÌØM2g«¾ ÑR_]x­+Ã2oaµ>þ3žþ¢:^ å‘ÞeÎlµÅ9¸¯ƒÃðáÆ¤Á'_zyÀ&®&7ïá[ºÙí;uù~"(oÞN¡Éh¢cꎞ9ã¾ ''ŠrB©4šݷϵ6`Šž+BË!ÜN2É+`«¸é"À”[;€H×Ýñ®j;ü4FR>߯ÓÄïÂgã›Ê3ÛŒ_O@ø(8ª¬Û{˜Ý#²WÌÅͧ"7®Eoàůd‚"·Þ€1½þ¤EËçõhÚ½,hˆó”ák²ùÁ?»1¦Å¿®÷@0¥¥ŠÒK©jM€õÃHùSÂ[~»fºÐXÚ$,,%õî‹æÓe ¬—L‘^ÒËD¯¾ù²„× Ï°L“=m®2½J‰›^uÇSxI+ÓKuÙA¡D ¹õ‘ɉdŒ¦Y¯û^ÒºMÍ´IS*Hϼƒ.Z™F¾¹ˆ@iG$ÊÀJ‰‡Hz8\|LTû4xo¨Ó­€kÒžJÒR}Á¾o­xoSþÎHSÂðŠÆxç"`Û axKg™A"âxÂsœ@E‹ `X´À‚”.`bøwÏðGPWY?¼@àÐ C §±²fh°|*…¢ Š⺙T!Þ dâFgøósIHPæ‘â$ÖãA‚r"LA¹4…Æ@¡Á³ˆ+ƒÇðâ!µr°UaÅ{=C/áxm dOÅZ½·þ0ÃÁG(”ã§ ýÜâ½ÑH(4€Å2†È°‹à±ËàAâïmßÓ÷›[ŠCõRR¨HŸ¾·yÇï'¥¨Á‹­)^ìÊ x†åë{(4ˆí÷x‘Vºœ‚^më…&Žð)Æ1×s|òk¦ UOhaXvvóCí4,U`óÞMãæBœÉwaˆûö»ÉíÝ\.¬ÇALBÕn®0*)8ïE/©T†(]w·µ!w®ëiÏ D‚!9mÌ €i”ÊÞÂx/é¥!}u>±øå:˜òÛ˜£Ÿ»«5Ñóò´ÚSºhþåR(A{eLÏ”áB·–±µÆ(™$´7e¼D@†pÛ4@Ùn2ü~“¯Vú~ “È¡ø& ”(Û‰(RGBÜD#¡p(^Ê‹ <Æ ¨¥=šàžCççÑÍiý>˜4ýœ‘ìéàƒë¶“\t4]ô/^æYã+¸ Ïë¶ãÙÙµ³ó2¿—ó–vRáäÌêUºãPh ðtˆ9ÅsÑp²ШùÁtxsß>¡!ä”IÉ7ÐÊPDàY…úʼnb/ÿBXfe2bJÐ~æê›¿‰€u("KìF5†€¿eE#$é9%ÂôE»€ùšÍð}Ϥ”ŸüŽ0F)¡{-¸P½Ñßæg®(‹ái™8*€ !!‡^OË:¾ÜÜsXí—#£†PJ‰’½2TQ^oQ͉‘4!•–Z·m ,ŲtÝ•lÉå#Û׋»vïºy‰wƒÛ»õÄLjùÕXy¡ðØä+9 «Ñ%-á×N|  <˺‡èýÜÝèm·ž'ÒÆÞ@‰ÓúûhWow“+s‚å¿ë|p«½Ü ŸPðu€‰ºˆÁ„ttÃd¼TtO qê“Q‹Ð0%B /Ãä4°¼ŸíäÇ.‰ (ÈÍ… ÁþxZÖI¶Õ—G‡ÍÚºQAC™˜Œ'zv§—¤ô†‰ R¶Žç)øÓE=×#ÝŽ~{=©i×"ª’¥BwZ=~¬-&èW?â‡Gï0ÁQ×tø>ƒkžßËvÛèà(ŒADk„õŽJiÏå6?ƧžEz ¼éˆ=‡¥Ks0«ÂvCöXrÅ4%œ’^2MÿÍι‚bJ;…,II¶°ú5 Ÿ:È.¦rÃàsˆiÑ a—E I#“ 1€]°ÃÝóqJõíà\èN¾›—Ð]¶­/Ó²‡ \¬÷¸9>׿`ýÜmnrCXÖW#øh§³CC@M~ ÑÄ©œ] ·n@tΓŸ? º½öë¤{îìCÔöˆ6wg¨1?Ý]Ê%N„Kï¶e:×qÊ~¾lD;ÙÕÍH]vð#ƒ›$øõɇï;»¹ó:QëÑo~秘´<ø€Öq™›.Ó ©)(r·ËÜÅÒÜÓ²%ÍU”°œ^ÏÙÑ4þWÜjP #¢†²z« $Å3 …F᱋¢ }oWG¾o6% @Š@tÙ*é™Vœ÷œPÁ•Qÿ„„ÅòºŸ_“ÿ9ÿ°ŒîßSéZf0 ¥Mj›[Ý~uÛÃKJeOаâ,F·w9#p|™íÑÝæwS¬¶dœ8†"åðönv« .%ù5¥þÐF‚Ø.¾€\,YÖÓÁÎnìγpŠmë@ɘXÎEsXñÿÖ ;/3\R¾¨Ë¬n°ÓpžRƒ†õÖ ÐÊVºÅ‹Z Ÿ–!q¦:^ô×ÛïñÛ4"ïÙ¡Ã?Ÿ/¬mô¹Ü_Èš£{°ç)Ć=ºP/ºà×ûäæxÅëç öË~ŽrŠƒ.! ­ÀöûyY_Ãæß–åø^K£h÷.ü1Fÿ+¶?üqYÿçìÜ@¹Ý½>r‰Š€Œy{·„°»4—žH½j©…$ýdGqº´3£¯â¾-åÆK.¬{º‡Õî/|>Ú0ðçäJúÝsX.§Þb» aõ»s€ó†|“]C€Dó<ûG·nvêR¾8™H8k–Ó›EM1F.Œîã´§ŒpY9ûpÛ³Š^.Õ±›Ù€¦«ö§ LØ#¨1ÝiÁR˜z =Òî<ϲ>Æ’qÞ7[—ÌâËñtn¼ä€dpÝïRþÚÂ!l,ËHlÅ¿"Pü¾O†§¦í“vÚb®úÔ&‡‹jÅå½D”8¯çʰ&šàŤâöäƒüoîßǽûÁV29`“XÍШ€·ùãiº2ÍÃÁú9fb·ê(3`5+Ȫøb†çoïŽË¸¹©c t).Ø-ãK1XnûÞût)Æ“¯µ«ûSž ŒÓu}Á/o‘0E\Ñß¹9ðJ?Z¬O…ð!ít%ª]Ù>øÓÛ8}<} „óªí¶¿c)„­-–ª‚/ˆ,bä ð‚j¯PƒÚN×Xãj'‡w%DØ=»°¹kûÿ ž¶aèëPÐâ±K·_Þ7^AÜ5AâE=°9€u-õöHʵ§ð{q 6ÖvÃwýd wmý©Ùp¸Þ#ßߎ:¤€·V&C©MEã®x…cmÔÇܱŠZG¶·•ì|'Ïûâ0€ ··ï'”€"ˆ€Šãæ2Úƒ¨‰†p‹gñýH"â‹(ûfüc`Qñ·Cd‚'{3NÄMöø&<ÃÖiô! üebð­¶`µ°Æö¦HDà#= ~méû2ÉŒ¦½½™›ÆØM1^îÏ¿tëò=ýŽeT+â3D8‰`»)Ñ#Âêˆ>öÐ_ÄÚŠ_áŒêbÐ,]Ùß]¼êp¬ 2.y°ƒëF· «?EÓ{BÅm £šS#âËC-%­A*…¿)^eÈJUÒ]©Tg"FBª\E4÷)Ø{Ðh(B#¡8ÕC?@ Q má9Ô¨ÛÜøKŒØ.{º‡—º;»sRÖ¡Ò gKù;º¬ùý²&åX´HJ‚ðœþÀ P|‹‰@¹X¯­Çò©Ox8žŠQЃÃ\)1.¥¢˜•_“e„™Æ“b­w+³£ýÛîh·_^r¡ŠpÒS-ŒÂH"ZÍ_ à\K¢´ŠÀ›Ð2Qð~Mº #“¢WTsN¤`šÿÎ #D+ö)¸|ÍùJµšHc—¬µA‰©³üvÌ(‹ KVgt\Ž/dÈÂá+Ž1ö\Ñžê^sCzEÿêÍ$©Ò-—ºƒG7êS12œ€ãiWWÐH€)ˆ¤DöJk®)¡¾ÂPD×G…øèÐbÜ^aŒÒkÕS.„a×B%¾$'ÒPs®Øét°i§ÚÓjoÌŠ2¥ Wšª^)ø7@§)ã »Ý †i™¶`ײã㮀žxâ_:{#µ¨!”R¢d¯ UåÆ˜Ú–¥v)RK­›–È$[”XeöAÊV¤Ö]Ūþ¿£%-³&á9üã•S%¤T½bñ>ï…ãFd0ŧ¦øÖNý€É¼BAÀ«Ž<=ŽôL>wùb'mï~!íƒ[ÓÁ4e€¶ß¼ž§%G³ãuݼäç(–ä[ ‰’ #ЩRB8G/›ܘBªË•Ïyé–© v„’¦§u)ÃZ¹Ly&9¼œÜÄÑmX—irãýNÖόǑ~éôÊl€¬j“µ™tÈž€~m»‡BJÇfæ%t~Npc&ø’¹8ùËJ3(4Íè´S79;F®ýæÖ°µ Möw~Ÿd>¹ †æ7 R[ñùèÖ“lyÝB¤ š°½2tç–Õ½ÞÒKE.4lS‚ùõˆ JaR<Òï‡ó>ÍJ£ÅEìc«ý ;ïÐ7‰ÌW)ý2c¼AÚ<ÃCôËn¼@2ùp% ×ÒÖdüÖvôgG¦¾wAbµÆË…34Hí%'~Q–bŒ ©ãCËÙ¯vßù9,·>ô8—=ÕLB¤V퉾ÆfÊ 5²¬A¸:ºO~§WRéžõF"eßx±FNv×;Çn#‰¤”)Ÿ‰RÁä5MD& ¬œ2Jtc´ÿž`4Z! >J°ÈSÏ јÍDë'§Å¦*¸Ú';¡P9¬îà̓?‚½å7ìÁïÓ%R²ãßÎ[Àé¹\õq\âÕæet©’–©u„bÖÏñ庛–á^2ïÑ»§ÞLgÓ!ÖÜ´é ›„ëÖ^ï,»Ñ'{˜Éæn¨½éNËæ£…þã²þ°,ëèg ÞRmrb¤ÅÏ5|¯8Q4H¹ª<´Ï¯|?v¨gø&¥=ªb­´åDIÎbLo¸Öú›/·¿Ü]–©_Ët>Î[·–5ì<Æ·Þæç=ΊÍ6ÄÌNœÝzŽ+7·NÎÞð°'’1"˜f½î{IëÒ–E«…OS*HÏ>©’½Éë¸à™Zbà¬}\ühçÁô–äÃóVqŒý‡ ¾–ó`àÕ™ ÓŠZ§ÔáȽ þÑ%tõc€Kž—jO¹Œ Z¢½ì©0Œ ÑüÛû£Õ]å@ú]Ú!½€ aõ»s@ʦ50ÂdNñq6Š—B]vsC,Ó\6/%)vh›éÛX!bÒÄu7¥Qø®²˜ .§˜€ëÛº€û÷WòE¨xÌB—v¢¬n°Ó€FÂn¶~ÿõÖïyD )`ݶ_á3ˆ”’kÒ÷½ÐŒI-ÛwùZñ;c„4ìs™è¯~—§_ý#`lŒ [œ¸^ˆ!(àe-‰­å‰t»ËRd|O „®Œ£€=,*W!ç¦fàÛçÈfÜ!ð®qB=LFãrãÞ–ó:¸¯‰µSŠQªˆ ½”ªØÄS¡asYúÖ†W'á0&}Nú¯J³Ý½± ¯$!Dˤ „rªµœÃÄ·¿PûEk Ê\ìNéªÎžÃÒmO> œlÕ+¶5æÂÒ=úÍï&‡ƒ¯EÄBà ) ò7?î¹óóÁ­> M>&¢ùɇdhÛy—¾A+@Áâ‚Õ]6æ$˜é‚Û‚•|`ÎÔô—“"´åê=Ðø|j¢L›±ž0)ë•=—Ì|ó·SÚL·TŸOT)°©­ˆfŠP³ƒ+B2‚T„TŽ@=cÕÄ"q3 4Tk‹³H™JµCeˆ‚ D !FÀMpHj(¦I@=â1MZø•#x¦I•^÷ÝãÖ=§îòççC8Np4£Êõ gTD iàDHq,7‡g˜¨Æ~±¼Gä€ ÜQRI¨é•4”kB¹êÿ…CÚkÙ¾Kz7±fx¶Ha¹39 i™Äˆ#OÆh,£•Áª%®bì׺f_Æ3G/œÅ‹E4Ö„À¤ÄD¡óü÷³üƒwcwˆlÝ7ÿ¨.Þ;Iðb¼„gØwH2x9JF±"o…çy…Š.Ýžæ‰gŒ( lC%I{<žÉÏùc½½ `}‰@FYÇz‘ ÊÀ:î{¾L‰äŠiJ8%½dšþþü6çÆÔ›8ðŸ¹Ha »ƒ*/)ð`Â>Ѫ \VFP1À€0h¨¤dÀáɹKšŒP%¯Þ.¸õèg¿?tÃrÜùÙÆi¨ü ƒ*ÌK,4z¥Á!㟫ÑPQ”áp’+m‰j!GºpªºXJá’:Zï »`@G ¤JæOzÀv/Ô~½ˆ5€Ãšg€C^u؇* »Y¢¹¯ïgz\ fÄ /™«±2;èÂàßÏ~ý•ßÒ k¾‹`%⚊UµXÿ®ûAˆ€Š« `wTõ–QÀn±Ãžê@Á$ ü~iï=}«-Ô«•&h·‚üÛï8e"˜’ªE8xïX¬¥„ TxŽU!EVê ¯!™½«¼J¸CMc5üh<iÔ¤:JÁ*i¤±š{h¶N ¬NšM>ŠsŽDQN(•FS¢{Y º=çÈDÏ¡e «b 8¸M¾€­>Ð×b§n^ÜxþŸ¬2ÍLÈÞÆ¥q`Ùm…FB¡^Ùà¥Ü Ó}> qì]÷X¡ÖË-¢¹ë£*À;Vœ†¸b‹"µ¬õð7Ћ+P"}ÄX‚–#)5°FkP¤² ZÿŠJE)DKÂè7¿âù0¹çÝò\Üð¬ï©ºÓíûÛW÷0¥ Wšª^)ø78ß©)ãíì~ˆê‡áîË0v+$§JH©zÅ“ÕSÍI{ãFdDŧˆ¨øV"*ELxwƒ»²"¡aª;W¼Ë»Oßoö0‰‰@z¯¸ß'p¡Œ4ƒ’ x\îˆg±$«}R7ˆ2à½qôû²Ÿw¹¥…—)pJ Â<€F¢†0±ž}–xžËàß\?Püÿ›ž?ÂTNšvoò ÍÅÒow¸å åšS¡´`œhÁ¥ùr2±^h!EQ6d=‰Ï¦L¬;ûä—¤6JÁ¸ê{*Øõï诨ä2n4gôŠ~žüì*åøô/ºa™ƒŸÏ6øeîvË:ºNPª•ÐDød½¨V ¨uôå·OÐg\O>º}¹W?:œ"~‹ž…ìa®Ú C*´3°¦w<…—?_lû«?ÿè·°¡­¨8-›êÆýƒ þèpú± ²œÃ…–IK'ûâÖ ¦%1›’àžCZ«ÑíNG `{·&l£–5Q\âmé26 |ãjŸ~/“ÿýJ«¡á†*g„hú eŠ’"Jcô1ý kÛ„W#Øñ“G?ï»Ñov7¹íʰCžkxú¶……rmw¬<81ÏVåó¿ý´åÐÚúŒÃõÆÃŸïhƨW‚׸í7å>¹ups°{×íº÷73Tô†IE W\3U„¹ôóËOaþÖF˜ÉwWp£_ÃË‘§\ÖÄ]ltÜýä—ךö4f‘”‰‰ñož¯ìüh·J¾:ý‹n·ËNf\8©è?M«¯ûÕŽÞÍá‹¡)E%a½é…î¥67ØYÍXO{V"ë2R·‘•̼/¼n ëòÁuÃäOÝê6º“ ‡/7”-zÃû‹W ÔT•1[þFF!ûTä†åxI~8´×äon]ºÍÿæº A#Ãá²F6·Î¯øNÎ$ûct£Ëîo‘r~îÃb῟íÓDÃçõÑý² Iàv°ãòÔ-QÙ ”#\ "´Öœ¥+ÙÀ¢ÈÛ<#1ìSÝ]]Ôd_ÀR¾ŽÂ–C-ùÉ+èîÄÔ¶5ÉïjR*6Iî’V¤ôÄÎnîö˜ £{Æ8í)#\Rþûj¥ØgeÙ”™B–í Ly5‹ÚjçíaY[7žW?ï+Q h&¯¢€Åù½Ñå÷F²ƒa9mØ1‹„‹Y’÷b3ëìCpk,f-犯v&‘šH~D‚)vÎg¸‡euݰ¡eŽÛÒÕ´­§IýÃjŸü¼ÿó–ŸÝô€ã°ëŽù- ,ÐߨDî"‘Ž‚’®ÇÆaÄ*ÀK¹žk€²7C “©©gáü\™6‡|ì1t[ÓmÜ“J¨M„PeT¥åŠJ®…ä†óß[E•œRy­…îÑÍ¡VEµç°lúLÓ3ORÊ”bÜDAaò¬vŒ–ç ìêºÉϺ§ƒ›»‡e8o7ˆcœ^«žr! ûUCM–®:Õ²@a“.ü+ý–yZìØ­®ssX_¦yÀ2ÙàÐÌ%óÒmnÝÚ—óæºãòèF è=AœüÜìÖn™“’à¼-æ+FgÇn^Fn²;7%c_6øšAÂÐ ‘ÒÐZ4â]Èæçýÿ¼˜?7þqµõùúwÜx™cps¨” 銃€[œ ‘'h Å TQ†J(Ê ÝÙ îE ª ®œwËÉÍôl®ûûy \ê¸ì½ù¾ ò=n^Láãº#ÌÈw¢P]'~ Tb„{âI¾€r ý½%¿2–DcŠÕSfØõ_Z}M[Wo ÓúzÌr¬4qmaõ§ÿ8OÓ×åø‹{ÿ±Œnk¥J­Ü¯¢}sÏ¥PJðžõDs)•øs@ŒrÓ†W'á0ÖùŒÓ¿÷§_þò㟜ÿ}rÇz»aÜ(òç9þoP¶ P¥}Õ¥"%,¹$¢t!•ŽÎŽi)¥Ö«{è.L„{fúáäŠ T¸ch RÉZŽËÚûç×>ù%F4Tk¢X/¬ù·L)W’2)> zþ° çÏD<q´mrÛÖMËðzÓò¼ÿÍO“¥Äp Žþ6Ò’¹ÈH"€O~ˆÊ”4Œi# %ôÛÓeu§ÉŸF°(hXŽQAºy Ýøª-¯Ï„R®A¨iÉø¤+$†~8\^äG?øüÓùäæx‰*)ÛÁ¹Ð Ë0§ßĉª%cJ÷¦'\3Jé7'ÆO±7 vŠeu6¼&zŸÃÙNÝÃj÷GÀ¤o)Bú¼^JG¯®[G¡Áað¸¶?#þVo´\SÉÔ·¯ÆOËzI[þ?ùNÔ/÷ÛHçæñu¡Ô’ŽÑq { lŸ÷®óyšÞx}‚l‘&»m aõ»Ø–þtðÁm';8ö7ÈÁáSð¿›AŽZúK,uªQ‰U~°'°ãïÃ2ý|²€ˆà,GÉÀÿ΢þçùtŸuÿõëÊ;…tè&qÄéÜ?%aDôL)®µâŸ@ŒÙ­@$(íó2¶4‘ Á¿Îïð#x•¿mp~pÿåŸÝôSLwÃ9˜mëÖó亇ó< ÞÊ.ß@¼M®ù­|ôËË j×Ë<–dbPùÍÏ£{îa8‹AÿêçqyªXûåäbÈå·p9,±œºó©ÛMËð!þ3Ð>‘°Øî4ï'´\G †` Æþ· ²+®‡gé±ëžÃ¿®Î~>@[ÝæRlmWgqlL‰ a©tEÂz"%•\qMT¯Ì7§BzÅÅÐçˆû~ûþr«=ˆíÑÞ^LÙè&ÜOñçÓhƒƒ,\¤ ÕãËl~HÕWD²¦yœW|),·sx¯¸Mçµ[Àã{œ”Ìé¨cíË1–)6×mnõvò¿åI1°°å?/g‚?ïóSãþËnÝ|>îÖÄ4`âgŸþÉ6ÆÏqf¾°1؉€,P` D¸lø0i—ÅÈu­À ½báêæn®âAÆ„øÞÍË9¸õ—º£"ƒ¨›>FH¡4"y¤6FþkõGü£û_v:—ØP–Øæ®"ˆ<Æw·èöCG Ø-® è×0y7‡¿ú1þ5.œzËþyûÉ¥cz8w¸šXÑîpÅæÆ_㽺_Çe@»ÆU€ƒ»ÉEYo×,VÇhß÷òßäÊ“Gc%}óEŒrrëàæ×/œÅUxp§º$ Á"0òäuæ‰w›ÿíæ:u4^=#’s¡d/Ô 5c=íY© F­û6Æ’©÷ƒGˆ›eLtJG®¡!ÐS¯# Lýë Š”;D$PõýôÝ-ÏÝÓjO'·v;Ë#^!&ÉÞê¶ø ½¸w4„G?'\¯Ǥà¶L>ÞW–׎v:,Ò‘|ûÜtÄåóó†E·d_ÝÀÎ2h0.æ·M·[ýŠH)%פï{¡“ZÖæ|B ŒR¤¶&7\<Èê†Ð…ÕÎÛòoØ!J¸Dh­93ª„X¼· bØ ƒßõáUt|X9õ£ŸQµ¸¢2GÿÎ7lç=W´§º×Ü^•[mo'F3y­4oD{¥¡Ÿ;;/óËq9o©×9º–½+©zG=¯æîÂ2ãtñÖ/Š£¨ñÑÍçÉoÍz ä{ÉbŸÃòtÙyì&÷.X#6ü—°|Æf•ï*›¯\Ìó†þˆbmû±Œ€²ä.®åÒÚÙÉïç·vÊÔ\ ·ô°:×¥ð{K±Šò¶ý@@SÀã›g¨g€}ÆÌÔ§~î®Nøä7!ÏAÖx°‰‘KëJ·$Ê"Öõ²øs @Ð*&¨³«"k0»¢×僛»,m[øÒž²ŒHHßNˆwO«®[NÁ# qÍËòtÁî£UÞüè"í~µ'”‚tÛ8gÓ‡f¡³NcULŸá8Åã nmpݸÇ#(!¯7.K{mÛñóeØl<۩ÑbûA´n¨‡eø&ðØfÄÚ¶†hº€£±¤xA ÜI8;vÏÇ©Û&»”¶ñÚDjï¤x¬î ß¾þ;®„ ü˜ƒˆî«ÎÚìaŠ.•–Š÷ŒªëßQ_“¥7šiÃ?žíÚ*Yz;û£ nì¶Çýí-TŠR¥5×}$‘¤uòdZ´v‡*Mµ "Ãn¢Ë,¼#Ä ¤£=uƒÝÐÔq&ÝÞ?¤Vðt¢Îm´öÑËœEst3JáëÑ©¼ñhÖ˜Šñ%Zѯ ÖïÝn€5ÙyÜ{Bê`®éÆýä—£„¨K‘ÜÐF¯Cs•95L›ë¼\ž©©ERù_Æá»Þ:c©¤à¼½¤R¢t«‰ ^p"$§|_³{B‹Û«¦å)¹ÿ ¨<2¦Œí¹èíq™G¤ÓWÜ+GÏ󥈶u¿¹¬U°-|&š¢°º0Œ¯üÉ>¼à#DÆ óz¢Ä΃Û²ÖÁ+xä:>9púñ5 ~´aõÏ2,·’E”`ð^QAÍŸdLS(•è3ª¸¦’IÞ3¢¾Á%¢Þð '';ÔîÀÂaºCëÃ]ˆ`Ž!iäØC"¬Á¡„ŨfL¡)i a´D•q-ˆ.ª.ó£üX58NÇ5Ž3epàxE‘È£|'#HŽœBQNŠ%’K$Á‘h¼¢ ­ZG(Å[«½]Ú‰Ü<ÆŽ@¨6„fv[pããMPtóˆö Ù¢x3 ¥l=Þx‹ÀÓ5‰¡y¹0¾µ•§ýÃh$K Q_!naµ/o;R—9 ÝÿTHh(‡BcPÐT„•P*ø·óü¡m°x攣AªG1'Ì8 Ðg#Ýz¢0fXfxy…—Ÿª¨ Šö¨‚eÇquÛ†*`„ ¡®ás,W‰MH ¡ ŠZÏi<9gx•àQ‰CY¥ÝÀtà{•í=õR‚š}'ýßß§3p;]>ù%I‰T=’IN¹4ÿ¤ß¡T3&)Lš^#»o[¿CzF©6åºâðrr[µ&|³I®˜¦„SÒK¦¿A%›scÚÕ»¡axâxÏ ÏP…úNh>ý%Ó3Í4뙑” £¿ù_;úšŠ œüüŒw_Ú®?;×múLP‡j¦¢ùC·º×+pÛÁ¹Pç&&ÄH@$Y=@S„õTËÞpMz!¿9ÂòÁÍþ7W[+àžƒ[g;E"ùSèòˆ§Õ÷+Û”(÷ëåPʯôlõözðarùŽ*=Ñ Ò‹â *G‘Õ€‚­mqm1>í~eðöÐ×¾ÝÀ²|4ÖŒ¯^Â%¥F® aßüïîç-þÅ«¬Ž6 7®çÉm`¢^`¥ÆurP@·Høå·z£…àšJ¦¾ýsw±cõÜsaìé˜{Ù‚]CÿñpÞyŽº #•„š^IC¹&”«þ[O|50FY»+¼:£•Ah©ˆ¢TR­µ0òÛæ-ÏÝv°cõîÎnYG·v«ýyëv~•¹®Êcïìæ‡WÚn_Ž‹kN…Ò‚q¢E½°WÃUÖú2.Ö“¨O²‰+3ôà*r/¹¤†pÝ ¡)íÕ7/;ÝèmEä½{º\ñ½üº¿ŸÝzÃiÁ”b”*"H/¥ª^4«¯2ÍŸìâ[‚݆—yx_ŒÇ¿çÛ¸ñàðVëç°uDBhA¤ÁP‰é“á³»m™ÎÁuµ” $5ßRõ„Sã g=Ù€½‰|§Hu^.ñi¨Þ—ýÁwŽø,7ÈjóNh(ßHŠ÷@Îþ}€Ä7•â=`Äg6 !Sz`t©È¶¬Ýö2û|³w$¢7L*J¸âš©^Ö³U¤ùSFš¿•4ýÛÖ%¼îyp§P7êwÃצ$0H…2rúäŸÝÔÅ”Žzq á}¨Éò>Ùu|‹Åa??ÚÉglõFŠE£Ÿ¯¼Ë{°2É›?ž&×Ínÿš%' ‹ÍÃr<Å•˜ð2ý^Á dp ØÆ¼ZlgÃyMÑ,¾¦ÔQ¢ª >ÓÁ4ûoÛõœG ð<Úéì&·mø>ŽÉGû\¶3wáÅ1š-™Œÿ"€ ¹ëÖQ¯ß‡ÇæØ±-G%x*ŠvàN¥ä,}?1"OfŸ °Y4ë1#tÔÍñŸV°Ac®¶àÇ‹à ÷«¡b‡òAŸ_’ï«pý¬ï)TD®á'Ñã|Ë#°ß£`áLttïµé‡_³À.éâw3½‹F!x—ï%ÒáØtàÆðŒl ßSÁÿ €_§/yb‰|•嵐?«„lSüÍîTÔ¹NEÌg)~GßaRy?,Áãoú.bŠ[¢z‡a#æ3ŸÍøm`ø®å¥“äñ“_2„ % ÕZÅEki]sÕ½ê‹[~ ËúRYß5L~øàÆîrÑÀoÝ£ß|pãì4Z˜ž(n”&TUWd•³¸ñÜô-þÚ03+ïðÓ_bŠ ¥iO¡Q€ô?å—(ÿ—ž *„æZqI‹…Š ÙTªWRsvý3‚éž #Šû*áT]ù¹…­ò}sÃyõá32vÚ-vÿÑ¿ëüä:; E·CxŸg+ûœB Ù+ÙÿÒÅ'gçò[)gu8¥2 aŠ’ÿχó‘øÁþ-I7ÛG¿­ysMbÏJ2Bºý²³Ã‡/µ&”HÃ…f‚Id¯?¿l±ç=Wä 77„1© çœ*"Yö^%´¸v³Çú6äû!<º`W7úÕ ¡Ûλ‡Õ]ÄŠCÄ¿ÙG›ž—¯qAxëþNÍ©T­‰–’ÖáðTàkµSÎåBH®M~Zù)CËßjt«û„»«Ó,¢B"3?þ!# ‚rÊ´Ö‚^Ïcʯp×L0AuqÐÕoC9ôUÒKù¦e¸Œ©u«;Mvpݰ.Û6.Gëgk?20ÊÅ`6EŽçÕÏû®žo ]:€,J¬>€:uâù‹NÔ!i)4ÑpÔóÞdúø‡(%ÚÕK)´â›ÿ¥Ï«¯í ض,eXhL"L ¥¥ášRÍüŸb¦§ §.‹ ÎëÔmnݺÕ=¸Õ­êÞ@xÙá¤ý¼¯ð2-Lʵ0å«£û賈ÇóüÉ®¡Â»·Hþh÷®m°·° Öiz¦úEþc;¯õaïUÆ^Å·;vZfc,*0 løÌÌF$c{ÑÌH}õˤDŒå§­üö‰¶ )X¯$¥½¢¬gæš]ü+H@¹¢BÒ×^VuuÇåÑuO‡è–^m1XîÑnéN“}‰6MPðŒZ J<8d›s E/³»ÉaR°D‡®»í½)øÉi©8a’Ñןü§üÎÿÇÜÙ®ZšçTü†ÜC²ò~5R‚ÈÀˆH· ‚÷.R_N=Ö¦ë`3ç×7 gU’'/ù¯$úKmT×XDOÌ}ø+ó_:±m{þÿÊùõY縟ϟóW>˜þר~¶ˆï_ÿí¿þú·¿ý,ÈüÓüËo?ÿY9÷Ê_ŒÆ–Þ?ü—o•Yýý÷ü響=þ·ÿþ‡ ÝÍ'YO;Y[¹'ëÚ·Ñ{+ÛûYOÑv?šùçpiÊÕRèÉLø$¬ð¸ˆù–Ë¢ý¾¯ÕÓ¨˜ÜCQ/Z–.?ið³Ñ·Ö·³“ÿOÃ*›¹ÛQeçÚËYZ¼ŽxÖ=çõ:Éü¢úZ‹òp“ýã_ßu“Æ•2.…Ñc¹éúåÀ¨C”ÖÉav5îz ©æè‘0РÊúêå¬8XÆ‹GTàFÁŒý2‚Š›Õyšz9/aw«BÆd }ä¢0Ó  QHV/õ×sN Õiì™÷к1¦kd²>î"–óÞª_õ*+ÉR£››÷‚ê³_Téò}× Ñ^È,+„™?zhBÆ?CÂ2õ½Ô"Ô£ä‡NÑÕi¬ª+nˆ/]DzöÝZž©Çž7P /§=¿]& R¸ÉˆA°UzëËò½Xuºç|e*Å"ÓP]xrp=úVÀ·o^¬â¡ºŽ >[ÖöÀ½ò4Øe()íÖßMŸ¶Dk,PÙ;Wα”ø ± M„žÒ(0‘=¾bò03¶òå€€Ïæ#R\!YÑÚ¢Of†‰’eE,tÆbiJÔ…' ’ÌÄùx°Q qO? Ø\û0¬õÏz‡îí½“ï”jýÖ5ÒùéG\v“op=”ø…R›`@Íy\é3Iƒ*¼³ª¯eªw£nÑ’bó;¨ÇOßA}øí*²b3]_‹h·”(UÍ ÑFÌèY3;YmO7ÀЕÆba ”ÕÜLJõ©Í¦ôš˜®³ õÅŸQsy]<=hLõKľÌÞ-—Îj_‹„ŠMd¸i!»k‡l4´‚VI¸”D,×@€ôt¤T¦ÃÒž˜=«^GV^òÙĹ…(5ÎÜ=‹&¨¬÷!ð Ûí»…sXãa4j:þê,ƒöìóÓ¹LVÊnšO_3"2&+¤†Ùùí¯¦9Û”ÆÐü¶JbÞÁT¥µ×Bk¢}”}¾ƒôõVÑD`sÇ4ý¬i¾Ùƒ­.™}x¹‚–¥V-Ñèc‘ ¼ 4jSKÉBuwÌ”~IXǽÙ{µŽÖþËE>ÛëÍu œoÀ@‹0\%{ÍeLš: ¥âsü‚Oàæ0€¡}ï4\—Y¿ñÉ* ‚rçÐéjÂŒèÖ¯aŽ!¶’YÖß k^#?×´/Ç>#ûÖta_¬˜_bÎ!…ixoæGKýMýŠ¢õýr“;¯ó ùÜNV}¶B¾x˜¡íNØfÓMÌà»'‰ ´Õò&Wq#DZGôU5´UF[Å‚$õÐ)û¥o0TV†hJZ›¯{óâÄÁ!œ+¯ÒÀ e–qY~‚™UžŽV»ÏÑÄ´±ŽôæUK‹{M{Îs,'½p,]‹¢’ëŽJlbnDpæ³QòóEzˆÓðF/7Ó¤«­b®0",M"»¢ûÃJ98nÌ=áê 7›piJ\žLªß`’šU7 Óä צÏvŸâ±Sg‚ÆäâZƒŽéy8rh¢ÜÓ°Çó¨‘Hº•mÕ>4â‚ßlSÛ~TŸu¸E]Õ…¨¯VÑ>ÂMèø`S äÈÏp*™ÝÈÀÑmÌF7ŽæÕð~¤@ˆ|È,²:4(%š·~»iSz>\+7̨™ òa ¢Ç7ÎnA×_­‰:nÑ0{?žii‘MUwqíÂŒ*$+œuê|ç‰øž–6bV*k˜þ|Ï€Ú³g¥©Âz²YIïpD‰õùºuÅUZò`p©7™W`“à— ­ ƒ¿q›33^ÆCHIUi€¸®‹V]\â\©E$‘£‰Ü¨–:¢s¯JšÏŠw1ÓôB¾,1çLwÔÌøäåDý]Ýa{!Ȫ©¬z%q1u²ö’'N®o„#—Ï·&2»%Ú|*3§²‰Ýî˜mö”#ˆx‘G½?»Óâhý¢XÖ^Ñ´Õòw°>}ÀÜÌxG)Üy=äMØLvVMs5{0LU•…³&oÏzRD $ŸÏÀ¨w¦>ùJ4§vKsPÜÖãrOšyÏ0oÌî€y,諸3OnŒÅÒÚµ¨ÅÏN?“Ѥä^‘9Q5°7–å•!gbc¶È Â%û4o|‘¹Â0¢ƒvQº„Ë0ZËeV¸ÅÿƒÌö6h~3'ƒV¶¯·ˆë<¸gÕ‚½Ÿ Ô‡Efž'ÜKQø5“p)§yÐ@žs’È…a:kÜ©í°˜—ˆkFD=[Ë×)aJÆËª˜«ª«ˆ.='`iB‡%s.’÷ªxËXXˆ*úì%Þ"3ÑÌ›ÀHÂ$+X˜2uD’rÙW¤siD„¶ÝØõ BêÒeΆGæÆ)"¬ÆVó]`[ˆ9ܽK„uÖLžìiü%nP¤=1«jùáVÈ}Ðß`¾kÙ)’!é ‘•HXN£ê(»9.þÙq~u(§×‚¶f’Ù5&%´‘›rÇÉ 5Ú‡¾YFxÐFn2iÃR{ePgEÛó߸§ÝZ˜wÌќڜÆÀ´£å-k0s «:`5J&€NÈ0]V¨6öcU)“ýµÙH`=@XPËïI!-Ÿ÷&ž^÷ ¤Í­6EË´ÉÜå¿‚­ó(]ûÙˆÖiÌ{‰—³'ÒIYÌM­ŽÇaw“ÑpæP¼Ýá6-LÐlÊl™ktŠÊšN`Y-‡™zuðP&.*Ï6óøÖFXû&ÍÔ½Á×WùKhÒ‰L+}C.âdnëVöaÉg“zS·…=Ê€$#[5o¥F2÷ÞI´Cà[É[4Χ¸ƒ.M-pQ­ÛÓW”ñ.DÈ«uÈnHn÷”SÒ®dõ@¯l-±êÆ.w+¤« }"…62ÁKGYˆÖ¦ykã÷\´îŸLs1ÛØ7§ú £¨Èh½8yeˆ™_™ÑÊœêC.¬ &©®Zø \ô Ó~Œ3W‰|ÆA’ïi7`Gïàìi¦7— ¾OÔS¯;Z|écÞ_Z$>Ù!K†VàJ†ˆ©fnHÚ9$°)1g­#Qô«¬–óW CG%@S]Λ ’Õ‹I‰ñ¢ÏZodúp~…&*×±;KÔDÂÅøׯ#•Ða] ¬çt3äž %îÐÐëî85¼ƒ±ç0HüÆÃä°ï~²Á®2×NÞÆYkÞ£êqûTí¯Ð÷hé'u¼ì˜«Çôßüw¦ò…K‰cQÞ£ÓWeBïf2£`¾!‚ÑT8_\ªŽäÇÝBoüêl_T" ҌӊÒóê‚ ®ÌRàf!ÔÌ\YCä®hL, ¤tò¼À¤ËÀœZ™q)tÇÕ$&^YDa¥37Utwëc7ˆŠ:G‰cׇávvæ®THŽõØÜätš¨«všBB«‰¡5’ó„Ìgü‚öèÜÑˤÔÚ!Ó™e^¸ˆ¢ÀRfä—/iÝ/Ëò f4ŸÞ~ç™eÞÖ­NÅü:(]NVîGP:ï¬Õðúyoþ«µê%!ŠâÒîƒïüý?Hõ€?Y'õÀã§ï>þöÀC,_€âa.WÞ*ý)г'‚1{"˜1{OJú$„w ¤ÇOOný€àן 5æªÔÔ¥ÍTOäÃOOT•ý“KdC”ïkí/„åëoº8(y4è—KÔaL쾜o^ßÀÕÓ‘ fôºFš¼÷QíÝ‘‹Ë…ÙV]ØŸ²¤µ=öT ÁÚ†)Ã(6õÔWY_½Äý 4ù„a²ž+~Jƒ²® #Z3×2=gê(î™?<ãUHsóAt©LŒPÍõlÿqkD`ŃP`Wµ’Æ{  U# ’þñ/Å_¼Ì-âvÜÒãã_ùƒ?“ù?Ôœán›>ÅŸè/¿@?ÿßÀ2ÁoÄFÆi›I{÷ÙiÒq«6݇œNJ¦¢ªùõÞ{ν`»YÜ.ú¦UÛ®gv>˜ß¿èêr¢°}¥Ñ«½}¾-i)0ãu%¹¨ãlE^mƒó¶`LÔ-/¹ä¼Yç̇ބ…dì®@Î, £ÄÚé9ZïPBD«*T~ýožwFÿ„”`Ô2k‡•ÁL„d4s” Å(˜-``mu´² 2Ó¤Æó'Âe’¢!÷䙆Rt!pÃÈo·Ž©¨Ë¦•­h*Æšª¹²É»Þ$#”LV…”üʤ‹»FÝM悈°Iv;nI³ÀÛ¦@™Ï¤@1¤õ‡9ÊŽ“¡ÒÎ'lÉ%ñâÆp6³öè…¹ƒ]vp'ü³Zìë8cÛ‡ôná§|?ŸJðñð{*l×Â/¿È™3w àÀÍ0iÝhõø£,å /Û¤YÔY¶ñ8ë|›£AפŸ¤|õáÏP@¦2yèLnü;ùmSµ²¨yÞ%ÏþNU·¢)Þ?2Ý”BÈmªd)X@Ÿ?¹KÈ¥„@¯ý|ûƒÛ¼ÇFæ…¦`l]õ§Ö Y¶‚ŠéѺ?ìƒéôîûÔ¤Oy]ÆÏzgã风Ÿ¢,Z)…lÒÿé}…-Þ`‹²¬ÞÅ–¢eb¾{¼ÌîBeRÏ<©pXQ‹vEÅ?ׅ̊äœRÕ É |Pn{¤¸`žw@Iá-ö0Oæ¿3/RÙõ4x” -n;C†î+_‚=R f,°2¤ÎìüSÐ3¾8Ð’úŤâ-Û9‚?Îø¨yó­GÔX"©& K&{!þ¾:Œ^ÌdÁN.]€5gòðÑö˜¶|ñ”Éì#(`쯽͸ˆ°­’Ž/K¾n‘|»KÓBžžÆHè)£~y£¯lTîëz›Zû«Š ÛKÿÒ^AÅVÊ‘=Ø’ªjùÈnù_^Vôhü+&€P–ªˆ¾| $„>Öå7Üuù{ôþÏA‹Ü,•[LË ÚµUæe¡ª\²ÃáE=–ª+Ô¡m]žzù*ØË{{\çû2‰Yãýâ×§ÇJ¨Ó› D!N³ÃF¾”ª®°†LôL¹šô5/{ùpŠÉ…Åõ9]þ±žA^ÜÚÀ"päXïµÒôØúþ¹½Ë\Åô!)ô&£ñøq´ˆ¿Ø2Xø¤mÒ>-/kn#«Ùo凳ø63 Ðö>‰ýû€òïOSVU‰už¹µÑ›)1 f³óR_6›\ï…E½ÁÐ{Ã’&ç2ô›;hèÊÅÉýÑ×u{̓ê²\Âôïl`U”v'ˆòtZ ÉLFÂcõ°Ö‹©‡âÏ?3YøyEöu“’¾Êc(UÚç~OcÛD”9'ÛëOO0‚M•gƒZ;!,Àá êë¦ #J"ø“îÞª ITênîCŽRáö·µƒÝ™ÑèõåÉoÃ[­ë?_Ÿ]Ê,¶cå´ÉI»G¼/ëÂÂáhu{÷.åZÁCÄ_Õ`•[\jÛž}¼­Ûë+îµÏ?-×KëÓu_žÓ®’çá[Ë&eÔŒpŸý“±°‰ÇŸûÀéËão³¬yÈ’…3t<[›+ª‹±»$H¬z¦8.ÒØÔ5²7óÔ{¢Ð|.ÕŽ?š”Wæ_\obK²òò¬^ke08‰¥x“{¡ŒOÑññ?ýhqy_?_΂ø]Õ(ÑA’]»±z…oW†?ˆšz«iô8bAV|9_ëåÜB¹"þ^ÌQP|_Ñi¦RÆöŠ•ä&Cu2 Ä<œJ¥•fȵ4^ØRv_¹”:lÆ#ŒæÌRФ–º+Ì&éœ7¢Ò“Å̪,)¾1®Õ4µ!¤cÔy´ûÑpó®?=æïèEůdñí8ðÓ˜ u е–<=6¶¤–%*{Ž‹4ÅßÎ>ÃH¶Y¯€U½Nù[1hïXÚ&»ûÜT{*:· ÛÍç_þÏ™BÈŒ‡¯âA-|𲦵1$bªè…<….iâþx±¦…޼¢%®8;Óšà°g½eXH"L$K¢‡å²@îsH_²ü´–õ¦Öûöù :úL‹írþžµ©2%ij„©âmõÆ6|%_̼˜+ëUx…Þx|å¶ÿoðN;ƒµ¹ûs¤9ŒT$°ðÝý­™ŸOab]Dá¥áÆ]¾g¹X3¹X.¨MÁ…̶3õ’ß~ª6<–r/ƒ÷`õ>@]" ÆÒ–×åû ³¥y}Ÿã·Ü,и3ÙÍ1^¬¿Š,64E<Ô{BEÞ•fñã¡p¥g[¾ýÏ¡/"_œÑ/Jg¬_^¢\¾[,§¢éÛ¿á É,_O±¡Ï´¼ò=ÚõU_*Ÿ;ÒÒÔÔ¢FSîòÆ;qwAÀ@nGî!~ãC{Ð9£‹ü™þÎöt¸ìöa×4É£¢½Öt¥äãbz?/;ˆLÛù^/cÕùgmÕeÝJÄKã·¬úÄô0ušoËb]dV} RVÿØT¦¸ËÈ—æ‰RW,ÖR2€+'£ Üæ°Gþ}Ÿ~(R£ªÉtü¿í¹Læö>Qv y:4ÏdPà²=ûxû"Ê祵þùßÍÏ%Þ nönVú¾U~‰;üE’è<·ò%Ô”2Äì=/Žü¨RÎ%Õ 'yDTÄ©xë&ód 9$ÕÌG•ïðíùˆ÷X½æÌ1°“ªãVEV14ŒÑ[,¾Ó±z¾ªú`’7«C±"q!ÓLcA³8¡f§‘Ù_í<“!¬md#‹Ó™ÙWñŽ6,ßGBñμoÆq· )žÎàL&úT¹^ÉÁÌ«`ÙT/¢:)ˆ­¢-êô][Mtš}šiZW¯C±ÃÁ\©¿|Éßê[ׇ&|åúØ“¥—¡©“Ùç¾`ŸUZrá/NH]b”¡qwÁwÄŒ†Î|Óëßs‡´7VƒÒvsQ±®œrîì²²{Z¥RÁX_Þβ݅WñÐç yo—öñù§åzi}ºîËsÚ12È_æv^!IDJEÙ …uûp¡[¼[1« »l¾$Þç^RBÈDdºÑ|ÿQ¯¢±ei$ˆ³K•ÙÞ#ÚhÿVÀ’0©®¯Òó]Žˆç DÓÅ_ôPGK•æïý•=osGÒ¾ñ+vMü ֣ы¾M­Õ^=ŒD·‘΂$ù‹ÛcÜ´ßÜ@3O†×ýéywÈ·¾q¦] ~³J¹_~$>ÅöŠèÒ¨ ¢›ðFÒ•©ð]+Ù²Þ+.ÚÝÜæóѰ»ò%Aþhðq¡'Æaæ€x«4yy’æ[,Ó FíÍξ•Ùì½[oãê™ïù‰¼çÃe:éÝ{Ý»ƒdÍžË%¾¶ÙE‘j’ª²ÌwŸ¡èZ¥zÄŠKë0þ H_ôŠ]ô÷s>¿”z=Y’‘(o—F©ïìÊ 5Ç"¦Îøï…²äÜŸGfICÆÑÌÑÞ˜’¤¹JÚPgZ·éÆß?¥Â”Ñÿ©_‰;à»3BúâÏ!/· 4êã]@‘ŠJ|qÏ|ó›€×·dPA ª . 0Ö}»‘M{ËÐùMÙä²óÚäàuô_Þøš¤Œñ!}ó5V«\ú–E]}œ–w¥ÄôõÏþºVztÚSÙ柉^\¶>cÍp÷‹€Ûlm|.1Iν70m¢rŒ1A,%%H¡Ó((•R*g—´u>÷› ñ0?•qÃ|®_3’ùinDY`ú2Í¥ùélÙafa.Ó`˜$¹L\(r4Kh `n©m2A9çƒOÊé dþ— Ë>Z•¶‘Ir½¨M ÔE‹Á$éö:üÍRÈ á )…àäáV×ã­ÎûƒY~¸¤/Ù`Œ±É­€ä¯J->&Iæ°ÌÏó»bá-ô†Oe±™è¤j[S-MŒüJê„E+þ]C”Ì£Òä ´5Q©`r*¥ð+«gÎZ—Œºøû›á°‘$7¥+sùÓ"N{Ûþ#à¥eî¯Ãg ¶¶ŸÊ8/ØþõùX÷f–$ÞO‹:¢Jþiè&CƒV¥oÜ•´s8…ýÿPqéõoç— Î’œMð_ËîÔvAÚ¹ÕÐ}a-“³Hâ ˆ«¥ƒÐO9 ö®x½0\çe‰Î‹JFq,p"yàÆqê l‹~r@É8‰'m2a»z~"MòD=•ñ%[è >¾Ô|„ÈØ1]++¼”¸âE4p+Ãi¬–·eò=i)Ì|ÓŽóË…™¿f<߯KšR]'‹¶BëŸÚ¦à´I°Œb1ß–ÈõlX&a!–S`¾ ð¿Oíøq»sAH~ÐÁÛù‰Ðv˜ÄÃøÕÀßfصŽÁEåS2Ö›ì®Ë¸m¼âc7Ø&IßÎÖÈæÊu\•æA] dT 0î|hŸKSí6‚78ªÒÈŒWà¤%d‚ÁPBλ܀T° r~žI ç†ú€¬|aŒwâúš–â„. æÃX/ïð>AÞ’»!¢Þü_)ÚÉËtŒ×ú¡j-˜½‚E+¶IQØ©”Gæ#KˆvW6H†”$ãó4µM™ènùpÕ¶%ºCÁäk:ߪ¿Âæ L,VàLÀR¨Üø–RîËÙBÙ÷C‡ã3ÚU‰'”d7B` Ï2Ö副]c8h¼ÅK;Âç A—шXTd9HÂ3£0ÉüT Ôû%©žÄ ŠbaR1˜Ê@C+©DÈÎ2SÙ›ÀCÄÌxY)Ñ 0Emte gl.A*$À‰Ú%.7ÁÅ ôíÊÄœí¶L½32¯•R,bi QÈÖyÍ–E)«C¨tËø¨" WŽAg ±²I!}ÐdRÀ4’‘DU„9Bg²CZ, (¢aZ9C‹®´ÎÎó"šæ)G Öɉ1S"×¢pPJ;—vÚçÊ`e>"iæR&âŠÉãmˆÄÒ&Qyˆ$WpD³LH`—­ˆêè  „9eA2.%… ¸<Ñ6¨`m ê  dÄXÓÈ´6Ÿ•·&d›Ì2û i¯µÏv[ÆPA}ŠÓûl<3´±f»|PÆÁ[`DY'`J.g¤×ÑêÖ‡Äw98UÖüÔ*å7ú—Øx4áS ‚ÄG ®y¢{#lƒ{”`àû!36¹víœW:¨LpÆÞÈ@ç]’ t>™mD‚Rï K‡[Q)•6Þ™è³SQEÉ¿mXâW¥“°ûÞ‘ü&£•QÊ©ä”ò!¹Ëd%þ’C`Ái­ôÅ_¾Ʋñ>Âë»O“¾Q~RôÖùä]ÊFŸDru+^gƒÊÖ.x0ÐŹi®û¦›‰vêXÒŠ†Kf|ï*WCÿеûy‚ÒÊPÑ€˜¸¾|3œú†ÃF!^³%‰…µºÓ±î ÒéЃiqáiÌãYƒn”;D©åꛜqѨ­²Æ˜`ýoÎa~*ãF <—ivQ–p‚\Çùe}¥A( A®«/ÒÚG­¢vJ'gó¿¿Ò\¥oþ´P×Xlû©ŒóOË •ÿú|¬ûƒPPoèþmy&—b»íþZv§¶Ã¯t¯'aQ)wÍ\2%:–Q!’nèø– Op“ªª”}&]ôÖÚß#Pïêã´<‡½ƦŒßyÛÖi 誓D°È4™x#9 <Ð4¸¬Q™è­‹Êü._¤ÿ “Î.Y•ÎNeóÛ¼§-¾&üÁhœq1sü¦ûõF%×9Ÿ­µâ¯ .D£.s¸¦Û•wº5¥+ÿèŸJU?Ìe¬– Yõyª”ºµýálVÞëŒJÆçïægÙoÜÛùYP).Uj³kûR•¾YAŠ‚'Ÿ ãÝ ä3Z‚$ÒRôWqdÔxiÔ÷Áhe4šŒ»±RZ“^OTJC,D3 ¢Il’ ^Ê Q`–¬ÚQùi©ütL~Ú¤T²®zhŸùš@‘µCû\šjI¥ê]WªýÐÏ¥Ÿ¯|>Œ¿P••ùÐJX8±£²–Ç$Ùèfeš;òä` (p†sÚŸ6Áøä|Œ9šœו©ôÛ‹ÒNY•¶©v{^¨’õ9X§£Ö©äDEýVxæ<“£6ÈÖ ûÕ¡Œ?+Æ´ÀÒkíÖ®øû]%q÷R}Ææ¦`OG­’wÊc­.üjp6¥®ÁÕsu¬Çúq¬OÕn™Û®Ç¶L X%]rÞFiš±RhVçnk…Pó£|ŽwÉÚ¨xòiƒJÎ*Qá`+“HßQo¼UÊÆLS¯LH.Uªµ]©›¶½‚¢¬Ö•ÆqÔf5ØzyÖc®w(Eë¶ûYú ¥«½mÚ‡‡2.éø4¿te"é¨ÊÙ* dìPM¥+û¹Z €"§Fr}Súf‘ía?×cS­ï¨R@d³×>$¥+CIÚinçr`D$]{¨ËöX!Ç´àX;êqþ¢¾J‰ÌЙ;ªŸY,£=ºÏOí\¦c½/Õq,•¾»*J‚!MN-@"óÐpaPÛ¡gø9`ù™%2lÈß‘±Ì¸íç¡:ïõ¿’Ú`Û˜U Y)\MtÍÉÅÙª"€A–4´‚úZ›M²ÊËÁ ~ñÀÝK3h‹õ¼š?hPZ­ÔP\5ý½Nù¾qîfXå”ã©_ZGë>Ý ÕGšô½X@ci.Zö¹î$›ÓúÞŒ,ÓÜAÔ¸_è;K±äH–“IߣKªAhtüá@§’µÖ.âœË2¼®vH>'^”óyZXx:‚ý‡Í>»àœÔñ1 æ²16D‰ˆ:9ÁOH°_ŽÄðsám2Çc€•¬–îkjÑöKïa*ã§ò¿Ëç¥U‚k“œú±ôMKS­Íî KM$´»Ú'©ÜH¡Töîj™=XA„g±=‰‡lÿTõ~.#Ñ.Q~uóï²us'ÖÆÝÉ(”ÆÎÐ(ªÅѪ7r]‰²ÃšuÊénlÍý®€õxkS0÷¶ “MQõuÐÉ€Õ{^]ÐD㜺Ó'RÂÔûˆò÷x€ã>®×H›ܯ¿¯V¿hX@Œ¥ ì:sA£cÃ?¬CìÂr£)Ó¼‡ì«ßEî‘™ŠÀ— š¬÷Âà-âÖ>ž†Ó$|Ѭ8rË•|8a8¿z3<\ÄÎ0-(y?Ó2},ñ›&†òNÕ½ÍËð9Í?­ﮟ诣7Øà«üZì½Ý“âöi¼/Ft ÇBÛP;ÀàùÕ†¯–KA|ãìîk/’6Ùs_oµHUAwÈ€’ùÐŽÓ\}íçJ€ü™a¾E2X’$p…xÞW—t–cûЭ›ëœ¶Y„ü.ÞñhÍÏ^ˆ hMfh£6‹vüçÃ_6uƒY¼°a ü€–zØÃ%â>·5¯ù£ÊN†¢¦oƒOÿÞWi×Ã9­Ñ/ÂoUhðÆ–¼'N-KªD½>|Œ^a5Ø™ï¤ÉÕzþ\Bº»ŒÀI±(‚ ïŒÐiô ~WÎâÃ|~ÇCÓ_ÞB3T2ž·“ÖÕnÄÝŸ>-È!eø°€ ŸT,¤ÂÕc葹G-°Y xè†}Ñ”7¾ ¤ù‰ú}M8Ù» ñIŠ"_.»›±»a·ÑwWIäG|nÝ)ˆZ%ï”ÆZ]øÕmJ9\?ïp_3WB×—ljj"¯Xaç\îî]& ÌJ݈S$‚¢ˆ³t‚pˆù/fõH â޶WÞÃæâ?CC(^ÿÅM[Ë™H&SðÉ;r^<‚[™×ç[°>8( åM-~òK”GÙïbñØ)›œJô1úY7 nүΠ äÀ] Ëj¾A.Ÿð•×ßÍ ^¾»Âs¤’4عPw_]:ÇosÞÆû{ÕܰçP öá›(Á6¹‰ÌŒw¶¨ÄÝâïþø“AËá/›µÔÖ&ë¢MY+¬ÿqëg²‹)&‰Ñd£bðîãëNpÝuÛ!6ä5! ¨¨‚88£ ¿íÐÿ_ÿ«šÚþ±[¬Ð4×ý¾€(¹º®>NßÜ©±>Å ôâf84•±ì4/•öa\Z>÷Èyº âs¾WDáÛŽ,øÊ ç´½¦"$Ýã¼;RùMÎZ§£UÉ;­µ3ñâ{¡RÆø¾ ý­ò!ÚxA‘•UíÐýsþ·öa¬?0g³ò^‡`T2>_`u¿«*E{õbvÛ]`ÀѤk@MJÔ/´^&¥h ιRHáWó9i÷=óPÛöIªi²Õ°dEÐP?`¡¸´Ï¥©V n»%”Ó ¹F:Àýõz,s…;¶µ7îÂÉç±>K³Ú¼•rÂî½CÆ%Âôºí§Ë icEyGônSÈÙë€×å–$z*‘† rB¼ìI)Z—aî¥(]9”~cÓá…·äó¾2ˆpYø T àµÕQ‡Ê L€°N¤Š¨cÌÖÚhpe°mÂáT ÖXž »Ž… âvocIÖ  <Ÿ/tÔ/¸ë*g yeê•%gÚÔÈ÷ǵuÁ bWêOKúß§2Í¥YëRü €DFO `°~–v9jZÙøÒÌ-µ”ÝXj’.¸Cžfå¼¶!ä@óüc9võ¾4—U'œÝX;Ö¯«g©CVy^K¤dlݯڕ‡aê  ž˜6N»®¬¼¾My½÷6ªœ³‹Æøx½!–/ÞRÞäŒQêMpiV©€бFûm× ueüY Ÿ\°LõøßCSþôº†H­oƒºÜrL@Bú[Hªí”±Ñ£»ÙžÂÌíÖ¬Fµf»R»ÔB¶>qAIp1`Ë`¤)Μlò `/d+‚hÔMó׺ÜHý]B#hÅh‡Øè’Wý!A£Mш×è· ªØ,4üfaÆO@|ÀV Û U\‡_Û„Ú2ت­Zø¨u?À½ò|¬ûåI«¯ñ÷d°Ssвànxæ» ñ¼±Î&‹ ì®+Ñp2vÌ ö~•œêGÅš>z…ÊpäÈÑÊ·ºoªó.5.N‹`nÃ#¤]rt”T8ÝžüÙsΰ$•¦Åä.¥u@Û¢×FÑ5íñb9¿:Ž€íI4ŒbŠš)€r!¹úêëÉ…±žžàIkß S™æª+õCµj;Ü™¾‹Yß58)ÂëB*po0@7ÑÎAT‡vZžCY_Aß•X™†}Íy¨œPåàå€õžëz#’)Ê{‹µ•Kã&Ía8(ç€ì“Ûî6Ê–.p5Vå¤#@°d3W‡ÞîäRȧ°0 nh£MÀm# 6óöiŸ¨™; «™{£m„h»‚‰2¯WE@ˆ›<ë `3Òâ%Šõ:hZE}C¡~Xì×±‡+xÀþ%º¶êi$\$ö̃ð¸Ù)¥¢v–¿†DóÕä1_8îοðþHßZï?.œ‹©ãȪ@ÆQÇ€EGÀr8ÖÓ\ÍcÝvKú*âNäÁ3O·Ÿâ€”#úüXØòŒ1º!7Ì”â_ =at_dñ†k÷´…œqî˜d–F55üZä%ê%OÎÝ¢íÁMF¥ç†ØzâNÃðÑϯK‡»¡y!í‚¥”}NÌÜ}>΢ËÙ$ŽÊ&”Äqö¨'í°'«˜ŽãtÕX2qž{dyÄQ‹Ð­ÁÑI¾ÞzQØyÖ­w pæ|l{7}õ±¼TŸÛùéb6lCÔ†ÔsµLˆ+àçèuÊjL1¨¨B†Ýñ}÷ˆµËçg”p}¾¤)]™‘ï2|%áT–ÿ=c¥ Z Mç—cÛ?ž3Š‹I£‡aE˜{¥Œs8•($ºu…·í«r8Î/ËMwh"d4TOMÀ`Õ1{±¨DÄ(.˜MJY£vãöÔ*¬Åråy–ñ¿ìîY/.$ϯÝ/û¸HE€ASy-µ–ìáµdC=æaÛ´)³Ü¥•¥¨½ ê¢5“¢†g!e4PË“U¯Oi(¥i‹cœüŒ‘ƒÒ{—³É•Å)+ŽxȨíiO¡å­í«:55“U¢£MÁF(Û,†ïèdÎñq»‘f¨}`%™ex_oU®“om<Í"œG×h Ýæ·V<„v²û(“‰3}FU†h3`CWùzÀq=l§ù#æîîFÌ1¶ŽÅ]¤; :ÙÝ¡V²…áåÖdÍ}Ô= §SÊúNšeüj¬£F{†ZîŒ$]·úòyéSM÷Ò®`O"{î„>=p6ˆ-¹Í ¬zÞÇ´»¦V=5qXài>t¢¶ˆ/Z`”20—¦úüÔÎeÔèPzÕ˜<}Œ;/ Ëߺ(Ä¢¦¯C³í§é~vVˆåPneÜàÉP\wºõ ¢Ü³àW) .ÂÄrBŸ«à¤Õ¯ò^å=us{ìJµuVm- {´º“B¸Ã7¹º¾¯’,‹x@¼ÞÁÒ…¹«“Lˆ6«è̺pÁ‘JmR¢8yCˆÝ@ ØÁ;tg"lBPó;>«Ù‘1Ù3hȃo6L4õÚ7¿Á-5%æyYúå{ Õ… îlâ!áŸè—¦„YIä/;3„CÄb^ Ø8™7  Á?4¬9å% ø|hScLy ¯°59ŸÃ>öÈoD˜ûºþD¡è„JS³*Ã/‘´ÀYc¼#æ¢.‡H 0×H¼ÚuÃþã]„ Þ‡aa¢!°AsAÉNN0ÂËuØ4tÙ¨è@I¢´Ã¨&PLÁ) ’å[Ô\ç4Þéð~Ëtú¦ŒÕ«qÃI½.æ”/ô¬8ŸÌE× É§/m X»¡k°e7ï£M13kªÿsÛ¿ý\w=u‚Q¸Æx¦ˆ~¦÷ÎŽÿ6mÿx³ÍUʧ\ŒÑš¢ÿ½²‹Î»ô&½’S*™HËË(üé?þÝ©bPk;:ã„AYå›7Ï¢VÉ;僱ÖG~5,›Rß+Áp¨u5^…â¤ÎÆ9~¾K¦ò™ê!¬wuŽYï4°Âã(g°D‰XÚaʹõ>GÔpõ&Ô¥a9a €áj† `Om×Îe?tÃH,”»$« 3º rúÜÎû§äür,¼â9 J"öLØÃÆœæIÖeޏV¢wc½/3_RFšÿ`u’µÂÛÄÖ»Ðj‰VÜîeñjs€$IÐ ?›-jb0Câ“ÅOA`­”5Ð%V²å¥Oy`‰•5’á—ë¬ Ï€':’RÀ(Ë}ü[~‚܇wÄI 5×<‚b¨¥z™ZÔæ´y¬Ûnñ »XÒè-yƒliÒ&iCÓ>¼üa,ZÚO°ýÖ@¢â9ö&®œè mP¸µ»wÍ"„U†•$"Ê ºùÂk¿×}SMó‚òµ€O>h|Ç«`cc¸–¶6YmÊZ™`ý1˜ìbŠÉ_Â2Ù¨¼»†%8ùNˆ¤¨­^«mn#šŠ*m}L~ýßõw!Ê_•Z|ì!.|tò›töÖïœÎÁ©pù5þ—Ü6Áekå@În¨Ç­;Í.§ãwÎŒ·:8ïCfùá;D±ÁcÓ+Zù«R‹I´¯/ìK×MhW´šŸg­–‡È•ö×ÊGe$Šn²øAÁ¥XüDƒ2SA™é¡¸4ßhp•@Q=—p™,.:ãŒÉ¨áÉD Û ÝúÊNß´ýã{‡ºëǪ‡cÕ”º©ÆúP83uÛô ´Áýµ y~Uâ{-ŽŽõñXÆ©ê˾LS=¾ äo8.Ú»¦šÃI^Í¢4‹¤¥^ Œ>;W±nžOsõЖ®Mø›äè]±k3Òöópù3Øëê Ô­¢« ÍÐum>uI…SºvBZÛéPsµb\àñ*íêûKWšŸßÃ<ÔãÇÓ‘©§~,KC²4¯†ŒÂ98ZJæ• 1f°G­ÏOîNǺ¯”Bm!–i.Íj\¦µ7´^#< ŸE›¤UÖ’©LˆÄûCÖEŸy»MJ™´¤P·Îþ›ê±ôel÷Õùǧ¡kˆ·ºç2îŸÎƒŠ}ù¼”šP¹ê¡ŒçâWå!¤ÐÖ7šÒ•í`“é²ê±Ô¨(’õ!Ò¨gs )ÞWI“ÎYÐSß Kçp)ý?žÓžuØl‚%ËÐÛBFÔººs1B6£D—R1¦5U-MÕž—Šç¡Úý\ú¹4íÚ¿ÆUMLžð%í¼ Pp”ašãC½Œõž«<°ÌZö–˜À)bRÁåq¤½jjo„^vx·tè,H9d¥‰Ø5ô‚éEð¿OíøqªCS–7ª›Ð‰]> r)h•z–.Ò ú»º‘…D²ç÷䦰–°aÊ û„°XÜÐÔ³íû2þ´€kû³*ˆ„~!bBÎ0Ù}LÄ9% 8ò€O,³c3Íõë~';ôø4»×@rò"xã=›ouކk?_ªW³Ò6-Éq¥}²ì@⸜²iÁõÐ>cLŒW*˧Ò¹ïÓ—Õú*M% )¨\££ŸÇX5°=‰kâBg~4Ò#MsÝ7u7ô¥jIסÅ.´Rˆ³dªˆ¼‘ \Ëoàû¤+g%0 ÂR¸+êáÔZ›Àcíôʈ•u#Ô!aQì l}N«í«öúXn™HSym°æ~à±~Žàó ½‰Ö¶(AGÐ-&`™Û:j¸—˜W„œ²>¸D,#îO3nxUÔvø–—¡·`’b§7,n[Zûà”fŸéʸhü$ Õ¹êÀa§ÌÉέ´eªŽÛ5m~&Î/Ù"@ÞÀý{Úž#Éì\¦y_O¥Ê^Eäm9‚Ýß”˜{R9()¥<˜‡ _ÌÕ@°!%kñ§°d°Çl×:tO€È»˜ŒWX³EM¦#2dÛVÜöˆ5*{ìdŒ&‹œ²‚hàK[ÔÚ—#-JgµUL¾¾¼N¿}µLôOT†fCåqY¦•sÊæÅ@8¸ŒŽ"£<‚#PñÏ£ÂtDóÏ bkÙÈñb‹õ˜Ò¿XêvÿUö3t' }ç€f?äY> V‡à·ùí]<¨eù©™|Ì{=»alÊ8ÝGjÆ­-Òƒò²;Ó«iÅ× ^<Ù31ºü!-0ðT*{î?¯ b¯ð Ôg a'O9HžrƯ© åŸG ÷7-øô ÿZ-&·wPråÕŽ#9©wЛò.¼÷O" ¼1Oê~ÙûxÄ[ Ä¼ßm±ý¸ˆ¾ HtÛz®Uàcß0cvt"ÑàѬ0àñRàæ{{1w÷‰CûÝ0Ã7Ïà²“Ãøí3„ÎÊ©þ#3Èp@Ð õj5Ô›ÝÅ™­Ø‚ïh¼H@E=ôÉ—Û…Nm¿ÆÌ\fÐm{³Ù`d?¶B%Ÿ£îe¬¤Ú §¾©Ç˜Ô­ó;Õi©Ÿ,%ÝlÈ**‡9N)5kê¶2cÙLª+µÛ´#.œm8µ-bz¥cÐÀÞÄì ð ¡)ÅkXÜÐÞÄm: ÃôzËhºÍ{ïmT9gññº: «)oX”äŒQêFò“Ú}2!–5+¤£34"žúÝÐ5ËûrËA$\teQžyjŸºå 9ÔA³![3nq*‚cîDŠÆ‘2iÝ`øD˜ :ã‘+ëŒñ±ëDZ>> ÍÆqîk»ÂÂOÏȱaæò†€T4°!iïÍRUDÄUK9þDÔ ˜Ì,ù”£w9eƒÜ2?·L¸7ô• )úÊÜSvŒ¶ìö/A¿…_Î9¥l` ^%gœ†'ž††o+ÔâgÇ[,º›­ïi@‡Ÿ?š–JMºéU¦ö±? M¡È è’sMs7 tÒ ‡l3Hê¡:3ø¸žš´ë;IÚ 8iI:ÜÌßH•5.„TŠ* “1I;}OÃ:÷<;ryCZBÔŒ½‡\Ýàsuv½r?Ó$ø <ê7àeq œ[”ö°jÂvõ/‹ð™ZAÅ÷¬•ËwØ,lj'ÂÞ•[¾C¡4w“"xÒ+yx‡Ã«å|*eF–²É%©O¸›ÅC_µýSוâWVCƒq@Cꦕl ‘³ ]ßåÂô·Ó)×$$á€íxÜÒ¶Mf–›äHàí± ¼Íâîa #ƒ@ʺÓ=íI„ü¼¿¯Â*R$gyâ€&Šrúš«#R%pý]"Y‹5¸+’໕ߤCJ6¹`½²Ng~›ûŒâ!7yžñõ׋aý\Íë«2 Ér*ØèA²¾Òk-þrf»¼ýpص}yåçEPB+1òYMpïD!”ZK7¾ÚrUBz )DAI>Û‰át ÒR ê!Õom¤zÀàÚi:–®[U¡¥=ÞÆä¢…Ââ<ÐpÍI\~¨LÌ!«è²Á{mÜï ÎÓéxÆå¹ÛýÐÏ¥¿¸)/zA«.ÂÆQ—çƒ/Pª]yF’'øÖý<ÉY»Ó&IÇæªT š¾JyÃPNÀ³4™»ÊÁ Aâ#KÞ™Õè‡4( ÷[gm´>'£´Sñ7§À—Ìä""—ÿDx‰!G×ßd56™hs!Øø;<´~<‰ìI>¸7€xù¯29º”¬òÁ½èÛïòMú9+­\ŠÙf£S¾lÄÆ7d#)c|HßÈÆò¡¤ÌåHË4é ÑØ ÏŽãp,ãÜ–ië!½n¨ç‡z|lo¼T²3JûdbŠ&S:pßüIÉkçã›’¶É»xy¤\W<û®Ôã‡3Án¤”Ë6º`]‹^ÿÈrPß ocSÆë†^ǺY^…þ0G˜d­âþ¡íå›ä%ÚÂÏŸÛf~bÀ“òCE£”4ú<{±æy8pp½Z‹ñʽ‡Í¨e¤QŠ‚GêÞ v¥+‡ÒÏÓ‡¶ÿ0•±-Ò: ý‡¹<…‹tá[!\dW8¦B0@ä*m>øŠP}¡yÀ&‰3«ÕA4Èv1ó[¦>"c é¼ù1-ˆj@ŒöAZ°Ú~YPA¹'¨`Kr’¨”Š ¯‰¬Š]áCˆùU(ÉLN ‚á›ø%~I+BO‹êÃ)Ò%¼%¹ï (Gä-Œz¢¬uOœL@Ð ‡I (Ú¦áA2`”-Ëý.Ÿ(e½o›s™~Ôvy¼³6»ìµIÿ@Ææt (“u6ß2Ùi—ã?4?ÏÿˆF>§¤ŒÍÞ¨ì“Êô I|ÿ6$ñ±mHR¤Þ‡PҜި‡.å\P*‡è‚¼—%…êí{Y&yû]=ÜŠß œDG  ´±l î‡nIàDÈ[áÚE'˜*{+8,¥•áåÛ(á¤$Rˆ(j§|2È&úP½åK„l’¥üºàC$Š Û]¼Ý§G„h’¿TÎRíŸØhA#”†òºí .q(OÊøåfíÉÝΡ¹Ë®Oɺ£ðµè±ªÌ–8~ÖC2*òCpÑÅŒÒÆÚ”Äý…[»­Æ§³» Æ2nÿ/-|ÆæÃt¬÷¼å…kn<·àµ6!›ï¿ *&íSx”Ñ*fIÑy¬ûéaA+~]™ç2 N \& ñâp!û\Û7¥‡œ‘¶‚*ùD>6e?ŒõÕs‚<c“Œƒ®îÚÇ–¥H`„XìÓvìëî—ÌböN)]6éÇÁ™ì¢óîNš¬ƒUÊlƒ“D{/\ÂcþøHšÉÖx¯­ÎÁ%•IÛv–òW¥»~¹I¼K>dcùFbü/pÊÆ„¨½¿øãW\Ïó’n//cwëÎS—Hä,´#“JøÊxž˱«÷¥¡ž‘êÀB'Ï[®b€ÌÉ0¶ú™¬·ÛÖXâƒÑtV²î?Õ,Æ• Þ'¾½ú¢“‹NÙ”“Õ.êß~—£žÚýF(´ïêiúPOÖ÷ꇑ³çñåý÷~_@B½è[Û/æ´I$xØHÙ"QLÊ> _Û0s?ˆîPÚ 2A0“¢ÿãuoupÞ‡ÌòÃu@>³¼ùò²ø˜°cåy>ÕÝÏàn”4ou4ÑÇ mŒÊÈsõ7úlíµÎÞ\ |‡Óòx"§J&Q‚­ V ¢ýÿÍÅëÈË9›³7.xóe(üMSÎxŸ¥¦µíþ\ŠÞjŸ>µs9÷ ©ç6ͯÃËC"ß#©%…H2D,Ñ´Ó±«_˜¨â%™ØêÇò¾ÖjÇëHbq¼´@w¦v±¾T€0·½M9”׎>Dm­SÁzg’•]¤[Çžœ >»oºHýcOçOLíßoâžWF'¥µ^¾/$ó ˜U:üˆÊ6JÜŸÌPõ¡í^ $ÿ¤weÝ-²ä‚òÚºsüj•ößÕ‚wo2*˜$ˆóNX¤\ ñ„›ƒŒä`0@0#0}ªÇ¶îg&* °jä|²—ÿ'±|ß:˜dSr¶Ä*oµì¢˜?xÎ3Ÿ>Çl¬“£Ð7Ú ­wêr²d=ìP÷͇]½ÿ¸Ô\úf#0øú"|B°žçzÿtÝ4€À˱Ô|h|Î"1ùŠ%–4&(ª­‡ð`«YŒpDLRÖÌÔbM”¤œÎ>å¬B6)ýöGU§rj†­ÂH;N3ì•…S7·Ç®|XAß:¬g¾Mýuü.@²³é-€&g«Ü7÷:ûý©Å/èô¡íEÀVA5@OCŠ? ’¸ÖM'²„ HD¾u´{?÷6Ê7jF šl’¿*µøØ•£L‹‹ÌI嘓ÍÉÉ€ÿnuT!]üݧ¾/ú¢špþWÒ&dÿ8?ITÕ“ô‚ D½òPÆ}éçú±¬È8óiì¶Yˆ€ d‚XW_äÊÆ§àb4!X~aëóbC¿/› Øñs=.ôáXÏínq-õ8÷H¶–5®¾H§à|¶Áé¼ úwX ™öusÁNù/–ã+”LHÀ ˆŽÃ8“ZC®*b¢·*ªp¶WÎêø›ðD~‘ÿCt9›hÙÄo†¤í/éE™L¼Œ*§O[:tšæá°ñu7?v/ǾÈê”tô>•£ÎÖ—PÙ¥˜ÃÛ„ &¥5¤ì¾/®C;Mós×öAôZ«žÇz\::ç£3Ý/¸na¬¶&¹ì¬3Q™(´n„él6ÖÈ#ÕŠuXî©Ì/0€’¿šÉRß|mÿ©–¦:sº~XJ!Ó~ºîæÈËD›³ ZÙdƒO6þzzÚìô7¡×þ4UãÍÈ’ÏY'etH!‡l~-0§s²þf2Jv¿ÿëÔ¬šz®A¦ðÚÆôCJœÀôÂ&yH3wëc§®«¾æ¼¿² h£±>~©ÔÉ_•Z|ì-4?ÌÅ茉*“Â"1Ü Z[ϧ锼ϗª¸8¬E®êJÙjW}jËçžoãiÔÆ%›¬Š&Eï̯é´‰)¤·Aþâ+y9¨”\HƸä´Ì n„kUJ9»ïí»pߎûSWÕ¡?–±ËC˲ãjHoà¼Ð¤wDÚ}õ}ºb`¾^>=Vm_=?͇îÇÁib´1kí“¿Æ&’ç7°…¨£S—ØNS©öÓT•OKb$oà-Bc$%¸÷¥ä¶ø ˆï)ƒÛGÊ"ÆÖT_´[€ÜÈj"”øU÷c=mÔ³ÞõœB½›†î4—jYujnt&œÃÛŒ†“&’†îNOõ±Tcé›r{¹Hk’vÖ{u´ÖÞ` ·û1¾­÷Wç2>tÃçj¹/ b®w·pu諦ê®>—¦zƲœÄvÿUösån#§òÞÛ¨rÎ.ã£ÿâìbŠÉ¿‰89c”ˆ›²,H@-*ÀŸÛùé"sÚwí±zh»¹Œ4¼åOÃá8ô¥Ÿ:ã-cõS½ë ¨ˆxºR†O¥jûOu×6·•Ö•6)ºœlVÁD¥uº6BÐ6Fñ± Œ¯¸ªu¢hÙÿ7ñY¥‹qx¨g¸6V4•æs,ûÓ8-âhðDµ}?h¸Æa˜Ã4Ÿãç—ªžç‘äǺiqۿ컳»)ûí†-Û{‹Œð½· «§ºoº2.ÐÏ¿ìÊávÝöÁžIëÃbݳhÝL\íÏÞ!”í¸H÷©«¹Lsuê÷Ý0-ùÌiw¬ç§ JÁéå°:áY aËVU T¢&ÛÞXÃÒ¬Ãд/Õë±ß2.‰þ\Õ4áí—À]=•®íÏØË„Œn.Þ :e´];¿€8_Çùe ³K5„ýПc±å·ç ðʘô_ГÀiáýV\Ó<Ë=Uz<‹ÕÛõ‰oûR“+))O¿x Å£ËˆGRÈ)‚ G¥áZðÙTFfW0ž.®åXšj! Dön¡íz²ë¡Þ/¢Ã±+ ¼~ô§?ÿ†ˆ‰¾ÐTM§ã’R-æní˜O´¼åkJ°ÎÄ®ñœŠ õkìõzz‰Kµj»††õoÿçßþ£žÇö¹jû¹Œ‹ áz­váûSÝ?–©šŸÆáôøT5©ð_SÕÕój"ÿ²À~,¢Ê ”âIµù2°³X¤Ót‡Ý6‰óZn×õ»«Ïk?gù:ä!²k~úXZæúçvÚe.÷»þ[}8Ô4 ëÕá¥UØî–‰©%$>M1ë¼kiša‹Šþ߇áðǾùKÝßWh ༜ÿxh»®z*ÏÈhy‚g­ï®=XÒ´œˆ1¿¶àEŒ àõxœ_˜­vëm‰cÝ4‚–ÄñéÎÏí ¿·4–‡êtlê¹ ¹ú¥¼‡ö}_70.o^úúÐî«úx,}̲õr«°Ç&Ù‹Þ ÏÕôÒÏõó¦ €N—œ7kJ9^Ö@Tý¢/‹ók†ýé œ3¥RÞý+þ÷©¬s­[å^z’ÀêeC«*ã¢Êwdu4Íê,اº«ê¾=,ÿ-ÿ}ª»Í«?°²sÝ7¯D%9ǾH£Îež>=~1èD2¾"ý¯~Z?”ùih8M¼Æ+$·9-Q€¿!âIJRbÔg-ï ;àú9«]Ê’4F l4îŠ…Š¯×Ü^…¨”´À''lhÑÚ4§ý|n«\ír((÷zq·ºýân1{§ƒW>šlãwA&—‹oƒ4Ñ[-uøùÜ/Û¦œc±éX÷rn…ŸGxRÏx,S?•ªžHÕyŸWMhÚ ºHúÝ <¬¡¯¿,³ Õá<úõ“\Wâ´y®–MqF…ê6µæ_1ì&–ÊAáíZ+%Þ,#Ù¦žmôCÝuËû†¤HVŽþKlüRxÇC ãO KEF9<%ר×AÒE4á[…æŠò~,¥_fMÚ¾:´Ï¥9×AK?ógÃYm­Hþ®Û©uŽã^.´ êL7lÕ ¤Ô‰ZÕs*û¡oªõ2¯Prލ¶¯]‚¿üö/Ûý™œ)*þD,|ÔD†ËÔ Ø'Õü¾”òBª $øóDåxö¤Ù-A<ðh:€zÛgóB5ò¥ÙF6ò×7à§c½=TÂ?ÈŒiÿ­U—×E‰éNêc‹¯!ÕÈD%ª)õ©›«õ …§3p X·•ryÍhæyÙ»Õ —²Å?˜Âšþ¹UþÓð¯]9³i ËHyà ×±ÅSwÚüà/-Kˆ¨ˆÅuÑüG\ƹam’)ÊÃq”@‚÷†l JY㡃ÄNìWóùÆ1Êù2#øÇiø×…„¨pgûúŸ 'îÄÿÖ¿„Y xÞÍ$Š<2+Ï“ >#Tdñ³JؼÙ@ Þ‚bÔ©c~ŸÝn!qyûÞ%?¸^~I‹ªåœ*H—廌‚hÌÛ›Ô'©¤z@O* ò_»¯‘¿;È=1¦p{£€ýp©áo“K„ï¶H~=È "ž<p%uØ‘ð“H`Û»ÏÝÊøxƒvÖ…äC Þ&ŸRøT¢½xÊd£mÌêÕëÕ~Y4¬§§Å)?-&ó¿¦×zà— æ0œÙ,•ø]PŠ‘áP)]=ÐÀMûqèÖÌaWš¦4Õ¹ñÙv¥ZÓú±륭|‡]W ö/¶pºêœ˜NËÜ_õ·ó‚ìO gÉ\Dà<û5µ‡SwŽIÚ^þ|ž³ÙŸsäÿ¨•Ò09•ªþ:aEUu”)ñD_¦¹4²QÁ×<åøÊ°ØÅ¶_×½`eä÷Ø|CÍù–šÖ ò×´ÔÐ0¾N­ÈÑñûÃyt~ªvuS5õ\ãÇmçj’„G &$6Š‚ „ÜÜPê.×i*‹ûû\ÍÒ±ºd)™ì½ö.æ¬ó­ÐœwIBÓ!š hKIñgކñø´Øn¾ý0ŒÍTeÉ >•êÔ·óô5[‘ráòW`0\Rú¤Sã³Xâ婌‰F¸…r7OÀ*•Tp^m²²ÆˆÎmTòW¥ïŸºz|}áë0ûÖ—÷…:.=û·ŸÈ„VÞoß~¤ mêé©Çúå?Çö±íïK@(Wp2:$hŽˆa‡îåqèP6Ÿ-Œœr–rÍð!¥ùY©)Mæâ±/ÇÙ–]ñçvšÅ{BÄòßZ_œ:H‰ÇúeÚ×ÝÅñÿC=}äyòSß”%0ß‹ë¸;ÉÒiï2È]Öš9±„€¹Æ>|l’ÇH7è$ù¡8ÍÓ,;týP•‡‡% _•Ÿêfø\Íc)H!Ý §…õ|óM'"ñ¶kpa®¨£4r At/ǧj*Ýk!¾«ûÇ‹c ëqxy•‚€ìa¬Ï´«;¦†È\O4÷¿ôKÛ~ß·[V~cƒEŒ”Ÿ.¥1ùKðÔ² mws¯!òk‹0ÈÒ(ù"i¾&9h@^#,ý[áBIùj$7£X^%Çò7Öf ”ë’Žüª"/cA[êS™ÿø%…ZGkï ½…ųYdܧd{¿ûë\I’¢šVüº÷5T~‰ h–‡]øð¤ÎP`JJÓίýHvs&@7ù5[úhÌíƒy¼ž??ÕæNÜú4H>ùÁ›å·EèýLþÌ#¿ ‰í4€À½yŠl~žÿÂðíÿE‰oû™øU©ÅÇþŸo¿G/w­­QA¹b6Æ_|M~ãâYRÆø.¿ÆZ¯“ö›ÓžÏmùúw~½x0ŽÃ¸ñ{¥o,$[’ŽÞ'£rÔÙ^þ nƒ“oþ :˜”.7M”–÷]ѨGc¼ÕÁyr0Ëß¿XnŒMn#Ujñ1F4Œ÷A¤튞RtñMéHB£ì¤´ŽÊålSÐ)gÿëÏšœ¾%æICIFIñKGžÉ<æ}UL¡$Èó$È¢!½Ï®¾Éšàœ·.ØlTŠ—+Ïþ—„~1º˜Œ8d=mÅÌË]ë%Ýíq¡³DöÏúŸômˆp{óJ½ÿ¦ôÕ7é³wI;£3ÆýV¶G¶¼¥õA«B‚ ~--J›à“11¹¤•þíÿêóC¶›ÂIÂI¶7â$7ð2‡ÌÊ=Qh?Ñ{_4‰Å.*m0ÂC€„¯Æe¤€’lЦÿvy D Ç ÐÕ7™`bTV{¯“ ·½üunÙ˜ þ›=â¹®æ—cÙ.ñžš’š£®¿+Ê£!×ߴ׋¾ÄìS1üæ/Ø¥oʸŒª†¦t›Âì¨]?lòŸM-X Ž^¤4(¨SWÙ§è“Z,°6*»ßåka1Þ“^Øú‡)¤œ Áh”SÙûp] “¾rÛ}Š]Ñ$zoL;”–ÛBÍß#ê9ŽÃ¾LÓ½…=ürá?ÞëoòÞ{kt¶!eŸCøÍÿöc6%˜Ÿd½3$ƒ†à`……] (E½\ àˆ@XðfEÍРY‡d¢óÆ&ë£ÊýöO©=Õ¢Ü}±›-~Mõø"$bymŠÑYŸB6*ˆ²ÆoûM.%ï—/ôÖzãÌoóEâ¼ÁnxÞ’±LeüTþ8-äÿë²Ê+?Å/þ³Tx7¥B¯œ²Æø/_÷û+”K6E•CŒNgû›ùu#u[[äÀö?eBBtú§:¿ƒîÈ?ûç=õ»u.Ye{ã6?¿Ó7i¿ ƒv9›¨Üex~ɸºòéÛqõÿÛþ©úÛÿù·JÿAK¸8\–·£m®~ün€‰6g´²ÉŸlüõÛ)6;½ ›–÷¸ÄæÓú:®6ÕüƒÔßZõѦ‡üU©ÅǾ½ðqÚϯ§3´º•PÑ{í|v!†UÎ7Ð)“u6ßà39xŸãÕÄ™S¥ÂSJ)ŸSRÆfoTöIåkÒI›ÐÄǾaaÛÏ¥T*ð~„“F¶ìß-T«+åqâvÍS´FÀðIÁS¶zàÞCÛÍeœÖ‡‚+¥ؤ~ëÇJÙ›yªÍlXMŠÞÙ—½žÓ&¦.yz.ŒÓùDP¥ruc‹:hb´1kí“×Wå ÑV{_ˆ::å¾#s™cìDbšä©6•œ‚xGvJh0q“ê xÂ}©÷-×c²£ú~ .áS Ú6C¥6 ž‹Â{!ðÊ\Ÿ}Cy®Ç®TKÙ 5ytL—ï¿,ãùá "»–‰?X%´'‰‰…Oæ;†–ïH½ WÅ„Ia:2jŠ-½ƒ´IeYáëš ß@¸zó#€ÀÉê!JÚd·„Zï¿9Ð>ØóȽJ›”ão·Ù! ëë5~aJ`Wý¸-X0E—“Í*˜¨´N׺!Álâ»¶(§¾§Jîh'ÅÜÊü‹À\©º*à4D=@öäc:MÙ+s1 F×;Ca­œÐ=¿1½oæè­ˆR<›ÌÂt`úpþJj*‰¡4e\u·ä®Ê{o—à)»hŒ^¹ ü¦1IÎ¥6¼Ø~è?]wˆIþAöuHªj2›ðü O²ñb?tÃXÇáøFàô®_4í Wè”áù‡ºkûJ.Õ,#‘¢v[ ª ÚE¡ð]‡ãâý…1!ELÛ-ìwóü?7 /!øyªÓ¢Ô¸¢„ÔÙajç"\,*}}}Á™Äa©¹ `²2ñÐvÝ’[ï˜záèöN9 ½“õvj.«™—‹=ŽÃiÉvØÉ˜©°Õ°TÍÐ {3D„ŒÝHeeÛÓóžÀx~ºÞÏÕ0nwîXÍOiYQèt,Ë‹é²9KT_×mˆö¥)ÒëÊÚ¦!0Í/Ý¢¸ûiéŽqëxQ;w°&”,ÏêjÇÍ-²ÆØ-_JkÉâ,LèäØËC”ç¹ôMµü4ë}áÅÒ»êÙïÙ.W°jQ<„²K‹í3&69þÄ,ÎN¥[GŸÀPXl?¶Ç¹zªû¦+èaÀ)ºËùqpL&b¨þq7 *(²Ú.SPLbðžß°ëÆ¡ÚQÇQ V!èۤ°.ÂT3yQm²è'·d ‘“œ¤(]×'殂lGBeä‚Öù?üE^Dá&?ôÉîŒ<š,;þ$ÇàÉiK¥<ƒvRu‡‡‡©Èâ±aÁb°œb´Ôawú85HÖ´Ó±c5¢${Çò€®iY`DÅî4Ô+ÇÈÖb”¾³Q|ÖNÃÃÚ.ÓÄ]PÉ^ðz/€±rÃÇp»³1V3”nôjl€R+Äœ6²»*†~ŽÇr§ñéÍ•àáMªfÀ½ aXº¶g¶/DŠ<òµjííñ±QZGår¶)蔳ÿõMNá»}GË_T1ìEËð5@î^_Ác614x[À2°I}ÝŸÆi«Q˜0yߎû®°ùº`#Ï“‡j—;h šDsR~úy²d´}䢯È#àòb”“leuÊ Ž?“E•I¤“/ñB:yû–¼ÄàP´;ÔÓ¹u¼h‡ÀF¬òDîÐûv€:L†œÊ·ñšöáááiþÍ è|>°P!« Êɬ¼jHØd?…×´å'´·õàw’ÚJt’·¨"­›,îÎ#I(Wp,—/4}9ÃS5õd¾æ«æ1U~žF{0ê4îx&On†hv@ÁÅPüðVOIÖVÄý^¯šEì›QŽ?a3 `È k€k Ûóxá;åÉÇ#¨]n‹½d9?v/ë ͸§U¶O J=HG# |>’?jΜ@ lÒizÒM^uT"Væ/ᯠ9n4êéùmT8€â,¨©°cúåSé牽,ªaE¹ã`%<kÙ*žËW¦á‡L¹¥[íÖ™éeìÙË…M6˜QàäD7zƒ‹ï8– ÿb“µ0ƒ&·0À#çøåýÌîîÞYÛ?•±‰ÏþËÚ¥y{¢e–ªÌÞ±àž_Ba»ÎpùVhåŽ&Íþ‰ ~"k„Jh´ÂÇMr‰o' WúˆvOoâVm30è““¬õ­ØÌ£ÆÕŽN›SÊh·œ=¹èkÖ™>8ŠÎÔøáLúŽ ‹Ô‰\Ïg.zBÎV;þZ.uzÏp‰gîìŒ=ò-´Pí¨wÎ4¼í쫹«kîÀ¯¡ØÂéç?f¦Øù¦0 ß>ÇdVd5' £œoøh‹ºZ€ƒø¶Ú⿈\Ø7 }$CÓ:nÚñXŸ&IBð |ç<sÛJrîA‹þdµ}Þ‹’5NÀ¿'bÝêébn¶`µçú-|àJΩog©ükò¸é$ðme•øs{à.n¨fúOA;Öá.îÝNNÉx/È9úuQ@™u³Ï:úÄø2‘¥OÁÊæ}Z9)8ƒ  T_ló•“Û¢¶Úñö uÏâ§ R “´=9ýJª¤d<ÏTü1æs®àèS>ÕÀ _‰2´¹PySO–AÛ~‡ëRìÌ3û^¬Wà×=ðÛ0Dö Þá8Lí,GBHoi^8e _í ÃGªšéÓŒø™UrÉ2)²‘ölcy ¡“#ÞÇ ÓÏcGB]5ó- ³ÝÍ M }WYyúŽä¸Ã ½m ~ÜKgú´÷t“ƒŸú ôIhqå䥡÷ã=½Ý}_ 6ÈáZƒ}j›]Uöô#&ü´Ç*¬’sµà‰î é^W³gà<ÿEþB+R3‘BŠÙn®ÏˆžL2Ês}8vK dØ8j¹Wæt5C‘y|ÆÈ8¿,î]=µû?ÿçpm® Ÿ.Ô˜EÚ㯛?ÀÌV äVTxÊ+Ky4€‚„$+_"7ðäÑ*Li@ÚeWíøÁ;6õ‰ô‚™Jl:xša¥ÑÇ{<îl²¹udÇr2³eKœ¦GŽ—hH!TƒY%ë,±¿°¨È@EÍdÂËÚ×LöF=U*©à¼ÚdeÙ&›'~Ujñ±­[†ï;ˆwA(È·ëJ/žî ñtÒÐ s‚(-1 ›`b7ë}Û? ɃÑ-Ò…ÎñJîÂíJ«­aþŒp(GAlýö›ôt I¥”½R)Ywñ-ñá뤌ñ!]~‹µ1gkd2úõïüÚ;us»ªÇu7à6¦Y’ŽÞ'£rÔÙú Ôî— ÖÁ¤d.PKx’kï‡ìcûÅúƒ1XøK_·ŽÞkç³ 1ä¨r¾X4&ël¾frð>ÇmƒpK\ST9f­ÂYYåšÄ­¸tJNÇô6.ÉÎ÷'¹)ÐXúz¶õö;ßFi•ËÙ¦ SÎþׯÀ˜œÂwÈg =ywOäãUôÓ{޽b/‰Ó 9Z @&ÙÊÎ dMNÜ„Ÿ¤Caƒﳬäß÷%Àã<dì«Åxïåylý<ñ·l’ ‡oo᥶!é3´¬£µV¶*of|ŒF…7’^”´½e  œˆF8tûK=?ýËpê›é_NlÒæ"€Iv’‘Y~äF±¸R t»õªþ?'ÌnxÇ€®)ûI6èâ´d*l’Ÿt²÷Dñh^J&/^ÁÅœu¾™ó.Id:DsË–v° ÖíæÎ€'·ä7iŒ )Û`LÎß&Lá—ôl >¹ ìê¹ý(¦äøõöK÷·c½/Óm, ÞY›]öÚ‡¤‚Œ/åôñ[]Ag•óV Ž®ðŒà%–\ ÀH)ü,dÿ¶t‡þslK?×s;ôÿsÛ¿ý\wÄ"ÍûýÓ0Zb¥òßë—á4#ˆv‹QÅË¿ŒÃ±Œs[&«>üRϧ±L¼gÿ‡þñ§Ÿ Qúþ2Lí"u’¥ Sª JûþçCwv[0îýëÃCÙÏ)ðúóú#ƒ^Â;Á@ý¹ì‡±–Æ)^ &n`ªË d†iRµP!1È–ÁÐðÃIC˃'íÀÚŠ°¹âôSæI‚bï"Éú ãà;­!¼¬‰'qÚdŸXûºû ËX‰§›_º2ÁZQ %b!>6PkL%«”Š&;C ߬˜ù_²bfB´)^oˆýcÅ¿üµ<¶C?Ѽ·÷¾ÉÒõ79m]¶Þ»hí"$¿ÏóX[l[.‡-µóoí + tïvm|•ñÑåbÒÆ;elø½¾*%§ô¢£1›`•ùÍU{?Iùxýmµž«CÛWŸÛ•.HlÁÆš¹I:ä…æ^—óï@Šzœ‡?ôek>awšç¡§…”ûá°îbpA(ˆD#ï>·}3|†¤ T€¾i?]·«G¥$0ʼã"êœiÝ5j‡¾k'ÚqµM£"\×6e¤£¢¤‘FY•vÙ&ã Næ#·z«TT2ñ1ÆXë}LIåè/;dù›oI.;ßäô:ù`¿ ÍôÖȦvÊ(]í½õÕny4ø¹©”ªvÕ 'LtF™rHIE¿{Ï%ùl’y¾vÊ«Kø³ö*U{oây\Ü>À3ÊTûáÔŸÆ©ÄB§²òÕÞ{㫇n^ó¥ª}µ½`õ>P¥4Æj÷øð|œV¤5ªRæLU[½’ÔH­a1þ0>ö0jÞ`†0PU÷Ý$ª@àH¥Í7¯ƒXåQÎD“cÎ^‹¨\ŸÞ‚µv*›oˆ™”]ˆ©LuÖ¤±Z ƒ½P^@¿EÃÖÕ§y¥á¢á÷a0Q(¥Z£@JuñgV e:ÍI’Ç8M‰ÙJl¸&E’¬ƒ´[:CILZ^Fxƒ[”@‰)8FyV¿¸¯šv:võËBÊßiˆÁF—BòÞ¤˜c¾àö]ZgN·œŸçÐç””±Ù•}Rùºì%Ñl» `ôûQÊâ§B½ÕÁyr0ËßoSc“[ÑÉ_•Z|ì¡38t‚vBþp´“ƒH"àvü ¯â>H$³·¯yበK·DbQWŸ›êXÓùª†½å¹ucLr::“ ÚzY¢nåíÑkœË›Q­[ã°n¥cM¨£ ‹ÉiÆj?ôÝ~®>W6W ¤L ]µ{ËÑn×ߨzÕ·f…²æŒJ™j-?ãE2¤ª“Qê6NmŽÓ+ÈR)œr1FkRˆ×(Å,Ê[(“S*™7Ù#Ý«bkSíÆf¬ÆÏoûîwÂéœ*Tí±núj=Ô…’KY†<Bªj*–=—ŸJ{"Ãr‹%2º:NåTµÍša·dÑü"™ '™^ëWjÖû¹ýTu=ŠœêÏloª®í?.ª^Ð:$Œ&4Ö0k´_‚€ €÷Ó¤?< ãçzl>ì‡Ã±žÛ]W>¼fh<%rJ+_ÕóxêÊue€ÎVmSÖº?J÷¶j¸ÌÕžoq¯«ËÏ8.›êcyù<ŒÍ’äôX¶ uªðŠœLÕðR§Ý’1Tíš1 È¨”]\g«ñØU»Ý³HjØ‘£­ ^(s®5eEŸg{\5–©¼FÃ5‘å>Ájš'l¿¸B#âpZuåpên¬®zÄ(m¡iÕykš»í&(!™iÇa†WÊkyRj]8Q8e™ÿ%—w­õ»¨®öC7Œ ΚCOYë·k­÷yU¦;‘Ñ«KS£^i*XO&¨GTZÒ¸TÓeÿ‘Èy½r~±ø·äÁeLVVg£å¡ [ñi¯úí 0’åN™jzéçúY¼ÓÉ™~ÐU½›ªã0Uû]¥+Úœl²ˆ0N Tú+ÎEµÒý(}î=NOu߈áEr!z˜rËJµ(°’}£ãÑR ?õ±R𙫥xä\ÕõËÁ­æ½$CÚƒMí^à ¼ ³„p”âõh2ϳåÚÎ2íëc™PÔ^ý«Uú©;ܶ‘f ¯¨€~“\Í€Ê&†– QqâYý…T2ò§ÀDöóõMvwÕ©óXæN‚ßó“œ,Õ5”…ˆxs çÚ[Uœ’¼õ«&¡_ßÊåóî¥9çØ¸®ëRB6øÖŽõc|+ç×›­L|Ê” O§§=å¶)OLöòòÉ®“ÑgY¦í!‹ñ?‰\rÑEK×ù<ÎÊX®gnÑzØG7dÛçÓÛ|6d[À!2#+X©Ìì‰ÏÅó2Õ OÐ ÿÞ̼âÁËQÔ@Àad[£+k÷|çjs2°FÓç´²Îý´•½ÓWh¸ îÈa‹Ì·'1E¹ü¸ÈtÍÜÃ2G‹ 2ú(ËñY¾§ù¼êÿÉVmâí$†ûëç×”] ¨×›N/ÚB(Çu9áÑ5'wtÒÝ5ÎÚ‰UØåŽúŽŠú²qJ'½=Û|& ãWÍýŽ»+¯ 2Õp®a3‹ô÷£}ù®'Þ†yæ±1ð@œ/çÛn† Ô¡Cÿ²¬ïøCî"ŽL]sÝÇ¢û¸ý#.|µµõ!ÿí÷ÛUæP\~ÌüŽ%·±ù½Îµ“’õlo½|ôÌðÉ´¼«ÜRÙZ‘·cÖ~èÇ’f4[¾«jI#y‹úåùbëqÒ-iÛ/¬Z/ªZïòþªŽÑiÀ¼ÓÌL“9Êá«|ty]gqÞÜã@‘–%ŸÃ0ŸýÞñ@«s€¤Ë2ú"Ó¼óqêÕ€®wJvàI6U ¹Ä;0Ø™"Î7Å…Zt%Ò­¢~l¾0”§Ü7ð֕šÙìoâúå°œ·ËÕ.G«I>cÉÉĪ=Ź<¾Ù™îq-ÈèdôŒ§——ùxQ0ƒ\¨Û4`ξüÔúïép›6»LÊM¤œÞžd‹þø«CGbÚ@Ò‹7¥OÂ…vþ‰¬Ù’èNýû?ÔŸ– !cºehýñ­L]BñÀP{Yhkd9êhÌý‹1í¯Æß÷;ÅǦûD¿“Cq¿'ë'ª°;‹L»3—õéñIƵß6eþ©7Zi´÷Jcbön_ôrß' ÁíLu‘8 `'s%&”é­™7f7^M=œ#G ´x#|$aí¦~ȩ܄ýº(¹ÍÒkråß’ö\³o e¢'½ZÒÛ>/ÃË@…‰ä»¼¾ðF-^oIµ#‡äj8€I&î>º\ƒ½š·°2mð]-‡ÆÕóÅ ù:oï~˜å}Úg ·:ð³Û«=ÖrÚC¡;Œ{9TâC[ƒëD“˜ß;ºþâûà´˜Éæóy¹ôÇqVP•)Š·ŸEžžI³C'O–Z¾·O2ñã-€ýøÎ”ÙWð:v•hc’µççÿ™\P0ÈTC¤‰EQ„Nf õ“öq8§ù,Îí??8c¬Â4|;î4¯ë+^Îó*ëüUá­O¡ksÛ…Ò•àrN¿_cñ]ôŸXclšø Õ`ƒé4­ÿeH"žËå\4œ]5ƒñjVÚt2ñ†ø<ÅÌr`7ä|aÁ s“‹ò¶l˰¬Ëå]œcmã¾»³o ×…†hòUØ|$+Ýòæùýƒå°Á…ëü *û;þwATÆ‹?ò½{ª©Å‹å6áÖÌÊ1Ë÷¬&O°³ , á0Ê)¸$ŠIîOGø3ß*,,2<½ž6ªq¾oX™Ii~RF*(tƒåãÉ-M„™KŽÚÅâ’ó2Æ c¿ýt3#phÁr”áiyéŸf-.°†{Èm+Zíã³É‹4KE…F9ÔkI'øº*Ú¾8™õMQÃsUø›¢Œ³ª““´ë©\Ù(£÷F¥c¾8*gÁË O  ì¢ù†^®‹”íõk6¹>ÅäCö±Í¥øìÿ`yÛ®ýP\÷À#gÃ~>.2óÍbØ6¹”îñ“+)<Öª™ø.½^àÕÍçÐ b}½‹BÎÆ—.AÎX-Ëëóû¦b6‹ÊØ!À]Õ ‹ûäEÆe<­§³mhq_u¾\óíõ_d½dC”üòWbøòçýï=Gâáqzg†Ä…°L+ñÑIx+¹ÛË Ó/œLÕØDE'9ݧ•¡†KµFk[æe–ù~§ûÀ›•äƒ7ü¿1g™èl1èœÔBIFphR¨Æ,EÔ06ÒóU§|‡«ù/Mæ¾ಘ(‡ý§†‡·©†$•H|q:\’iÙ^×þ]Æçþø4ßÁÿüÝñ2VòŽ¥¤(S †^è ßßÜÔŽ[C/$Õå+øÆÓTAzEª¥Ôì<ñ˾S5»é} xµ¯nK5ÄâÅj¶ÓypYPÚ:q`/÷"Þ^Á~]¬Ä(: 4ªÁNŒ—“‘Ø’Û…BÕpûÂaÕa“‰ßYFbí¯{™|a=ßzž‰'m¾~ïÕ:ô/Ëú®Wö×ô ý_ö݆@½ÙË·­&úôX­8eTv5¿âáùö…CÒóÖŸYK´³F¬Ë´uPJ,{àd¨² ûÒcÁ™3ëzPP¢™M¼VgÕA.·ŠZ79tØnÀëáj ˆÅ‚vŠr€ƒí¹.ZQylÙ;CV§ö“ÌëËñBÌÞ¿Ôƒ9=Dï!/3E×ñàïät²LpOyízàz{'CRW¯a-ôu ‚Ö`þ~Y2_rkɘe¨`aL©Ñ4,‡5<ìdôYÍ豕Û`ô±™`ï¢×ÑÝÐ}þº¯ƒ!h)“EÌøÀÒ»]480™QŸL\Qo÷Œ~èiK8i”LJÙ6œ•ä·.Ç¿5É==†iÙü¢(#—ì0¬ãßæDó'h+Æ *}ì·YåEdoÕý³¾2!Éa9oY/—r—?§u7í½»ÑW‘L•öìxŽÎ,té8ËÜyÙÆÓ+ïFt·‚ÛGYŽÏòí8Íçu9ë1ëÐe¬DÙÔp»@nÖ·‹·áp¿m²mÖ7[|UdªË|šªöǺy$yë׫¹Lº ½y ÄæÕ¼ŒN†ÊXA4! û°¸"Ñ'¯Gûrµ8žŽ³R‚Ðdn/z«“™87.2æµWø®ãzâS%ñé^†J…x\:;4VH…C®2Åo?^–7[ü›_=\ô´ÊÜß*ó?p¾å8óï3/Íe-}}’qí·mÞÄ9Nζ).²ê846ÆÖqNårЯËÝä(ð±mEn"´«…¥š ÃS Žªfù±mE&º¬…üj)£ p”ÅËX‘…ßÅUJkâ7è·¦C@üô_¾˜«e@Lx· D˪P¹b ² ?®…†‘"³¿¹.–Mà2r•´E^·ë[~œ7þSn+L¬®Äðýy'(˘K‘uÙ.²]nK¡›j|ýuSë¸åùà†‡ú(vª*R¶|_…KT"¥ÅZó¿åÃý/î Ä™Ó>yÕÉD'…ZR dªÂÛS3,ð—òàXp°‘ÙF“°~¤¼[ «®îsC9ØEÕÀw8× jð`“²‚ ð&ɸÚ)~\µ&ÍzÌi%of£î’Ã=‚:z€ó­šŒ—ää+Iƒ0ßÓ+/`׿Á€C{ ?Nf¸Õ¬ªÞ¨Vvóy¹ôÇq6;‰Nô°^\+Ù–2Qù.çy›/j_âGV¾k`ÜiI2æõ´l—÷U‘ª*âH±ÂXry¬"A‹ <–­¤d%ÝFt–P¡²¤0ªîÜÉ„Ï<ò2ƒ×ØÇg;”•bw‚׳:‰ìÁzÐq1ÖK22G]A†§ñ´žÎðÍN [ŽìÚ`º-þLÎì&ñ^{Õ83øŠž‡®) ÎgZÈ(ªäùý-µ æådøšßÀO$%Ëb€çˆ^Ò'ÝÝo¯”´$z|ãÖúk|¤ õÔèUžäû2]žÍLžÊVƒÃMÛ À‚¬óåZm¯_­Ôܯnždš¶M›?Á4 Á¹Çº _ôÕ\ì¹ãÛØibA!kºF$¨Æw2±ÿÅD Ÿ±‚D¾ê´©Å1fŸ.GTq½³ŒtÓÕ#•AóúÓù{Ÿx©FøžxeVGøU 2‘~FøŽ¼§û´êE Öæ·Õ¤ e¼ádE»Y¼L|å)M?×É2É6¯&¸Ò*xKFq¢ OËKÿ4›º²*óAôßÉÿðNzºÁuu®ÑÔ=ËĦ §ó4Ÿq|}k·³L–Ø‹•g²›M¹cWåÜÔâʼn{Z\øÐíßÖ{uîÄ96jc´O¦t2‘ñUï‰e‘ºÉfždìoý¶O ƒ×ÃTÍØîUf²ácN† XB®–P@þ’vŒâà±>u¨O6½ÍZdh‹kÞm¦ßt2É¡"+x¾+]ªi(åeªB¼÷ìh˜òïvW²K-ãžÐÊÓ—î~ë‰î·–@Tj°ñ°,y k«¾:|i ,ØÔŒå›a'<`E„ÿÂE™"âOyè%†Oå¡{ÿh,d¨M×Äf~!T°ÊË·õ²¼®³™Œ‚'k jøÈ6æíj)ÉS€¾‰­,ØLëøW‘f¹ñüä°(Ÿ¬ ÜÂF·pƒR®öR\pÁ…޹袺´ ëiü[£ˆÉYªI³T——';zb˜£îÄ,z`K«›éu3o>vºxçÞ2éìy^Õuöëì‘/yÏvÑÆ{¶iâcí‰ý;ùû™ ½m&Àî\„@N%¹.I•¬Ô:üw¯ä¾-N¬XuLô‘‰ã•šI×èîFÑÈò³±¨„ö[~òG!zÑF—dLQί« Ãí~ø’BäeôÞÆåk5]bñ$u†ç?ðJê ïqƒK³Ÿµ½Ÿ@‹Ž)ÕÅQAsšý¯½øEŽ9{%‘NµokΕgDàr¢Nçi«$ËÇWåd†Â£ŠŽl‡ì^f׈ÿÜü|{.-äóPÈ·¶I];WBóûµ5¹”îñÚ’+)üÉ4(ÈÄå˜&™à™=I3{¨Á\ãéx™Ìe·lw““îA˵³‰WÑß|á\³d«\¾——¹àk¨È[°FÚò$±/x”V™52æPôGÜþÑâŒl&dæ#R-ØÁÈ;moOvOxÈÕÄ u¸â<írÀG -=F!Ê¡?Ô:G©­!ñ¡0¯sƒöéoËìÈó."ÒÂ,à&ñq^ ¢æ-2æµæýnI´N­ÈTtÞ îµ]Ô*D55ºjèÓm¤æ>ÏÓx|¶´ä‹Ž ³@®Ø(°ÃŽÞt£Û¬›,CmªÉLIüÌÝM¶–ÊÉ€-ÑSeø!Ïj![AheIÕ„&²'¯÷d—F«I›1N¯$™ê ¢‘Ÿk@c¬t‰i%n(¤¢ü&•`9®G{ qgÞA¦*DRN˜Þj ¸Ñè°À Se’ fÚY”nnáëˆ#î<—4[¸4Åù_|ÿrÌÙ¸n6çŒ"…~;™àIWßÏýk²¦ädª"6̓ɞYÉž]íÞÕCáe€ÔÌ5îKiY6;»pžºÄÝ=­Å9è¨Ìߟó t¾oèghž¡¤|‚’äÛyÑ¿œHáe¤^çc¿ig†ïw®÷d¬±Æ‘Ûë^>_,ªÁ—Á°H.Íϱ>5¬­Áº¨ƒZi¥»¶mfb=€ø¹¡v72ÒEîÀÕóém>Ëz´Àº¥ÍV¹ÁFtpGcžUG[EI¡,©UØ'72Uem«KD‚æ3­ A\NFòÍSd ›³Dè‰LðLŒùÇÿDbü¿%b”®ùL"FÉåñ'jÇ~ãëYáƒÚ“ñU.I&(äü âÌEï5Îh蟯 ôE¦yçãÔ«%ÝÌÇ´ò–ž†#Èzœ F¾˜´òyëµwe">§ó4kuËŸgw2@ŸÃiü¶YÄꜧ6A|ѹÁƒ¶¢ŒØD„¢‰ÛeÕR=Ê^î³l"3ÀQÜ­,ÚÛŒº‘|ß7~ š~p¨ÿíÛ²-ò.—w}ÂáSm-Ø‚ÞF°¶»“Ñ72ž^^æãeßÖ‹ 0;1Ô¾‚,צӋèôY\Nôa±“àC•ÒÖÔf§‚ÛÙà˜Úú[2ÌMKë™,¯ÿcï\z#Ç8þ…BƒE²ø8˜\$ÀN’³ZMÛÊèÑ‘(?ÈwÏhl»ä¦-gºíòbuh`K;®Ÿþ,©"%)iògʪGQßVýMÌbVßO–…·vqú• àŸ BF$´M]¥¸„Ú0uœ¶g§Á@ïœtˆ€¥U¥`–‹Ä×ø Zqb 8¯Çª[ºëfýj°Ñ«–ÿ(WI•ÒÞd,jÊXĶÂÊŸ;¾ã53.*í…¼äbÈEbŸc[²`˹/ŠØÒc†9ƒpy¹&Q±ž&Ñt‡aL\~+h¸:þ²Â+¨È¼i_a¹êôxàÓ{ ÖÇ õÌ“rˆHÔÖG&×XvTœùhï¥óòÉ¥Oõ8´í®':ä'ÅnNiè·O-%"j'CÆ)…k…ÊS¶²BJI^`#Aõ‘€ûfªvmÜ‹#)3Â#Ø06±OUj†ž61_>þÍÌ@Á]555ß$x „{îÉxÐ@ ÞY°g—àGÿz»SùWí©‘þ‹¥WÜ4½ØýØ2µ¸ ô’Òñèe ¹ÍLê¡; s¿Ç8w“¨‡>UMljð¯ÃЉ.öó²Ñ™Q“o’yçᑹi3³€{îÉÈ -g‚´–– ßÞPà XN9 ½rà-Xéõ™üÕ®ú¦û1ù¡ƒÄê¤ØIT‡æøV‘oñ1Wv¸…ÏvfV³@í´Õ€A£‘ôeF¦fÝÔô,шô¡{z t ¶Ÿp¥Ð™¬ó ÐH¥íÙÕ¨§I“&<šE7ì§Ø o”ÞÊ€œöPÜ¡4èWƒÝ2Qä#›¦¡ÅË2–Ìñ”Ì1–Ìò”L3– ?X²SÛæUÁ;P(ÁŸýêí|Óœc·‹{Q¥46»9ÅILé±eRï.2)?÷¤¼WàƒA‚¾ˆ'£¯蜖îiÀ &£¬Eótìµ6XtZ7Æ:§És õí8t§¶L\WS:¹“â!ü¿¿EѤªmê1UÜibÐ{òµS¾jË×R€Ø˜”èQæ0sQSæ"¶Yiw¤µôš4ˆ‹nÊ-bœ!ï¢[Wëh5ó­+%`‰_Ð#Ú—ç¡N©öëÀi2mŠDÐÇ£5ýaN£ÂÅõ” SV£Œ:{ãì‡îDŒ?tímJ‡1þgŽS75§v+Ãñ¿ÿ¼+ Vzð^*A’s¦è¦œ Aye´$ɰO'KÍ›ËN %*%r*¸¶'œÂb·02Ð=MÕrƒÚÇëjni­üc‰êa›82"jçºÙWâf¬ú}äÊÅ4°¸aÝÆö.¦¦®µ#e"b1ëŠ,)ƒŒÕ- ª~›Q‡ …LÅúx®gžÀ+§¥Çà8x!?ŒF¬Uh¤3–ì¬{ûÌHZ- º§e«Ø//5Ù^…ã¡júSgvóͯMÛV§9͸ سíߣ+c®,аx°ˆOû#šÿ§\ç½ñÊ®ËuÍ܉®ªODÿ_«ÇaN_㔦ŸêLôŒØÏcÓßäÝgt,û©÷L /jAmG-Êt´g½?âÚÏÊ‹;»±¯‡Bmú»ªmöâ_¿¾WÕjc4êLML™šÚŽÔDÕûS­ýèÕq!7‚4î·_:~—½Qõ>^Þi !=¤Ë¯!ŠŒ»ù¹VKW~þÝc\$¦ Hm[I#s¤$íüþ€k?†F“-Ý^R?Åx2.H‡>ÐͧúõÐ'q]Õñ¸ÓqŒÝ¢ ÄóhÍ ¸¤Yyf@v::f½AÙÕq!?•ö2üö{öN7ݺO¨ç)\Æœ§(–mªÍTµíp÷âz¿ÓöbØý;ÖIÀÖì¯V‡.*PÙÇ'j¢ fÛri”µzñý*ÅbUý9¶±‹« ˵,«&²òfÅOĪ>Q X>¬+²é[¼ÿD…¡Žo”~6`ýÙ€ñ³Û0ÿÁ–ÿ @Y™%ÚO©üG†O9%äÏŠLXÉåÔt‡6R2þ)”ö|f¹‰o3sÒŽàå¸Äüù†Å!ÂÇ¡F´öc 9ÔÆI¹­$HÈ®öÔ|+,\Ìëÿ^¥Û_–Þ;qŠ<‚ÇŒÑMù]—ÝíW¢¶Äiꪶý2ô‰oØkŽjñŠª/±JóQѤʓLñyJÆ0Æ(›„ÏpíH9¤eî§,ø¿ôŸÅ/ÿü‹€+(L¦Äò“?dʦ×S.–!"Íê°QáåFóLÍ>Ä€‹g0Yz¸³‹pÛ<4qû]–”ܵÿµw¦ÍIŸÿ.ûúiDåQG½ôágÆÞñNǨg¼ï IpS$¤ú؈þî+På6þ PSjBá§É „#5Íü!3먬£ŒÁžå_® ˜^„÷ìƒývô±(̬:|XäS6»ÅÖõmy]½Z”»ç¿”1Jo™Dð–I–Þ2–/LÓóaÑ:;Z_O_Íq=ßôÀê>†.Þ_ûÝow莢_$&¸úÅ_FŒ¦œîFâ (óÅ3æKη›Ç 1 _8&†ã·+²G‘еÓs¡/Ï€ô"oYgÊûoz0tà™¯¤äB\ws[p5.£f¸³fœÛS£…s¹“üLVK~K8;«NíWÜ}ùíÇo'8þ•ÕØ‚µó8LƒO(’¬.S±TòŽÅOžNM±§Ὃ.~Õ’_Üìn—ù ŠbãmÊñ’d~ço¿û1œwJÄD¯ÆÐ¹ÔtμÚÔÇ®ÈkæG¤¿U—¯÷§VÿðÇý2?ßn–Å|ÓIÊžx:ƒ£\*À J/²Î üö¥ßÔ‹ëjÆz/d7ÉGg Æ…ÖRêņÑQ”Ìõîíq»µëH~^]­‡ø¨p6urÒ³ëîSøœSkç3©é X¯î>ä ñ¯jµ¨ÚMó`“Ûå 1`Ö³#j1AvXCô>_E >WgäáÙÕr6Ï— *j´[7w—ËJí£cò&ëƒ\¨œ^bù¨ŸÎ£æ”ˆ¼9{<þWæ¢\-.×.î6í}ÁC4¦W—AÜfm"ÀI²Ãâa%ºðù™=¹õä_ÛS oC šàÅMO×Q£§„@Œ6ªé©‘’‘ܳ—ÃË»zyì‚Ã_Êwåż©7»Ö ö;ÿðÕuµªšr×îÒ¨—Õ¶Ø…€Züº\ëJ,] I¥·Yçm.î›úíž:‡‘+Bâ 9—t¢¨Õ‰²ƒFªÿrv5ùWSÃÆ¹Î«ýï_.¾¯÷‡n_¶7&pûÂ³š†¬ƒ¯Ï9Ó‹ F͘3•=#ŸÎ¤§c˜_ÚqU=–¡©Ê]õj¾ÿûÿ˜Hy_]¾­w³ùúöv½š-ª«zUm‹wÛM³ÞlŸÜ–¢£@”¸@†mi¦ž¯Ò¸p6d-¾CÇj5Æþ…xä­Ã´tŒ.¸h>GK§K¸†¥/]qñn~ï¡ßOÊå:uJJ‰E-Ê>ë—µ à¥óÅümÞ ™`Ž.Š1‡gÏîn:fÚýf횘Ër[ÍnÊÕbY5Å|~Š¥­¡Ð"$Pµ (ûôõ~¹_Þ‹ëÙ›/¬²bŽ!.Ÿóp€kô!:3Öa$ÎÆØe/画gÆ¥Sœàoþÿ«¦\ÔëWŸï6__]=Ï"õd”Bê„€^%ÉÒ«ä¹V/kŸÍ¿Lo±<Ú‹5ØêIs×b½1Fc"BQK„²¢Õ¤@î“Ûq&3N܃GŠá½ƒy-¹(%5LtØa›/ëjµ›Õûüí|šRÈÏ•wqÝ,òïêêý˜i(Ÿnñ¤Ñ$Å(j£ìÐmã6»ÏÙ é.¬‚crù2öÎëºÏÖ°wÚƒGì±ÃËg—û´ú#Å+AJ*ç1‘ÅÚ±â¡>nŸá¼G0N„£æÔÙD6´qÌ1 ÈûÖ(»Ù¢ZV×ånzž‡~ç †dzƒ '£eÇT—‚L /Æ»ÈûgfÒÕ±ñ£,ìÄÅèCž%k :°…ž¢ßË¡þ»f™®i{¾šUØF2iåŠÈr@ÅÍÔ(h›iyö•l9ŸWÛm}Y/ëÝÇ“ÿ€‚•: J8 ËTýïëÕ`Üí™G38P¡ (ာƒ³7UµšÕ#sCgZ%Å ;n°ÁÉ«>­’ )9Œ¢D²/Ë{j)òñÍ×(lňó¡‘ýálm,4*±D!×>ÁÛy5Ùg­4ž&ºÌg€ß…cSiëæmÕÜÛ­]»òÓ‡j~·«×«×ÍúÃÇáYoÂ?>i+^… s/袂lvbÛœ 0$&Ìt3!×/?þó×”õσäô²G!PÒ‹¢V/ÊxâÇb‡6¯&âÒ3©[ÝË]{“2–èRKIïï¸,›77ÕmõÇŠ–´£Ó¡h•"ÓÉäR£Ú+áÀÖQèöc^§WømßÇ-n&mŠ.öMѨ%òë¼Ø9Ž]R¢V5Ê’ê¼S~«W-Èç£(Ór In^ȹ)Vìþ¶{;ìq>Óçg®æÑb a„ÈF€±žEáfŸëÅÛíÛº\4åû6!:Øâhà›’Ú ‘Bƒq¤†¼ÀÜLÈòÓ¢Þ­›GT!Æ;èÏÁÌEÎG(J( ë ü<_¯^È›êv³nÊæã=ÍÛ‹ÝÝåvj¢×åvW]®ËfñÙ¼z—²~(JêAÖQÿcS^ÿXîJ¨[OÐï™­¤×GÑ^?Èàõ×›»Í¯ÕêîÉFb”€¢e€ÿ®—ÕÅÇí®º}½ÞÖcmF?N­¢(éY·F_ß­çTÝŸ´4êMpœž0y,y5Ù~•³ÄÆBÝ”››z¾ý®áþ€Ôvbž£eÃ,S¹÷pE¨‡—€ƒtU ÕkYF9¨þó ÐOáê”í)1pümùqs󺼮Þ4UõÖ‹ê1Gëe¬¦'B VcAÔ‰s=(±>rÏ8?”ó›q*BÞB!o¡,Œ'–@±óGoþQÑÃ…è¡G"%õŽ‚¢}È9K<Š4”d:=Œœ£ ½Òo%2I`HTH°l’iŸf/ø”b#d<Ì+µý!,ßÙeÛ0 û¡\½+·£v 2¾+¹‰côœPô¡LÞ0´PÀsj#ú2 ë |_ïnËÍçð©ÞÕóêi ÌÑXI¢e# ÅÍ“7Á s@@IvÝ ÈnœÖièV¹‹·÷a<˜ˆøÍ'ŒRç=ÛŸÙˆùüü}‹«Äî+§¼–ŒÁ]´lØ)t)]8f|eüb%áÉÇ™óÞ92#¾æoÙÄ+a.Õ?>—*$.=ã;‘B89Š$Z Áã òaíiZõÆÛ#+Þþ¾-¶ËÕÓw²sd »D‚¢–e$ÓP 6R!‘`m`îÍ«6|ô(¨ôט³2Á½"Ûcïj»Ýíj\Úsbw?j´&0À%Q‚Y‚Š› !v7MU.†ÖYYìüåÆîÂÎáØE`+ê¢Á;+Ñ"ä}A™pdË>ˆR™dİTgÓ¬çU2ÿlÓæ+Ô‡‚I£”ž°ÉuxÔ821†. Cœ:a"‚½·÷0åu5[®×›ÙflA®¾.˜àÓ^ %ý ëèo7ÿÄ"!>µÅA;q¾Ka¬QðŠ5QC îVõ‡Ùb}[ÞÿÔv=[íF}CE$æ`¼!oU²gJ©:oM´%‚U„òê¼q€r2Ù€–úb(ŠÎDÒcþ5D6UcÕ¢æ,DLàŒ¯d‚fçªEÝÌÚ\5c–¡‚=|së\`õO "Þ*–¤À!Ò¡eÕC»¿nfÛ›»««‘‰Tµì˜þ|æÜEÄF õÜåUŒÉU7÷µkϺŒj1Ñ;ýó9â´$G1F«fÜNƒy ²6èŸO‡ÎûR;9Ò6¸b¯¹n7¥ÕYˆ~a¯1@9†Àž£§Œ¯—[žÕq•€Ž`»h]0qÌEê¬%¶îx¹º*Ûuó· hË Ï~ËÍÄ0Xé`±š "x n¢Z!Ô«0؈°P)ˆ5#ք見šrµÀ¦áéK´÷"1u´P”h@v”f^ÜL‚KúfWõH-‡[“8×£pÎF‰,€¢^\Àq1’ œCÁ•âÓó`ÔLB„upªkò@Rcµì%« ãwi—8G·*G§^ŒïÔêU uËÉÃf‰³ D dŒ‡kVg8^zÒÒz”ŒQM,(jYP» Ö›j1»Z •%„Èä¡Á«D²] %GF,PZVo{Õílû¾Þµ?:<šWÏÞø ~ÿÌÕü<[\ fÙïÉAŒˆXÑeQn&$¹¾:vFÖï›êz6_/ªù r‘¢Ñ†·ÊtD-È 0¯®g‹ªÕÜÇ@LÇ &YE{Á„CSΫYõ®Z¥îô$˜tßÜÝnf×ËúòQ©¹†5ÑÚå'‰#É:ÿïãõzW=¦á5>ćñ“±ìjŒÁ¼²jàÀ„&iÃÍÁÂÎåúúz¢ï|JŠöºrµhkÍáM'=’ÜÌ”2{a2äµ ÒÞHÖ¼k‡9X¤·Ózéz¹¾,—]¬c¦¡Â8~I!4ŸOCYgMj ¬üîë¾ñ ÙˆÇÿáP17)"€J²LÞ§m¬ŠÛÛ x É\Íï]öqö¾lÇõͬ^­wõÕlj •oºˆ}T÷ç³ËÃù)ü¸¨l` ¿ªW»fö¾)7›Ô„Mcœïusûàù9íœeH¬ÅìÇ¢º¼»~\>žŠ gh„I³fŒÆ’³Êq|Ö:>ON*bžD d¹ò?ž–…@"{Xï²½)›j1»­n[·Œ¯š2€²{‚¢óÎ¥þ7  –E(Ç3}_Å÷móqÅv¾^m‡:Làñ|¯5©1"ÒSm£0wT—»õm=Ÿ5ÕÕl¾¾[ Cܬzú$Ë_¹¿è$äwÍã. 1pÁã@¬Æ÷ñsoz‹@§O_!Š(Éöï‰ø<ë{ç‡VP?)@z$û««êùÄ8¾:†#ÖØáŒñ€ÉÌ61vÚñÆBÒò:%µ é¥M½lÇô›j^_Õó3©‡…—éN¢¡¼Oþà#F9€j#–c@ÕFÄÊ©n=~6õ˜Ø 6lÒøIpˆº—9’žn˜–:‹nœ”¿™ä(mL`¶ñ|í^foù`L#0=Ó4(¨ÇsbˆÎ*Go\-äòzrÛ—ÕiŒ^ôàFþÙUS½—ÿ¶Ú5õ|û¨™¶j‹p!/ ´°ËVz ]X£V+°4øp0uÒ‡Lâ=aÕÌÚÿž„òÜÖ@×=îÜw’Í„:Ï$ªql߉ëÜÁ«;£jØ;"£ª„ûIòz²¯nY4ÂŽÙßëÕõòX¼îWÔU“¸Ýlf騴=ùªÜÏ= ‡‘a!Æhc cfZðj‚5£Þƒ‡ù©®›I° èÊíÇÕ¨x¶ É'É%Q´lˆ¼Š÷jbN:cƒ²ˆ‹¢áy^ü/¤ÝX\×»úzµnª¡óeà“Û|,[&žs1² Ž˜‰¡KôpË{æžÊcòí]½1üP1y´>𙲤ÁR€MüÑ39‚-nžX|T7²åîKsimpãA{ö$;4å@QtET±!úô”ì.?oÈzÒVm9ÆF‚ã'ZïÌîVíÌÁ¬Z½«›õê¶­¾Þ•MÝŽt·ƒ5Wv5ŒÎuƒ¨åY?Áh ï%üð„†ØçÞ;ïz«áཫ¯ÙÊ^]6ë÷Ûª)vÕÓ;•ž\ÎKEQ вîIý?}÷ã¯?MC1H}u~œ¾ž¯þÖÛjÞ&=ŽÕ\·ór™9Gi¬dX&cŒÚ„¢d°r¿ÜlOX£o U—Šˆ@a’õ‹"¾ ç8û&DÊl~˜ ÿpfqzBÇÖœPÆ­pˆ–+Ø¡£ ¸`8wÏw1ü0…£ÖQÀ60É¡maàeá®>©FS/1ùîßoþþÏ]|éyRìŒÑZh¿±ËëÉØ^¬ó.’öóà»æn¾›Üâ°`aZ”ÉXͬb@8\50™‘:åu*¢ñ¬¯òæ/$Jó3÷ÓØ_Šà¬ñQÒÎöÌiÉwº,yc9ÊøÅ)Õ‡ÝéÅÛöú¿¯·»ÙÕýÜ[誾:#[ ‰‘ ‰ñ¢UÊdU— ¾ËÏŒ¨~±&¹-4«7ó¡9p„b8zóË©4*ñvŒjôfî>–oŸ`-ÎåzØ1|ñ•VQ§Æ2µ€œ€FbØy”#¸LŸ+<Ù•–†Çšì:s~ÿŸÍz0ÎŒ ÅrT"ïÔ›?釵¸UÔ¸¬ž¼oÕY6N¾hõ?êw#7E †GF┘À±ÕÕU5ÏtK¸[._¯ëÕn°›E9ûGbO”ì"`J²OçøUõ…JŒÆ)y"<ïßç,šïæK >zïáŠÌª|»)qâÿ44±…a›[­Âщ:Û…2Öx#¸÷†vZõWÅ|¶¸»ÝŒœ@„ãšÍA@ëÔX=Ð(˜qxÿu‹ñŠ_µuÍàÖu4Œè7NÄxýÖ29†rða^mvõz•¶„ ÿ ’îfOO÷XX „³ÑC°®c·'G,60úa²! Ù“r3Lƒ(½hñ`HÈ8¦aoÝ|Ã(‹ ŠÁ#6FgåHðÎÞ7õîëØ&cÅûØ…?†Û̬VÖ$ëhÝï`.wÕ«6N_µÆHV8 z!9À3AÜ+­ÒeNçVQˆµÆ¹@ðȰdˆ H ÆZÖ—óÙönÓ&àÎç”LM51 b˜ÔÕ´•D½¬ ¾ž®¤7S—Š©KhZ{…tº ë<úû›‚œ¥?—¬‡®–pBÛ¹èM8HîPáº+ãqžCOkptNaÔ^¿sl@™fÙýi;oÖí­°Yï²yø¿Ì.˦½Éæ9¶í[%'ƦlˆÒ‚,½ai>??Ó‰3§¿zzçÖÇ/â…í³½!„/ŒÐ'ˆ°êCÙž¸‡eÿ4Û_ãÜ®ªžÀ™˜%¸âæ/Vòjbïóìæ]˱TÒfyw]¯Ž-Î-çG¤oÖÇ+Þ«úì^mwmãÛŠ¶Åv¨íS‹ß¬ïˆEb: EémAöéTEßAŽ~õ®jvUó˜¨À1ð-¾’¢ˆ_zöøí»7?üý?_¼¹˜*2N8Id5Ödï1õ¬‘ÄÜÏ¥Þû`ŽlõôgÍè—z›0|œŸ³ê­:¼b”£¥¾Y;?l>ÿªùücΪyÊ?ý¯ÿu·­šdçò~FÿÓÿà´‡ø›string_escaped.json.gz000066400000000000000000000241051453663023200401070ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json/testdata‹Ô˜;Îd¹ …c{FÇô~x-N$Jw޼y[˜ £Lòáà÷RÝúÑÕÿýûß~üû?!”øØÓc‹Põ„ùÇ¿þñúÚì£<žø¸óãw©ô‚íQ=~Ó¥’vq®Û!»{ø6ü=I(vº¯ÃfS†À‚¯Ä—k§“uó­ÛÒ³²ÝÕéî3ð8¿þøç/¾„)<Öà:+:›n§ £Ó~ðZZiê»Ìc™ ]¢~>éãqÁ»þÏ“}`zNZèû(ªá^56z&¾¤Ç±é„Bu~8‘§ s³6ÎJ8ýœªNgJ†ZÝtffE†íœub#þOìtmÃCs{²=×¥“Ì ¥“0Ø|’IN§:>:õDËÎ>Ïn8ȼtªg!¹WzÈùÈ)úTçzУáØ|wÈþ-ó,¾ˆ}.kâx˜Ku85ÙÒ–}Ž' z©ý_{¨¶Î>ñ¯ñHúø.¼ó¢Çã‰8ùqW«™+RUÝñ©Îõxµ?áSòøeª 'àÐ/þ©«Vá0— ³úŠe‘,è‰^ÛíGwO]´;ïNP§|°pñ7ýFò§Û¶ÙÜ3ÑôìÏ6AªÓN1:¤s-ˆ–g£3ýNÁ?–vTŸ‰öYÌc{ޝÛ|£ƒÍÝÙθÄ|ɰSM?ÿ ÿJà #¼úB†š#lµ å±tEèAú8eÃåú3æÔâÒ|µXf…åÀ…SÑèŸZu;7çtC'˜aqÛ.77»S_7½9íDµ¢ Œþܹ†Û9º}”‚ïn¬×ÓÑÊéœã§Àì¦dwÃ.—Y"Ln+õ«ÛA«ê|– :Àêö¿y!íCw˜õ%LqÖÇswA/t~” +N\g›¾ƒ§"¼øÒ?—%ïhÕ“àgS¦VàèV ð«M\Ùú%â»ýå£ ç‚?@œ…>ŠV]ò°ÎÛ܉Ä98Ónà¿\õV|eÆqOíeÛ¸.¾ +³ Õ tžuÃÒ¿“ëôÀ¿8³9{ÂŽ¡ž"@ü‹Þü,ßÿÛ8ù¿„°ÃN}Üfø9ÊãJ°â§»s úš^Fü·¥ÍŠn®zp¬–0‹«&—Y­º†ËénÊv³2®ªº¸´³ÓâOêt¶M,Ÿ~›R¡ïln+?÷ÂV—¶sÙÎ$ÃêN”݆=á€âîÍß­?Kw=Ùå/ÿ)¸Lç Ýý«hƒévœnªõ…Ì1µÇxƒ8§¢#þFwü„£UÕ _`Ã_pXT]a§ªzóM ]ð#ΧŽóµFõ½ð/zz‡ž ýnÛ ý†^(6]g¥»íl.ÓïyÑýAtŠèU7=À 7eXZXî\ËÍnºêƒÛ0»sU£¿=Èý0˦'—VÝþòór¸5Åÿ˜Bwô„v}ESMë±ôÇ[~¬§'ªêOzÆcèhœHN¾ôãüšèYj®Ì=pÒ™©èŠà {†f±­â±MúgûÔìö‡Y3ÕמaÛfAün ÌÒmVìŸíÔµ¡7ºÐO5¢kÂôôçú‡9å˜ÓTØí@!YìË%-Âl«TÐÌ 8Öc7œ6þgs+ ÑnµVûŒJƒ$'=×Ò{E3\p»Wßÿýìáw~³'§Åt/pêkœse?öÑ9>¦õ¸2=TGE÷Ç“àÂ?èI&Ñ¥Xu\cfúdVcn -…GaJ¿V]b;7í$fòwÄgϺñé9èú‘SðUú/U±ÌMfOlUñIT³Ø]µK•ܽ̕ æfúƒÍ­ÉÎÒèépã'ü Ég¡$Û*áôƒ?!º²gŒ$àÁ–¶ýì<™r¿ñl¶´Ï úYu]¦ÃÒÍ…êø_ã_ù/)}Õ¿[Òc¾è+NA+×sàGgF_çtXÍ) §¹YÃõ7÷Àb,Ýñƒ“jr9 ^ü »Ûjȯ°ºéÞ%ø áÄ´úâú#Ìn· s¦ë¿î¼Ýïãú+,8ÁŸ6˜awΡSµ¸Íz¸ž`:ŽÃXºËÿÌ)^(ðÀõç¼êèV`uùÝÿÆÍþ‹ðÍÿqgv©¾¤0ß’‰Æå¨Ñý/a¬jå^¸‡yæåGQNb´=ü99€S@/t°Ç Ú¦6øbt˜¿·2hÔµƒqƒâ`Š`»)ô`¤?©KÛ³ƒªˆÆô&°ë­¨á´•Aý2P×Î iŒÔ¾©z88…N¿ åË6Ÿº`KtB¿œâÌÓÁ&`U:_¤Ú@aÌj`­ :è–ðÅßê)Á½o'QÀÜèŒûî—-;~‘Ðó«ûé &ó¦ïÌ–ÀÀ§ÞÀhà»NheLîàW¥ tÐN¾ó-ÞcœTr“,ñÆg!™žN¨‡Åt&xkûñeªmå|˜§?–xè=–±Y¦ód+ÉÖÑu ÐnÝ׉M/=Œ9ŽÃÏ5mèÖ¼#&*²%A‡˜QÞçD•Täè#d=cEÜ‚ÜÓ<ŽeCWëè&¾_+2úI« nꨅ˜´%#CDÞÃUrº¿¬,¨öq*ú·Ã\¤¡bÛkïFäÑ:´zXz8”<­"²µu8‡'}¨söàtG¼#›ÇŒø§tÚåèº&«Ä("GwÔ-WeW UVnzغš:ãBξ2”Ân7ª+ÞòhpvDL¬\#›#›mè ‡–™1¯˜™¡2ÃÊŒ,†Š¾ÁÀ‰ñö3kÌà'ÄÔ1©ñtW:zrV=!R3u.¨Ë#w¡°îtÆ@þÞѹ%%:Fj'¦ÇÔñV×ÃŽnòpý;Ci¸Á ŽŸ1 ²àÔ~òt;O[ÄÝUÌý°Â¯£ò{E·y$TÌ]_=!2&TǰŒ*9á—‹ÌÍ£XP¥m=ñkí/‘=jtì¦XutT/è*ÆÝxj±¡nˆÈlX]—†Ã“V »8Ò¡*žFE‡–ü<Íy{wÇ.Œ\àÇ£c®SBÿu÷|z^G=mÜö1ž ¶:/¨aˆÄ=_º"†rÛs&O‡­wôV­„‰½Þu½aæ ý+h©Æ µÊ>Œè§p7OöHM±ê|b¤NÌÁcFæòë_–\I{ö&i¿)qDp 83Ø©=ÐÏô;/òÑsßÈ™ÀU©'õ¸þ\dÝn­ñù‘ºK-OÅ öD]©¿üú›~ þ ~ûiàþªÈ]ÝÚO?…úËÓèTÐÛyå·–ËÓùºÝŽA©;èßSrkÒïw-Cïü÷;íO?u¿×Û³Op§gJBÚœìŽMÈBÎ§Û .»yV nd"ûõ×þå@#õ2ÿþ#´ýÓ¼ßÖÐ3iä";éÏÓðh'åFŽOëõG$Ãã|Ô'rÜÌè÷Óƒ?ùõ©þ:éÉcÏ[ñöÐõñ9ÿêíÍr,ɱ%Ûÿ7Œ7öÍpØPgQs¯à" [žDÔ­ŸP(ÜÊ£éé™ìš”§h¦g ÇcÅqÒÿ‰ïa†QöØD;É97ŠŸ —½KV‹°Ã­{%ÿôù™Çés¡‡d¦8 q‚Lî`øÏ¸ÃŸ¿f¼üùÒý”æe~ì—±\6ÉžäÉ Ýe S?2™] @|ŸÑìr¯]¹Òãa€ËNO™½ â8t¦¹F2Ò™—ùå57™Ù‘ç=itvVø ,ɦòt†ŒIf›¡VœÕa͵ÛSä‚Ðo~X ó8åõÈ$ .ðiýåí‰ê†ŽÎù’Öæ`6y9öìáÈ3Û›hŽd\€Žd’Û>æ»bÏý?z!~EÍÐ=J>Ãý_¿ª9è¿~ºìã¥ópÁ'«=à+ì0ɪ³½>Àç9åùíE7I:qºÌ¡v™ü“Óø&™*ÊSiÞÒ g5Ét9+Á)ÚÉ3ŠvGz†>Ô9#üÄ)pËjê¹Iò VÙ»à±f¯»²õû¨ âhC‡Cú³~Öö’'{kA{xDWh/§|U^ø`…ùÒ%Ø/ýÓÐd‚ âÇl=®àxȪŸ¬Fô@èä¬"™hZWcÃ_v¢ïÒV¡—ÿ(=O/™Ó½GWËÈ19=d ‡FòzSžñ#ófhè³<û¶‚œ‹tqœvº™.§'™íÈgšå¬††z{1X^?©è`euá'ëwÛ^Ο߻–¿Ëÿð÷Þ’ú7 úbן_‡õWxβß÷¦’/{»Ü.˜.ëG§¡ç¹<俉ƒ¿pZfWÂG—lme Ãåxº°7ÒIO‡s±ú:+ô$ÜÖvðG³†ùôJì}Ó:tg•΂?áÎ8=È'ËÏÏžbUËT:ϱi'«}rŠÃ¶«áÏM¦ ÉŽó’¯ó­&{ºÎ®/â°ÚØX-ž†É¹2I÷Ö¼5|Ëîðë²Zí†{#Óíô–ðÉmŸcÍ8ñß½äþ§üeùšÅ ÷_0ÓÆùlµ¦ß¾‰!ÅËèà‚? ëeˆð@œX 3?q>àÄï0 _fÃeNLÒ3­-ô€n9= ƒµ¥hÉdòe:KF=eÂçXÄ©0[<¶7F˜p¦4't–ŒÇN‘Îj™ðü$«2I 9y»™ØÐ]2Qn`Ú$Éɳ Ã’,rÿí%S…åQþ§¡/ìðÃw¿$ôÁ˜.}¸Œç Ýeb5<ú%ùÍjG7öJCò$+™‰nèl=&o~8–w]ÑÑü8lòØ­ÙÁ„ï+ 8Õšý@{›ß}d²ù|L²÷õ??@‡¬3yñ3zKóäYpœdbBH³wöt>ÃJòØlAÏ6[ŒrW“½¯9Û¥€^ø}TË-»ó°ðõS®öBÖŸÔØæÔÃûƒ¡þV¤â³×~³‘gñr sN‡ór ¸`&I¾LA|<øÎ’ë»Üó·“<¾Õ »í=/“`…¯½^&Ès5VDO2/ÍÊ3Ž„^ÖyùÂj€Î’³Js‡øËÉ ,Ö<œÐË2v™g›>ø»A9qnœI¾âd»±ýYó vÛs°ð#ž··Án™w±i§ûÓ l¯kýÓ7¢z7çå èãåpèm΂ó°:á‚̬6’ §àxpŽ8G:I'G2: 'ø­»¦e†L¾§¡ƒ­ú„ÓÐVü§üp¼ÑgñŒ’ßÒà€K&ŒâGcÈ’üŒA3 =açQ'9ÒY­9è¥AŸz›ã£ìÍÚ€ž’üdo²|ðÐá$ÑÝ$™`Ð»Ò ÑUt]2AžnÀªO-ýS&r:ç²òço_‹þš¹þ‡¿eXòܵKºLçˆß/[f5^ÆçÌËü‘8 ]ÑžU‡†5X)8 :üD3̧ÛêËÇŒvVª6Cnès$_œM›ñK´¶ÚéYè)ó°àl[­Fz²=Kd5{›­4ɹ6аM4³¥-ŒìÝÆæÐ0'½|«Mغ½~™d²útƒË&ÌÝÑEt²Ï:U¹Ÿ·×ý“×þ¯¨÷£^žp¹Æeé—½˜³òeð—é\z2®[ƒo—6ò_¤™†ø2 Ç‘Iä7Íç.2ô»‰ÿ¦jÒ ý“ÎÚÙ‹ÎôÄD\‹ «ûÃG÷ýòöŒÞÙ³§EÆÃ',¶ê§zæ`uã3m\v{ÇÙ¶qöÛ5Éliœò*mì °ÂÒmòCÃüаxvÁÎ ¹à°k$üCÜ ÿ3?&»ùŠ.ýØmþ/Ù Ÿð^Qû:1|£‡®ß¿ÎÚé6¿ñ]}{W¹§N~Çâ+üguùƒŸ¦5Öé79Ü_~Èår®¿ØB¼»î¯㻯ôÎû6çîêÍoï2z\¿ý•YüsÈóúüdË9ü=÷ܧZ|ƒüòíê~ ™üÃõÍ»kí«s¸»Î7™¡]Æ»+®y÷λw®rOL·!®qOírýű—¿þv¥ÃYãöãÜþï<å®îÔ™ªß{¨ýîJéž~_’ÎÇ„WǰÐÜ$7æÎ'äûì¼®3úx{B¸ºÜyV½gEwçÉùêÚ½~pú9wžJ¦_ÖÕÐ÷׺3|þžÞûâ‰n¦¸xç¹gí4¯½½ÆÓ•í¯.wµú{?½Þ9_2»Û¹Ú¥_÷”±×ý4}¾¬×¯ÙÝgœÜóùù­E†?_ôXë{ ]ÞùòTô‡¦÷€:Ñ VxØ5,s¢d†4ë®—Ìho<VI˜¥-؉'BgùãÑ]úL8M2 îŸü'Oô¨{“Ìóœ®YÕ{80À—0ÈYF™¡¢ |É,O½ÑU§½`…Sz^&ŠÓå6Ô[ÒÏÑë§)“ÀSþó%ìòúyXEèß Y‹®ÅË:Ðý¡™n~ —y¡É¤b«©£ßª»ì¿’ÌíåÜÏNÏíh‹dò[•iÎ&ãñzâgœC›ƒÕ!«ç Õ’µØä–Hžd}:ØStX<6yÞr‡ 瘟`ÎrÛ.Vq²Gù\ÐIX<:ÙÞ¼Ì)2sZ–Ìï¬%Ÿ?2'£™j{Ó|I{!ûevhÿ·¾­æ߉¬ÿWîBIp]6tèý嘗§À/ó‡“ÙåÑÃVkƒ“Õ%Í]È¿žC–Îã¦3“dµ;Xq’Õ`ö8 'Ãi~–Μ!ÉRélvno6Ï@çi“·i̾†¿³x[ÍÏÙ–Gn`á,A¦}ú“{kÖP |=ö¼8d.7Íýfƒ=âGëlQvÁÂÞêéwèÇ̪øe¼U{iç~/ÚÐú= A’úÒFñ—¾ºá›û²ôË8.]½ç2ÇË.«ÇAÇï²Gœ|¹&šLaugë ¿ÒßpXœÒ&«åÒ³wDô¦‡ÉXíœEç"¿=™\¶krnç”ø’ô;’ä 4g;½¾S¦ÝF]8ÝVW¢™Éð™cAã¬VNév«Ž¶Fr¿žl™YìIk²gÞ¢E'7‰Î_>©\ÑÁfÛ$Ý`µáW{ŠÂlé³§k=à’½ž½8ûͳ_]ùBn8ÿü€Ï]¹Ëåê0ãt[ý|«2=/'»FG;ò'¢ùlç®ç$2ÞN\ nÙ‹??ë™p}ÐÁÃês{'L6ÿùp‚Ì ³-OóËG4gË®bç~ '³qŠù³ÉTtî—YøÉ¸»=ï„+š³ªíý>ΤçT;q‡ÓÑÓN™z3™¼z2ÅN9]žâ ßÞ.Ÿ~¶[úʾí÷k\ßëçëÞ—ó\Ž=ÄoøýéNÞAtk¶:_&  «‡Î• « ® yšGa•¶½Ð=a$È7VÉwiÞKN©¬Óä<Æ!{ûÄG#óL¸X­6s°ÙÍÌ„óÑÐÉô¶kÈèEÒãDt°§ÈÜvJÚ–) ËA¿§è··ãLH¦Vk¥œ5q¶ÜÌs`*0ÃDÆÙjíæ”(Ÿ²Ü^¬–©4¤j™¸ä~š³òÄÙÖÃßxýþîŸÜKú¯ß“„ýOÒ‡®÷ÚûÓÎešèq3º^– Ëe€=²JÞwØ.sb†çƒï#z aaoB»%“xœýÍfHi0ÛYÎÙä~Z¡¿’l°zK¾çÍä]¶½žÕˆ[&8èÞÑßÛ´…ÎZX=6ƒÃÏŽsåÞê–û™d"ógf€=ØünÁ†óÙGØÎ;dñö,®Û'^ѱ‘¯èŸ!™LgJvJóøÝ’ǧ¿ûÚïËèÿý÷Õ¾—Ù¹.'{FAo!'} ÷ vet$sp¢eÎsà÷8¥á­rÖúÐvëÿN£-“œè&3ãgZÃ*$?œlü6úÈäþ’g‡ƒü6ùWqª=×"3‹<õĉèÇ·Š^Né™6Ér86ËÌÎj—›÷¶÷xËìj3¯€ßÐÅVßé_Fë ñ½ù#Èü§³ºàóÃß~™ÿͯáïv¾|—¹\ú†“.c¸të²V=Ž#ÿÈÞÃ6?%ò™¶Á®ƒÓLçÉ.o»Jଂ¡‡8¥ÉTøzJ˜Öïù7¹ôÔ7[ Ó¡ÚSäA’½®@òqÓyp¼éØ$ï¥ÁÙÔI¿Gw2Å&Li€ÙÃwn¶SôÙ˜²MR?6œöé”J>ágk.ßÉç¬9O2è0è§!&sbÅG;ÒþÿÅ þÏ üõË/OÃAüy'LdÜÕ©^†B&\öÍ.®—»°ë¼<Íý™³X æŽßið°CÇ)$ýg§œŸŸðrV`5âOÎòL5ìI÷„8­’¯v¢›ð•Ø»™|Biv 2ÌÙͽËnlÇ ,ø‡½Í´©Ë$™N’“LS†“S= ¿Ù GèHúLÿËwô¤ù2hKììªÌüVa{=ôOO¿½Àçû^Ë‚N˜ÿáBòaÁyé+|Îg¾ó—ñ±‘)è„dž¿­3Vt†’db¿ãgø:?8¡¢›Íå\ñz°šq œÍà·<…gUÏ8 ¡L–¢÷æƒÞ˜=QØvŠ[rÙœPÈ@ ƒSö6˜ä†§ÐɳTqÈ;š# Ëèän}•[Êè]`„]îS§¢Í{™·þqÌtí¿>ÜïµtÛ8…é2DÓ~㨃GñÜpê.Xð»ùþC7a’Œ‡Uö6´“ƒž.L°J¾<Êêv¸à«Nû3I³²8/¤aŠ_`€MÚðüN" N2Œ0É$ÝtðÚ/wXÑŸéàì’.,½a™ÙI³Î_Í õçåüùÖì uõÏÿ8ûû‡uüƒ_ÃwÙãrzôǧ¹«WC§ËÔÑýV÷Õ!_=~¡g²ZÈtÂÍ0³ëПŸik´mvu8Ùå/³æ`ª×ù<ºÃ…#=ç#_Þ<4Èó~8kK½ÐѳëMìfbǯp2ᤡàмºÑÑ͉»Òa×A/øú7‘ÕÁÞ·jÕÓ¼=mN÷’ ¬ü—|Ö‰{8p™3Π3ËT þ¦-xü]üþŸúŸÉ÷ó ãá§á{¾¾ä!Œ|9ÓeK–…Îo~}½íÅ;°Š³þø3Z9—Ñ]†…ž—Ù£óe­h’!\&œZp:²+щ“6üàk«Öœ7l¯M&Éè„ÿôÛUà‹Õ™?kˆøi2!É$3ä¬c !Ãn3V3N\æÄôLn°Û½¥#ôøÅN ~0ã'[M08¹±dmÙY&~6sqp±Z ~¨Òü¦­]ÐÕ“üÌOèXp2œ0ËÝz»"¯åïïŠÌøáïÿ÷æ‚/õ²ft€ñ²y4¬ý2GtÂw°ÃŒ¿É,q&|N‚ §Øjù¤Ù£›é:˜ÄI[·™Ë!¿mW?3Àr`?ÁJ>ÛSW™¤tt†Ÿ$—$N@sJCçí-gàè‰ ncɲ·âyÞ)3<¿á'c©rbY2]`µ;ÉUñs”7!À*Iž:Âj/ª¾xÝõË Ýôç2Dt‚¬ðˆ%ïÑNœ‚Îp˜MXdWúqΣøÓÚBý°Û„ÁÉÌ]œdlB/“W臬®gÊlAN<8M´FXlÿt0ß7tÕ›?ÈéQ„~KrÃ*“g¸¤9ûpX‡[-¦å¯Ñ²þ}ÂÌ¿ìú—ÿñûZµü¥w—¹]F_/~—õ\º³í ýpj¡³’üð#v•›µUœ¸ñõDV3~\äÑ™ÕôN¡?LüJ’æY%ïpÉø’ÑüêXM–IUO2Ë Çv¥“lž’ágÏU^2ÀƒC§/ì"YÍ\'ÐÁ`·‘IúNÏK6œ,3H§›è7y–³Þ<̇Ž48ë¬]ž½àÀxÈ“) =ìSÈP¾©üßÿtñß¿|«ÁX>t…‘äÖÅ =|—9¡ãeÁ‰ ¿¢~¿ô°ŽËÄjH8‡¼è×Â¥{p²:íÄŒ_Ú›§,VƒMU,¬:ô€VÓ1Û‘ohwl~tŽù\¤sÒÃä›]±³:åsôLE[”½Ì{Þ³˜Íñ™Nž÷coøxRfÈ…Už¥dî''¦܆§gØÿ|ú¿ÿÉ #õ|9üåtèp¹àHd º‘ñ8 ½IFV;ÎÓ^ö~hèÆêAöN8pZ¢ÍÜuöŠÞrn•93ºÁå)V±ÓÎ’Ë£7~A?fIÛÛ³t6ÉGœÇbÏ53ºÊl]èlò¹`…ƒ]Ùü‘$;œ-ù±dþ!Ÿuµ ûÆ/ÐËÝ»½ùœ £M»òÏ+úïÐÜp‡KHwìîÃF†ôm\ÃÍ„xWÏwýÔñãõg»Ldê¼~»ÚŸÍ.ò9±º.7=ïñ 'úAóÕŽW+~îîªîjƒ¹ÞLkWG:Î er"“xü<˜°\ò2û9.Ý$ÏõæÎÌVWºLûÒ_ÆéñÝÝõž(læWÍ$0dz&É~é&má2óZÖs;w½Îvd`æ&3óó,‰½Žybx²÷½l­qºãþÑ3ÜUŸÉàÔ|ùñ,‘þÆ„‡ÎÃÌøátVÝõ;ó—_xºi…Sx.¦ §q N*éÿÿÿþ×ÿRT?N¤string_unicode.json.gz000066400000000000000000000246141453663023200401360ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json/testdata‹„KRšAÇ×IUî`±N.Yd+˜” b•ºË&"*"AE"ñ›yô8݇ø_!Ý‹T–©¢øzjþßô×7¯_¥V·×>o|I½_Iñg¥Ì^æ\’‘dx Îó<•3yâ×%p |.÷2—K™ñ€3êIøœ+|ÁcÙ“ºN5.K[»Ë(Ï2༦f¸Ê]éÈ=g—s©É Ϥ²ë¹ËiJ_¸(CÕzͽá>”KVÚ2Vž¦öf%([‘«ÚSkÉñœoµãLÙÊÜÒïÏÔÛïZù´½¾³žÞ]ÛÝØJ¯|ÜÚÞÜy·jE2ëÂ÷fðøB~Ÿ‡×ᡎðOð¸ø>ü1Ü5|¡wß‚ pø+¸;„³‡[„!œŠ«p{pXòNÓŠð3«KúH´±†ÄÁ2Õ•X¬?‚Ÿ 4 H¸Sø;¸¦µ»¼2äæð]ÃH^àU3E(!èÕ~_‡;DøÐÃM‘(R¾OpY„ïHfpúІ‰MÖ±–p —ƒÏZ]¨À)ÆBû ý` €®@9Ä2¨ z±c¬"ƒÚ )èqÔD"V@Dxú†Hˆy»R{ü;NìGû&0Wñ Örƒ¨ÿ%Pßò-óvUD¼…õ:Ðt ª!*RDT‹2<ÂbGæ r.,<*ƨaE§ è¢Re@*¸iòÑ%hkl!êÜAÜCô ,3o6\ –ÌKÖød³¢F5º¿ Ý\Oo¬¥m{£#(¶¢€è ‡}¨(Ê)4‘ôã~¼!Ìm6ºé嫾Îôt«·£6ŸÜðÿÐKJ¼%¨ÍgÒäÌÑfðÑ}ÜÐ-ùÖ¸v.¼§¹ÀWȒ˱ šØÃ‹§¦ÛÁ—ä{ Wš±T´!\@ô¬®Z<ºrŽ»ÓììíÖ#ñOC•ä4pDÑ«ä,Q.Â"AH ŽÈ‚,A¿û»=ÛØÝ6³€ a8Eö­WI¿/Zj•þð†Wµèÿ¬Â¿Ö7ÛjlÿÁ{A qù±yBݺÍBþá­ãqÄüR¥šRâ_ÄË÷ëÇŸ7××~Ýàã•EVí²˜ø7,‹‹²ÈËbäg׋EYŒý\–Ŭ,úe1p˜•EÁ–˜)ñ¨·Ž4oWŽéúpàÃ9‡l3ÊrÒažÃÚ´Ë Eˆçœ”Üë‘”Rߎ™œÅªV^RÜ• &+óUÛsöØRP3ª]ž0âûõ²:y§|?^ã÷Æo_|½ŠF){a)ÌR8Ja™B+…ý.R8La˜B'…«V>ÏÙM!Oaà«¶SRX¤pžÂ™ ÇÄ4…›ú)œ¦Ð«‹)çäæ.kcL/Ò£çYRŸ„H×tÌu ®˜6sGuzÓ“´\D¸"ì^4]ÐôKo›>™»WÎÏãù·rVF)Âr×Ö¯÷ç?m­mol®ó¡W°mÂæ°1lömÃz°4Â.¡}è'ìú¬«(wÐgè-´ÚîÁn« v [ž`°è;¥tDû¢Žµ]¿Åß`e‰¬¬»¸g$²^¡s·î@ÿ…)lªžáZYœù<« Ú±(Û¦ÐÊý:dB;…>@+µ©K-`¨@;°ë5tB.·»Œjæ7XøŸÎjÛií¢¿Â¿ðÔö¥R¿JÕ"qA-<ð¶ríMЄ;t{Û$Òo ä_Î|Àú…cÏÑÑyB²¬ñʬ5kFÙ²¿‡9¼äÛ—þeiy{s'\Ž«ëë»ûü?=’m’3’o$žH HýG²FªJ²Né¥g¤$¥}§$Ã2+ñ¨T\“ê¼'Ñ"qCiäG<ªVÈIuI:RA\“<'™SökRÉGRC#’œ9!ùL¢J"(ÔH¼GWrD"#uÇÞ,¥]cæÅ*Ò’ +T /”–£”0$ç”6)•$OHtH4I ’½˜¦^) -œSzAjF¢ÓÄ%¥=R‹xT#î¥cqJ2F~gð}‚¢ ÿ"AQ…ÿEE …`D¢Há'(/ðÓ-ø³Œ{æÎêaqZþ™sjQÁ¿–j£(Á?E¢Ÿ2½ÁÁ”‹¦Œу_À¿3^BqÀjÁMÆ×ecÞ3^-øñ÷гèß¿p0NX°à<# +,xy6SçüEتâiÈ@ùl˜?­ý±ýçß+;ñD¡o`J0ÿBßôa=Ü5ìÙ ÜÜ-Ì)ty ÙÙ%ôôîfŒl“@¿"¿†"»ƒí"@·`Gp}ØÃ(brdÐ9ò¦‰¬}Û„ …JÈçÑ€­ÁåÐ èæ^A Ø \ȼDJeäï°UX{ã7 aN ÇgzYfE윃½ç_ƒ= 3‰ iÁ„¾ÐeèG˜!\Û€é#›"ŸÂ> Ëà°ù-\¦ëLô·ýÍÕí–V¶Ö–~ÝÛú}wÄü½'ž’%Jî¾2^¥+®KøUîËÜG¸Opï\rœÀIÉ¿w{ÔÞmyß%Ù–¼ÈËxû5B~¥UÕRkž"š:ù¢(UËG!°XÖv–f««³e€9À\`}`{``k`Í€¥€ P––¶$˜MR]Ò¿’ňÀ ¯«c\ »e ¦×g`-`'š'É%ó!®“N‚z—Xe`ÃØŽÂcG²¨{J;!Í4iº4ÐS"Ç[œ„ôêëëZ Šz‰.ô?Ÿ?ýÿÓÃÿþòqª¢MgÞ^S ʹK‡U7¬•TåU¦'Ñiµ“êÙS‡êUTÓ–ùBXêÉÑEŽ{‘“UëDhÏ‚U^=ŽñžÌ–Zo•ñ(7µpe„Þ“*mÂëHÚVÄæ]µ©:.£tO1+\ödÅ œ\d.ñZØ>œ8*“‰Žõð4”†Y¹Ì…©V`¤Ö'‡(»ÅYÈË–¦¶ƒèjÊËMå 9U畬'"—Kw(³°¹¼œªïÃCAÝûAaôŸå-­´Çè–”CW]9¾«ÁTÖ¡7%96UÛ †× ±‰ÌFhî•V vF°r¢Ôþïvù¯ÿôÃÃçï߯ltûŶ†Ù98iØÕ0»‡k µ&ö˜\b= ³l7X¾c>òƒéî0}Åi*G/1»ÀÝ]^ÏØ·ÀI€g‚[†Å × ä.&¸?¢ÖÇâv{|òÐzÁì]pú¸{ÄÚ Z}Là䀳G¯k 3W¨ø´ÆMGWÜà–Äá¶=°f]°M¬î‘kØëã2‰úês´«Øï¢Õ†ÍW&fò0-cc‡5 ^âl)Çú¯X=cÖãö¬rlp½Î÷-ØX0Là2…ÍfO`^P×°¿ø‡{¥Kpp¸ûÝ…àÃÈfQqVW–ØÍ(«W7°_`•Ë ÙøfÇO¼¢Ñ|{Îám„ö*X•ß½†ê\¥ÕV¬§z9ßnD#ltÃQN¹yÐXÔÚùI'j¥£q5ìÞô“l5‚¢'¼ ÔnÊÜF—U˜<¼ïNèžàCÁSBkQð™à9Á+‚Ï©r&·/¾ ^<+xX7ÁŸ„~|DuHÄŽÐ'‚7…ã™à‚÷…>úTð¼Ð—±)l…¾!»餅¾º-xFp#Rã«Dâ~úXègÁ{Bw‰ ¶Þ]ô-å÷âØþ™¸ñ¤+¿§â»8åIÆCJëßIÖŒƒ‘l]ð)a2A ã~õÇö~üòåáóþø5¢?íÚÌצ¾æúÚÜ×zPû! 7¾6¢ÞóµuÜÐdKÃ÷¾¶"‡ð[¢m&„™ÒјFqO¬¥¯Ù_‡$hQÝQÝ‹Ivk¯¨Ù—G§³w ¥¥‰K\ž ,²ð3#/çãôw*¬-'a(ˆnŽè\Ę !$šø×Ki)¥åÑ‚€4`@0­£Fãc sÌ,Èc‘CæÞá<ÎÍ|vˆSœms.·o¥9²bCÙvŠY®$û·†Ù=«–J›(šc$Ïß·2DK–øÂBÞ%•{éË,1€AFp$‘‘¸À#Br ïkxôZòËÞI„+2æè3ùS¤d_%Á¹|"†¹¸Ä#éIBÇDnà2åk¬0ÁTÚ2£;㻳RbžB½BUö‹löiý.&¢(2Ož}Ûþ°ýíÛÎæÆÖþ÷Âî—Où»I¹K²JJ‘ª“º¤ò•G$/H®IŤžI¾‘$©|OrÁ|ÐR’$ï!©"© É&ÉRU’§$I“:-"ƒpGrBꈤ 5%Y"Ù§rLòT…ÊmRפî¿e#Ôi†”§¤Æ]‘¬‘lÁ*øIò•dHrFr@’ÁR=’¬Àš Rs’œþ ùD’D¤~’Ò)ƒ|“{æÒ#Rö“à6hg«|ÆÛìŒåÉÎw™}aøwao¯°›ÿ•ðŸí­½üKmZ*¦bšŠ—TÜ¥¥ «TtR1NE?K.!~B0IE;ÃT<¦bõ–ŠÛTŒ܃3dt’T´Ps kÆ4Œ»aÉC±÷ÎÐ2Äô5ðÌ, ²Fu!È¥yf[t™´¤ÚA'ó\:„™‡T €t`à9)`ʧèAy‰j]Œ¬°–¼Þ/uoóËöNþíʼnG^H/½8÷bêKœŽ½X{QþêÅÀ‹/J¡tè…öbèEÕ‹.8/ "ÿáEß‹"â'ˆ?‚, ¬3ÍÒ)È×^Dпð¥cŽÑxjìï³Ìh3#¦˜ò ò»Á”…@¸Wô¼H¼øŒ[Cíüjs¸zö"„à©/^ü‚¥ó|‡¥vÙüÈýüöþYØþ^ØÛÍ>67v ù ;\R8'ý# ô€ô„Â…]ÒE I÷(œ‘>$>§p ð‚tƒ´DüøšBîe… é+TÇ ûNHkÒg¤Û˜%H_“®RøJá-éä„4&r‹þ•1u‹tH!·´ ³™õ™p…&˜ÌUŒŽ0è†ô étÎxGK–L6Q×HŸR¸`cP8«…OÙqt‡´Êœ„1ƒ8`SnøàÝâîç÷ÿÖøàÙ¼ø`^³ XôÁÚCŒ|0ñA×¾x䃞î|0óÁÁÌ%G ‚°ðAœg<ù bq”†@:YKñÐ1”Ä-4®@XaÐk¦S<@oë#ès>{>¿ ÙRÃj˜¾€yƒ`À|Lïð8œ4Áè{ –‚òˆ]ÁÏøË`ꂇ÷ÛÛ-¾â}ðïÛ;{ù+ÙjÛ¶k»àgc»¶g¯ìÊF{ivhËöÖ6—ÌycìÆŽlbïíÀÆvÌÏsûjû¶n{¼W­bv‡k]V3¯Æ÷Ml…±9sV¬0áÇ•]Ú%G]æ'¬;µ’™Gcžô kÛbÍ?7ÙÉ€koÌ`ô™•%sêÜfsÞO¸ÿßݽü+HÒtIûK.]RuÉ•KB—(àˆ³Õåé5ã itE(—t\Òûà·\Ò^CZ…r`äœVçÔúX×à4 ©¡–ÏŠ !íçþp[CKRm ¤…°Ç]XÕ¼-!.gAƒ²>Ò²ÛÛý¾ÿu3¿½8tñ•‹[.êâ6ÒKÇH+.Ö.îºøÆÅMGXÄÜÒÞ[®]\‡ B¬°º›X ÆÅ5Ð ºDnÀÔ ÷x }€  ÕÊ¡°‰ªÁÒ%ö+ø¯ ÔÎ]}êlÇ©±÷@ˆ`Xç£Á¯A\l YÏoï_[Ÿ÷¿ýñ3ïÿ©2›Ü&âŠß-'(ëpvAõ³ÓfRõ#ŒÂG“iiÚ¦¤É´!9Ë“/Bž€E$kd[ïÿó³·ójïíßÿ`ø¥ÀUbX+Ç,‰ý´6½Ÿ˜$žÓ{‰&ý}â8½›ø!=®«ÄSÂÒêÄIâ@%®ÓÖêØB¯"`”ؤ¥[¢ãÄWÉÐ&ŠÄ‹øê—é•ê/SM±ñE»U_>5Èwò‰o²¤ØOüVÈçSbøÏ ê´F@/Ké¹Ow1ñ δ>J}1ÔÖ•zRíœóÿé7ŒKÆ!1£—J´ âˆö‘v #: Æ­¡}aTtcœÓæÄmLëÓ¶¨ždbNé Ñ7Ä„VÓ¶ú‚hÛ2èçÄDíXÓQÐOè§ôÏôR¥uéCÆœþL èg´•ìE%‡Þ£wŸˆ>ã‘œÒ FЖ´[bIÌ{úF\оÓ?%­¥_ÑÇr®íæT^ËÝ¡¯nÆ#k÷íîÌÎû¥ÿ/ëU¨Ö;ÓÌA¢i“"î5×·æ”Û‰Â@âñµÁ®hêÔ†¤†V¶Ûƒ. ¨3¢âŒù3² ½+ ê¥mJR}£“¤à×+Tõ›Ü!õ_騇ø÷‘ŠŒöNó³7 _Qr ú…¤O—-$fMyÁSï¥Qyvt@5EšÛû= "ô†ùÍ«ÆSFå‰FŸ–NsÝS?§ð….%¤‡•)prq‹‘Ää¯1½G¥í¤„“öiîÑZÛ8¢Ý/ð0pñÃÅCûØv…íýÁbl¿½!<|lñîÓç»/ÿvg„IÍÊh>‘™›1ŸÀ„fi ÆÆ+[2ۿܤ̤¬LLÁÅ|mf¬ÙŸ1ŽÍ¢å+Ö£v¶eÿ”³Œù|/9-ÙóqÒgoh£YWœOÛ„`=äN ç|þç¬,¹EÜöZ·Í§ÿ2em;­KôWίœÇ£“‡(€)ÙÊ[”‡<ÒÝÜaŒ±Ù€éÁlc0Æ Ó=Ï=QU?’šÅFÚR3tW­Ëª‘Ìeææû\_þZû]ÿa¯'“‹ubÞÄ~SŠmˆaßÓó f Ç]±b®Ä‹Ý³ãÅ<‚[ÖtÓ3ãÄnê²b‚#æV̾˜g1÷bŽÄœ‰ÙÓ#,ÔîNì6ŠËZÜèˆQ¯'1ª<W½.5!}½7¬Ø[ˆwˆ ŽºÁê‰Ù@·«µƒòZy·-½Î¥ õLÌdŒlwÈŸ}ܽÿýüß§Îõû&|²Ò0ÝUÕye+SMÒ<õ«AÊÒuÕLcݽ¦÷ª«Ýͪ“ɧ¨×aZ¤P]§VuT¦“ôZí¤f*³Ÿšz©º)¯¾¥…~ ªÛtQuª}ívÒi•U»é¦ê¥ÓÔ©¦zºO^¹yê+sž2õ¹­²´T§¶2¢".««ê,ªV5ОÓJ–¦é1¥YzN=ý>N³ùþ¯?;þùòŸ_Ö~ûòëÚ÷gš1pqñÆÅ6Ç{-.ú9sQrlqhs¹Ï¡ÉáË6wr.v¸¸æ9j÷†‹Œã€‹K.94¸rqèryÈ¥r-‡uu+¾p¼àB-ë8Î9^×ô°âp‡³úXnpìp1®•‹%çÔ¨+DUî—'Ûu%.aº¨㸶ˆŽãBª»búõPᔋy­Vq±Çá/µEйk;(žsì¢Ûä¢à²Åqúyÿ^ûóó#æfâzâ:âvÅmŠ;ÃñUÜJœ·%î\ܾØg±#± ~;÷&® ±=Ä}Ew%¶¬1Va‡âÖÅ5ÄiÅŠˆBÿAl jFìBÜ“Ø(nŠÖÜnOìab•[‚u ÇÖYíkŸ´ŽÛèj€\l!.W"f¼Â˜“šbçs-î«)v‰$#XD±:éãoj$Íóýîý¡OÀð›?»$ÉÈ÷ÈOÉ7Èke—²#ÊÎÈïàȯ(;&¿$NY“² Ê,yKÙ&eŠ™‘¿!ÿ•².ùuÊ.(kQ¦R¯ä·ÈŸ(X[ l“÷¸nÀW×õ òsò÷ÐÙ'@þÊ{u ãäɃxŒ0ÚêÕIt“©Ë*­eäŸ0ùÄ@yv;`õ)k“¿"ÄF±…Êð]‘ï¨û·îÇ÷”¿RžS¾¢|Hù-å”_SÞ§|Bù-Ý”?è¸ð=ºt”_Q¾ÄQ>S`æ”—¨¼Aa„õBù;¤@ŽÌuƒî ¤®Zɱ^€_B­ÌŠÅ *s¨ÝãúQY`¢> Œ6=óô9Bâï€=9kÍ1®yF·ð'ýOþ•VŽG]~‚O¥¾kRŠ­WjqA™E~©¥¢_YN ©š²‡nH’­qºW†‰fŒRœŽc°SA|l’¯S¢cž›•¤µ]y|Œ’ššZ’·nY¶¶›«KveAr]†®yA‰{†Ž“j´o²’¥z%4œ’’ ª_sl™Ûn"I †Ÿh/ö¡öbµûÐ0Ð3œ!23içÀ„‚«I3R•]U<†ßd]­•6+JÐÆõÿŸíwpZgsZc8rZaµe5g˜sÚá4f2 Xu9í2¬Úœ¶: k†«%+ñ~Î!E†ƒ ¾0ÌXMXÍrW!Àaôꉕ”+³ÚK2¯;f(‡[øÊpfØæðI¨’JVIÀª«7†] €¸šœ–Bo*eï°ŽÀÛÂÁ'N¡sxá´ÉÐgêI^¥WŠî²Ð•JYµY•Ä&RÃ<)úî‡×ùÛï/á=šH?ë¹ÎäìÍIŸÌ7soÚzf:ú¢§ïôÎ\ÌY¢ozkz¢W¦mžõÒÌLl–â=š¡Vf#Ù[ýÃôäd¢½Hü.̽°Öâ>™…pÊúMˆ}ÐS=7SS3±äÏúb æÍ€Y©*Ž–TL$¾o¤ÁÜJ›£) {$Ï¢ÉôDüuéæÝLôqÆÿþ2aBúA}Ð#¾àgº` Ô¤ïÔÀ­S¶–ú7à†°>÷]E;· ûûnœÂ0É­¯ááLž:Kâýs¸ì ,1ö®û·‘3¸Ô¹€+àÎ`O³»õ)$S5‰LýD¿Ë!]ätÎeq›BƬã.cBÇl?é¿­ríý¿D[ËR#Éý!ÿ…÷¶^zÄ'fˆðLGtØ ïxP¢¡=T)eé! J@%âÁ¤2òæ—øÔi•;:¹ºyï9瞬 BTõ˧Uߥ©[‰—§¿ˆ:—؈z’ø]⑨CQÇ¢D5D!9u&jW⧬ú¢. »%Q‹ŠDMEµD DõD‹Ú5•PR'/DXY‘u[âDây©cÛ‘ø #¼ÝIüÌAÒ›:µôfè<#=§ZDÃ}&¬Îʽ¡žŠª‰:x 0¥Ú¥gLɘŸIü(ª)ª‹H·ŠÎ7·Çÿå?¿ýôóç÷ćh"¢QˆÆ¡¶"¢ç]„(Q¢yˆ’½…¨Çä%D¯!Ò!š…è‘ÛŒà»]2®Bm‡õg*߆¨ÏÖ¢R0,NBtÍO!j–££Òç|°˜²XÐÛ{¨íQaÀ.¸WDŽ xãJØ}ž#ºT¸§Õ×”ëŠÎ + ·BÔ¦“]µyEâ‘9F³Øþ~ÿúyû¿ülħŸŽ}ÚðéЧml™\0Q>íû´ëÓ‰O›>½bœqMØjTÉ€ y—°)ó^µ:Œ©Ü! fEWjŠÅ6‰HXUÒeqDâ€`ĘkÌ)i€ü²Ó$óéc&•Õ"g)"{7‰éTöfLl'Œ›ÿéüí×O¿ÿŒ7”w¾òwPÌ®äu1—’߉9”<–|%æ]ò}É#vgbvÄœ‹y”¼-ù™˜ 1hÍÅÌJ˜y–üM ‰æAL_òWÉOÅ\‰©I>”üZ ˆ…˜±äè~‘<“ü:en–’ë²bö$ßÓ¤Â;[Ç’çÔIÄdœ5+aæ«%yKÌV¡ µU)eîic yG æ’7©y"æMrÃü^ÌÙ:8§·xÒw10ÒÃ6_2ýøÓïÍ|`ró mÐYHAC’]„¤t’yЬBr´É;0ˆÄŒ‚Þ ú8è“\“x’eHÎË\ÏBòGHî)•†d’,JÁdJYC“²¥1 €‹¼ p-$ wCòôÖÁ½ : zô+§-» \} *0CÁaÐGA Wrã ßB‚Ê{Ðè&¥BR' úïòŒ= £—AÃ!ô§œ–Q¿à,<ÎóæRâ>Ç-ÞR`•-ìÇúØÖ×ûvnì‡íÙ%bÛæ¶¿>´çveWÈSkl×בÍì­¯ì}Àn¾ÞZ[ ÆÈÆvl‡Ègìõ }ƒZ²®£mÃÖ6Ƥ7ð‡ÐÎ0aiß0¡ƒ¯˜ó´ÞÆóÎÁn"l.?п·ïÐLÁ>° 0ûxÅ L{ý~®¿oý¶Í`|öà³…Ïî˜Üûì‰ëžÅ¥ÏæÜf>»!`Åä™u“‚ôóŒ˜Ôg·>»Æ–˜ŠL‰wB@ÆJVi.ˉ|fë”ü›J Ri™b\׌¦bXœv wÕ@Su'¢Ü„û´rÈ‹¢•ÊŠ1çv¹¹z¿nm>w=wéêîÔ]¸¯_ñÓr3·ãR§Ý♸®kãçÊ»¹ËÜ;w·.E¶ç4° ྠ2w‡îÚ5À︥;AU»&øm쿹hgP‚ßÁ¬Stç¨ö‘_º;àv1a‚É ˜cwˆìîº|=p5×B\ÀrÇȼFÐÍ\ þéÿÏÅÛ$|ÑóÅÐ7¾ØóE‹qê‹S_Œ}qí‹™/æ¾H|±ï‹:&™/ú¾øÃ_¡Ã䢢ßœúâ›/N E@Ó]_,}ñÅ ŽPÀ“xì‹+̪¸‡”ЍLd‹j Z,v`µš['fD>”:¢½Ø Rጂƒªqú.Ej¾8§É+ ZÅÄ eǼDû߯\õüÆŸñ{ñÏí-< óÓ§ÏÛ¿lÿ¾U}W½¹íUêÿ«Úê–å‚àýWõ½Ä¾Õ>ÌV‚BPäÌhÌO5šèšŸø.}ÛO±pjk«R555NÏt÷x DПÐTê ½Bú³EY#_ xC1B1‡Ù ì"Ÿ"-­QÜ@QPPì—(¯!+覾@`j˜ä)²!ªWz‰²@%ÈÇÐMô‘Õ;¤ä!d5BùeP¼ÀD¨\äŠi9B2Èjuß2k Ãô¡2¨â#MZþ2AvD– mÎYC{0Ò7¤±½Ñ…\P^ZTb¨ú ¦ñC÷`öHÿ òºQ¯QÎ[þr„ÂEú÷®ŸßŸØQrÊ=å™ò@íQf”‚òHÙS2Êu‡²¤¼Ø±½¥ÜQ¶67c7±èš²¢¼RvšZæ;i(»k,ç‘RR4Eµ?u·]×»¥©]Ê„2·6rÛ‹ævòlûÚ*ž-˶°ÊFjÉ?)¿)ï”ÚÖ³&Û¸¦\(#Û²ü+{õÂNZ íZ·+kïËBÓ–VÿþÀo¯K°óH0ò™Lؽâ@èLïDhzgºÝ&{:M?£ûÉŽfÜ¥ªŽ×ô ‡Ï öxå12ôB†¯t\7ŒÖtè(FôNô¶ì¾Ó-¨*&Cz+ö|ú&{ö†;úª)»è€N#±f¸d3ðÜR]84ì¥ F%]¡»f³ã³¿k%’š²{G·Éös& Žì}Ñ?Ó Ø™µÞœ3ã%=‡É˜ÑŠñœÎΜý1ý£“A[¨ÙÿÿûõôõéÌFsynthea_fhir.json.gz000066400000000000000000004024611453663023200376050ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json/testdata‹ì[ýn¹µÿ?O1Ðýãîâ^ŽæûÃHMâ´‹"NŒ(énÑ]çŒÄí ©%9ŠÕ"Ô§è‹U”(ÕG#Óìb…±EÎù>‡çw8þç3Ï ¼>¬0ºðF/;V50ú½¦ÌwJ`&1Q”³í0%Vë•¿>óÖMGFu×4E£é»è:Z]à„L«˜¤(/ƒ%PThš9ÊÓ,ÌpP%Pš¨þì¥Ñ\wT{d¼ÆŠSú±ÝZé'fZA¸Q{Væ;©°ê¤¦6+¨Ì#fCE—zõùúï¦m˜üÝ£¹R‹‹ñøÓ§Oþ§Øçb6˲ßÌUÛü0úæ;JÞtå=ÇÞ\@mž’ëÇfTÍ»©Ox;–+¦æ (™nÔÜüŽ×4&ÛŸžñ7þŸAHÊ™G+`ŠÖÄ…·ŒüÄP$h9(*Ó˜ç¯E¾!×»%@uáEEQgqR¦yQæq¾ÞÁ]ƒÝï ž×ú}3Ú+þù–ÙàFÓ˜0Ÿ½Ͷn Æ6ó&ߦžS1îä˜pã‰Q€K¨)£Z€õÒkH`Æòœmî¶¼¾Â f\¬Ö­]KÜtðŠW”ÍL0X[äJ*hwÍiuùaæIà‡~ÆEû™Å:ºz'¼ÚnŠû÷TT.¼ÒÛ¾›S#kÓgóå’ÓÐ~Tõ‰Zu›qÛŸõ pf烚3J¨Zýê" ÈPz2Þrå}»þ3J<.¼7XQÆŸ>$†%y¼éŶ죖«9y…uù{‹[]%†TxÁfÐP…Ë0õÞÀLp™…ÙèiâxJ…šK¸éñ• Š?Œ×`!®Lú-õ¢ªHÙù£Mj qÓxïéÄs`nÔ¸ÂRb2ï$(%í}„w¦m}œÜ  ÏÒÿà¬ôÍ1J¹YÁãŠJ<¥ÍZ „«Ÿ:© B ­­ ÙkŒK ´ÅšMêGe§QœÅYyôHBþÜáJ˜'~$Y’¯%Œ‹<ÔÚ&ýñN›´k¬£»¿Ú9ô(½ÂjUždY… Ê’°DIZgA‰2\§aIò,-âûf€iIí@5ÅÛ:¼SåÜøIh)ã Ÿ­ü]béüœl6Ž— ¢ .îWïOö+¨(Áë\ÂEå½íÚ)ˆºnùð u=EÐØsX÷9— ªpãË µõ*UÚ¿ùt29éÓ '7ÞH'¨ZÁ©6E7¯Úǃ¤•>“¤dG]Z–%*3¤{Ô_…ç.ßœôÜ¥ÐGÚÿJï %À$<ÔgôŒÛÉÄý(=ê¯ÉÚaEV&å¯Â[××oOºëK¹àB!Ã,RN©%fÕ¶TŠMé=ÑŠ~†Ý1Ÿ~ŸAæeøýèäYÎp '¸ÜåuMu=9äZã–6[ÃòNp™GÅá–]BÒ} LPP ÇQ2z6`óÑB@Moúh\ 逃¥X»AÇÕú —*OÃ/¯Ô O*h€ðö¾-ÙbÎ ¡4MQRĨŒ“r–Ýæ¼…Óñ5VÐûkhqs›ãhƒ(.Mß–qˆ‚ÅÁí-À*½ëm·è7#”(J>DÑE_$1 ’‹à΃ØÀ‘Ak¸ŒÜÓ xà Ö?ÉN0À¢ÁŠª®ºmÏ¡&? ý"L¢0‹¸Ì¢Ð~H§Š³œÍ\¤@yài‘äa^–iÄeŸÖw?Zs‚¡¬j(ƒ¾œZ«îý‰Ï™Tœy¯·x³[_ ø$•©·®u´àë}ͤQëR2Œi‡SªÅB÷Ù3b6><†-?º¿1ººÃW Ô_ÖKÐ¥³û Iÿô¸íE ¼Ô5ä%ç `H5n$ÜÚFxÛvŒš,, f³ÏÎÜÜèÆŒ‚ª/¦dq‘äÃí 0ôñ4RxÍf •ó‡6.GI|î¼gÆ ø¹©îÞ®´ æ¼Ú´ï&´µbwÝòlÇÀ=y÷NÃ,#@$‰¦(.AE]d$ 0@Q'Øõîç˜aFÿ±‰ ûȉ㗘‡ÜWÈÓµE—šžÉ›}—o+3œö¾‡~Ë=H‹b¬Ð›4 Á—z} c¾Ý˜”`Þõz7Õ‰Ó™¢óæ4¡á{týê:.Óbôh=[P ¢ÌP’”åi©N7Hgi”yß½¸ºþxå]¾¿ç!úþõw¯ß?B_ÜãÜDaºžç)aVÕp®cþ„Y…b\¤(!#ý v’$ÎwØB'°–„]Çœ8×1÷![У‘‡Ià^›NCV¼M@¬xݾ½`Ø»ÂâßÿÂy=¿]ŠÇ†oÐbÚ1ðþÞ¿‡Ü.ÐÎT÷‰‹¿ÿV<î fÏPX¬4v.,˜¤Ói™* (P¢ÑqQFá<'P§Q uäZX^³iúªŠ»ƒWa42–s¨n¯’[—†'/ˆÒ_hÒv‹ðâꥅ"ž¢Í‘Œ·Pù”Õ|,‰êbÂ,Êò8‚­Ìö% ÆÓ™LÙöe^{æ’Öûj!8ªðµ{‡ãN8]d7ý ˆ:ô®€0ÅËB•BúÞíÁ›·Fö;~…¢„.0SÃþ§¬¢KZu¸9PÃRÅý¤¸Qð½;%ÜÛ—ð{A¶ÛŠ‚ ¼êy=M¨íÔ-ÍP°þ70K[ïVîŽ/‚b¿»ßÈÄ’ØwÊÃqà÷lÙû–8gªÐûzè^ž§yRUqQ£¸Ê%i!ˆ=¶ïéž ×÷ *‹SÛör¤áŠ0Ë`î,€n¨6šðqÞAà0Óˆš‹Ö½ »Šqž‚l¡-ÓUô‡±W‡Á• °þšVænˆP,VOF ¼âÞt軆Ütþ?Ý™6L;¥8óI+ý_ŽwÞ–ã%Tã.9&Mû7Zõ^LÞgÛÁvÿ«ºAÍ3Á»ÅQIËÝçäËçü68¾7¸{ßç†ï l³áý`rvœ¸×z›Ïî°äó?»]}4L\ pîõ2á"¼…ÛíÃ~ øØnZÊs^ðæ\ý`h‹)À­b,m±Xþ›í>ïàÙo7 "GÀð‹›óô43ÃíÀéX0ûÏpƒöæ°‘Þ€`ú½ãMþsÀþÃÞ·.Ç#k¾ ÃûãÌD J¸$àõqµíÓvì¸íãöìNÄ™‰UÜᥖdÉÖlô#íSì‹í¢Te»ÚX©†,• ÷¯V‘HL~ÌKæ—À8WéÖé=‰‡™- EDÀ€z¾ºëÓŽ¿x5ùeÎÍ/ÆÎÄ/nlöˆ†Š5¼£¨á¶Îí2xæ˜} ïi×yå±Í+ì³¾3n5ÅT¦nïÐªÑÆÍ舚UŽ7U•=Óíj=¢7ëi÷´^nÛïçk“BÀw´ hS üø!6A,<ë¶ãcðözR!»­¥»þÞŽë²­§ÉÙy¾“Ý‘Ùië?87}ÅfÖ è­öÇÕ4”gšË5JqõEë¶‚ÃÛ n/ðn‘ù}ü=ÿJ:ÁÓa”å¢Ê…CXª qi9* Ñ- VÆI…©ŠØ£w¿{RBêQH= ¹ôæ )æ«õöf)K= À3/V\q$Yá›TH¹DJp"¨œ1±G .õ(€¯-õ(HeޱºÀž-‡~CG[ŽÓ°Þ<¿¬úÎ,멳?ØzÜ”ž€º AŸЀ›ïSØGh@ŸBà¤{Ó§à”¬ŒÂ•¸Òˆ«¢@Š‹\as]HEµÑÑ .¡'ôÚzÒ‚¬À_‹ž§kk}s” /ÐðøÑÐ:ž;j-’¦(ÇR"……FBH^)®pî0 ·5_ƒ!HZ¨Rë¡éZ¿ ìŽjYâW4À-l’œ2÷A.ÀY¸ÌÀn»,ÜѺ¶ÜS’ØÑ x„"Ì´¤šÀ0#DbÌЄíð›ºË¦¥Ë–ŸiÀ\w^}×^ž6Gý1‚¾ÀÄÁµêÞŠ´Vxé×lF;}I}—ýa3ÕÁ—,g›l@Í‚Š¼-í‚GÒf¢i°ãàô¸É\Þ}h=²ˆ´€GÖaËϰÔvú¬îÎöHóÂ÷:††ô#.1àžy '”Lªs$ˆc’#Y•U¹ %+xnJ{cùm£‘´o8ÙnS&ì·œUý…”pµnÚ¾ó%Ŷ]¶‹*dEs›/¢ÏT.ž”ÃÉÓSZ=Õn|œ=Y7OŸ4õÓß·î““¦Ž¶Ì‰ß’ß§¿òÍß³zÌZ§»)›úlò-ÙÁ/ã"ºÁÔ£ó~Ò W¿Ó@žYqOù[wh5ôg^6{–Ëmo4̤õ‚áÎÒ=t"°$‹C|ñOà:¸ååd¾­ï2¸³ºu'Û'Ç‹º¿ZßìÝšp³WØcÂ(Ö)ÄKgÖ•B¤ †aÇKFq$f/ˆ¨ãoåMÌ^ñk…¿á3³×CgöZl~ïZY`W'#Ù³ú¬ÓÙe<3Ñ‘%:²žjàR f;j P:¸›£3»ÁÃ¥GöpÃU@ðJ ÈC ,öÝòÇ9E)ÅEŽòªˆc£Q©­E°’ N )ñíðÇ$?@þ¸Ä—øã–åÑsÈ…/ëøxäê$¹|ŠMbé|4IE&…yä/ø÷À%Aƒ=!‰K.qÉid1qÉ,Î#ºû³L¼€€àtâL”U‰ž»…çoãW%nÀ”I@{·@›²V ffïU Žg ÏR¢6áÓCǧÄ_šøK©U’0ÊmA×–#EF…Sª,)&yÉ#ò—‚Ä%þÒÄ_šøKï3iAæ‹÷”ì Î"ïMwÆŒHü¥×³©*¢­Pn,Gœk‚Ê’ äœR†åŒO[}ív&öFík˜‰½y/vël4U£•ƒøÆü®i]½ÜùfNfy²n›ñdøè5®®‘*§3d›9ÎNŸ½ÿËéûìß›õTϾá²ÕЯ|ùÈä2¼ "{ýãÉö¨“lÔMë&7ô· ¾üíùp‘½í?X7d¯º¥nÜåž»Ýݑ̮ ÒëiÙξéæ1.\âáðþëWŒ0ŸR½ß¸™; „0 ¥’hÃp^!‹s‡¸ÕI£JTTDSA ‘ŒGj͈:ºê¸ÕR­6µ0.¾I.Œ Ÿ™Ú,o¿Ír5¸Ñ õÊ£ÉÌ­…XaYGÐO˜ú S?!Àdä¯á]L/hqMLÒ ÂqY ]y N Š´ÑŒKÎH^U4dKDÝ;["Ñ<$û#ÙÉ&H6A² ~gsEy¥«\ RWqZ $™SHæÒaWb†»ÎfäÔÙœ:›Sgsêlþ–͇:2©³9ù[ñ(ïØÌ:P4¾•:›Ã @#(©³9u6§ÉÔ ™$nƒ$ ê Œ|¦ÊxXeüÑ“~Á~*ØOûÜXb¸àÈp¢ç#ÅM –Ui3Jâˆû q©`?ì§‚ý{]°_x«‰ÈùìòþÑô1“©`ÿ !ѸP¥"ˆ°"GÜTi£*”KIdiIɈ82$.̇][™ODQÌNÌ;8[ëÒMnõ+ìŸzÍ0l~Jþ,$¦äÏœt÷Sò‹ªk‹lY ÄiaV– Ë”0ÖÜoJ>@Z8[óàt-‚1¦ä§)ùiJ~š’Ÿ¦äÇת4%?MÉŸ±³¡–6 Þ³¿@taÐ=¦°º"H0oŸaáPY*…æÖ‘R)ÊÀUŸ?öºùÚÖIòÉ®ºræÂ4îç/Œ^ŸîÚÉj³¬Ýùfp÷·õœÏzÝ ÏÒ¯tC÷Ë‚g*†{ýö1±íÏš¾¬»ì”˜l“AòßÞš¾·Ù“¬XàoïœFÒk¯IpΉº ©RÄs&Q)…DÒÉR(^¨\¹8: ”t Ó?6kÓ.ûÏ×zOÎûfݺ¿©ÔËïL©‰ÀV¸B!SòñÊHŠ¢DR:Ê´sTU¥HJJ Pê׺Þô-dåF‰W^ÌzpYéšþCF8>Q8kÛ—gß™f— kêŒB,g%âšJT:¬Q¡Ë<7"gš›8š ”4 Ù¯Z_uê2ÝÙ¬Õ›FÝçs±ýjª[ÝdUßOÛPÀãL×m¦§Ì项Ȭ›œù”ºuC½Zn’ºçz4ëFžÿ§l\;n–ïÜzèWzZ^l^ uëlf×.›úlçüW ÿõÜuÛu·¿ÕærëÆ¸áOÙ™îÎ×¹ïì}³X9åDŽ*§(âÚÛ+˜8¤¤“šj†ˆô¾$¥÷ ð¾ZëWþTèð®ÿÐ8{æ2»iš²¾û¬ò£k*dôð½é¹a¶°”ZTJê7~¯eAPáTÎe¥ÓÕMR9oHeƒ¤íž¥—l#;ÛT¶ìëý&®pî}bëóìcÛtã¿þíKª¸l£±D)uòq9µÍß=ݱû-gU?dÏ·¹QŠl"Ùhræk»OÊáäé©Ï,ÕSíÆÇÙ“uóôIS?½ö´''M}èQ'~A/Åokó÷¬³Öénò>ù•ì‹0Ïâɉ­ÏŸ†5FÛ( ¼±³\I–cŒùLðìÚ› §–TL¥„# ‘'t €$ôìóÑ—_ 7‚¶(šß‚ÿ`¤Ã¢’„ËŒhŒ.ê°Ã%@'¨¸©8¯ˆ—_”ÀµnÒõ¶p1•÷%ŸãÜ';ŠÀaЮMfk!^nÿé̉}sÔì*ÙÞbX¶Ê äAïqSªp.«¸xñÑ ¦Ï{zuñûžxhÅcxèñ³[[£î8R–FËYQJÄ-vH«ªD%Ï1–´¬ m"D¥Æûã':‹_ŠîÓŸ™ˆÎnèìn¦Nà ðNÔm©uú˜¨Û~üŒ#½k­kʵ Z5ß_ñà©õ”S¸ðî¹X!^x,·¹E¹å‚2]8«ÈíPë$[j½D­—¨õµ^¢Ö;ÔuNÔzÉÃç²{WzÖe—Ñ]öD­^³ IÔz‰ZïˆÃ7aÃæ–Å|_ŸnGàSRˆÎ·Û6æ@à&Ìñó(&ÅÄ£˜x¡I`b%>bâQL‘]8Ð& Mñï„”)¿oj×D효]s-l¡+…9✠¤œsˆS`G°RTF¤v‰KÔ®‰Ú5Q»ÞgjWI!ƒCwG'j×Ù·+aiå0²Üæˆ;‘dkûÁ³iê.£âgíÙ‰ÕßÝRž3„tˆ3Ì‘’9Ea\Uy©„)ãQヤÝ5þŸëÊÓEã2¯<—–áàÎôà_•lùÙ†¸†'ÿð5<þ½<ÀÓÿ¥]õð‰ú9gSŒéŒ½zø­†[³€õglÝý‹NáǧðW=Ƨð‡8Prz°™ö½‘Ó3™ó<œÑ õ·zCªt6ÛÝ„·åÿŒ-{p9‰Îþ¶„Æ‹äY¿îF×øÏŠ.ûõ”éÆô˾ÉLßëvC=R’rÜ~žHù.Áì ñnòlNzµzm–nôÆá8õ«=;$Úô ¸´¤0·<C0z šüÜöÿð/¹¯åÙÜÒxßÀâ3ªFfH–—¦ÄQ£rÄ™ÆHR^"ÍdQIi iD¤ºHˆ¨ã'ÔL#3â×R¦ZÊ42^—¾"8‘|Ãp=ÍøH%¦©Ä4Íøh] ;Ø!S©ð7€Vvƒ'CìÉ„‹^ e/€§X络¿blE•re0âØj¤«J£BK"e‘FØíÌ_INóWÒü•4%Í_ùÖóWŠÃ¤ù+)\-þsÈüÉâÇÒü•ðàpPHš¿’æ¯g,0Í_Xœ÷3Lšžeš¥“fé¤i– Û Ì¸¦ ñgé¤ JZЦ<ÓCÂÈ„‘÷/i˜À F)µú0A)Rí•F{¥Ñ^;E”1ÈVD#&™De!œˆœk*s. ßñ«„g((1Bõ¬ž–ëraúöd¼è¦¥›jsÉ>µýLGºÉ;Ý~$-þP0(h|ÉL^îG(ûóÐïaÞ§Oƒ˜àýÏó …ïq§/óR?þôþ/ÏþÛ‹÷Ù³7ïߟþø"{ùæç·¯ÞŸþyŸ€ q¦oÕ¤Õ²ïÜ•J"°¤TŠñÁý¾× ö¦aà™?EööÝÿ¿šÏÞg?¿÷âÅûG×Û¹õt±wOB¥—Dÿ§¿ýiÕ“nžm?¦Bðß²‰n [”»U£}(ƒÛl’Ò n{©µ¯À nw|÷^WËz8k{²Q·ª¯ÖUÁxµ÷ŽÍ¤ t[7—h°vÍ($ûíNÎês×…”ûϺë.DÎÍÔ{ºªþ8ß3ò=æA€(àZ]7WÞÙÝþ»+ÿ7 ^5ÎxöÏúTÐñ¡þ‘0ã:n×Y7ø£[ݸXSViqРYF:TYŶ@Š1…\îL¡«Bä‹8õqi *”ë…)¬pŽqà&̪¾iúh½Ê>…öátÕ4ñú)Ÿ%nÝAu¶ƒê[™uZ ÌßSº‹ððp!ÜþÑì1–Û£#Ì:…¹wA ˜1©ïÓøSQ²\C‘´y…¸É-ÒÆ8TæRòÊH®*z °@bî,¥”ÊÕµ¯ÞiÛô¶^ÕË„=u’½ü4‘ªŸ–µþgm]Fèbû뛦u£&Ýe­³ýǾ­›Œú©UIXq%ÇH,€¡2?kÎà#±@8Àpø0¬øÅi÷r¦Êæ†0”‹´4}L·GÇ-º»=eGãmÚ”C~Àš0ôî âƒU«T6‘°+aWü˜„]·]©RèácW®,Q–%Ê2•ç47¶@–`ޏ• •ÎUÈ…õùmQ”."eHÜý ,{ñúÅ»ûÎY&°ä c:CYö¢uÙWÐlèû6Ó¶­GOúûÈÊ+'š²ã N1¦ˆ`DäÜt«½£Õ{L³4ü†œeŠ;S`¢âº@œŒ¤qqCx)]n1×é&@⎂nÂ_|sîl"œ¸„BáÁîZ8ûw_µœÏ&šFŸ×¦qP’‰ðÇÀ,0Ìæ™%EîGºÔ“k]8“"R8)Ââî'…ÔÔ”ÆT`î7U…ÊBWH®J­%e%ƒÂé›Ò½tP¿6x7¸p4£šœdê?_)Úíæ:³ô“í7c—~>îæ5>ñ1­éëÎø[p ј¤¹@âzÛ쯧Ù¾G£é÷÷쇾s™õ\ýÓÒæWzøÀæªÊmÚÀàVãÚÙ+_P*¿>eãåÿÇZw“¿¿W4þ!¼ ’L0Y(f’ï=ºuWoÝÿÞ>¶_½ˆktÎ?öUë´/Êß*_@ñ>­ÛX݇38;š*µ•B¬´%âŒX$ '“B%ıНo(²EWˆ¸ù¿;2‰H.…âs6ѳ­ “ý á³>\ìzíÛ[ql¥ŸhB?ùMÜS|ø$I˜ÕÊ"Q泃£R‘Êä¼À¥(Uñ=ˆ»¿ï!ÂS‰1¾ö=<ýÚšú¬¦e¿ò)ºÌ:"ò4äݬ˜Þ×ï«`3¨Áé±ïvÕüáðnø@C6Pç7`ùÞ=Î8*Hi9A¹vqm*¤ cÓc…äN’""ÎÄÝcœ!4—dg¾4ï³ÑèýP:bf‹…. ]°Œ‰. ]°â„sÉ‘t%GÜÒDJ¤¸Ì¹ÔÌpf¡èòÚíæ[НQ"veÆ©_­63Oâo­ƒ•Ñ0éÇ‹®i]½Ü•-9=˜åɺmÆ“á£çf¼Æ1Á\QJ®7‡Œ›´­–®ËÙ볓¬ÿxñìÍó7?½È^^Ø¡7˦÷UÙæç7¾i使^­IÜÇ:½ž–ýàì›nÐÂ$2–€de€´õ™{ÕÓ°6þE¹qÏÛT·þ ¦dWN‡ªN<( —+^ì¯øuÊ4_à+þË6t-9J füÉ9ëì}ß8í¯¼ÒÍè~ íýèN;ûNO3 3$5aœ ¬£SÔo zr!*mó¬ÎTˆm êïx¸¯4ü$öïs8¨RZà¯×D¶#Ÿ<ð—˜(£a -JÄ )‘–G˜³\Šku$.o¨#ã¶Y-õÐjsqô´6ñ+DóûÃg†y¹ï¼”äáSu¯7š¡^y€™»Û»>(ëî)žwp:¸ï˜Þ9Ps¯:ŒÒ†_?~Ï2À^X`R‰é‚É£`!µy®UcJÄKQ EˆF¤˜ç•tU¡oÁ±ˆ}ÐŽ=#¬ê×ÇwÜ“gž<ó€Ÿë?Í÷Ý!ªŒ«„ ‰‚SÄs“£R›9b™-Y.”ŠåD%‡(9DÉ!:‡`A¢ä%‡(9DjAÉQ¸C†q*-)³N"ΈA¥å*l©µU%‰—Ã{"mßž¨»­Eñ€Môø]pÁþ x“a€Š9>ñ'Ãyc’Á0V›gX˜·Ûa ~½0è킵¯¶®-÷T*vÏ)¼ï4H«r¬šÀ0#DbÌÑ7Œ}—Õ]6-]¶ÜТz«"sÝy=ô]{É)¹9êô.®UwÙþû½ëÓËÏtpw•²~8Ó]ýO=mŒ¡ÿµÖÍfÞF¶1"èTäíé܇ƒûqS[øæ]°;'L´¡Qá ó+…o[«;}Vwgo¶Z´Å×°ÄÓíÙ°ð¶ùJ•¥v YbâÚVHò\ ZZ,\…+"ùM,ê·uÍC¤m•b++`eŸmh•'g_9÷¿>±õyö±mºñ_ÿöe6àÛD9ˆRêäãrj›¿=zêwœù-gU?dŸTÐÔâI9œ<=õæ|=Õn|œ=Y7OŸ4õӽÞœ4õU=ñ'øU6bV^L=f­ÓÝä;&ŸÊBz¿xrbëó§x¾d;œu¹ýþX0Â0)rE0.…cáØ^â6YV’Çä¸b×?ÿ4µµƒG7ÞZ1ùü.QdæÅ³nÒõ6V|eî‹÷*cq€ùΙ¾m]gõ´íßÜÁ™_w_çÁ3@¾åpóÏïàkŸFp,…ćx±Ë‹qCع{)²IgnÊšúl9eî£L=ºþ+@бéL|CrgºÁC³DóÜrŒ˜!ql$Ò T±ÍŒc•†¼j7FýÏÓÚ^³‰‘™Û”i_m‹6~‰ðK⯽vSõx¨Ìc¦džA¹=²÷ÕÁ º/Ôöß‚KªTž "r™s®¨"¹Í©<×µO±>èXóÆFqöàZníoªŸÝPo>ø$ð£¯ÉÐùê÷qsÒŒŽ\ªàWÏ“,ˆÀÍÛ¢»Ííï!­k{«›`é|žmmúvѹVo\šÏ\Ë}7mrº'ÏŸ½¾:iûü¯×Ëê3Ï›½Ó¶îϽZ^„“a37v·?ד—“,‹P¥0æC\0UÛ"Ëö‚ç¥ÝY•c. ú…öˆ°g4ö«gVOL…ïån_c,bA|A.ÿ{4×Öíýö¢©ù„ípÑm~öö?4p.—‚hÎ8FVæqQ1¤HU!%•e‘Lç.R‰@ Ä)Í3ŽÀ”LV¥²¨TÐå;‚ u€swå4Ð+úzÀ¸¶~ï¬aà R¢¨ƒ‘à†³›u&쥂½#.Ø;‚©‹w¯h€l30ß P¬¹õâ#ì1>1'#Œ—þ°öWš‰I¸k礒/rŸ“äÖzLš`ŒÆ ÐÀê÷\cÄ 4†“ÆøÝbp¼”¸0POHAy¾È)PS …üá±OGPʯJÉ1WÑ<¯ç9A¥RÔjE¬å•€Í“žÍÍ Éuí&]wÎ^cÑ6³}Íö{¬÷¶²5/‡MŽ jœ©ï g€bfÂ/ÄV}¢ô†…î³Bíyø6bØó0ïÖ «‡ ÿŽê©«¨pk÷¶Ü¼@¦ÖÃÅ·T£•¾èçŸæ¼§OG~jšö—Ú†3ŇøÊaŸ/}®?úõêʪÏÿùꔇ¸OýÖဠ±Àâ'ö}{_ù—ûW@bŽõa9»õµrþËî¨ð½˜Ù( «Ò¯'Ó·îKóáQ¸  ßðÛÿÎ}Ëc†¿c“Ó­ßÄõ.Íj¨[=\Ì:4o/Ë. ÏŠoÜ2ïÑe“ÆÌí7Zæ4ºÏHH!:ߨÚXÈ6_àIxf$Œtaëôî3(iÊýÝN¹Oy&À¸{@™¨Òã!»§ó¿øÇ5]~Nÿ]›zSByó÷#¥ ¢ÆGÔ”P=~ÄLˆ7'ž€%>°¤¼ÿñ£I²¿â&âÃ"´ýŸëÃ鼕Æ«“AàØåÍå)'{×03!ä†ÈØ×Ý8tæÝNùsݹì‡Ïé£ìYÿ)0‘¶ÞªŽ=vDoV8‚Ù‚m?A½ ì-°‹ä¤-«áÜ¿¬Ú ¦.o·Aåì­¾ðE:wª'œ°£·©'IOƲì/f9œÁåçuÙÖ“§Œz¶ÔÃÙ]Jø#_Q’¢è¦ÿpE9mšþCR“ïEMJç?>Sù‹µf*››+oõ0e?dÏw¹ê²¹[ÕÁIkn×Z1ãÙ/ug½Ç1V|`Ýe¯ºÍû!óîÕïÒ‘Øa`þÍc-)Ö’*ëSL&ÅdRL&ÅdRL&ÅdRL&Åd’³b2)&“b2)&“´&ÅdDŠÉÜrL&õ®§êä‰Ó¤XLŠÅ0ÎÕ‚Qžì›™‰Ú±B ªòÝ IUR@ð-Jª’B2Q%)J Ê$­IAÀ,ôps9<,Õû ?Ëðsw_ùYô“=xE¡q‡ðZá÷'üò†Hëbóä­¼‘¼ÞNx3<§l¡˜ßÏ»ù5:¥^Ç̰Wb̹9’%)7#­™FVb#K£+˜ao×ý5­HÜ%TUwõ¸Ü_i³MÀoÒ9C§fòðKýþœ¾þ!Ì ãã ÷c:&‘‚q…1›™ŽùéÁl&˜þ‹Y:ó´^ý |PæÌjß|f¦_>!>Ä¥‡©ö\,Ýtý³­;[Ÿ×v­›»M½yÚ¯ðÌι Ÿô1–á Ÿr5ÜÀØßÞ³‰)±¾N;p€’˜²Ì`©QN…@«iA Ún¬±ÎÒH“’@¢CáñOJŠl!BÃð™iRÒLJJ3bî !4Tá¦*Ü'[3>ÃØÍšô½X8VÈ:…'D#‰™B…²BpÌ'ùí¾ƒ$'Ò÷DúžHß¿•%Ò÷ƒ|•Dúž\ªX>RØw ¾Çõ‘é{`x€$‘¾'Ò÷ÄžxÀטּ>Å%õð`% `ù@Kêç_€WÝÖ¸Ê^ö㪞tz Ž?”ÊWRùJ n¿pEIË)&1É+Ä”U¨¤#crÁKÅ9©ÀQÂ7Ùîên¶ y˜Äƒ³zZ®Ë…éÛ“ñ¢›–nªÍÒéfZnÿ_}ïƒ79§X[W|Ïæ‹^òþ‹Ç³ç©‡ííþ|&«ÿrsK>·MÀ+aX(|;ݺMmÁ›ŸÞŸ¾úéEöúÅóWÏNÿœ={ñÓûïöâ ®q¦oU£Õ²ïÜ•"°DœQÄ Æh‚µƒgÆByë5ðÈ *²?¿ùéÇì훟žgÏß½úï/]?A¢ž.ŸÌé»ÿñêÙËPtÓm,ÛÓßþ´êÇI7Ïv¶AÎÅoØ|¸‡-Ä]qáQnGÀÈ6ãû_‡"Ûž#ù²$-ð‚ï^êjY'cmOÖ#êVõÕhÆxŽÁpµ÷ŠÍø¶º­›ËÜÁÕ“ëJ7œ„üvGgõ¹ëB*þƒë:7M„çfk»ªþXÁ×t=‚wp¾€ †uêwò•~øEêãzµê‡©îÎ^uUÏ’Ù€—Ý{/C»AÔÝ^®ÏïøÀY¹P,0wbr ë»ê6HÝp/î'ÉЕ£'›á6Û-Í–þÓ¥oS¿àþÀçˆíwT.‚4(‰ Ç ¥ünšY,gÖ"§´AœPtNK$* R Á±¼fdx3Kjf‰ú»ýfø6R3K|5JÍ,‡4R3KŠ»D ¤@šYâRâ7³ÄÂú»of Á±7³lnúQ6³¤f–ÔÌ’šYR¨ ÞØÏn@3[Ò¬ˆm¼¯@š€4ÅdÞ>@¼VO“yÒd*süù_š˜<§9iF¡ NòÏ:³çR&IÃzf>NIQÒ¨ž;S“¤&iPOÒš4¨'1$¦¸q{”Ä'Nçºr’"Vºqm’R8b­hE– Glàˆƒ5ð¦‰=cšØ3^´«©oá}»3Ky»nšÕC¤SˆŠ£œÕC”Ès:ÿΜšõä²ózÐM¶Zêá¢;«§zÌþ`ëqSDúÇ4ºç–z˜­RL«Ò¢\1…8.ҹˑ4%•eé¿ÜÙw¶70ƒÄyMÚdµuóóæõÍŠñv€vò¯.Êóßœ; ­Ç;wC]m­Ì»ººs7 í×ÿÊë3}WÕC ¿@é*‡ƒrà€m#‡¬ø+üc}ûmã`‹5,¨ïF7íwŒÏðéRO®uÝoÏd„‹kΜñ·×ú¯k÷À ޵Ô:-dY"UP‡¸$%’UiáÖ9]•BTL€Xn’Ða´…üÊØ€^È!¿+.ÁÏWŠv»¹Îø8÷ì±h¬ÏºñZócÿÈ›ÛñA¯éëÎøÛp5ÜIÆ"×bÝI“kWnÐ~""ÙÂç?tsUå6 `,«Çqíì‡/(•_Ÿ² ~üÇZwS =~aÅBp,ó"ÏqQH¬öžÖº«§ <¹=[% Uþȱ¯Z§}uûV½ªåWŠl©îܾCáS^ ¼²%âØR¤má£9×ÌêJ3‰¾ ê˜ÛH}G§ÞuBE3yõöùݯÿ&;ãÞXw kÚ“Idù½s¯û(þCsc~Ú¿î¡X«:¨œ¹ÅV¹Q‰-—Irëd¤u ²E[ê"Ø¡š ÍÇûÃŽõËy¿W¹ÿM¤ÔÁv ÓmîØîÙšzôõ…¼¢ñx9˜šíÑX²!1±´N¹SŒaŒ*¦¥sŒ‡bæçăÁxÀx®_ýzfßxœX7!l mš\Øx  ÆÆÆý…õP45•MÄŸè—ÆåD5W±¶8jÍmÄ-3•4õœJ-½ð¨f¡ôPMé¡‘3 RŸ©Ä†º³ç€ç0ªÀæP#ã[/ß_vG×X3Ìœ-ÿ}Í|øÒ÷³½¿]ŽÇö~ÁïsŒéèˆ>Þ_Nœ9¶ì*Wl»¬]v÷žˆž^@‰»˜dÉT[»£.é¹ŠçÆ¦)9K­‚Dz©è¬Ìô­\’\øaá`¡¯šmŸ^Ñ-ò—ù1)Z«bô )£ âÖdˆ½K«¨•-U”à.mnTtL‚˜KÝîL·õ‡ÝØ´±u÷ÐÎþã¢ëøãë« zëUìªòs8ù[ýº«Ø¡ÛQÿñßçÛ¦¬º5üŽ~60ÔÀA“þʱÂdlþ’š~úšƒrb&™ôMD¦K¶M‡Wvˆ«uœØvá¾³C\Çæá’j¢dýøzÃXpÚÜ2l½ƒœ­%ñ% ¥CDj…¸Çéà4’Р…V”Z([ß»q(³Ób0‰øwKfÚ‹pLµw¿íZ3dü,hÍwÏ==¦Xpu[5~|£C%“`ûæõ_ÉÉ7=…blWîy@+–e¼YÍ}?|?Ußocxäñ¥:-r#aüçÖ6CºñNl!+M¸QŠK¬à’ÜûLÛ¦ºùL+žð¢ñ¹¾-×ÑŽ+“;wJ]éKÇ ÷À'¥d²Ô”+„™Òˆ;aT"¥5Á\Qï%^”” ƒ¿7R^²2ê«‹¦Ÿfå½'Œ–šaŠè$,_¶áºx«‹ËÊË´hF澑)GfbÂ0S”2ŽõƒÈôë…˜é×Mj¨eÔ(à1"Ç AÑʨ´Äz¾(4A34šŠ ›¤æ™­š¢£~1\¨Àˆàâ*vÎÖE³]Ç®òEg‡ª¹(þöÁ·]ü{Šâ¦í† œ]ÄØþÉœÉÌVXHͰÁZ)“’ùŸýøÁ~ZϻڋÑFaç41ˆ ÷œ gGXm¬dÄ2¹(£A3£ÑÔpÉšlÿ Ù¦E÷ÏÏÌOÅVFR…Ç—¤4#ìA|þx± 9ÇŠL 1D#%*½Âˆ{,ÕÂ#"朒 ¼Xš ƒšGMfˆHÌCóíûâ»&ÄOpp&Å÷Ï OªW”k­–ÂpÉx„ž'kº@Ǻ‹¡Œ3¥(ƒÑøÈ”¼D¡MäÚ³(CA3C¡BPÍŸfhݶ¡8ëb?vB“Ò‹4t9æ«ÊöC[W¾˜p;Ø.ê™:“832%£“Æ+LÚHC˜¼ í“j½þÛ›‹¿'ï0J%/vWéÄVÆ?²ShŒäü–úëE}"©rq— T¯ÑR(ƒ¹PÒèCñ‰dð9„ÀÆ)#ÆiJÄ•`H{eQäV¬/Y\4°ü½6µumg‡ä©¤ÛÝ=xtzcáɨæÛzëÛÎ$År³Ï™ V+,!‚HƒæêÁ‰àúâ$¼]d"¸«ë°&‚Bx¦5 ¨Ä!^zŒ´v ñ(”Œ’Eañ¢¼̼<:^JjÌÌÆš¿tÑßWC×^ÄB͉ÂûegÞ\³"‚hE åØ‰Ù³„§*£•—ˆÇ/CÚz.±—’)£È¢ðÌð<:x2Í5›ÑÐN»8îh©XÀ™”Ü?737ñÊhŠ DJF©úYro¥§1îâ*dhðHR)q(1UfÙ\ÁÌÍ£ã&7J D¦¹ik_m×h&ÅöMÌLL³"\2&ˆ&†i峦5ØÛR¤¬,7¼DN´¦Òê ÕËÎÒA‹ Ì#Ü%¨fTÍm€ã2)•i¹×y93+.¨dFr©¹Ðôa\®Ûúd1^Ž•0M G¯!¤DœD4vYe"3´\˜ ƒ˜Ç(kꙉùY;ؾ‡33-˜±¹ï)FPŠ%“Ds#%•Ï›LK¬TÈ9içV"S óÞ†¨vQl flcœ‰¥Alz^~Y·]àjfR.Cs¯±&&+& áT I±"Ï5ÖÄÁDçˆGº4qF1²„{Ä™¾Œ¤´‘/ MÁ Í#„¦é5³smS¼ªÚO@vN”Þ+A3A)^ ­¤¡JÎŒy¦üTÒSA‰A˜ixé"2J—È`â´PÚF±ð*:Ä`æçòÓ°™ óã˜L¾8½lë››ÝÚBЙ 2D÷†*±œPLSD ,žç ‘˜0P©MD{‰t4a2¾n#µ²fQˆ‚ fˆD…"HOC´«.êkÇYxhZxÿðÌëEx%)˜hB¹”X?OxF[º’ | ˆ;CÖ”#͘զÔJ-,{‚ fx<‰¦’"9IÏ·í?ŠW±éÇÌeo«M»éÚ!VÍSƒR@•û'm&­æ+F #F®™fÏ’³[F5aÈp—#ë£D’bÉ#£Bc¿(g3gr¦¯2“˜}S]\.ÍÙ±ÎÃm­+¬Ó”*£9ôY’6:Áµp)j0âDd•tÈQ¯öÒÌ%-À`&í1F´Ü3³Ãþ]å»ÖÖn»®šâî°QñÃø&!ŒT¶W¸æ«1†)LˆQLCÕct½X®‡—2”X…,7ñ²ŒÈâȘéRy‰Z”­ ƒ™­GÇV) FtZ,ˆÛ[=ľøÛN®Úz»Ž/ªæsÎ!w]¼ØíÚ17t‚âl #ø·:¥c„a&)×T>ßüÿb'Û…"Ü]mÆac‚$^X$ÊX"΢@–S…f,àPÊráCQ ƒ™ÃGÇa¥ÍÌŠ×ëîz¸ì¾ˆ‡ŒâŒb±"X(M4škNŒxŒÅrQËÃc±fJa¢ÄÄE HSj‘åÂÉœt*,ÊbÁÌâãc1ÑHM »qÝ^Ô­«šâoc^õ„”Pò*ÌœÝs¶)*4Á”Jl¤aäAÌ.¨è  [:ï•ãylJĉgÈjª‘PŠú@ˆÔdÙ`d0öèËçˆÍ֭瑱øÛ_oXX|ÓY?¾Å¿m¹HÈ»ŒÌã}ò˜Ë“RRL…Ô\qñ¬.#ŽB¡£C¢´ q¢2Z0¬aã'öÄÅEI 0˜I|”²ƒšQßþµøÛë±OV¾ø•.À]pµ³ûĬÖ+I1¡Zj¢…äüAÌ–K½å¡…¼Îc)” ˆ‹X"î0A† ‡ GâKLÊEA 2˜A{„ H΀öÍ×¶ï—ÀlRéá@6C–á• X1£‰” ö d7KmgØ\𮀹àXE䋈ç‘ãȥ¤Fº¨$Y² ƒ²GY‰ødOï+¬ @6©ô€ ›!ËWeˆÒ˜0%Ø3p‰ÇÌi'˜ .B‰Œfñ ¸†(ÅÌ¢ Ì =:ÐR‚1FâK÷+¡ê‡®rÛñÿ¨Âp¹¼¦·˜!}0ª.[¬™PÄh¢¸ÏLn°$r EÑr‰¸Ó9/ 2”rK”pÌØE 2˜}|‘°R3 lgµb‡¯µ—l¾þŒÞƒˆ…\Iƒ™RkÅ5y¶{z‰‘¥d˜#ƒF<ªˆœöq'LŒRhÏã¢Ì>:3Jñ—bx>`]Ï»ŠíŒmªÔŠQ¢£‚jÊ|f!3Å$`ã1 BcÄ…VÈ*‘Ç^Gí afYZƒ fZ!­%eˆ|­×Ñ6Ÿñ¸L'ŸÏ9CùJa 3‚IÉ{n|&ŒøE@^;‰¸Õ9î5Š$–\qK/å3È`æóññ™2·køu?T·ðû¶n×±ÛÖ¶+¾©ê¡»y•c‡E0¬ÎLÙ}RVâ— +!…äBŠGîÎy{²®š“’•bçkúÓ2ÈMª=0c]JŠDØZ‚xI"2Á3PØZe<Ç‹`ð÷à~Û]Åøî:6-™)Éiî¬÷mѯ۫梸ý¶Å÷o¾ûåí|U³ cvô{ëêxÚ6>n†Åœ«oÚu «ª)Û“Þ»˜Da,']ì›¶[ÇîÆ-bqª¤ðZK¯ƒ‰À%âÖjäLàÈÒà%±e(#]Ô ƒÇê|¼N#þ¥˜_r÷Ÿ«a¼\âéç˜Áõf’ï7m„”RÊ¥äZJÊŸÕñ9%931}0ˆK‘-y‰¸\Ù ¼-Á¤=ëZö‹)gAæîqÖ·ëM‡y#ËÍ„*¥ÆlúÂîMÕµë8t×ÅŸ6»7òÀè1QË3`Å&v处³ØUm¸oîÆ7ºá‹ð±kwBöb½{ú‘FtÑömóÃÝOKFõÙ7À·†Ž4Sã«&%2Jjd'‚jÁ»Êã7rvmSù¢uýÐmoàY¸®müe5T}ñ§Põmbwëé°»fîz52Qé u¨,ƒFÜ0ŒœY.0çB0^– B`î€!#°&‹éÅ—m½nÛ]]¼´®ª«áVûS/ªu<.cg7×`ì€+Î$Ê$:9Ã0/#A+‰¸Å#bÎx‚¥Æs(‰^Uö¢iû¡ò?ÄMÛ )VvyEÆŠOM(ß¾x93“|{´3IAŒÁObù¥í+_¼‹ƒum]ùâÌ6|«ÁL% á6O»Øoëá)4uÊH‡qDDšq%Ò^Y¹ëËIš~[o}ÛÇ{¬ü3´ Bx¦5 ¨Ä!^zŒ´v ñ(”Œ’EañDþÒE[|_ ]{›_×UF+…/5Ž!^:†´õ9\b/%SF‘‰–Üå”ÿuÍÀÆ[é©DŒ;‡¸ <’TJJL•SͰµ¯¶ë_×k°·¥$HYY"nx‰œ iM¥#Ôª§>ʇ6üê&˜4Ž^!CH‰8‰iì$"²$ÊDfh9Õ„³v°}ÿ«[Á´ÔÁJ…œ“qn%2eðÈ0ïmˆŠqa'ãºíª÷ˆ§\¿Ú{ñÈ& %àKœ,J¸G”c‰¸à¹`9Â:bA=6’~…d58‡à(iô̦’·Õ¦ ð°&)šƒ™f@×¾ƒoð0~2à*\PKà—‘.p­$´}ðKü¸íÇ<ã-œ ÄË ‘!«C‰°p±Œ¥Á”ŠåÇ<Õ<æö˜§9™»óåô³6\¸ºm?o%/þt9.çvvý›qH+Ð"ûÜ—´—G×]wF-zß|LÞ¬¿–cáöo€§®‡·ž+|ñ´ÏðFÃÓê."ØFxFʲ ‚ZOç¶@j.P áyöÑÒ|x–å3>À <ܾsÑð;ó¹üqÁCŸŒU2,¼A6€¸Ž iŽ)⬆Ù@ïu8­mµNg S÷g v ™îíœFS‹DÜó“ ?þ4Z|<"¯š~¨†·SÓƒAá¶¿©ÃÿòµmìPÅfÉàwWy:h7]‡Á2Ê‹³vÛµ½¢ÄÊ®ªkëêø¥{ 0hoþ¢½¾‹vˆÓ%ï½É®½ªÂ—†÷GCŒ÷(”Ä"¦™FN‰ˆ'BrKµŒâÑWùý‹ï?þåô?^,NßüøâÛ×Å›÷ξûøâí#{5ºªíªáz_Þ|³+¯ïwfwé¦íÖp_·DªúéiG?âîö½“ÛÒi w[Gv¯f> ´VÅèRFÄ­È3:„VQ+[ª(“_43¹ÿy#ø%5@~`ÃëÄ/úó5˜.Ñ`Àæ9à'éºílãŸþ ÊÖÛqàºmüÅÿòíUììÅî'>ÜÆPyÛEpÛ‡¸þ5ž¶~xß}ˆÝU•|†)P¤†à{ü Ñ‚q±IKbí¦R”mWô×ëÍÐÞ­Ï&o-yw‰Â4_áÎßS]gV†\@í™Wá]2¥â‡Ý3é/"÷¼/qÎ5á_âK­:[}Õlû‰­{‡Ôú¢²Çˆz¼Ÿp®z¶þéækLaÐÄ{¡tra ¦rEHm»‘ ·û>¼úÕ®ÁŸàô˜\#Ý ¾èŽp¸³@Œ<Ý‘+)Àî3>ܺ{4E 5+"ǧçÍ-s|k7¹‡ÜrŒq®,¢ÄiÄ­`ÈXL×ÔGIqé•†ê ¯?mjÛÜ|Ê÷åËØÄ²z`ádùƇ›ÁVM SQ[Ú˜Ï}ï‡Û—º«ð~Snâ‹îÞbêü‰Ž]<ÄæÆ›oF¨¤†tl¹`ª;ìÜ'v_nDĬˆ{oÑø/ïþ(•ÓFw'à°‹t©2¶›k<è>ù¿sBX*†¥üK§.¿ZwÓ|e»ë}ºÑÆ^·_4ƒ¯ÜW!6CUV±›èíÉpØÿk¯v½9ø—i¢‰³-ÒÆ»ŸþYá¼èÚíæÑ–š»¿G4í,Ý~Mév)-vÔHgµX¾¼{_ÌIFéÎý\˲>µ³¬'íüa÷ÔCuìüâ‹ !Á}#ívðí:þ{øp·V?F ¡’¾Ïq¾kë…§1`Œolˆv=6bzž³éªµí®ç§9·Ï§¶‹ÅY7BqäMì¾`Zœ0ÿp03¤¾>¿€?ÄOèçב #;Dã«ÍŽé§M?.8| ãpõûÒ%Ñé¨äÉ~Ô…ôꪉç~ÝŸnrÞwWþ܇•d†»×Yã+£bQ•(¯%ô·¯-=S_û¬O·©nýü‘¤~ÚeHùù mjëgÆM:ïúß5ŸcèâMÛoªÁÖ¿¶äÅ ŒÌ} 3/™?<3<á”b™1{`L^×=>¶d¶ìya>µaÃoCuûQæâ¿|Í·´Æ§£lü2·ENîý†ä3Ýû”Oe[5}×øs»N!ñðÉú&/ïVŽŠÓögM¢x±N¦’zIòïɱÖÄa’¥q‰ÅŠÒ]ä ðœ´ui;nmgÙtW¡;߬˜Ãœ}V”‹3{½Iò[zŠä¯´ÖÙS¾¦§ôn=„sÙ]À\åÃÖ­«aˆ¡8½´ÝÅž ‰²§,é)¶nÿñOyQÿ«à³ñ“ì'.ŽÐàÎCðƒ«Ÿ²œÙn(^¯â8«\ýÛúÎ^óu#ß_œWM8÷°øØ÷ãe6ß57 l»bœcý*YZ&æ Àd&ïž~†*MViÀÛß³H“EÌVŒå€'K4Ó~ [1šÏ~’šùA(;JÖg²›,ï&YžÉ^“å™Ù“»éžæô ïuÂ9÷-“‹±w#üü~Ý“I…Ëi]iÿ™ï¼éYéegoÆè81œ4'YsÔŒ¯(Ö»šæóÓâ¹<= >×mµ%Sa¬9âXd˜ÀÈE0vTX½£þnsvz˜b.Éb]õ—¿¸*¯¶}¿kË“sQ3ôÂã?<|…ê‹w/“s[ÉI—Rh$ÇDp”T*†-¹(6qÜÿ?Ùuuë:cJ×Ò4±ì§t7rÒçáõ'=s¹ÌÑ€äyïº~U@2èml7Tã)¡f&9sÕ„êª [[/xöÎóé‹¥_u«âEc‹w¶ûßÿË*I‹±ëìÐJ ¦ã—KÕ®Ÿ5^6s,u§7ŸN‹G¤"4"Ï©CLû›[x<ÂÒKlcÔ%·úÁÙé3B/Ÿr㎇`<+ ^"bœE<ƒœ" ,-󥱊ÆEo¦üýÝLÿ3Ÿf8z÷Ü‘]<@Œ¡‰I~|óú¯ä䛿žB.HÊøE€è~€Fr€Fx‘‹å‰Z)¢)’ªyV÷Ê í<ñ† ¥ID\Å€q¥RpaØ¢œü½qòj\D}uÑôS¤¼ÿä±±R3LgîhyÙ†ëâM¬..Á×­¤E30÷ LIVš`Â0S”2ŽõƒÈôë…˜é×MŽÊxðˆS/‘¦˜ H„7šðȽ\šƒG Í MEá3·9žÙª)úx»ñ8T`Dpq;gë¢Ù®cWù¢³Ã¨ÿíƒo»ø÷·÷#ÄåìBÆ2™÷Ifº2F2Ea„0M̓`þg?~¯Ÿ–¡ó®¶C4¡Œ $²FqÄ©ÅHkŽ Væ- /Šh€Á£DtF45\2¤æÛÿ‚¶iÑŒÏýãS±•‘Táñ%)Í{Ÿ?^,Bα¢ƒ¦“Þ•ZyÄ<–ˆk‚‘±¥B%×—*Fkü¢ÐYŒ—ceaFUFa0²:JÄ æÈ*§S¥áÊ9†¹]˜ƒÇ Ì,kꙉùY;ؾ‡33-˜±¹_lòÇ\P.5¡cÁž+5K®´ãaÉâØjd¬×Hò ¡†‡rÙ0`ð©™ÃL, bÓÓò˺íª3“r™™{ 51[I.Ö\ ɵVÏš!0‹eˆk¥FV†DО*k×qQh %434…Hψ™k›âUÕ~‚²s¢t&è> JÕŠ͈dXi%è³ : /©Äˆ9N"§}DÁÄ@¥•^¹(?’Ÿ™Ÿ†ÍÇä¿Åée[Ç~ˆ][C:SA†è~Ó¢á7„`Cˆ1Lñ,ˆ,-)WJ"ÎFÜs…¡ yÁ… >úè–Õ;¢¢B¤§!ÚUõµã,¼4-œá¹wxr²ÒFPA°f„K¦Ÿ%< Ñ8"²Á#î8CNcd4^bbõaQx !<3<‰¦’"9IÏ·í?ŠW±éǼeo«M»éÚ!VÍSƒRp•™´û$­"+L”ZJÉ45äY‚6Žž˜GÂxI$rÞ$¤·Â(LxI-ÀàQ‚6Oõµ@f’³oª‹Ë¥A;Öy¸¤Í¤5œcL™4”šç©MLðØ É$CœR‡Œ·Y£¤ŒÂzMÍ¢¤æ/øÜ!¬7qÝ^Ô­«šâñ'wÿ¹n¶lUÍmšNh?ƒ×›I¾Ï€Y¬„¤”R.%×RRþ¬îÇ$4AŒi¸)1²Bj„u NDRJ­¡¤=ÛÝ‚›rdîgÇ ÓuïÞZ#ð¡™P¥4ØMŸ‚ßT]»ŽCwÜo Çõ<VlbWŽAJ8ûz×ã¹ëÆ»hû¶ùáî§%£úìàÎ[à Gš©ñU“%52‚AµàŒ]åñsn]ÛT¾h]?tÛx®kY U_ü)T}Û…ØÝyÅâÉ•ï÷jx8'M,µˆFïgL ã¢@<Š`0µÆµ dæ2k‚±˜>8¾­×mc»ë¢‹—ÖUu5Ü*pêâEµŽ'Ãeììæ„HÅÇD¢L¢L¢X½àÈ0fF_ÃÈŠ¨‘ <úR¯•ƒ’èUe/š¶*{=h $€Õß]^Q„±âSÊ·/^ÎÌ$ßíLRcðL¤—¶¯|ñ.ÖÝ\ïpf›Ú*4SÉ‚¸Í“Ä.öÛzÐzc ùÿø`m%E$Ô·ÒœÖ @†P@®Gx€9ðæó§A›HcÈHl - ü ¬€óËG6i(?ÎWZîƒbHwA#ÍG¾ œ•Ò”$ÄåÕàv€£¤Ñ3›JÞV›*ÀÚ´hf%˜æ6‹‡3tHpÀÞÀ‰»kÁÚ8³À!‡ƒó‘‚2¥±Ô NAFJd©4%6–Ð1ï´¶Õ:è ¦îtvdÀ½ApM-öù1Í?ÕôC5lG™ÏNaýAÊmû›:ü/_ÛÆUl–¤ù®òtý¶éª8 –Q^œµÛ®í}þ®ªkëêøå<6'çùq§KÞ{“]{U…/¯ˆ#R‘çÔ!¦½Gº4aé%¶1ê’ÛG_åÙé3B?¢…vUÛUÃõ¾\÷fÕ«ïwf÷ߦíÖpÇÝ-ªÍè©ýȶۗLnK§5ì¤Ù]¯ž¢7`ùz«jÒ`ºDƒK9Iƒ§#Ü<ÛÎ6þ韠l½Ç„¡ÛÆ_ü/ß^ÅÎ^ÜüÄ©(1TÞvÜöÑ—…ç„­ÞwbwUù…nÁ¬8¥«N’JÅð}Â=¬^Å&v¶.â'»®šÛÅ¡¶,>ó>]¬†ß ·’ôŒ4ÚŸ™2.0˜™í-Öy?ìžI¹oôp¼¸¡¾©îaó5¦ÞÔÄaúâe¥ÈJªt¤Úv£WÝ*¯^ýj°³'ø=6ßH×ÁY ‡{ ÔÈÓH¹’ì>3CÕÍvÃGúP³"r|zÞÜ2×vs,øÅ³Î)®¼DJ ‰8Q Ç*ƒÐZ3U–ð^ÚÔöv|y_¾ŒM,«dNån[51LFIc>÷½n_ê®ÂûM¹¡º{Òéü^–]¸5ÄæÆ›oë“RýmI .éwî;@:þ³Z î½Eã¿ ¼ûóœOÝí逇àf,¤Å.®}Ð=|úçôˆT“Hù÷p˜œ¼ZwÓ|e»ë}ºÑÆ^·_ùÃuú*Äf¨Ê*vIoŸû‡®ÞF·†¶Yùu¿ºh¯Nv_»?¹²]5Jý‰¯×çÕ®7'ÿ2i*q¶EÚx÷Ó? M]»Ý<ÚRs÷÷ˆ´ø5´¬ -%‰RÕ¬$Æ——Äî ɨ1ݹJjpÖ§vvƒõ¤?ìžz¨Ž_LUÓÃ4Òn߮㿇÷×f»ø1Z¸à‘¾ðýó][/5c|cC´ë±ÓóœMW­mw=?͹}®8µ],κŠ#ob÷Óšåu9¸øöˆó'ˈtɆ„…}0ö×UÏýº? ó¾»òç>ÌLœg\i÷:ëb|¥`ïù„ƒ,eö·/8ÝŠ_¿‚­aM´©nýÍJNMï»ñúü†6µõ3Ð%fÖ9Þ—eqj×›mÞo‡Ý×zÓö›j”Sæâ™èÒ“Ëc2kïÇ¿ý.¤¤Fløïm¨n¿Ð fçY6÷ӟεñ3Ý9¹÷Òovÿ»>šmÕô]ãÏí:%ÆÃ{@›X¼¼SúŠÓöç Cñb=k©{¤.’¸Iúï¾äXkâ1ÉíXBðcïþXZUêCó®<¶({Nê9›î*tç›õs³ÏZ@qf¯×#T~KŸ!˜µbLî|†dŸùš>Ó»õÎýewsš[·®†!†âôÒv{ `xZÚU²«ØºýÇS\åEý¯‚ÙQž£¸8Fƒ;Á®~z sf»¡xY¼ŠãT­rõoë<øëzMŽ^|q^5áÜPðâcßÉ¿knØvÅ8 ûU>²´FÃ~[&k4y\r²ßИeœ,ãÌV,K73Þ’¥NØŠÑ´xö“,×ÌBÙQ²X³¼›d7ÉRMöš,ÕÌžÅJ·$¦_x¿“Ï™o™\ò²áç·ìžL»(X‚HëJúÏ|çMN¿-}àn3Fljá´9ÉÄG2¼’â®=³­ùié³yˆգїÜ…´q#2˜xÄ•’¾ÔÚhxvù×»-séù<€¹4 YÕ_þ"ïsmû~×–''cè…Æxø>€ï^¦[ñwg[–ÌГ;éãc6òìîÃeÛþ2ú‹ífj¯ØOÉY䤳êMºârIÅihÞuýª€ä¢ÙØn¨|µ±ÍLÞ®ª ÕU¶¶^ðø¥ÓW ½êVÅ[Û4×BòâÍ6ֽРÂÙ3Ea‚ýHÉNÞSgŠvOÓ´+Ò3E÷eæ3ÐQ£!Æ{JbÓL#§DD‚!¹¥ZFñ¨|ÿâû9ý׋Ó÷?¾øöuñæý‡³ï>¾Xøªçû0|Ê•ú‘SaPi#Cœ*‡ŒcáREã˜'œêEïXüýݱô3¬f z÷ܱ]ól •HLßWöú¯ä䛿žBsF¦å2a$8ô$Œœbdš02}|—0R<åŠ$ÂWRQA¹ÐF2ÁÅóº"É`íKU¢àl@\—¹H r$–1„’P\. J€Áß(¯ÆåHÔWM?Ê{O,5ÃtæúЗm¸.ÞÄêârâ2)ºbfbJ²Ò†™¢”q¬D¦_/ÄL¿>0hzG¥ #eE‰¸”cR’pE…²N›E¡ 2˜¡y„ÐTTÌÞvf«¦èãUìÆ|ƨÀˆàâ*vÎÖE³]Ç®òEg‡Q þÛßvñï*nóÇãìÆöOæLf¼bJ0ɨáŒR¬ U¢ùŸýøÅ–ºWÛaAZzƒƒÑa¦1â!:dMé‘p%VF¨Rµ(¤A3¤ÒÔpÉšmÿ Ú¦E÷Ð PÅVFR…Ç—¤4#ìA|þx± 9ÇŠ šÁ9ƒKK/½CÜ‘ˆŒŽ1uàãÈ¢ÐÌÐKxR"3Œ"o¸A<Ò€ /Rš!ˆÖÅEá 2˜áytðdšk6£¡vqÜÒR5Ѐ3)¹næ½/Ú©b„PÂSÏ’›Ü:cJkQT#½FÆDhé,µ†½ðÞDÁÌÍ£ã&7J D¦¹ik_m×Ph&Å21÷:K_)*¥F(É´!Ïs–¹Ø9(“q(ÒšÄ#£ªRúH&È`‘y„»ÕŒªù¡ p\&¥2-÷:/gf¥˜âcA© ‰šë¶>YŒ—ce‡L[,8£(âh*"§°B’p£-WR•xQ`‚ f`£¬©g&ægí`ûÈ̤àþ±™±)V˜KÁ%3 k)és…¦ „Õã'¥A ]…”š;¢ËF™ ƒšÇebi›ž•_ÖmW–™”Û?2s¤‰ù Ê1gXkIÌs…¦/ci¹È[îgÒ!-D”*C Ž ¾(4A34šB ¤g´ÌεMñªj?AÙ9Q:tÏ'QÅFi.ÃkõL *°Ä\bJ«â^sd Èp±všKï%(È`&èÔ°™°óã˜þ·8½lëØ±kkCg*Ø+Fs jØŠq­™!cÊžåú ž’+ä‚òˆ‡2"ã…G%5ž‡’iÅü¢Ì=>„ EžFhW]Ô×>޳ðŒÏ´pFçþçðx%¥ÄTqI”¦\n sÁ/oM\L ¢0–Ó—òµÝ:v7n;¨S¥…ÔÆrç•”(H†gž#ËœF¥±V8âË`¢ <>Pçcþ‚ÏÂz×íEݺª)^r÷Ÿ«áfÇVÕܦé„ö3x½™äû=Â%$¥”r)¹–’òguC&c%¶Š—He #+„E,De,cÖc%íÙî"Ü”³s÷9;f˜®ãxû# Í„*¥Ælúü¦êÚuºëä¾s=®åy°b»r RÂÙ×»„Ï]BÞEÛ·Íw?-ÕgßwÞn8ÒL¯š”È(©‘œªglì*tëÚ¦òEëú¡ÛÞÀ³p]ÛøËj¨úâO¡êÛ.ÄîÎ+O®|¯WÃ!Ct\(Œ¢rñ¨4²X¤˜×Ôi¢8‹ Bdî`!#°&‹éƒãÛzÝ6¶».ºxi]UWí÷§.^Tëx2\ÆÎn®¡ØWœI”It$ÒXZl˜Fet qrÒÄf%ÅÞYº$‰@æ•DœabØœñ.†Ê–ÿ£o_ÕÕÍ>5úTú5”ôÛ÷Zi˜acK=Áqa4rÆ$C©U%æ,}·^o›êу@ç;î•õ¾jâé’ýw'ü”—UwÒWáÄ_}šÚ…1³ë»¦¬·±ùû碿glýç¢jÆ.4Ê .6]¼fŽÐ/»^4„[x¤#Ø¡ŠÍï§c·Þo»±B¸$²éªµí®?ìÜ}è¶qÞštxzkœÀ¥A‘+¸,%rQa$=“‚ Â<'ÑzUÙ‹¦í‡ÊßÞÃvZÕCq¯(ÂXñ)Ýöí‹—3‚íÛ£l1£if½´}å‹wq°îæ¥3ÛDØŽÜùJ )²ÛÅ~[€I ôb&À;ãK´pÙ ðÞ @Kà7rÀÚHÄ H© o0Õì|šRhÙ"‰ÿ€­¤_dÒ‚7–]˜fq! %àË&2Qм–qk ²Á–ÈŠY,K)L¹|€°zèNp”4zfïæÛjSxX“=˜`&3À B ì3pfƒ’q9ÀZ8J¿Ð¡hXûP—:Kxˆcžà޳’ĸ%ˆÎÁãècµv¥Ð˜r óNk[­ÓdêÞ@gGÜÓÔ‡ÑÔR`ŸÓüøsÐhñqðWM?TÃvVì֤ܶ¿©Ãï^Û×Åv•'ž›®ŠÃ`åÅY»íÚ^ÑG˜ìªºµ½¯(Y³¹U3?NxâDÉDSk¯ªð¥ã•ÆÑã= %±ˆi¦‘S""Á‰ÜR-£xôU~ÿâû9ý׋Ó÷?¾øöuñæý‡³ï>¾xûˆòÙUmW ×ûòæ›%–¾ß™}Ü¥›¶[Ã}¹ßnFUÍÅwMÙN¦ýȼۗOvU¤‘,ü ñ%ú{Õ”ãï;tºÛòa”í\> øn-ø>ßR‡….¥Ü·<:ÿ¼ý†I €_ÚÁ½˜>i0] ÁÝ0¿ºÁl‰Í¡>S5ý¶³ºÏ”­·õçE_"¡½Š½ØýÄé%ëÞö‘¿ÂÕÃÖï»±»ª|\[€µý4é`Ü$Û:K¸›ÌeÛþ2ú‹í&Y‹ŸÆÚÎH2e…Õž"1îÊÏè N@g¥†§ÑåßF”»§ÒßDî›Ý‡ŸÖ ëÐK­EÃÝnk‰6ñ~ž\€ŒW‚&­ù¼|»ZðáÕ×ãÿ8\À}Øð½Øp¯™¯îŒS±âú«û‚oÐcótûì"[háÞ5òtD®¤øêî#žà>ìÈÜ'Ýóß÷¸ iàà~ÃÈŠÏIÐ(ùætÛ£i ©Y7²Î›[jâNk„/õQf£ EJ4âRdmŒˆD­£ñ’ Þ|øúÓ¦¶ÍÍW|_¾ŒM,«–û@–oœ·lÕÄ099Ió¹ÓýpûRwÞoÊM°ÜÝ-!Ní{L‚Ù!67ž|³7<©!]‡Z@½œê;÷‰Ý—Åã‘1«âÞ[4þ »?Jå´ÑÝþ]øìØŒEf'©P¿›R?è>ù¿3º|¢ÍO±¯›‰¸ÝMò•í®÷éF{ÝN~M€è_¯®Bl†ª¬b—ôö‰q°ÿ×@èêmtÛah›•_÷«‹öêd÷µû“+ÛUã´§?ñõú¼Úõæà_¶D“8Û"m¼ûéŸ\.ºv»y´¥æîï‘%¶¼’´×íÕ€¥¡tÉffiH,¿4t_³LFéÎýpi ÎúÔÎn°ž´ó‡ÝSÕ±ó‹/j(ˆ÷Œ´ÛÁ·ëøïáÃý=J]ü-\kM_øþÆù®­ão¶5¾±!ÚõØˆÉ ÎîèÀüôøö¹âÔv±8ëF(޼‰xk©%¸îÿ€ó§Ëò뇶œ û몉ç~ÝŸÐyß]ùsf—/œ)×ÅøJÁÞ³'Å ¯¢ô·/4=fß·Û»1Ѧº½@’¤\ûÇlü„>¿¡Mmý d)ù‚µŽÏWñ¦í7Õ`ë_Û5ò2XÆéAâ4/fÚ9m÷°Ú›š°á¿·»%€¦ÏCoî³¥5>€ã‡¹-rrï7¤_éþ—|^Ûªé»ÆŸÛu©=|¸¢‰ÅË;é°8mž/Öãš:Gê ‰“¤_ñîKÞÔš~•ôzgÌñÝK«J}hÞ‘ÇeÏI=gÓ]…î|³`®söY\(ÎìõzDÊoé3„Ð'òÎgHö™¯é3½[áÜ_v0§ù°uëjb(N/mw±'Чe%;Š­Û<ÅQ^Ôÿ*˜Ý乸‰‹ã@4¸óüàê§1g¶Š—Å«8Îç*Wÿ¶®ƒ¿®×äÈÅ÷çUÎ}.>öýx‘ÀwÍMÛ®']¿ÊG–ƒXr–rò&ݬgE¾Ë:k2Y“‘Z¬°‘9ž™ñ—¬Ä`ÅñŠižÔ]% 03cQv•,Á‚£d&‹0Ùk²ós"L> û •š¬Ô@3g&ë4³Ëûef¼%«4œ°£»âÙO²D33eGÉÍÁ¸I–g²<“½&Ë3"Ë3û•gr¶©¼ƒ&ë2àtaY—ɺŒ\QÍÌÝ_Žzf<'k4T¬w.£Òª²Ïd½fvpÊŽ’õšåÝ$»IÖk²×d½f&r’ì./šù–Éwìw#üüžÝ“iKi]Iÿ™í¼iÎé¥Ó\oÆH91œ4'i ‘†¬¨¸kÏlk~Z:#öÃi¨á÷R¥¥°-â†Qäxp(áK¯QÖdï’X¥Y±!æ’Kp«þ2ÞÏ™]۾ߵåÉWÙ2ôÂã?ŒU§ýçÅ»—'À%Òånàˆ©+©T 'Ê[r›zlbgë"~²ëêÖuж,vÔ„ ùSš§+éôðú“® ¸âv¹Kßuýª€ÜŒ¸±ÝPùjc›™[d«&TWUØÚzÁ$¦žóÉÄ—¯ºUñ¢±Å;Ûýïÿe•¤Å‡Øuvh%ãñKòûj„ÍGJw0Ÿºúq÷4»÷tú’ï„è3PÚ]âˆT„Fä9uˆiï‘.GXz‰mŒºäöQ?8;=cFèÅï.¸ã!Ï\:nJaPÉA\{‰œ795³T”"z(žß»ÏIÎÚ&4ÀàáßRÞÞýR´kÍGæÓ Gïž;²{ˉ1T"1Éo^ÿ•œ|ó×SÈ¥åI¹Ã½±ýn,ŸbrcyúøŠR¹‰;ÿsk›áîÙ4(U+¦™$‚Ž5ÑœßûLÛ¦ºùL+žð¢ñ¹¾-×ÑŽùÒwÒæä}0ÁI5óJƒ4qì#²ÄqdUÄ8hnã‹’`ð÷GÊ«q©õÕEÓO³òÞ“GFKÍ0Et–/Ûp]¼‰ÕÅåäeRtÿÈÌÈ”d¥ & 3E)ãX?ˆL¿^ˆ™~}`ФB‘`©FQa‹¸)9²S„ ˜:å ‹Bd0C󡩨 ±IjžÙª)úxÇ›é T`Dpq;gë¢Ù®cWù¢³Ã(ÿíƒo»ø÷?ÄñÂù`œ]ÀØþɜɌW˜qEgœJµ¢X>Èæöã'ûi!@ïj;,J °0Æ¢Xú€¸0Y4Re 4P&K¡¥4È`¦ôRš.Ró±íÁcÛ´èþ š ªØÊHªðø’”f„=ˆÏ/–!çXÑaAÓGÏ£• Œ â&*äu(„XRê9+^š ƒšGMfˆHÌCóíûq+CügR|ÿðÌð¤zE¹ÖÚh) —܈Gèy²¦‹t¬ë°J‚/…p áPÄæÈmô®´šxEð²'È`fè2Tª9âÓ ­Û6g]ìÇ.FhZ:tI‚Ž·½¶Ml†Ù®µÜé¼y/KÕ{.iêhév‰ÊöC[W¾˜p;Àæ·ù:“832%£“f+Áa„ ÙP»Ð> Ö뿽¹ø{ò£Tòbw•Nì%ùó!;…ÆHÎ^Ô'’*w Âä cF0ÃKŽå¸D:öD\Ã=ç ĤµˆÛR ËmD¥)©äT[¢ÊEã€Áß_\S[×vvHžJzÝ݃G'§1fž j¾­·¾íÁÑLR,‡1ûœj¶bš2LÇj%Åï©Y_œ„·KÌwuØ< åC$•8zÄKÆeB"â™/u,‰³vQ^‚ f^/%5ffgÍ_ºh‹ï«¡k/b¥fZxÿìÌì\Qʼn‘šc´RòY²ÓkY —ce‡ÆK:~60 \XÄ!H;ï*èÈ#¶bÙy9È`æå1jšzfZ~Ö¶ïÈL ™š|Å$Z0¦ŒÔ’ªgJMAØÄ•äˆ35}1 ¨×Î3Éò+ç ƒ™šÇebi›ž”_ÖmW”™”Û333Ó´ÑÔp­ Rb!ž+4•¡Ëqî1â*Jd¨+ÕÌJE jÙPd0Có¡)¤@zFÊì\Û¯ªö¥÷JÐLPªV†3Î%5‚ ¥Ÿ+@¹$!F§P…DÜ‹4±%BM¨µÑ/«m‚ f€!@ ›‰:?Žù‹Ó˶Žý»¶† t¦‚ýR4gùÑ+®0‘J)"©zžëé>(«B‘a#î­EÎSƒ¨\`gœÇtQ†‚ f†C…"HO3´«.êkÇYxægRxÿìÌì¤tE9Óš*J˜âÒÈ#l ™ /¼°\%€4ËÏG’P¾1ÁK…UˆË —^#ç”ARàÒ`kËÒ…å€ÕCpr€£¤Ñ3[ÁÞV›*ÀÚ¤èÁ39˜&$%³€3p´p,ÐèÁÜŽXÚ?϶ÔѤCó„àF'P°F NMD––I£TFòÈÀ‹§µ­Öé@2uo ³#îý¿a4µØgÆ4?þ4Z|üUÓÕ°E1;…õ)·íoêð¿|m;T±Yæ»ÊSOŽMWÅa°Œòâ¬Ývm¯è#ðwU][Wǯ¨€ 6#Âûq§KÞ{“]{U…/¯ˆ#R‘çÔ!¦½Gº4aé%¶1ê’ÛG_åÙé3B?"vUÛUÃõ¾\÷FžíûÙÇý·i»5ÜqwêïÌ*H?²íö%“ÛÒi »•]¯ž¤7`Óðä¤ÁtC`uƒÙ ­Ó¤ ž ÉGRn;Ûø§ûLÙz;bC·¿ø_¾½Š½ØýÄéU’.‚Û>Äõ¯qõ°õÃûîCì®*¿ÀEÛÀå¤tq[R©¾ä‡å¶ØÄÎÖEüd×Us»öÓ–Åç*]‚_ ·’öŒdz23Ç]`Ò23=]Œ6vϤ¿ˆÜ7zh^Ø·ß»õ°´Æyojâ0y·;5ʬ¸N‡Öm7zÕ­TüáÕr`ø=*ßH¶Û,½åà-P#Ow AäJНî>ü îÃŽÌ}Ò=à}K‘nê7FÈ&ó~ qnvÃ?žoάˆŸž1·Ø†…˜ßbä#'ÄæÆ“oö’%5¤Bó’bsÒîÜ'v "ÆDĬˆ{oÑø/ïþ<çÓFwû}à¡$°‹„’©·›=è>ù¿3Â[*¾M°¯‹Ó¯ÖÝt _ÙîzŸn´±×íÄ×Íá RUˆÍP•Uì’Þ>1öÿ]½n; m³òë~uÑ^ì¾vre»jÔäú_¯Ï«]oNþelêlK´ñî§VT/ºv»y´¥æîï ýkJÅY*^Jûe_¢ýŠåµßû‚S2jLwîŸàÚ1õ©Ý`=iç»§ªcç_ÔP îi·ƒo×ñßÇû›ºø1Z°P–¼ð}Žó][/<c|cC´ë±ÓœMW­mw=?=¾}®8µ],κŠ#ob÷Sšåõ\¸hûˆó'ˈ»ÉΛ¥|>ö×UÏýº? ó¾»òç>Ì._8S®‹ñ•‚½'Kà¿‘Þß¾àô˜|¡¶X;Ѧº½DÒ¤{Çnü„>¿¡Mmý t‰™uŽ÷eYœÚõfÛ£÷Ûa÷µÞ´ý¦å”y‡xëËc2c2¯Ù?þ2þö½—±á¿·;Å~³s,›ÿˆiOçÚø™n‹œÜû É7»÷]ŸJͶjú®ñçvý01ÒÍÎM,^Þ)}Åiûó„¡x±‡µÔ=RIÝ$ùŠw_r¬5ñ˜äòFaÄJ™T0ë9iëÒvÜÚÎþ²é®Bw¾Y0‡9û¬göz=¢ä·ô‚™f+¡ù×t•ì*½[áÜ_v0_ù°uëjb(N/mw±'ªÆ¢¥]%»Š­Û<ÅU^Ôÿ*ø|%;Š‹ã4¸óüàê§G-g¶Š—Å«8ÎË*Wÿ¶Îƒ¿®×ä Å÷çUÎ}Å,>öý˜ø»æ¦mWŒs®_å#K 2, 2¿µ “7JfÕ&«6Ð]¯Y³Éš ÁlÅX~¦½%+6œ°£»âÙO²\3?eGÉbMv“,Õ†T“½&K5Ípôî¹#»µ†C%“üøæõ_ÉÉ7=…\Y“”;ôûjÑྚ &÷Õ$§÷ÕÜÅÿ¹µÍÞ(pwΕ®ÕR ­„Ö”}ï3m›êæ3ýq¬x‹Æçú¶\G;&ÓÚ¹SêJ\š“÷Á&%šÇ 4¢ÆSĵgÈ Fg"pjLdÜ-JJ€Áß)¯ÆEIÔWM?ÅÊûO-5ÃÑé;LÛp]¼‰ÕÅååeZ4#sÏÈ$’¬4Á„a¦(e?ŒL¿^ˆ™~}`Ð, ˜XŒ°âñ_Ö‚˜v¸¤ëHÅ¢Ðg‚š­´ÐšiL2ÖÞ1õâ$¼]d"¸«ë°&‚J°@]tˆsE·#ã%]‡;ˉf4,ÊK€Á#äe楤ÆÌl¬ùKmñ}5tíEl ÔL ïŸy b¥¤ÀœJ ÖœðgÉÎ ˜)]PȸR!Ê€,ñq­¥40ï—e'Àà²3³“i®ÙŒ„vÚÅqCKÕ€ãÍ´dÆæ~±‰Wšim #DPÌ}–Ø¤ÖÆ’x4 q­8²¾,‘ÂÒJJ©ô²kƒGˆÍŒMn”ˆLcÓÖ¾Ú®ÌL‹e`î˜fÅ™–X+L ÆJ‹g L¡B¤±ÄˆSk‘qÜ".µÒÎXÎý²À,20p šÑ4?´ŒË´T¦å>iI8])© WœQ©‘ãrÝÖ'‹ñr¬ìЀ Ã1Ѐ”Å%â¤,‘%¥F®ÖùH VvQ` '0³¨©gæågí`ûÎÌ´`Ææ~±ÉWBH£0£ŒsFõs¥¦s>–ØYÄ”2ˆSe‘±N!YbZ–†^âE© 0xŒÔÌa&–±éiùeÝvUk™i¹½23‡šX¯ÃZ`…•!š?Wfzm¥UM-âšRd­¡ˆ*‰L• GšƒGÉÌÌL!Ò3ZfçÚ¦xUµŸ€èœ*ºO€R¶’RÎ'ZfÔ3%(U$jç9*©‘ˆb‘.D;êœ'Z ½(A’ ™ †ÍDÇü¿Åée[Ç~ˆ][C:SÁ^1šãP-VÌh,STñ<ˆ“%¡#cCÜj‡4Vî•cÄaNØ¢ ޳ðÌÏ´pfçÞÙIøJrª5ÓBÅ${–ðTÊ•.Z‡˜vqM²Â$¹ÐL§¡‹Â`ðá™áI4•ÉIz¾mÿQ¼ŠM?¦-{[mÚM×±jž“‚«Ì¤Ý'i\IM´QBÂ%ž e<*±Gž”qá1²\DĽåÚsÏ­2‹‚`ð(A›gúZ 3ÉÙ7ÕÅåÒ ë0P—²1FŠ;Œ¸ç YjÂØyA°V^,«÷ #¨ó9ÁçNa½‰ëö¢n]Õ/ˆ?¹ûÏÕp³e«jn³tBû¼Þ}’<Ìb%$¥”r)¹–’ògu?¦¤Ê*·ˆóÒ#'½@†l<\ %íYz_s÷9;&˜®ãx÷ÖÂÍ„*¥Ælúü¦êÚuºëä†s=®åy°b»r RÂÙ×»pë™ Ç»hû¶ùáî§%£úìàÎ[à Gš©ñU“%52‚AµàŒ]åñƒn]ÛT¾h]?tÛx®kY U_ü)T}Û…ØÝó­ås+ßõjx8Y`˜S¤JY"®£CÎø€JëMmØNÚõ]SÖÛØüýsÑߌ3¶þsQ5ceÐ?›.ÞN3Gè—]/Â-<ÒìPÅæ÷Ó±[ï·ÝX!\ÙtÕÚv×vî>tÛ¸@oMºÇ:,Óœ;Ž¢’qï2Ž—HDEl´NY ¾JåUe/š¶*{ wÚiAV]Ľ¢cŧtÛ·/^ζoV°ÄŒ¦™õÒö•/ÞÅÁº›K”ÎlA[rg*Y0¤ÈZlûm=@'-€{™WìŒ/ÖÐÕ#€k+À-ÜÈk 7 §2¼ À\³óyJ¡M¤‹dþ¶~ I ÞXz!@fšå„$”8Øx¬(+ œ!μA–q…h)¨ð—˜Úå€ÕCpr€£¤Ñ3{7ßV›*ÀÚ¤èÁ39˜¦¥Ÿ2ýÈÐøQúEÚ?ºÔaÂCó‹Z+JaŠ#.}@ưs SŒo8­mµN:©{pOSFSK}fLóãÏA£ÅÇÁ_5ýP ÛQX±SXrÛþ¦¿{m_MÛUžzrlº*ƒe”gí¶k{E¿«êzÔö¾¢d-ØÌª™'.€-ØB~º(©T ãDYOuÓØÄÎÖEüd×Us»êÞ–ÅçH#]€ŸÄÛÎX2OYI™Î3çÅŠefŸ3:ÃÓióo#̇ÝSéo"÷ÍîÁï ЀE腢µÄ ›x/O¯YÂ+A“Ö|^¾]*øðêëæP6aÃ7bC½f¾F°ghÍõJâ¯îü ®AÊ5’­³KoŸ8 ÔÈÓýG¹’â«»x‚û°#sŸt¿#xÏãR €ú “t¥Ì¼ßÀ‚曓mæ‚¡f5Þ/8cnÁ͇;~}ª A£Â"¸BZЈDIl)#·¥PÉóõ§Mmo#Ý÷åËØÄ²z`©dùÆy›ÁVM “s•¤1Ÿ;Ý·/uWáý¦ÜÄÊÝÝòáÔžÇ$–bsãÉ7û“Ò5¨”Ë©î°sŸØ}¹Q<þ³Z î½Eã¿ ¼ûóœOÝíÝ…ONÀÍX`r’Šô»öƒîá“ÿ;£É§ºüûº™€ÛÝt _ÙîzŸn´±×íÄ×iðµê*Äf¨Ê*vIoŸû „®ÞF·†¶Yùu¿ºh¯Nv_»?¹²]5Îzú_¯Ï«]oNþeË3©³-ÑÆ»Ÿþy±å¢k·›G[jîþY^ûš«Hyi©e!ö%ËBrùe¡ûf2jLwîŸàËJ@Ö§vvƒõ¤?ìžz¨Ž_|QCA$¸g¤Ý¾]ÇîïOêâÇhÁÒkòÂ÷9Îwm³•©ñ Ñ®ÇFLNpvÇæ§Ç·Ï§¶‹ÅY7BqäMìÀëY‹¬À—vþ4`Y~¹à`V7ác]5ñܯûóq:ï»+îÃŒàò…3åº_)Ø{~#Å /ªô·/8=rßÃÛÇ1Ѧº½DÒ]{Çnü„>¿¡Mmý t‰™uŽ÷eYœÚõfÛ£÷Ûa÷µÞ´ý¦lý«ºM^!;$ÔfÔæuÄgCÞLÞÅ…S6ü÷v·T0Ã÷9δƧÃpüH·ENîý†ä‹ÝûªOEm[5}×øs»~8¢K`4±xy'1§íÏ3•âÅzOSçH$u’ä+Þ}ɱÖÄ_’; õŠ`ŽïþXZUêCóŽ<¶({Nê9›î*tç›õs³Ï"Dqf¯×#R~KŸ!„®8‘w>C¾¦ÏdŸéÝzçþ²»€9͇­[WÃCqzi»‹=08-ë(ÙQlÝþã)Žò¢þWÁçâ&ÙM\¢Á‡àW?=ˆ9³ÝP¼,^ÅqnW¹ú·uüu½&G.¾¿8¯špî(pñ±ïÇ˾knØvÅ8ûU>²´0IJ¨³˜¨“÷òf]<«3 lÌÎòL–gˆ’f¥h–g¾Øs²<£°Ò+­Su&»LVgæ§ì)YžÉ~’õ™CÑg²×d}†g}æ7ÖgòÚ,âd~::k8YÃÁlŲn3ã-Y·á„­ÝÏ~’ÅšùA(;JÖj²›d©æ0¤šì5YªYªùͤšœ¼*k4Y£f"ËMÖh] ¡sÔ3í-Y£¡¯h*ÒdGÉ"ÍÜ(”%‹4Ë»Iv“,Òd¯É"Í|å$™Ø܇4ó-“ïØïFøùó=»'“. ×ÒºÒþ3ßyÓ¼Õ˦ÊÞŒáqb8iN2óц¯4×ÉnñùVý´xvíSZÓm3¬Ï âFrd™bˆD…±ò$O¶½Kz•fؘK/Ó­úËÑ›ïåÌìû][ž|%.C/ü0þÃXuÚ^¿{ýÃÃÙ4Gt«|ádÒF57Ó™‹{_¯cw1:hÑµíº°a]õý¤6˜ðs4t{HÍI·\îz\À…Šïº~U@nUÜØn¨|µ±ÍÌ ´Uª«*lm½`TJådâÌWݪxk›æZH^¼Ùƺš¡8›X"LÃ)Ù)·b*3ðîizïéôõÞiÎg „½GCŒ÷(”Ä"¦™FN‰ˆ'BrKµŒâQøþÅ÷ÿrú¯?§ï?~|ñíëâÍûgß}|ñvù‹î€æ3Ž¥0‘XävˆGF!‘ `•!DKüþ×¶ 7IeS>ƒÌݸjÆ…;Nï'W÷î ýÇsv?¾¾Šš®û*vUù9Ðú­~ÝUìÐíøøïómSVÝþáw¯ÃǪ´¹œs)0V“8û°élu“=Õ6?Öt {Zü8®b„cj›>»kØçy½‹xâ §%Âr¢d}Û…Æ‚Óæ‚èµÀ¥‚i¨E‘5¾U‡L0•, ¢™4*X(DïZ“{\v0…˜½ìöC»ÙìbÝ™[]ÆWª‰åѺ÷?þñUS¯WMu¹¢íüåÉv]÷'ݧñzâÇû¼æF(>Ùã¿·›®ý›¢oCµ]”ââÝ·Åû1¡òÇñ PÌ×ø<¸`·ÃeÛÅ𾙃ÂÌu=KD¯€È5ý%¡ííEü®é‡nëGorÊwÛcˆáeÛÖÑ6ŸsÛ? /D¯`Š9,Y A£P:‰xp9R$¹!3)¨‡‡‚ã%)¹¦Žî—Í¥íÖÖ_ÿý-{™¥¥÷·L—¼÷ja:÷,nú3]û®ÚŒ€™{Û€˜(±•/?¤‡©î·€ò—ýáõ/S L‚/®Ù”+|—l:Sêà ¥æˆKá‘–Â",- T+'¹»ë£’xbí~["‰`›ôÁô¼üç€m÷`Ê‚y)ôî*‚­˜¬ãÚ%.µÌ2x©p3õÑxÃŒ1ÿOˆ]ß6EÕÃe,.£­‡Ë1ª(bsUum³¾½¸éæ©ÿc›ƒyÕ¬8=kzs÷I»XS¥¢í.lSýÏç#ÿ¿­­oîQ-n†| jr9¿Z`ŸÇBý.ÚþF=€5údå²ö_ŽO*™}YkÛØ‹ª¹x¿óymÁïÿúË«s»ÈG ¬™ Ø"kCãY!†JË4Æ‘‡§ÄÑgµ}`ydmç;[Il}›ØÈø¥ªr5þßÿ+TWŧuÝôÿïÿ￯üƒÝhÄsòérX×ÿßÿçÿ=¶¸›\”mWœ]^÷7§ý>ç*~ž®þ/×üß/ƈ¾ªØÿŸÅÿµ­ÿïÿ«®þïÇËü_'uõEœŒUõß´f3¶¦ê‹u´ÍP m1ŒâUq¿gü«A'¡ºú¿“Øxî®ý™™ÝÁà !TŒõ y¿pÍ×·¯@yŠçwpð"ÌMBû>ö°&vÀÌ7á–93=2ÄÁVwâNÒ—%(¥Ô-1&_”þûáÏEå㟋c]¼ælŠXÇ«›¡þŽãücì¤]¯ã¯M°œ:ó<™Ó3ÃÉgD øœcô*¬p"'?¦]üå¸w?~НúØÿ:™©õ¸¼aùu‚#T­-5¥“H„hÇ #KœGZgc)b©ÃBËÆSG·l\5ýP ÛÑ…l} kÇ€ Ï`^jÎKÍ_•½hÚ¾êÁë¨I ?Ü}œ]ñ…¢Áy.?»í¼ ´aWÿ'ýpñÿ¡;ZªÆÂõXˆO¶µ6$ç$aë1²ä$0¤ˆÁˆk‹‘&±D’—FzμÒ>|2‰OA–oœ¥lÕÄ0Iؤ1Ÿ<Ý~×”ÛîÞ%W&æ23ºãŒt¶˜|–päÎ}–^€œ6º‰]Ùvk8_¡ÍX†¯Éj<è>ý¿33¦dÖ4‘®‹Ó¯ÖÝåqاmìu;ù5‘|_Wb3ܬ”¦½}‘ÄŠ¾^ŸW»ÞœüË&Ï©³-ÑÆ»Ÿþy*|ѵÛÍ£-5w3Âkžãòþpú%“vµü¤ýþÄ+5¦;÷OðI?õ©Ý`=iç»§ªcç»´ÛÁ·ëøïáÃÿ¼”N“¾Ïq¾kë…ç `Œolˆv=6bzB±éªµí®çoë¹}®¸]2ïF(޼‰8Óç,zN©Iƒ™=l ä}ýùu$ÃÈÃÑŒkë/\‡/p ®T=Lº4:=E+gÐÞkí¬ûÒgÃWP«(¿ÏôÙÏ:Ä_ÆÏ5ܧßX?^Lwý«úG–n—'j&j¸Ÿ“™“OΞ™³gæì™x…?_¦“Bo âQDĵRHcBÓ–­¹"‘.˜/`îPòe¾x÷òÐÓeI¥bã™ñßÞ¨‹øÉ®«[×·ÏŠî¯Îš ¯?ç΄ ŒžóÙ“Œ/[¼³Ýÿþ_VIZ|eÜ¡•ô«dÐÔˆ’ô¶¤$„¹÷4û?™Þ=½dMâˆT„Fä9uˆiï‘.GXz‰mŒºäöQ?8;=cFèƒJ—)¬f’("q'"²¶ô(0ktÐ¥öB@ñüÞïÖ>œ0b0´­÷ph€ööî—¢]k¦8ú3Ÿf8z÷ÜÓEÎåsVÖmÕøñ<¾ HŒ¡‰I~|óú¯ä䛿žBÔ%å>  úyØPYÆ›õß4ÑäÇ~Ö÷Ûy|E©N‹ÜDœÿ¹µÍp·í6ñJ1Í´P‚Aà÷>Ó¶©n>ÓÇŠ'¼h|®oËu´ãZæÎRWúãÒœ¼&0)áRÄÒ nCœ, I•W¢ŠÐEI 0øû#åÕx—ê«‹¦Ÿbåý'–šaŠè$,_¶áºx«‹KpBÏ´hF澑)ÉJLfŠRƱ~™~½3ýúÀ )4W¥¸9-,â¥óÈÑÀQÄ’Iae´L/ M€Á£„f†¦¢‚pÄ&©y6ªê}¼Šãyž\\ÅÎÙºh¶ëØU¾èì0›üÛßvñï*~ˆ›¶b€rv!c™Ì{%óÊ`Á•äš0͵¤‚ùŸýø½~Z†Î»Ú ÑžHËwÈX­—Ñ"g‰@’rÅ…`Ä–Ë"`ð(M — ©ùÀö¿àmZ4ãsÿøTle$Ux|IJ3ÂÄç‹s¬èÐâZ©¶Æ!Eœa‹\y"£ÒÑHã¢ÐàÜÈ”„öLrÁ%#SMÈ®¢d€Z¯ÿöæâïÉ;ŒRÉ‹ÝU HŒ}PN¡1’ó ¯õ‰¤ÊÅ]‚`½Ò„0l0§’2©Ä'ÒÁçL•‰Îid˜VˆS.‹š"/0cŠFËÙ²“C€Áß_`S[×vvHžJºÝ݃G§§1fžŒj¾­·¾í¡áLZ,Ç1ûœ j¹ÂD#ÃŒ*öðŽšõÅIx»ÈDpW×M™ ‚i°5q+Ò#øâ:PæJ‡é¢¼Dã#5œ{»(<žžLsÍf4´Ó.ŽZªp¦%37÷ËM¼’F0©Œ¢RrJ¨x–ÜÔ˜ÚJ¢³ñÀK¤•ÇÈ(!¼á„rËå&Ààr3s“%"ÓÜ´µ¯¶k 4Ób™˜û$¦Y É6ÊP-°ÒϘBò€MDÖy†xKdE,‘&¥ŒØ‡ˆ-[˜ ƒEæîT3ªæ‡6€q™–Ê´Ü뼜ãå†Ê”âœë‡i¹në“Åp9Vvh¼””EbAX”%âÆd]IQô‘©”c†,ÊK€ÁãäeV5õ̼ü¬lßÑ™ÌÔÜ/5ùŠbà #\9¡Ï”ššiΑˆ3÷Ú ­F†›RÚàyŒrQj #5s”‰¥AlzV~Y·]ÀZfZ.3s¿ )ÌŠ#±ÁF1.©x¦Ð\:NµEÞh¸Õ9B4"¥`,¸’i…&ÀàQB3CSHôŒ–Ù¹¶)^Uí' ;§Jg‚î“ ”¬4c†&¸&šöL ª#%Q9k-â’¤ŽHB9\”Ñ-JP€Á£$h&¨a3açÇ1õoqzÙÖ7WÁµ5„¡3ì£95xE0•œaL¹aêyîD¢Ä–ž:ä-áˆKC.Cš³È”,}éì¢ ŽÓðÌÏ´pfçÞÙÉôJJá’`,Ùó\\WL9.ŠÔHħHÏQ(£Ü)cT¹(;™DSI‘œ„çÛöÅ«ØôcÚ²·Õ¦Ýtí«æ©!)¸Êý‚6«¥t¥8QRQm$SœA«ÉJRL¹” É#zÁÛ“uÕœü“¬;_Óer¥'Õ^Òtë8ó l<⥦ÈPáQŒŽzÇ8uZ, `€Á߀ûmwgà»{èèn³ R":³QÀYïÛ¢_·?Ž·HÜ~Ûâû7ß}€òv¦ªå1›1›^ w.Àõ­©‹iAÆrúN¾¶[ÇîÆ-buª´ð‰—"j…(5q‡=rÄY$ åŽ)C¢c‹‚`ðAù >w ëM\·u몦xAüÉÝ®†›[Us›¦ÚÏàõî•äYö] I)¥\J®¥¤Ïë~LJ¹Ã,pd=5ˆ{I‘õe‰¼˜0bKÏ0”´gé}¹;ÎBÌÝçì˜aºŽãÝ[ c>4ª”f³éSð›ªk×q讓Îôx¸–çÁŠMìÊ1H g_ïÂq)‹^ðQªâŠ+¤½Ã(”–ð(¤æž,€¹†ŒÀš`,¦OŽoëuÛØîºèâ¥uU] · ÜŸºxQ­ãÉp;»¹aRñ1‘(“(“H«@¤f%¢Ajĵ§ÈJ ¸˜Xìl„’è»õzÛTÿóÈÌdqFWÖûª‰§K2i7…,/«î¤¯Â‰¿ú4&Ž'™ô]SÖÛØüýsÑßx¬­ÿ\TÍȃQPùs±éâmÀ:ºOÙÅ…ÜÂ#½ÚUl~?”j½ßvc…ðÉÕ¦«Ö¶»þ°s÷¡ÛÆzkÒ=à¡æ"RPI,Aœk†Œ*h‰À>?yUÙ‹¦í‡ÊßÞç›vZÕC—ƒ®(ÂXñ)èí‹—3ÒÏÛ£•~1£if½´}å‹wq°îæ>–3ÛDÐÞ¾™JŒ²ªÓÅ~[ÐðpÅ à¶Žñ%ÀÚºÅÜ@r@6iX3)}ÉYám&­œOxm ñ ‡°€DN€œ<ðFÀò”R\,?IB p€ãˆ1…q¡r s¹Á#qi—pV=ÀÉŽ’FÏì{[mªk’¢Ìä`˜‹”ÇÎlÀ©~À‰p@K ‡r8^ hü(ÛR§’qÌÃN¨@%A.–q02ÆHäxi¹#ÁøzÀim«u:ÐLÝèìÈ€{ÒÜ0šZ ì3cš->þªé‡j؎ŠÂúƒ”Ûö7uøÝkûj¢Ø®òÔ“cÓUq,£¼8k·]Û+úü]U×£¶÷õw6§¿ûqÂ'J&šZ{U…/¯ˆ#R‘çÔ!¦½Gº4aé%¶1ê’ÛG_åÙé3"}w;m¯íªáz_®{³LÝ÷;³ûoÓvk¸ãöÛÍHª¹ø®)Û鑳wû¦É®Š$l]äæax箚rüýcï}x“VÚÝËö nž¿¯§Þ*ï^ýêñ€=6˜C@Ø ß! õšùÁž¡µT+ɾºkð'¸=*×Hö´-½¯ à,P#O÷AäJŠy÷?7GÍEÍŠÈñésKmBßÉ/p%ˆ‡`u¤yê1â†3äœaÈ‹’k#gÔC• ×Ÿ6µ½XÞ—/cËêån[51LÆœIc>÷½n_ê®ÂûM¹‰yº»U•©­`IL2ÄæÆ›o6Þ%5¤Òü’ò|ÒîÜ'v_nDĬˆ{oÑø/ïþ<çÓFwû3áA&°‹™©v¹›)=è>ý¿sRe*W¦üK&^¿ZwÓ|e»ë}ºÑÆ^·_4—„/áU!6CUV±KzûÄpØÿk¯v½9ø—©Ö©³-ÑÆ»ŸþYƒ¾èÚíæÑ–š»¿GV²¸¾Ÿ§pµµ³¬'íüa÷ÔCuìüâË !Á=#ívðí:þ{øpÛF?F –Ð’¾Ïq¾këø› öã¢]˜œçìvSÏOsnŸ+Nm‹³n„âÈ›ØeþE”^¸œû°ó§Ëò²ïÁ,úÀÇþºjâ¹_÷çãtÞwWþ܇™‰óŒ+í^g]Œ¯ì=YÿÄñþö§ÇÊàKÛ°åí‰6Õ­¿ùAi”½c7~BŸßЦ¶~ºÄÌ:Çû²,Níz³íÑûí°ûZoÚ~S ¶þUÝ&¯tj3józг!o&ïâ‹{© þ{ªÛï3Ã÷9δƧÃpüH·ENîý†ä‹ÝûªOEm[5}×øs»~8¢K÷¥7±xy'1§íÏ3•âÅzOSçH$u’ä+Þ}ɱÖÄ_’|ÅzE0Çw,­*õ¡yG[”='õœMwºóÍz€¹ÎÙg¢8³×ë)¿¥ÏBWœÈ;Ÿ!_Óg²Ïôn=„sÙ]ÀœæÃÖ­«aˆ¡8½´ÝÅž@œ–u”ì(¶nÿñGyQÿ«àsq“ì&.ŽÑàÎCðƒ«ŸÄœÙn(^¯â8·«\ýÛºþº^“#ß_œWM8÷¸øØ÷c6çïš›¶]1NÀ~•,- ±,ê,&êä=™YÏêÌl³<“å¢[ *ÌîOç gÚs²<£°á+‚™ÙýíjÊ.“Õ™ùÁ){J–g²Ÿd}æPô™ì5YŸáYŸùõ™|02‹8YÄŸrÍNÖp0[±2ÏxKÖm8a+F“âÙO²X33eGÉZÍòn’Ý$K5Ùk²T3Ÿ '9§zHg¾ez‹ÿn„Ÿß:²{2é¢p "­+í?ó7M‰´l¦Í'†“æ$ ‘’˜•f&YˆœoÕO‹'nz [Ò“2zËJGP06"îCÚ²€´À;kyÀœÇiwž2MÞ0—^_Qõ—¿¸à³¶}¿kË“/¡`è…Æxøâçï^>œ§aTI¸;®C¦"“ŒŒÙôUw¦(Û®ð—ÑÿXl7SûÅ~JŽŠ&PoÒ%—»Œ¾ü]ׯ Hóí†ÊWÛÌÜ÷P5¡ºªÂÖÖ æÖ TNæcxÕ­Š·¶i®…äÅ›m¬{¡ˆ³ gÂQú‘’Ì+¦Î잦;‰W¤ gîËÍg <0GCŒ÷(”Ä"¦™FN‰ˆ'BrKµŒâQøþÅ÷ÿrú¯?§ï?~|ñíëâÍûgß}|ñvùüzw0³™è@¼X„œcEMí¬Š2D9•ˆ+‰‘“ž¢P:0¶4x·(4ššÌ!‘˜‡æ;Û÷ãn†ø ÎÉâ{†gVR)×Z-…á’ñ=OÖt)€ŽuC1çRrnáR#NG¶Ô©RGì8çÒ/»ö0x” Í ‚jŽø4Cë¶ ÅYû±Ë@š–^œ ™ ã}$m›a¶k-w6oÞËRížKš:Zºs¢²ýÐÖ•/¦Ü´ÿm¦ÎäÎŒLéqu¶¢šrÆŒ"Š!w%Ôzý·7OÞ`”J^ì®RÀ•™å#9¿òzQŸHª\Ü%Õ+C±&F©1QâéØsq wœY(òž8Ä•—ÈYÍךrRjêâ²+Ń¿¿¸¦¶®íì<•ôº»NNcÌ <Ô|[o}ÛC£™´Xcö94z¥ f\Q"µÜ µ S/NÂÛE滺k(Jª‰v9C0â{¤µ“È» WÄIoå%Ààò2óRRcföÕü¥‹¶ø¾ºö"6Pj¦…3;÷ÎN"VÊpɘ¡LRƒ¹~–ðT>RA¢Geqã$ÒRäƒUeiJÁ¥YžƒGÏ O¦¹f3ÚiÇ -U8Ó’{æf^|Xqª0eThŠ5‘„>KnAóF!m=C‚4óYGK!%QØéE¹ 0x„ÜÌÜäFIÈ47mí«íÍ´X&æ>‰©WFQ#9URQÎ%y–À$ìU@ØIŒ¸.522”È0L¥aX—xY`‚ ˜G¸IPͨšÚÆeZ*Ór¯ór&WXhI0VÚp#ùø\·õÉb¼+;4`2Gá¼DŠqBø-¿(Z2i•Ë. '0³¬©g&ægí`ûÎÌ´`Ææ~±ÉWRJˆ$˜*É´~¦ÔôΔZx…B4ã75%rc$Åe¤$Úè¥&Àà1R3‡™XĦ§å—uÛU,f¦åöÊÌjb²âTR­¸RZpFŸ)455A‘'‚!^úˆœ² lJ‚C:„E¡ 0x”ÐÌÐR =#fv®mŠWUû ÈΩÒ{%h^ ’+.‘š B(3\>S‚FÊ4¶Dšs¸’9=âŽ+E¼æÚáE 0x”Í5l&ìü8¦.N/Û:öCìÚÂЙ öŠÑˆ*µJiÆ1Æœ?ל$(QH VŽŸÔ#‡½@$”܇RÒÈ좎óð дp†çþgñtE˜ÑLˆÂ†=KxRÔT„ ª)FœÑé’Zä9SLU*å…'ÀàÂ3Óh*)’“ô|Ûþ£x›~Ì\ö¶Ú´›®bÕ<5(W™I»OÒj²b\fSCž%hc”ÁˆÒ!CA\a…tdy)Ê"“ÖÄEA 0x” ÍS}-™äì›êâriÐŽu&i3i•XiLãRq‰9WÏ’´Ák õÈJ©—Ø#'TDÁKJ„ÓÞ‰e×ò‘´9¤åF˜™=öï*ßµ¶vÛuÕwÇŠÆ7 a, ²½Â5/Zaº¢†0¬¨aRòGÅÖ‹åØzhù'%3ž3*çR n¬AÖ ¸¦;Í$—dQ´ !Z3Z3³iÕ_÷Cµ¶C Å·u»ŽÝ¶¶]ñMUÝÍ«©!„…×™A»WвÓK-©&š)ó0hßž¬«æäŸd¥Øùš.•,=©öÀÖº"–¥ÒY-â G¤¹(Ì8޲\. `€Á߀ûmwgà»{èèî³ R":³SÀYïÛ¢_·?Ž÷HÜ~Ûâû7ß}€òv¦ªå1›1;ú½uu¹ÚtÕÚv×vî>tÛ¸@oMºÇòl<·HSJçØ ƒ‰C8JÎ¥.JðÆ¿W•½hÚ~¨üí¾i§Y=t9èŠ"ŒŸR€Þ¾x9#ý¼=ZéGc0šfÖKÛW¾xën.d9³Mí훩dÁø(«:]ì·õ —¼îë_¬  { 9ðÁ-d!䓆5ÔžÞ`ÚÊù”‡Ð&2Ï’ˆ[ÈäHÊo,Q ÇÅòS‘$”€Ÿl`TرªÈ$âÄd¨`Èhæe —&,à¬z€“%žÙö¶ÚTÖ$E&˜ÉÁ 0 (‘œÙ€Sý€ဖ@Ïä.pºÐ>øQ¶¥N%â˜ÇKï! 1¢â†ä ñHãR+¥ |lú´¶Õ:è@¦î tvdÀ½Yþ0šZ ì3cš->þªé‡j؎ŠÂúƒ”Ûö7uøÝkûj¢Ø®òÔ“cÓUq,£¼8k·]Û+úü]U×£¶÷õw6§¿ûqÂ'J&šZ{U…/¯4ކïQ(‰EL3œ N„ä–jÅ£¯òûßüËé¼þXœ¾ÿøñÅ·¯‹7ï?œ}÷ñÅÛG”Ï®j»j¸Þ—7߬\÷ýÎìã.Ý´ÝîËýv3‚¨j.¾kÊvz0íGæÝ¾|²«"‰d¹Þß«¦ÿء޷• l¿àâù …w«J÷ø–8,|)å¾åÙÐùçÐo˜ÔûE€½0À;®“Ó ZW~‚ªé·müÓ?AÙz[^Cøek¯bg/n~âÔqÀ*o»nû׿ÆsÂÖï»±»ª|\€Ðåÿ$ˆ`Ü`Ìf/'½›eÛþ2ú‹í&Ý1¿§^{J˜¸+??ý_j>7;sZgý7@Ø=•þ&rßìü ²¤ XÖ]xiàv XKܰ‰Ãä}ù¯MZóyIõV|ÿðêWóŸ=Æÿs(¸$á›$¡^3_#Ø3„j…ùWw þ× Gåɶ¶¥·¶œläéþCäJŠy÷;7§ÍÏGÍŠÈñés‹íCß)0ðËCLð1Z°æqE2Þ$ÂRc­5ŸŠýiSÛææS¾/_Æ&–Õ‹ Ë7>Ü ¶jb˜Œ1“Æ|î{?ܾÔ]…÷›rótw +S»Á’˜dˆÍ7ßì½KjHÕù%ú¤;ܹOì¾Ü(ÿˆ ˆY-÷Þ¢ñ_ÞýQ*§î¶hƒLX3– 2Sùr73zÐ=|úçÔÊT±Lù—L´~µî¦ùÊv×ût£½n'¾&hî_Å«Bl†ª¬b—ôö‰á°ÿ×xèêmtÛah›•_÷«‹öêd÷µû“+ÛUcôÚŸøz}^ízsð/®Sg[¢w?ý³ }ѵÛÍ£-5w,WœÚ.gÝÅ‘7±Ëú‹(»pùöaçO–åeÞƒYäýuÕÄs¿îÏÇè¼ï®ü¹3çWڽκ_)Ø{ö$d1¼¿}¡éI2øj6lE{¢MuëíH4éÉÞ1?¡ÏohS[?YJ¾@²þpoÚ~S ¶þU]#¯fN3NóšÏ±Ó6Óv¿‹v© þ{ªÛo2Ãô9èͶ´Æ§pü0·ENîý†ä+Ýû’OÅk[5}×øs»~8RK·œ7±xy'§íÏ3âÅzCSçH$u’ä+Þ}ɱÖÄ_’ ™zE0Çw,­*õ¡yG[”='õœMwºóÍz€¹ÎÙgq¡8³×ë)¿¥ÏBWœÈ;Ÿ!_Óg²Ïôn=„sÙ]ÀœæÃÖ­«aˆ¡8½´ÝÅž@œ–u”ì(¶nÿñGyQÿ«àsq“ì&.ŽÑàÎCðƒ«ŸÄœÙn(^¯â8Ÿ«\ýÛºþº^“#ß_œWM8÷¸øØ÷c¢æïš›¶]1Nº~•,-±,ä,+ää½–YÿΊ |³l–d²$Cˆ!+Žuž^gIæK}†+)V’Q¼û»ª²ÏdIfftÊž’5™ò“,ÊdQ&{Meø!Š2Y”ɧ³ró ”è1Õ,Üdá³Ëûgæ¼%‹5„­M‹g?ÉÍü ”%ë3ÙM–u“,Ïd¯ÉòÌ|†ä é¤ ù–éMü»~~Èîɤ‹Âe‡´®´ÿÌwÞ4§Ñ²i”6ctœNš“ @Ô“zWÓ|c~Z:áÒÃYŽÀù—°ôÖQI×Ì#.¸AVYH`žo‰`ÐË9ïɦI—æÒ›'ªþòwsÖ¶ïwmyòý ½ðÃøßÙüâݡó+Œ‚è×^@$GÀéèÎF§Ð¼_=üTtÚ—ºGyü]ׯ Húñí†ÊWÛÌ\ÕP5¡ºªÂÖÖËæÄ˜Ì£ðª[omÓ\ É‹7ÛX÷B30¿$Q G”}¤t§èò©Ìê»§ÙNÍåi¢˜ûÊòÙ%L_Ów0³Yzl°)-*…Uˆ3Iã%GX`¥ˆpFbóýëâS: þ½@íÝ/E»ÖLAôgXÍ@ôî¹#»)ˆC%“0ùæõ_ÉÉ7=…\””;ô;‚¡àŽ F&w¥¯(Õi‘›˜ó?·¶Ò+îNµòœª´0R1Áî}¦mSÝ|¦?ŽOxÑø\ß–ëhÇ\\;wJ]éKsò>˜À¤´Ò8AKޏqF)ÒBT ¡ˆ Bk£%%Èàï”Wãr$ê«‹¦Ÿbåý'–šaŠèô½±m¸.ÞÄêâr€ò2-š‘¹gdIVš`Â0S”2ŽõƒÈôë…˜é×MÁ(å¥ÃÈFQd#gÈXá5#Á+,…&ÀàQB3CSQAøÌe”g¶jŠ>^Ån¼Ã\\ÅÎÙºh¶ëØU¾èì0ŠÁûàÛ.þ½@Åí]s1@9»±Læ}’¯ !D1#„˜iÍ$ó?ûñƒý´ žwµZ`k¼6„:Qˆ[¥£. ª õ†kC=^”уGÉèÌhj¸dHÍG¶ÿlÓ¢™Ÿûç§b+#©ÂãKR𑇵€/!çXÑA³ôÎigšKÄu,‘)}DÔ()K…å¢Ð:Ç#²FbĹòÈ1/­>ÊHœZ˜ ƒEænT3¢æ‡6€q™–Ê´Ük|ÉÉJ+‰±ÐÚp!ø#¸\·õÉb¼+;4`rA©ÃD"”EÜsެÔ1g¼÷$xÆ—]÷¸óÖpÑfj|Õ¤DFIŒàDP-8ccWyü [×6•/Z×Ýöž…ëÚÆ_VCÕ Ußv!v÷|kùäÊw½ ™HKæ—Hcƒ·¬D:‡öã’1"Ê!0wÀXŒÅôÉñm½nÛ]]¼´®ª«áV‚ûS/ªu<.cg7× ì@*>&eeâK.ADK‰¸'9¢b¾t¾Ô8b‹$ÀÜá’ˆ3L ›Ó"ÞÅPùÏúôm㫺ºùϧF?€J¿&‚2‚~û^kÇAY.%âÁad°HYJ­°ÂXÎböª²MÛ•¿½Õ7í¼«‡¯ ]Q„±âS2ÐÛ/gôŸ·G«ÿb žÉ[öÒö•/ÞÅÁº›KYÎla;üæ+YˆPYÚéb¿­h ¸çpeÇø`m]eHƒn 9 §4¬€Ä¾€­ð6SWΧ=„6}H Ø @6'@bx#`ÉJy.Ÿ¤¡8À!Áyc#E%uñ¨r„G$Œ¦±¤Ìâ`–pV=ÀÉŽ’FÏì{[mªk’¢Ìä`˜‘”ÍÎlÐÙ~À¹pxK'e8d kà@Ûg“vÌãŠ#GD(‰x4Y‡KDƒ 1á•ßsZÛjtS÷:;2àž°7Œ¦ûü˜æÇŸƒF‹ƒ¿jú¡¶£(f§°þ å¶ýMþ—¯mc‡*6 Ò|Wyêɱéª8 –Q^œµÛ®í}þ®ªkëêø06'Âûq§KÞ{“]{U…/¯4ކïQ(Gˆk¦‘S""Á‰ÜR-£xôU~ÿâû9ý׋Ó÷?¾øöuñæý‡³ï>¾xûˆ¢ØUmW ×ûòæŶïwfwé¦íÖp_Þ Â3 #ýˆ»Û÷NnK§5ìÖXv}è€}°ë‘ÓÓ Y“ýÕ f 4²t“4x:Já¹ílãŸî3eëí8® Ý6þâùö*vöb÷§Nºnû׿ÆÕÃÖï»±»ªü÷oCW˜ÒÜ‚qƒ1›½ˆûõnP”mWøËè,¶›tE~'7 ö¤'$3”ùiîó–ùêtù°{&ýEä¾ÑCó2ÀÖ-øö-¨g¥5Î{S‡©+Þ%£rÅT:’n»Ñ©nÅ⯖ã8À5è±¹FºáfÑM70gy¢ ÿ"WR|u÷áOpvdî“î’€ï”X4pP¿aT­ð¼ß#š›ý𦜣fEäøô¼¹e¶,ìäøéZ½E^Ø€8åi%¾4"ÊÀ¬çÔ|ýiSÛææ+¾/_Æ&–ÕŠ>Èòó6ƒ­š¦É´1Ÿ;Ý·/uWáý¦Ü6ݽU‚ù-N»¨|ˆÍ'ßì&KjH¥æ%忤;ܹOì¾Ü(ÿˆ ˆY-÷Þ¢ñ_ÞýQ*§îvüÀ#Ix3ˆ$-n7ýyÐ=|òg¤·D~›b_§_­»é@¾²Ýõ>Ýhc¯Û‰¯ š —¤ª›¡*«ØMôödìÿ5ºzÝvÚfå×ýꢽ:Ù}íþäÊvÕ¨Êõ'¾^ŸW»ÞœüËTØÔÙ–hãÝOÿ¬©^tívóhKÍÝß#*z‹¿¦X¼”ú;ª²³ê¯^^ý½¯/%£Ætçþ ®CYŸØÙ Ö“vþ°{ê¡:v~ñE …ྑv;øvÿ=|¸¿ ¡‹£ëbÉ ßç8ßµõÂó0Æ76D»1=ÁÙtÕÚv×óÓãÛçŠSÛÅ⬡8ò&v_0¥Y^¾…k´8°€–›ì½Yʇàc]5ñܯûóq:ï»+îÃŒàò…3åº_)Ø{ö¤dÅ»¿}¡éÁøÒ,`yvºMu{+€¤i<öŽÙø }~C›ÚúÈÒùNñ]ó9à*Þ´ý¦l ￳%‹ŒÂP˜—ež ò2ò–_WKmØðßÛ?CÖ9|Í·´Æ§£lü2·ENîý†ô3Ýÿ”Oe[5}×øs»N!ñð.æ&/ï¼â´ýyP¼X#Y⩇¤^’~Å»/9Öš:L²B!ÅŠ*Žw»@}ƇÒv¦-Êž“zΦ» Ýùf=À\çìó¿8³×ë‘)¿¥Ï,É ‰wâkúLö™Þ­‡pî/» ˜Ó|غu5 1§—¶»Øh`£Sö”%=ÅÖí?žâ)/ê|6~’ýÄÅq(Üy~põÓØ3Û ÅËâUçf•«[ßÁ_×krìâû‹óª ç>€Bû~Lü]sÓÀ¶+Æyׯò‘¥Ev€¢Leò†È¬Ü<å¼£5 7Y¸ÁlÅXx¦½%‹5œ°£»âÙO²@33eGÉúÌÁ¸I–g²<“½&Ë3|¯òL–gòü£&ë2УY—ɺŒ+N0Îûi²Dó¥.C%YIŽïþxZUö™,×ÌMÙQ²\“Ýdq7ÉrMöš,×ÌçÀI‚¦_x¯óЙo™Þþ¾áçôìžLº(\‰HëJûÏ|çM³-›èh3Fʉá¤9Ézbr…Å›Åç›õÓÒÉ‘ÎHÏí‚+s(˜¨/©Ek‚#;©(8WÒî^Ån¼> \\ÅÎÙºh¶ëØU¾èì0 ÃûàÛ.þ½@Åí5g1@9»±Læ½’yÅ„1’a¢±TT ñ ™ÿÙì§eð¼«íÐÛ(¸“Æ!YÒˆ8i]zD´s>FÇJ'e4ÀàQ2:3š.Ró‘íÁ#Û´hæçþù©ØÊHªðø’”fh?^,Bα¢ƒf(SXi„©Tˆ{-‘‹#ŠIÀ" •_šƒG Í MfˆHÌCóíûqCCügZ|ÿðÌBª^Q®µ6Z Ã%7âzž¬éRë:0†òÒSN"CÌxŒ9Ê¢R …g".ËP€Á£dhf¨TsħZ·m(κØ]ŒÐ´t&è’oýh›Ø ³]kÁ#zó^–h÷\ÒÔÑÒ½•퇶®|1áv€-póu&pfdJC{¾’BM©æ˜ Cw%Ôzý·7OÞ`”J^ì®RÀ”å#9¿òzqŸH«\Ò%å+E1RR¦±á‡âÉØsq )‘”d­ˆç‘ñœ#¢ öœQËe·Ô€ þÞâšÚº¶³CòTÒëî<:91ƒðdPóm½õmfÒb9ŒÙçDPã•ÆL&$—J?²<¼¾8 o—˜îê:¸Éñè5Äcxi(ÒÔ „©“AŽK‚å%Ààò2óRRcföÕü¥‹¶ø¾ºö"6Pj¦…÷Ïμ‚‹WÚI5fDpŠ•|–ðÄØXK‚FVF‹8V Ù’jT²2HæŒævÙÕ[€Á#„g†'Ó\³ í´‹ã†–ªœiÉ=s3/>¬86BS%æŠ`-ž%7©Ôš[­‘ ž Nb‰³IËƪ°ð$`𹙹ɒ‘inÚÚWÛ5ši±L̽ÎÒWB0Ž96 3Æ–ÀŒØJO­G%áq¬²¤THZ"¥WZ ¿l  2Xd`á&A5£j~h—i©L˽ÎË9[)#•цpÌ(§ãrÝÖ'‹ñr¬ìàfæÞKƒFTPŒ8 9Æ’V뼊©E 0xœÀ̲¦ž™˜Ÿµƒí{83Ó‚›ûÅ&_JÁ\N ú™R“)9óï âÚId%åˆ1JKí½†.JM€Ác¤f3±4ˆMOË/ë¶«XÌLËí—™y ˆ¬$ã’b"9gX‘g M"¶&`IÉ·* [RŒÁÇYÀfQh %434…Hψ™k›âUÕ~²sªt&èžSú`L…!s)¨&ò™´´edÖidˆ«‘µQ#FK¡UÄÄE·(A’ ™ †Í„ÇLÀÅée[Ç~ˆ][C:SAÆè^QMVšHL(çBRÌžç‘c–XäKR"nGα€œÀÁJ7aQˆ #D3D…"HOC´«.êkÇyxhZ8Ãsÿ³xµÂX IÑš3Fž%<™ÀÎmQT> θF[аÅÞ”‘È’ÙEá 0x„ðÌð$šJŠä$=ß¶ÿ(^Ŧ3—½­6í¦k‡X5O JÁUfÒî“´š®å”m°RÒˆg Z⎠䅹'²zôÂ]I´–‰EA 0x” ÍS}-™äì›êâriÐŽu&i3i•^aƒ¹RF¬¸bÏ’´Q±ƒ²(ê’"NEš3hiiÉ‚‘%Å‹’`ðI›CZn„™Ùcÿ®ò]kk·]WMqwܨøa|“Æ*Û+\ó¢%+F)•BS­”yüäçÅrp=´”«æ‘Ô"N=CÚƒbÐ%ÕVq!ä¢l&eeiÌ‚eR¡à}@ÜQ‚L 5fÞÊÒ¹I0w¸$â Ãæ´ˆw1Tþ³þ}Ûøª®nþó©Ñ Ò¯‰ Œ ß¾×2/ÊÍÈ)b÷ #‡±A„bIÆ%±àÖ¯*{Ñ´ýPùÛ‹}ÓÎ °zøšÐE+>%½}ñrFÿy{´ú Æà™Ôe/m_ùâ]¬»¹—åÌ6¶Åo¾’…•¥.öÛz€Æ@€»^×vŒ/ÖÐu€Tøà–’‘ÒJÚÈí ÈÒ o0{å|æCh è¹Ä€­$täæ7–¯êbñùHJÀsè`¢cak%â%1ÈP.F0NU¢\>ÀX=ô'8J=³ìmµ©<¬IŠL0“ƒ`NP> 8³A‡ûÃá-œ”]à%¬}€m N:Ø1ÏI¦,–IÆ,âLidÈIDI,§\CǼÓÚVët ƒ˜º?ÐÙ‘÷„½a4µØçÇ4?þ4Z|üUÓÕ°E1;…õ)·íoêð¿|m;T±Yæ»ÊSOŽMWÅa°Œòâ¬Ývm¯è#ðwU][Wǯ¨€ 6#Âûq§KÞ{“]{U…/¯ˆ#R‘çÔ!¦½Gº4aé%¶1ê’ÛG_åÙé3B?"vUÛUÃõ¾\÷FžíûÙÇý·i»5ÜqwêïÌ*H?²íö%“ÛÒi »•]¯ž¤7`Óì:ä´ÁtC`uƒÙ †¬Ó$ žÉGRn;Ûø§ûLÙz;bC·¿ø_¾½Š½ØýÄéU’.‚Û>Äõ¯qõ°õÃûîCì®*¿À}ÛÐå¤dq[R©¾ä‡å¶ØÄÎÖEüd×Us»öÓ–Åç*]‚ßÅ ·’ôŒtz2?Ç]`Ò2?=]€6vϤ¿ˆÜ7zh^Ø·ß»õ°´Æyojâ0uÅ»”¯¤IGÖm7:Õ­RüáÕr\¸=6×HwÛ,ºãæ,O4ôAäJНî>ü îÃŽÌ}Ò-ðm nê7Š‹•Ró~‹pn6Ã?špŽšÕ˜èxÞÜRûvZ\ʸ¢¤H:lWÚ Ç‰A’c¡0Ñ*2ð^Çן6µ½ KÞ—/cËê9dùÆy›ÁVM SeÚ˜Ïî‡Û—º«ð~Sn›îÞÁüþ¦]”>ÄæÆ“o¶’%5¤:ó’ZsÒîÜ'v€ùÖøGd@Ìj¸÷ÿ‚ðîÏs>mt·ÝI›±@$™q»éЃîá“ÿ;£»%ÚÛûº8ýjÝMò•í®÷éF{ÝN|MЄ¾U…Ø UYÅn¢·'ã`ÿ¯ÐÕÛè¶ÃÐ6+¿îWíÕÉîk÷'W¶«FI®?ñõú¼Úõæà_&Á¦Î¶Dï~úgAõ¢k·›G[jîþ‘гRü5•⥤_ö%Ò¯^^ú½¯7%£Ætçþ .CYŸØÙ Ö“vþ°{ê¡:v~ñE …ྑv;øvÿ=|¸¿¡‹£ëdÉ ßç8ßµõÂó0Æ76D»1=ÁÙtÕÚv×óÓãÛçŠSÛÅ⬡8ò&v_0¥Y^Î…k¶8°€¶›l¼Yʇàc]5ñܯûóq:ï»+îÃŒàò…3åº_)Ø{~#Å +àýí NO)À×ikµÓmªÛ[A$Íé±wìÆOèóÚÔÖÏ@—˜Yçx_–Å©]o¶=z¿v_ëMÛoªQN™wˆg°œ‘1¹&ó’ÍsÃ_Æßòëo© þ{»ìg(;‡²ùo˜Öøt¬_é¶Èɽß~²ûŸõiÐl«¦ïn×)0ÞêÜÄâåÐWœ¶?ÏŠëqTK¼#õÔKÒ¯x÷%ÇZ‡IV2“+ÂtRÁ¬ç¤­KÛqk;û˦» Ýùf=Àæì³PœÙëõH’ßÒSã|%ýšž’=¥wë!œûËîæ*¶n] C Åé¥í.öØH”=eIO±uû§xÊ‹ú_ŸŸd?qq€w‚\ýôåÌvCñ²xÇ9YåêßÖwð×õš±øþâ¼j¹ €ÅǾs×Ü4°íŠq¾õ«|di1†ýÖbLcò&ɬØdżã5 6Y°ÁlÅX~¦½%Ë5œ°£»âÙO²X33eGÉZÍÁ¸I–j²T“½&K5ü7“j²T“$f&k4àÓ¥Y£É 7+"x{fÜ%ï©1r%ï’gGÉ* hÊŽ’Ušì&K»IVi²×d•f>5NzB4ýÂ{~Î|ËôFøÝ?šg÷dÒEáDZWÚæ;ošŒhÙüG›1R²“mÅT–ïÝÓôÿdúîéôõÞ Îg  ,GCŒ÷(”Ä"¦™FN‰ˆ'BrKµŒâQøþÅ÷ÿrú¯?§ï?~|ñíëâÍûgß}|ñvùÌvw0³³ÈK-*¥ˆó@&bôçT;bAl¾yJg€Áÿ£¦½û¥hך)ˆþ «ˆÞ=wd·Öc¨Db&ß¼þ+9ù毧+k’r‡~_ ôÜW3ÃÈ侚ôñ¥:-r|þçÖ6ÃÝi˜lV‚rBÇŒb"~‘¿sÛT7ŸécÅ^4>×·å:Ú1›ÖÎRWúãÒœ¼¦'äõªôÌ#Em‰x,9²"2$¤+YT–:I%%Èàï”WãÊ$ê«‹¦Ÿbåý'–šaŠèô¦m¸.ÞÄêâr€ò2-š‘¹odJ²Ò†™¢”q¬D¦_/ÄL¿>0hº`˜gÔ S…¸if=bTj§µª4‹B`ð(¡™¡©¨ |æbÄ3[5E¯b7Þ§† Œ.®bçl]4Ûuì*_tvUá¿}ðmÿ^ âöÞ³ œ]ÈX&ó>ÉŒW„a±ÖŠ(Í êA4ÿ³¿ØOËðyWÛAS­E`…h8â^d±Æ+ç©óc…4ÀàQB:Cš.Ró¡íÁCÛ´hèþªØÊHªðø’”f„=ˆÏ/!çXÑAÓs* Ó Ñà1â–[dF l1PƒÕ¢ÐK`J­ÆQ!ç•@œœi µei"‹‹d°ÈÀ<Â-‚jFÔüÐ0.ÓR™–{–s²ÒŒM°2 ÎÆåº­OãåXÙ¡3j¬´"iÅâ>pd˜÷ˆ—>jO£ôŒ, L€ÁãfV5õ̼ü¬lßÙ™ÌØÜ÷¬\af–‚a-Œ¢Ï”š\D,•§È”„#^:ŒTÉH1“”X_òE© 0xŒÔÌa&–±éiùeÝvUk™i¹Ì̽†šX¬˜„+M$’Ég MI­–JT²¨gB"-GBqg8/K"ŢЎóð дp†çÞáIØŠ,0ÕšQE({–ðÔXx/”AX†¸i%"D㈹ô:,+| !<3<‰¦’"9IÏ·í?ŠW±éÇÄeo«M»éÚ!VÍSƒRp•™´û$­¢+Ì0ÆḆϒ³*`Ì©#Èx׆#K­G„É 1eü¢œ#f±’RJ¹”\KIù³º “SM}tqlâ¥UÈbdÜZœ¡$BI{¶»7å,ÄÜ}ÎŽ ¦ë8^¾ÇÈÂC3¡Ji†1›>¿©ºv‡î:¹ï@‡ky¬ØÄ®ƒ”pöõ.!Çs—wÑömóÃÝOKGõ¹7À·†Ž4Sã«&%2Jjd'‚jÁÙ½¤éI·®m*_´®ºí < ×µ¿¬†ª/þª¾íBìîùÖòÙ•ïz52A8ì((R]"N)EÎ …¤pÔYm¹çbAÈÌ0dÖc1}t|[¯ÛÆv×E/­«êj¸•àþÔÅ‹jO†ËØÙÍ5;ŠŠD™D™DÚ%C:h‹¸Žb%ÂÎÙRs§°Ð ’`îpIÄ&†Íiïb¨ügý?ú¶ñU]ÝüçS£@¥_AA¿}¯!lDÚûqÅ,rBpD¤±Œt ž¤|·^o›êу@ç;î•õ¾jâé’ýw'ü”—UwÒWáÄ_}šÚ‡1µë»¦¬·±ùû碿glýç¢jÆ.4Ê .6]¼fŽÐ/»^5„[x¤#Ø¡ŠÍï§c·Þo»±B¸$²éªµí®?ìÜ}è¶qÞštøBš`..m@Üñ€,ÖII¢Œ JÁi´^Uö¢iû¡ò·×p§`õðEÜ+Š0V|J·}ûâåŒ`ûöh[AŒÁhšY/m_ùâ]¬»¹EéÌ6¶%w¾’…BЬÅv±ßÖtÒ¸™ pÉÎø`m]>¸¸ÜÀÕ€$ð°fRq’*ÃÛL6;Ÿ¨Ú@¾H@ê?`+ùש´à€¥d¦Y\@HC øÁON¼·Ú"%•E\kƒ\09¥¥ ±´Æ²å€ÕCpr€£¤Ñ3›7ßV›*ÀÚ¤èÁ39˜¦¥Ÿ3”‹ÇÞÀÁöÎDÃÚ8ºÀaƒó„1XcÅ‘”Š ®¹FViŠ(6>˜èµuà‹ßOk[­Óbêþ@gGÜ“æ†ÑÔ"`ŸÓüøsÐhñqðWM?TÃvVì֤ܶ¿©Ãï^ÛWÅv•§ž›®ŠÃ`åÅY»íÚ^ÑGà諸µ½¯(Y³¹U3?NxâDÉDSk¯ªð¥ã•ÆÑã= %±ˆi¦‘S""Á‰ÜR-£xôU~ÿâû9ý׋Ó÷?¾øöuñæý‡³ï>¾xûˆòÙUmW ×ûòæ›%–¾ß™}Ü¥›¶[Ã}¹ßnFUÍÅwMÙN¦ýȼۗOvU¤‘,ü ñ%ú{Õ”ãï;tºÛòa”í\> øn-øß‡…/¥Ü·<:ÿ¼ý†i  _ØÁ»˜>m0]¢Á€Ý0¿ºÁlƒÍ>S5ý¶³ºÏ”­·õçE_"¡½Š½ØýÄé%ë.‚Û>2âW¸zØúá}÷!vW• ` ¸¶ŸæŒ›d;ãC‡ w“¹¢l»Â_Fÿc±Ý$kñÓXÛI¦¬°ÚS$Æ]ùy½b¡ è¼Ôð4ºüÛˆòa÷Tú›È}³{ð3È4`záµh€Û-`-qÃ&Þ ÃÓ«–ðJФ5Ÿ×€oW >¼úzü?0‡€ °¾ê5ó5‚=Ã%WF~u×àOp zl®‘îž]t-ÌYžhè?‚È•_Ý}Ä܇™û¤[áÛ ÜÔo”!+:?"ƒä›Ãmf) fEFÒÍ›[fÿáNj„«ž¬Ä„9Éd¥D\HŒL©–h§‰¡2€¢¾þ´©msóß—/cËêÕ>åçm[51LÍMÒÆ|ît?ܾÔ]…÷›r+ww+ˆSÛ“XvˆÍ'ßl OjH—¡/§ºÃÎ}b÷åFñøGd@Ìj¸÷ÿ‚ðîR9mt·}>97cÉI¢ÓïfÔº‡OþïŒ,ŸHóSìëfnwÓ|e»ë}ºÑÆ^·_¤9À—««›¡*«ØMôödìÿ5ºzÝvÚfå×ýꢽ:Ù}íþäÊvÕ8ëéO|½>¯v½9ø—­Ð¤Î¶Dï~úçõ–‹®Ýnm©¹û{d…-/$ícw5|eh~Å&YÒ˯ Ý—,“Qcºsÿ_Y‚²>±³¬'íüa÷ÔCuìüâ‹ !Á}#ívðí:þ{øp‹R?F –Z“¾Ïq¾këø›­Dolˆv=6br‚³;90?=¾}®8µ],κŠ#ob^¿ZdE.û?ìüiÀ²ðòÀ!­fÂÇþºjâ¹_÷çãtÞwWþ܇Áå gÊu1¾R°÷ìI1È‹(ýí MO·m¶nL·©no4'×Þ1?¡ÏohS[?YJ¾`©ãsÀU¼iûM5ØúWu¼ vH8Í8Ík…ÇNÛLÛ=/ö&&løïín `†ésЛÿliOàøan‹œÜû éWºÿ%Ÿ†×¶jú®ñçvFjŸ­hbñòN:,NÛŸg Å‹õ8†&Α:Hê$éW¼û’c­‰¿$¹òõŠ`ŽïþXZUêCóŽ<¶({Nê9›î*tç›õs³ÏâBqf¯×#R~KŸ!„®8‘w>C¾¦ÏdŸéÝzçþ²»€9͇­[WÃCqzi»‹=48eGYÒQlÝþã)Žò¢þWÁçâ&ÙM\¢Á‡àW?=ˆ9³ÝP¼,^Åq>W¹ú·uüu½&G.¾¿8¯špî(pñ±ïÇ{¾knØvÅ8éúU>²´IJ³°“÷èfý;+2àMÖY’É’ 1F¬˜!f÷§s`3í9Y’QF“•Êìþv5e—ÉŠÌÌà”=%K2ä'Y“ÉšLöš¬ÉðÔd²&“Çfáæ7àÓÍY·Éº f+–·ÏÌxKÖj8a+FwųŸdffÊŽ’õ™ƒq“,Ïdy&{M–gÄ^å™,ÏääSyCMÖeÀÙò.“u¡W”ó|Ä)k4_ì3’Ñ•Q2=á”]&Ë5 ±);J–k²›,ê&Y®É^“åšù|ÈIZ°¸Éhæ[&ß±ßðó'zvO&]®D¤u¥ýg¾ó¦¨—Mz½åÄpÒœd?'áxEõ®¢ù¶ü´tvì‡SRƒ“e#L0C<–i뒜ҨE ‘;p²ì]B«4C6À\znÕ_Ž>|/çeßïÚòä[mzá‡ñƪÓÞóâݡ“aŽúè—ñBH@*»٥̼_=<…]Ú—ºÝpâ»®_K7¶*_ml3slÕ„êª [[/›Àt2éå«nU¼µMs-$/ÞlcÝ ÍÀœÍê«–ˆÈ”ît^>•Õw÷4Ûi¼<Íê{_o>;°kÂô Ál&ã@ƒBÒÓ€83%Ò¥%ˆ(ï™t:« l~ï>g;k›”΃‡[y{÷KÑ®5SýV3½{îÈî/'ÆP‰Ä$L¾yýWròÍ_O!——'åüær@踹|†‘éÍåéã+JuZä&äüÏ­m†»‹dÓàX®´–„jF9ך“{_iÛT7_éc½N4>×·å:Ú1oúΛROúãÒ˜¼Ï%0(}´e©D‰Œq‹Kd˜æcæ5SNqº,(Ao ¼×(Q_]4ý*ï?yl°Ô SD'Yù² ×Å›X]\P\¦E31÷NL²Ò†™¢”q¬D¦_/ÄL¿>0hJ¢¸÷%C’[Š8å|dF\+â¼.‰ aQh %434„#6IÍ3[5E¯âxA} Œ.®bçl]4Ûuì*_tv¥à¿}ðmÿ^ â‡8Þ;”³ ËdÞ'™éJ3‚µâš`Á¤aâA2ÿ³?ØOËàyWÛ1—²$†D]ˆóÀ‘SŠ ¯£UF*,زŒ²ý/xd›ÍüÜ??[I_’ÒŒ°ñùãÅ"ä+:0hRŽqé¨G¶äqÅrXHD”te)¤Â¥_šƒG Í MfˆHÌCóíûq CügZ<ÃsÿÁ§^Q®µ6Z Ã%7âzž¬éRë:0†Æh¥E38åiÅ"òØî£ršÛE 0x” Í ‚jŽø4Cë¶ ÅYû±Ë€š–Î]’ ã¯m›a¶k-x(oÞËížKš:Zºq¢²ýÐÖ•/&ܰém¾ÎäÎŒLihÏWDcƒµ!šbªÔ®¢d€Z¯ÿöæâïÉ;ŒRÉ‹ÝU:±·äχì#9¿òzqŸH«\Ò%!+ƒµ"˜a&¥ÄüP|"|BQsʨhR¥3ˆÓ#Š † 1hM1_4°ü½6µumg‡ä©¤ÛÝ=xtzcáɨæÛzëÛΤÅr³Ï™ +ÖF ! æÁ‰àúâ$¼]b"¸«ëÀ&‚6)9ã(`/¹FÚ²€(%ãëŽ4:·(/—™—’3³±æ/]´Å÷Õе±R3-œÙ¹wvŽ"šaXP¡5ÁëgÉNB‹QyÄK©7‚#ãXD„Q©#¡ÑøeE4€Á#dgf'Ó\³ í´‹ã†–ªÇ›iÉŒÍ}ï|Á”p.áœR£–Ü”’²HJ,e%âKd½”¨$Ź÷4,ÊM€Á#äfæ&7J D¦¹ik_m×@h¦Å21÷IL³’\3¢$U†Éɳ¦¤tØT–,"n¸@Új˜rÂë¨qzQ`‚ ˜G¸IP͈šÚÆeZ*ÓrŸ´$œ®”á”®–âaX®ÛúdZî*;¸Í-\QkrVŒc,‘ÖL E'JQM¥_—ƒÇ‰Ë¬iê™iùY;ؾ‡3-˜¡¹_hòáTaÆ&†%Ÿ)5½¦¸Ä”#ÎA\–9FØ+ï°bVE© 0xŒÔÌA&–±éIùeÝvUK™i¹Ì̽šX¬„â†)ƒ9#”ðg ͵Z*¤}ÀˆcŽ‘Á¥EÞÅ’xIebQh %434…HÏH™k›âUÕ~²sªô^ š—‚ðŠ©U˜2ªÏ• ”–Šz…LPñ2Xä´&È{+‚tž½lØ 0x”Í5l&ìü8fþ-N/Û:öCìÚÂЙ 2F÷ˆº¢JI*áœ)ŸçN$å¦X¡( E<òˆg"HŒ˜zg좎óð дp†çÞáÉÍ sÎ)7Ti* {–ðŒÔ˜h¹EÔY‡øÚ’„KisV. O€Á#„g†'ÑTR$'éù¶ýGñ*6ý˜·ìmµi7];ĪyjP ®2“vŸ¤5lÅ%—š2Ô`ÒÀX=ô'8J=³ìmµ©<¬IŠL0“ƒ`JP: 8³AgûçÂá-”]àŒ%¬}€m œM:Ø1O…E.âJä‚/öÁj\á÷-žÖ¶Z§ÄÔýÎŽ ¸'ì £©EÀ>?¦ùñç Ñâã௚~¨†í(ŠÙ)¬?H¹mS‡ÿåkÛØ¡ŠÍ‚4ßUžzrlº*ƒe”gí¶k{E¿«êÚº:~EŒÍ‰ð~œðÄé’÷Þd×^UáKÇ+£!Æ{JbÓL#§DD‚!¹¥ZFñè«üþÅ÷ÿrú¯?§ï?~|ñíëâÍûgß}|ñöE±«Ú®®÷åÍ7ŠmßïÌ>îÒMÛ­á¾¼„gFúw·ïÜ–NkØ­±ì:ú$Ðû(`×#§ ¦ 4²&û«Ìh0dé&iðt”>ÂsÛÙÆ?ÝgÊÖÛq\ºmüÅÿòíUììÅî'N/œtÜö!®«‡­ÞwbwUùî߆®0¥©/ãc6{÷ëÝ (Û®ð—ÑÿXl7éŠüNn@íIOHf(óÓÜæ-ó3Ôèòa÷Lú‹È}£‡æe€­[ðí[PÏJkœ÷¦&SW¼k#芨t$Ýv£SÝŠÅ^-Çq€kÐcstÃÍ¢›n`ÎòD#@ÿD®¤øêîßà>ìÈÜ'Ý%ß)±hà ~Ã0]q=ï7°ˆæf?ü£'È©Y9>=on™- ;9~ÌP»P2㓞#.¤G68Œ˜Sš1L¢2ªl¼þ´©msóß—/cËêEdùÆy›ÁVM SdÚ˜Ïî‡Û—º«ð~Sn›îÞ*Áü§]T>ÄæÆ“ov“%5¤Ró’rsÒîÜ'v_nDĬˆ{oÑø/ïþ(•ÓFw;~à‘$¼ D’‰·›þ<è>ù¿3Ò["¿M±¯‹Ó¯ÖÝt _ÙîzŸn´±×íÄ×MáKRUˆÍP•Uì&z{2öÿ]½n; m³òë~uÑ^ì¾vre»jTåú_¯Ï«]oNþe*lêlK´ñî§ÖT/ºv»y´¥æîï=‹Å_S,^JýUÙYõ×,¯þÞ×—’QcºsÿW¡¬OììëI;Ø=õP;¿ø²†HpßH»|»Žÿ>Ü߆ÐÅÑ‚u±ä…ïsœïÚzáù ã¢]˜žàlºjm»ëùéñísÅ©íbqÖPy»/˜Ò,/ßÂ5ÚGœ? X@ËMöÞ,åC𱿮šxî×ýù8÷Ý•?÷aFpù™r]Œ¯ì={R ²âÝß¾Ðô`|i°<;ݦº½@Ò4{Çlü„>¿¡Mmý dé|§ø®ùpoÚ~S ¶†wßÙ’EFá(ÌË2Ïyy˯«¥6løïíNˆŸ!ë¾æ¿[ZãÓQ6~™Û"'÷~Cú™îʧ²­š¾kü¹]§xxs‹—w^qÚþ<(^¬Ç‘,ñŽÔCR/I¿âÝ—kM&Y¡P¯8ãw3¿´ªÔ‡æ=ylQöœÔs6ÝUèÎ7ëæ:gŸ§øÅ™½^Lù-}FIVŠÉ˯é2Ùez·¹¿ì.`>óaëÖÕ0ÄPœ^ÚîbOœ NÙS–ô[·ÿxЧ¼¨ÿUðÙøIöÇ‘hpç!øÁÕObÎl7/‹WqœšU®þm}]¯É¡‹ï/Ϋ&œûŠ\|ìû1ðwÍMÛ®§]¿ÊG–ÖdØj2Y“Éû!³pó „ð†Ö¬Ûdݳc9à™ö–¬ÕpÂVŒîŠg?ÉÍÌ ”%ë3ã&YžÉòLöš,Ïð½Ê3YžÉç 󆚬Ë@Œf]&ë2¯¸‘ç½Y¢ùB—¡œ¬Œæw>ÃÓª²Ïd¹f~lÊŽ’åšì&‹»I–k²×d¹f>Nz4ýÂ{‡Î|Ëôò÷Ý?¢g÷dÒEáJDZWÚæ;ošthÙœ aTJ¸m¢EÎ1/pŠ9¥çýêáç—Ó.¹Ôõ€„×ïº~U@²^ol7T¾ÚØf憀ª ÕU¶¶^6{ÅdƃWݪxk›æZH^¼Ùƺšø%)]¢d>¡÷ý§çSºì”ç³ËÓ½¦ï`f³ð£;TÐqå 2ÂD¥á>JI9 6ß¿ª<¥3Ààá_GÓÞýR´kÍD†Õ Dïž;² jˆ1T"1 “o^ÿ•œ|ó×SÈí4I¹C¿šú®¦I9s5Mòxz5Í]ðùŸ[Û éMw²+]I­8#DSÌ©¡÷¾Ò¶©n¾ÒÇz'œh|®oËu´cÒ¬7¥žôÇ¥1yŸK`P2VRM(CNÒ€¸q 9C)âÒÅ”)¥æ‹‚dð÷Ê«qµõÕEÓO¡òþ“ÇKÍ0Etú¶Ò6\obuq9@q™ÍÄÜ31‰$+M0a˜)JÇúAdúõBÌô냦Äyg<ŠJÄ­ÀH;ÁÕ„3ê½`†. M€Á£„f†¦¢‚ð™+ÏlÕ}¼ŠÝxs*0"¸¸Š³uÑl×±«|ÑÙa…ÿöÁ·]ü{ŠÛÎb€rv!c™Ìû$3^i„áÔÊ&†àÌÈ”†ö|¥QZ &´dÉÆ¸»j½þÛ›‹¿'ï0J%/vW)à2ʃr ‘œß y½¸O¤U.é„Е†,)cŒiv(>‘ >‡ØpÅ)ÃR£¨#CÜcœ÷™hCŠyæü¢ Èàï-°©­k;;$O%ÝîîÁ£ÓÓ3OF5ßÖ[ßöÐp&-–ã˜}ε^q"c„K%}XF[_œ„·KLwuØDPE]¤iY*ŧÈr#ä!j-5T-ÊK€Á#äe楤ÆÌl¬ùKmñ}5tíEl ÔL gvîD­¸æ†hÊ•TTcú,áÉy`ÌŒ(Q%â"X¤}ˆ{k 5† U. O€Á#„g†'Ó\³ í´‹ãŽ–ªœiÉ=s3¯>¬(—‚qAQ†êgIÍ u‚*¤¹aˆÛhÃ’!‰p¥Pˆeך™šÜ()™¦¦­}µ]‘™˼Ü'/Í cŽ£”bA™äϘ*RãÈ7*"%GXyaˆsBòeçè ƒEæîT3šæ‡6€q™–Ê´Ü묜É–TR.‰ “Gfåë¶>YŒ—ce‡L”³JYĈÀˆK‘±: £\TÄÂ=^˜ƒÇ Ì,jê™iùY;ؾ‡33-˜±¹_lò¦˜m´”LIMž)5mÐÆSªPt\!îAŽY‡¸2Œ”ÄK— 3‘š9ÌÄÒ 6=-¿¬Û® `)3-—™¹×PóʃӌšgÊLEd†$$Sˆ—¥EÆ”Qç´pÂQ¦È¢ÌIkÈŠ,7‚P¥Œyž  Øs,,">Ä9)‘ÑF ÂŒÑZ*»(h´y¦¯2“œ}S]\. Ú±ÎÃ$m&­Ô+&µ0D£ži@Ë©·%¶yJĹðÈ•eD¢ÔÖ† bQÎ #gs@Ë03ûëßU¾kmí¶ëª)î?ŒoBX@e{Ek^±f%)£šfˆ’ú1¸^,ÇÖCK=é(%Îh‹b°q2!(Ä£‹˜r%•YV+ì,·óˆ|%„ÖÂhc8B?³˜¹$¶4œ3¤¹Çˆ £Ê#éØ*˨^”ÖƒGIëLkI"_Fëu´Íg<îÓ‰Áƒçsæ3^ Ê“ZqÃµÒæ™ñ9àXe=â;Ä=“È ë‘bÞ*R–Fªeù 0xŒ|Î|f†Ìí~ÝÕ-ü¾­Ûuì¶µíŠoªzèn^å˜Á!B ¯3SvŸ”¥|ŵäFSÉ(åœ?’âíɺjNþIVНéO‹07­öÀL"‘*‚$÷ñ rŒ”È/]0Ì—R-J`Áßûmwgè»{èØÔdJ¤Dt&§¹³Þ·E¿n¬š‹âöÛß¿ùî¸óUeÎ.ÌÙÑï­«ãiÛø¸s®¾i×1¬ª¦lOz?<îbZ…±œt±oÚn»·ˆÄ©’‡&eHƈÅ•‚Ä©=ÅrD±ÄÆbi\VxË ¯7“|¿™#„¤”R.%×RRþ¬NÐYF”Š$ ©JŽ8%é@<²Ž[Ë„cR(iϺÖǰíbÊYˆ¹ûœõízSÇá_ÇÈÂC3¡Ji†1›¾°{Suí:Ýuñ§ÍîüzLÔò,X±‰]9)á,vUî›»ñnø"|ìÚЃýŸXß=ý`#ºhû¶ùáî§¥£úÜàÎ[à Gš©ñU“%52‚AµàŒ]åñ+9»¶©|Ѻ~è¶7ð,\×6þ²ª¾øS¨ú¶ ±»õŠtØ]3w½ M° _;¼Ñð|ØËå6†·”Ùu´ ð‚²".RÜB@þ²=d¢‚7˜lgÉL-ðÆsRì#üGj/~Ê÷Ð'#œºÒ0#‘‰„!ÎE‰œtqR–JX¡“‘ÓÚVët1ubÇéÞÿFS‹DÜó“ ?þ4Z|<"¯š~¨†·SÓƒAá¶¿©ÃÿòµmìPÅfÉàwWy:h7]‡Á2Ê‹³vÛµ½¢ÄÊ®ªkëêø—ãÙÜŽ ßE;Äé’÷Þd×^UáKÃ{£!Æ{JbÓL#§DD‚!¹¥ZFñè«üþÅ÷ÿrú¯?§ï?~|ñíëâÍûgß}|ñö‘í ]ÕvÕp½/o¾Ù>Ò÷;³»tÓvk¸/ïv§ÌìÒêGÜݾwr[:­a·ák×ѧhØÔþ¢äwL7˜.Ñ`ÀÑ_Ý`¶HƒûÈÒOÉ'#<·müÓ}¦l½ǵ¡ÛÆ_ü/ß^ÅÎ^ì~âô.®.‚Û>Äõ¯qõ°õÃûîC쮪ä3Lq 5Ýîöðæ[-7Éÿ‡BédR”mWøËè,¶›t{Zú:%)Q“µ'=!tæôÇdžyépº|Ø=“þ"rßè¡yà ü, Ô³Ò罩‰wAØ©$¡|Åp:’n»Ñ©nw®|xµÇ®AÍ5ÒÝÿ‹ž€9ËýG¹’â«»‚û°#sŸtË6|ÛöB s‡Ë§ó~‹hnç>~ ®Y9>=on™ýÓ;9~sÁŠ9E‘Ò¥Fœ0…´ã©’Rƒð!‚³N½þ´©msóß—/cËê¥Våçm[51L’ic>wºn_ê®ÂûM¹ lº{Ë·óç-vQù›O¾9Ú’Ô®Ì- PLu‡ûÄîËâñÈ€˜Õqï-ÿáÝ¥rÚèîø<’„7cH2ÑâvÓŸÝÃ'ÿwFzKä·)öuqúÕº›ä+Û]ïÓ6öºøš  "|¯@b3Te»‰ÞžŒƒý¿BWo£ÛCÛ¬üº_]´W'»¯ÝŸ\Ù®U¹þÄ×ëój×›€™ ›:Ûm¼ûéŸ5Õ‹®Ýnm©¹û{DEÏbñ׋—RGUvVý5Ë«¿÷õ¥dÔ˜îÜ?ÁÕc(ë;»ÁzÒÎvO=TÇÎ/¾¨¡Ü7Òn߮㿇÷÷‡uñc´`],yáûç»¶^xþÆøÆ†h×c#¦'8›®ZÛîz~z|û\qj»Xœu#GÞÄî ¦4ËË·pöçO–Ðr“M‘Kù|쯫&žûu>@ç}wåÏ}˜\¾p¦\ã+{Ïžƒ¬x÷·/4=% _š,ÏN·©no4§àÞ1?¡ÏohS[?Y:ß)¾k>\Å›¶ßTƒ­á]ãw¶d‘Q¸ ó²Ì³A^FÞòëj© þ{»âgÈ:‡¯ùï–Öøt”_æ¶Èɽß~¦ûŸòi l«¦ïn×)$>RÙÄâå€Wœ¶?ÏŠëäIê!©—¤_ñþ—kM&Y¡ |¥%þùo¨ÏøPÚδEÙsRÏÙtW¡;߬˜ëœ}žâgöz=2å·ô®Yq~ç3âkúLö™Þ­‡pî/» ˜Ó|غu5Œ{«O/mw±'ÐÀF§ì)KzŠ­Û<ÅS^Ôÿ*ølü$û‰‹ãP4¸óüà꧇1g¶Š—Å«8ÎÍ*Wÿ¶¾ó•½&Ç.¾¿8¯špî(tñ±ïÇûH¾knØvÅ8ïúU>²´(ÃP”É¢LÞ™•›g Ü€w´fá& 7˜­ËÏŒ·d±†°£»âÙO²@33eGÉúÌÁ¸I–g²<“½&Ë3|¯òL–gòü£&ë2ð£Y—ÉjÌŠjžC,ÌÌM¤ÔŠ0™–ÏŽ’•™ùa(;JVf²›,î&Y™É^“•™ùt7é©Ïô ïuÊ9ó-“ïØïFøùÓ;»'“. ÒºÒþ3ßyÓCËæ4ÚŒáqb8iNÑjjVÚÈä(Á|«~Z: Òù‡ÀY‘ˆÑتH.¹GÜ ŒcFKÊJ%YiÀY‘v'ÓTHsé­3Uù‹k kÛ÷»¶<ùî†^øaü‡±ê´½x÷òᬣ(ºÄ•7pÙ1]%•ŠáDkK®ìŒMìl]ÄOv]ݺÎxÃNtšÐJó¾¥^ÚE—ºéìú]ׯ HÆëí†ÊWÛÌ\¦R5¡ºªÂÖÖ f®ðœOf;xÕ­Š-ÞÙîÿ/«$->Ä®³C+)“_’ÔÅ Hé}û4»÷tú’ï¤ç3P®âˆT„Fä9uˆiï‘.GXz‰mŒºäöQ?8;=cFèåÖÝñŒgÍJÌD Èa'‘#'FÖH!ÓÖK Åó{7¾Û›Þ™`ðð¯kï~)ÚµfŠ£?ói†£wÏÙEaÄ*‘˜äÇ7¯ÿJN¾ùë)䯤ÜÁ_܈~ w„!w„'/îÚÅŸÿ¹µÍpw1@œR¶’BŽ)#Ê(&ù½Ï´mª›ÏôDZâ /ŸëÛrí˜$kçN©+ýqiNÞ˜”X)„3È2Ì÷& CËIÏŽBEËô¢¤ü½‘òj\œD}uÑôS¬¼ÿä±ÑR3LgnU|Ù†ëâM¬..Á$¦E32÷ŒL"ÉJLfŠRƱ~™~½3ýúÀ )‚²:z Vqæ=r8p¤˜Ð\c'¹Ž‹B`ð(¡™¡©¨ |æþõ3[5E¯b7^ÛŒ Œ.®bçl]4Ûuì*_tv…á¿}ðmÿ^ âöF³ œ]ÈX&ó>ÉÌV˜b-cK&Èñì?ûñ{ý´ wµ¢PBoǾD<ʈœÀ 9\ä*ŠÅ¢ˆ°ý/x`›ÍøÜ?>[I_’ÒŒ°ñùãÅ"ä+:0hjmDˆ1"£CÜZƒ¬ô9­§*D.ɢЩWB3É$¥X0¬{–ÀŒØ‡`•A!R†¸ÓYÏ¢Œ‰±Žš±E 2Xd`áA5£i~h—i©L˽ÎÊ™^a*©˜K)„~—ë¶>YŒ—ce‡L-­‹ˆ`cg’"¬E$†e´²$Ë`ð8™EM=3/?kÛ÷pf¦36÷}EΓB2΄6ü™bÓ{ÌD()’ÔÄ# H;# ’rÁ\Ä/ŠM€ÁcÄfŽ3±4ˆMÏË/ë¶«XÌLËehî5ÖÄlÅ%ÆB -¥æT>ShFî-¦¥FŒéqÅ:¾­×mc»ë¢‹—ÖUu5Ü*pêâEµŽ'Ãeììæ„HÅÇD¢L¢L"a¸wBI¨Òˆ;ë¶Ì#¥qÐÚêPJ¼ ‰æ—DœabØœñ.†Ê–ÿ£o_ÕÕÍ>5úTú5”ôÛ÷ZiÔ2$\ˆkï‘D %¢(IôX„íµ¯*{Ñ´ýPùÛ+}ÓÎ °zøšÐE+>%½}ñrFÿy{´ú Æà™Äe/m_ùâ]¬»¹“åÌ6¶Áo¾’…•¥.öÛz€Æ@€{^WvŒ/ÖÐU€4øà–2‘rJÚÈì ÈÑ o0wå|ÞChéç™Ä€­ds$æ7–¬çbñùHJ€b¨ÂTcÄy©ç¡DkœÖ”Œ"¿B€°zèNp”4zf+ØÛjSxX“=˜`&3À„$ dpfƒNöN…Ã[8&»À KXûçÙ8št°c Lqà¡ÖÄEÈŒ‘ LHÃJ¥0øHßim«u:ÐALÝèìÈ€{ÂÞ0šZìócš->þªé‡jØŽ¢˜Âúƒ”Ûö7uø_¾¶ªØ,Hó]å©'Ǧ«â0XFyqÖn»¶Wôø»ª®­«ãWTÀ›áý8á‰Ó%ï½É®½ªÂWŽHEhDžS‡˜öéÒx„¥—ØÆ¨Kn}•g§gÌýˆ|ØUmW ×ûrÝy¶ïwf÷ߦíÖpÇÝ©¿3« ýȶۗLnK§5ìTv½z’Þ€M°«ÓÓ Y€ýÕ f 4²N“4x:$I¹ílãŸî3eëí8ˆ Ý6þâùö*vöb÷§WIºnû׿ÆÕÃÖï»±»ªüwmC—“’ÅmI¥bø>’–Ûb;[ñ“]WÍíÚO[Ÿ¨t~7ÜJÒ3ÒéÉüwIËüôtÚ|Ø=“þ"rßè¡y`ß|ïÔÃÒ罩‰ÃÔõîs³R:Y·ÝèT·Jñ‡WËqàôØ\#Ým³èŽ˜³<ÑБ+)¾ºûð'¸;2÷I·HÀ·I,¸¨ßp"WXÍû ,¹٠ÿh¶9jVDŽOÏ›[d¿ÂNK€ËÚYÆd H„ ç\#µG%wA”¥!!‚7T¿þ´©ímXò¾|›XVÈù Ë7ÎÛ ¶jb˜ ,ÓÆ|ît?ܾÔ]…÷›rØt÷–æ÷7í¢ô!67ž|³•,©!Õ™—Ôš“îpç>±ûr£xü#2 fµ@Ü{‹ÆAx÷ç9Ÿ6ºÛî$áÍX ’L„¸ÝtèA÷ðÉÿÑÝímŠ}]œ~µî¦ùÊv×ût£½n'¾&hÂ_ªBl†ª¬b7ÑÛ“q°ÿ×@èêmtÛah›•_÷«‹öêd÷µû“+ÛU£$ןøz}^ízsð/“`Sg[¢w?ý³ zѵÛÍ£-5wHèY)þšJñRÒ/ûé×,/ýÞ×›’Qcºsÿ—Ž¡¬OììëI;Ø=õP;¿ø¢†BHpßH»|»Žÿ>Ü߃ÐÅÑ‚u²ä…ïsœïÚzáù ã¢]˜žàlºjm»ëùéñísÅ©íbqÖPy»/˜Ò,/çÂ5ÛGœ? X@ÛM6Þ,åC𱿮šxî×ýù8÷Ý•?÷aFpù™r]Œ¯ì=¿‘bðþö§§àë´€µÚé6Õí­ ’æôØ;vã'ôù mjëg K̬s¼/ËâÔ®7۽߻¯õ¦í7Õ(§Ì;Ä3XÎȘ\“yÉæ¹á/ãoùõ·Ô† ÿ½Ý ö3”CÙü7Lk|:ÖÆ¯t[ääÞoH?ÙýÏú4h¶UÓw?·ëounbñòNè+NÛŸç Å‹õ8ª%Þ‘zHê%éW¼û’c­‰Ã$+›•ïþvýŒ¥íL[”='õœMwºóÍz€¹ÎÙg) 8³×ë‘)¿¥Ï(ÊÌJSŽwâkúLö™Þ­‡pî/» ˜Ó|غu5 1§—¶»Øh`£Sö”%=ÅÖí?žâ)/ê|6~’ýÄÅq(Üy~põÓØ3Û ÅËâUçi•«[ßÁ_×krìâû‹óª ç>€Bû~Ìü]sÓÀ¶+Æ9دò‘¥ö[ 4Y É'³Š“Uð.Ø,âd³c9ø™ö–,ÜpÂVŒîŠg?ÉbÍÌ ”%k5ã&YªÉRMöš,ÕðßLªÉRM>¤˜5š¬Ñ@Oœf&k4š­(á9ê™ö–¬Ñ0FWZÈ´|v”,ÒÌBÙQ²H“Ýdq7É"Möš,ÒÌgËI¦_x¯³Ï™o™^¿áçøìžLº(\HëJûÏ|çMó-›i3†Ç‰á¤9Évq£åê%³MùiéÔIç+gRrDEYD‚ޏ.²˜  ÷V'œ3àLJ»iú$€¹ô6„ª¿üÅUmµíû][ž|§C/ü0þÃ× ¿x÷òáL £(ºÄU pÙ1‘–´`Ü`̦o^¸û0EÙv…¿ŒþÇb»™ÒJrÄ%=\oÚ¸Û û]ׯ HJìí†ÊWÛÌ\P5¡ºªÂÖÖ f· túNÀWݪxk›æZH^¼Ùƺš)øe)_ˆ€dû&bvÙÌ•›;‘ù ”‰Eãhˆñ…’XÄ4ÓÈ)qÃ!¹¥ZFñ¨|ÿâû9ý׋Ó÷?¾øöuñæý‡³ï>¾x»|†»;ÂÙl‚ÂÞQ¤Ê ’!Ã1ATë(Mi$ Äæû÷˜§t<ü»jÚ»_Šv­™‚èϰšèÝsGv{ 1†J$&aòÍë¿’“oþz ¹º&)wð÷ÖBø½5D€î­!bêÞš]ÄùŸ[Û w7 $á(%+©\QI •ZßûLÛ¦ºùL+žð¢ñ¹¾-×ÑŽYµvÒ—æä}0ÁI4!Ô:$]IW„ #¸DQ–FGL˜ÂbQR‚ þÞHy5®F¢¾ºhú)VÞòØh©¦ˆNßeÚ†ëâM¬..(/Ó¢™{F&‘d¥ & 3E)ãøadúõBÌô냦5Q)¬ŠœGÄ™´È)¦p‚•ÊcåH\šƒG Í MEá3$žÙª)úx»ñ^5T`Dpq;gë¢Ù®cWù¢³Ã(ÿíƒo»ø÷·÷ŸÅåìBÆ2™÷Ì®¤¡„sB)7Œh&$ó?ûñƒý´ žwµ£… Ä{/‘#±DÜ2‡4ñ2–¥áÜ¿,£’Ñ™ÑÔpÉšlÿ Ù¦E3?÷ÏOÅVFR…Ç—¤4#ìA|þx±9ÇŠ š¬4º$¥DF¹€¸rY£âŒÈyI|ЋB`ð(¡™¡É ‰yh¾³}?naˆŸààL‹gxî?øÔ+ʵÖFKa¸äFÍкmCqÖÅ~ì2`„¦¥3A—$èx#HÛÄf˜íZ Å›÷²D»ç’¦Ž–l?´uå‹ ·lz›¯3ù€³#Szà†Œ)FqJî4ëd€Z¯ÿöæâïÉ;ŒRÉ‹ÝU ¸­ò œBc$çw@^/îi•KºadEâ„cIÅêP\"{!®á–*©Êˆ±qÎr‘”ˆI)!!,×€ þÞâšÚº¶³CòTÒëî<:91ƒðdPóm½õmfÒb9ŒÙçDÐà¦F2Æ8Q˜É®¦L½8 o—˜îê:°y 22Ìb’Ä 6ÈY‘SÄpKKBD\”—ƒGÈËÌKI™ÙWó—.ÚâûjèÚ‹Ø@¨9Q8³s¿{kV‚I¬´"”J¥|–ð¤^1Á£DTi‚xdiÌ=ò"D+(¦BáEá 0x„ðÌðdšk6#¡vqÜÐR5à€3-™¹¹_n²Q3¬µÅø³ä¦ÖFó¨8’œ;Äyé‘ã& ¸T&Ͳ‹ƒGÈÍÌMn”ˆLsÓÖ¾Ú®ÐL‹ebîu–¾ÒL ÍÃ\)¢Ÿç,]:ìLd1mâÆRä¨+Q ÞøÒyO]˜ ƒEænT3ªæ‡6€q™–Ê´Ü뼜É5J0¬¨T˜‹GâËu[Ÿ,ÆË±²C¦ %Æ¥Hk&'e‰lPI£HɼQ.+k '0³¬©g&ægí`ûÎÌ´`Ææ¾§åÊ`Í)ÅJ Éå³Å¦Ñ^(Ìr2JĽˆH+é‘0Úb/Kɲs€ÁcÄfŽ3±4ˆMÏË/ë¶«XÍLËehî5ÖÄjE5§šh¡”œ>×XSù(‹ˆZÏÒ!k¢B%#ØÏ0fvQh %434…HϨ™k›âUÕ~²sªt&è> JéJc¬…ÁL)%Ø3å§U2ª âÆ(ÄY©u:"Ê6Òqíí²â&ÀàQò3óÓ°™ óã˜ú·8½lëØ±kkAg*ÈÝïV$¶TaÍÖkó<·"î„¶*")Fœ–YJ$’R”œ:#-^6޳ð дp†çÞáIðJ+©8Ö nÈó\^g¾”V9… Çqrª,‘ ŽcÍK=^žƒGÏ O¢©¤HNÒómûâUlú1qÙÛjÓnºvˆUóÔ \e&í>I«ÈŠ‚…d˜ !0{– UXDf´AQ†ˆ8óY® Æ‚ ÇJóEA 0x” ÍS}-™äì›êâriÐŽu&i3i¥Y‰åøÊ´¦œn¸sÁînM]L ¢0–ÓwòµÝ:v7n;ˆS%….·“ZÓ€(Vñè#r¸äH UúRÅD¹(¨Ôù˜¿às‡°ÞÄu{Q·®jŠÄŸÜýçj¸Ù±U5·Y:¡ý ^o&ù>f±’RJ¹”\KIù³º“’Ò–Ú{D1ˆ;ç‘‘Î #¶„X刄’ölwnÊYˆ¹ûœL×q¼{ Ž‘…‡fB•Ò c6} ~Suí:ÝurÝ9€×òâZp¤­6ãk'´L«X.à¬z€“%žÙTò¶ÚTÖ$E&˜ÉÁ 0µèX<œÙ 3€ó¥ð–Ü-pV Ö>ÀÁ˜Î8ì˜Ç„bVŽÎIDÜ‘€œà%rœQi=c~6è´¶Õ:è ¦îtvdÀ=±rM-öù1Í?ÕôC5lG™ÏNaýAÊmû›:ü/_ÛÆUl–¤ù®òtý¶éª8 –Q^œµÛ®í}þ®ªkëêøå<6'çùq§KÞ{“]{U…/¯4ކïQ(‰EL3œ7×ÜR-£xôU~ÿâû9ý׋Ó÷?¾øöuñæý‡³ï>¾xûˆ<ÚUmW ×ûòæ›…°¾ß™}Ü¥›¶[Ã}y·Î6#±ö#înß;¹-Ö°Skw}è YØ=«iƒé ¬î$ ž zGm;Ûø§‚²õv&†nñ¿|{;{qó§¥ÄPyÛEpÛG_þž¶~xß}ˆÝU帺•žHŒ›dµû¡­æ»º(Û®ð—ÑÿXl7éº5ü®\@íIOHþ™YãÓ€™ ßbõÃî™ô‘ûFÍË{*àû* ž•Ö8ïMM&¯^ÆRŠ‘éÈ´íF¯º_?¼úÕ gOð zl¾‘.…/ºó–': r%Åœû@‡¦›‡ž¡fç±³æ–Ù»¶›fÁUN#9VØ!FF<ÐQaÑG¦¹Bƒ—q_ÚÔ¶¹ù”ïË—±‰eõ€Ò ²|ãÃÍ`«&†©ˆ mÌç¾÷ÃíKÝUx¿)7#TwO=ßβ ¯†ØÜxóÍz}RC*Á-)Ã%ÝáÎ}b÷åFñøGd@Ìj¸÷ÿ‚ðîR9mt·­À›±@Hh»8öA÷ðÉÿ•$RY"åßÃaqòjÝMò•í®÷éF{ÝN~M@¤—ê«›¡*«ØMôöd8ìÿ5ºzÝvÚfå×ýꢽ:Ù}íþäÊvÕ¨Vô'¾^ŸW»ÞœüËÔ©ÔÙ–hãÝOÿ¬5]tívóhKÍÝß#êbѾ¦ˆ¶”*6ªU³ª˜Y^»/$£Ætçþ ®ªAYŸØÙ Ö“vþ°{ê¡:v~1QLØH»|»Žÿ>Ü_žíâÇhÁGòÂ÷9Îwm½ð4Œñ Ñ®ÇFLÏs6]µ¶Ýõü4çö¹âÔv±8ëF(޼‰ÝLk–×áàbÛ#Ο, Ê%{–ò!øØ_WM<÷ëþ|€ÎûîÊŸû03qžq¥Ý묋ñ•‚½gOÂA–.ûÛšî>‡/Y–­¦ÛT·ÞŽÔIJï³ñúü†6µõ3¥óâ»æsÀU¼iûM5ØÞ5~¯ÚsFá(Ìúúñ#/#oï $‰þ{ªÛ¯2ƒÖ9~͸´Æ§³lü4·ENîý†ô;Ýÿ–O#e[5}×øs»N)ñðöÎ&/ï¼â´ýy"P¼XCYâ©‹¤n’~Å»/9ÖšxLrïal…ÙnPxNÚº´·¶³¿lº«ÐoÖÌaÎ>Ïì‹3{½Qò[zŠŒ®Õ_ÓS²§ôn=„sÙ]À\åÃÖ­«aˆ¡8½´ÝÅž в«,é*¶nÿñWyQÿ«àóq”ì(.ŽCÐàÎCðƒ«Ÿ´œÙn(^¯â8«\ýÛ:þº^“cß_œWM8÷²øØ÷cNÅïš›¶]1N³~•,­Á°Ô`²“÷±e¡æ5ЈY¦É2 ÁlÅXx¦½%‹4œ°UóR?ÉÍü ”% 4ÙM–w“,Ïd¯ÉòÌüªt+aú…÷;áœù–éý,»~~KÈîɤ‹Âe‡´®´ÿÌwÞôÔÚ²å6ctœNš“¬:.Vœë]Móùié#uŸcƒ§læ*0©b<ÄmôÈ”’#Å”â‚H<ô®º»mé±:€¹4XÕ_þ"csmû~×–'§cè…Æx8“ÿ‹w/Óô»#)Kd/ƒKމà(©T '[’‰26±³u?Ùuuë:E[;¥ibØOéQâ´ÏÃëO{æRéÁ eÞuýª€d•ÙØn¨|µ±ÍL®ª ÕU¶¶^ð„çÓ÷›¼êVÅ‹Æïl÷¿ÿ—U’b×Ù¡•LÇÙBaƒ°šO›sÿéùB;½ù tn‡8"¡yNbÚ{¤Kã–^b£.¹}ÔÎNϘzùÃÏw<ãÙÙh­´i¥â²ÈFgQ‰gÊ),Yô‚$ÁßÛI?ói†£wÏÛÍÆP‰Äôec¯ÿJN¾ùë)$ácRîг=¢@¶Çˆ³Ùw/p¿U+c¸V‚`)(ôYÝoä©äQ{ްõq­rQDœÖŽkµÔ‹‚dð÷Ê«qAõÕEÓO¡òþ“ÇKÍ0¹ûóe®‹7±º¸ ¸L‹fbD’•&˜0Ì¥Œcý 2ýz!fúõA“sC} ©{Ä…âÈFOÀF1UÇ•XšƒG Í MEÅìUõg¶jŠ>^ÅnLFŒ Œ.®bçl]4Ûuì*_tvåà¿}ðmÿ^ â6ip PÎ.d,“yŸdf+)(fÄÉ•¡Ä<æöã÷ZèNû]m‡†hL-gZ!¬AÜàYZj ¶ÌjïLÀ‹"`ð(M — ©ùÀö¿àmZ4ãsÿøTle$Ux|IJ3ÂÄç‹s¬èÀ )céYŽ#â!8¤ÅÈ(¬% c…&ÀàQB3C“"$óÐ|gû~ÜÅ?ÁÁ™ß?<³ŽªW”k­–ÂpÉx„ž'kº@ǺŒ¡ŒYCæˆ3gÜ#£"G”âŠAØeµ€Á£dhf¨tü¼Ó ­Û6g]ìÇ.FhZ:tI‚Ž©"Û&6Ãl×ZðÞ¼—%Ò=—4u´t«DeûáæÒÝ ·ì{›¯3ù€3#SÚó•ÑXa¸á³dPëõßÞ\ü=y€Q*y±»J·”ShŒäü&ÈëÅ}"­rI— „®WT*C%æFðCñ‰dð9ˆÀ¦$LxIQ,Dœ³€Œ •%´,•%ž.Ø€ þÞ›úî~Ô鸦>Ú‹T)c&¹(~ö ðùp&-–㘽εZB¨PkŽ™|xb}qÞ.1ÜÕu`AM4åÄ)0.Ô#ÇË€˜¥²´˜r#—]ŽÓð дp†çÞáÉõŠA5¦sCéó„§bÎSì â+Äu Èx«S;Æ•´lYx !<3<‰¦’"9IÏ·í?ŠW±éÇÌeo«M»éÚ!VÍSƒRp•™´û$­Ð+a¤¦D*mŒRÏ´^é„·Èp+§\ #}@8XÌMôXr¹(h´yª¯2“œ}S]\. Ú±ÎÃ$m&­Ò+A×R(•äâY’–[Ãx)4ÂÌÄ½È K!¨2òÀµY”´ƒÇHÚÒr#ÌÌûw•ïZ[»íºjŠ»ãFÅ㛄0PÙ^áš×¬¨ZA¨V„IeÑõb9¸ZJ" KD$7ˆsê‘ ¥B†#˜*MÐaQ¶ ![3[3³yÕ_÷Cµ¶C Å·u»ŽÝ¶¶]ñMUÝÍ«±¡ˆ…Õ™I»WÒ²áR2BVi¢íÛ“uÕœü“¬;_Ó…Ò¥§Õ€]1p…¨ %â4D¤…Æ(êRKÁuÔÚ/ `€Á߀ûmwgà»{èè.´ R":³UÀYïÛ¢_·?ŽIÜ~Ûâû7ß}€òv¾ªŒÙ…1;ú½uué/øÜ9¬7qÝ^Ô­«šâñ'wÿ¹nölUÍm¦Nh?ƒ×›I¾×¶•”RÊ¥äZJÊŸÕ™Q[Ït`ˆ•±DG‰œ0 O´ Æ8á,”´g»›pSÎBÌÝçì˜dºŽãõ[@Œ,?4ª”f³éƒð›ªk×q讓;Îô˜©åwÍŠMìÊ1H g_ïÊqe#Np ôj;T±ùýPªõ~ÛÂ'W›®ZÛîúÃÎ݇nè­I÷wXSúÀBY"¥ƒ@ʪNûm=@ÃÀ-/€ ;Æ—hàæ@|HKàiÈ ¥Ígõäg´–(s&ç!¼ ðÔs€,b€V@39’òÌŒÏq±üT$ %à,q!–Ü!#œEœ™€4ñ°°ÌD+ÔòÀê¡89ÀQÒè™]`o«MàaMRô‚™Ì€ÒŸ@2YÀ™ Ï#8o àPîÇ+áíœe[àXÒáŽy)°Dô&&Ö"§BDA„@B šKðöŽÓÚVët ™º7ÐÙ‘÷V†ÑÔR`ŸÓüøsÐhñqðWM?TÃvVì֤ܶ¿©Ãï^ÛWÅv•§ž›®ŠÃ`åÅY»íÚ^ÑGà諸µ½¯¨¿³9ýÝž8Q2ÑÔÚ«*|éxE‘ŠÐˆ<§1í=Ò¥ñK/±Q—Ü>ú*ÏNϘé»Ûi{mW ×ûrÝ›eê¾ß™}Ü›¶[÷ßnFêTÍÅwMÙNœý¸Û7MvU$aë"—Ã;wÕ”ãï{oºIëáî^¶_páðüýÁ»%¤{0K¼¾nrßòlœüóvè7Ljü"ØÆØ•Öiƒé ,¢ƒ?AÕôÛÎ6þ韠l½­?/ü²‡µW±³7?qêð_ •·]·}ˆë_ã9aë‡÷݇Ø]U>.@àZ²¬&©T c<{ù·±‰­‹øÉ®«ævY¾-‹ÏwºM~=9ØJJœtÚ63÷_p27;mZçý7`Ø=•þ&rßìü²ž XÓ]j]î~ XKܰ‰Ãäuù¯MZóy=õVyÿðêWì±ñìP2ØîHøI¸×Ì×÷ M©X öÕ]ƒ?Á5è±¹Fº§m±}mpgyЏÿ"WR€Ýg&ø¹9:ðhv>jVDŽOÏ›[fúN~§ÑZHâ 2œbÄ-UÈ8Å–KbÓ‚C• ×Ÿ6µ½XÞ—/cËêån[51LÅœic>÷½n_ê®ÂûM¹‰yº»U•©­`IL2ÄæÆ›o6Þ%5¤Òü’ò|ÒîÜ'v_nDĬˆ{oÑø/ïþ<çÓFwû3A&¼‹™©v¹›)=è>ù¿sRe*W¦ü{x╾ZwÓ|e»ë}ºÑÆ^·_4—„/áU!6CUV±›èíÉpØÿk¯v½9ø—©Ö©³-ÑÆ»ŸþYƒ¾èÚíæÑ–š»¿GV²¸þ5Åõ¥ÔòTÅNÕr‚—WËïKQɨ1ݹªípÖ§vvƒõ¤?ìžz¨Ž_|QC!$¸o¤Ý¾]ÇîoÛèâÇháZúÂ÷7Îwm3Á~|cC´ë±“óœÝnêùiÎísÅ©íbqÖPy;°Ì¿”Ò —spþ4`YXö=¤EøØ_WM<÷ëþ|€ÎûîÊŸû03qžq¥Ý묋ñ•‚½'‹ã¿‘8Þß¾àôX|i¶¼=Ѧºõ7?(Í€²wìÆOèóÚÔÖÏ@—˜Yçx_–Å©]o¶=z¿v_ëMÛoªÁÖ¿¶Û䕎ŒÚÃBm^Êä}ä]~q/5aÃoCuû}fø>ÀùO˜ÖøtŽé¶Èɽß~±û_õi¨m«¦ïn×Gté¾ô&/ï$Æâ´ýy¦R¼Xãi⩃¤N’~Å»/9ÖšøK’FS¯æøî¥U¥>4ïÈc‹²ç¤ž³é®Bw¾Y0×9û,Bgöz="å·ôBèŠyç3$ûÌ×ô™Þ­‡pî/» ˜Ó|غu5 1§—¶»Øh@ƒSv”%ÅÖí?žâ(/êÌnò\ÜÄÅq Üy~põÓƒ˜3Û ÅËâUçv•«[×ÁÙk¾näâû‹óª ç>€û~Ìæü]sÓÀ¶+Æ Ø¯ò‘¥…!–EÅD¼'3ëâYY`ƒm–g²¯Îd—ÉêL:8eOÉòLö“¬Ïˆ>“½&ë3<ë3¿µ>“Ff'‹8àS®YÃÉf+–Cæoɺ 'lÅhZ<ûIkæ¡ì(Y«Én²¬›d©&{M–jæô$çT éÜ·Lnñßðó[GvO¦],A¤u¥ýg¾ó¦)‘–Í´£ãû†Óæ¤QË‘é6ñùVý´x⦇²%Áó8‰’`íL@’‡q&2Œ2„-+±Pe”–€ó8íÎS¦É› æ’ë+ªþò|Ö¶ïwmyò% ½ðÃø_üüâݡó4Œ*érwgtÈTdÒ‚qƒ1›¾*ãîÃeÛþ2ú‹ífj¿ØOÉQѤÓêMºä—QÀÓ—¿ëúUÉa¾±ÝPùjc›™ûª&TWUØÚzÁÜ”ÊÉ| ¯ºUñÖ6͵¼x³u/4ñ ÎŒOÏ~ÿéù„3;¹ù ”Fãhˆñ…’XÄ4ÓÈ)‘àDHn©–Q<êß¿øþã_NÿãõÇâôýÇ/¾}]¼yÿáì»/Þ.Ÿ_ï†`6+âJá‰@ G†xði¯5"¥QJDi¨ã06ß»s>¥3Ààá_.ÔÞýR´kÍD†Õ Dïž;²ë†ˆ1T"1 “o^ÿ•œ|ó×SÈ]CI¹C¿hú.šcdrÑPòxrÑÐ]ðùŸ[Û éUw§^ÕÊ(*$3FkÉc÷>Ó¶©n>ÓÇŠ'¼h|®oËu´cN¯;¥®ôÇ…9yLpRâ’*Ì­BÚG‰¸ÖÙ(%âŒK‹£’’ÛEI 0øû#åÕ¸.‰úê¢é§YyïÉ#£¥f˜":}ùl®‹7±º¸ ¼L‹fdî™D’•&˜0Ì¥Œcý 2ýz!fúõAÓÃ9×)‚1âØdˆ(Œ J…&È`†æBSQAøÌ–g¶jŠ>^Ån¼\\ÅÎÙºh¶ëØU¾èì0ªÂûàÛ.þ½@Åí…u1@9»±Læ}’™­”¢J*Ê0Q’2ò ˜ÿÙß맅輫í°M”&JœgqÁ2D 3"l‹"d0#úM — ©ùÀö¿àmZ4ãsÿøTle$Ux|IJ3ò°ðãÅ2ä+:01€Îvˆ”Ì!.q@Æb†!Áí¹dQh‚ fh!4™!B"1Íw¶ïÇÍ ñœiñ Ïý ©zE¹ÖÚh) —܈Gèy²¦Kt¬ëÐOC05R m=F\p‡Œ¢ #$v‚Sý¢ Ì =B† A5G|š¡uۆ⬋ýØeÀMKg‚.IÐñ:’¶‰Í0Ûµ–;š7ïe©tÏ%M-Ý8QÙ~hëÊnØþ6_gúgF¦$´W+A©ÒÜpe$½Û€– PëõßÞ\ü=y€Q*}±»Já7f„ShŒäü^ÈëÅ}"­rI— D¯1#µàëCñ‰dð9„ÀÆy‚µ.)’¥³ˆSgö¢èmÊyB[4°ü½6µumg‡ä©¤ÛÝ=xtzcáɨæÛzëÛÎ$ÅöÇdM­('„ ©0Š>¼<¼¾8 o—˜îê:°‰ rÆp‚#¢šSĵÈRÁ^IJTÂÛ°(/A3/Ž—’3³¯æ/]´Å÷Õе±R3-œÙ¹wvµ¢T´6Øpfø³„§&LcA%\SÄE0H *öÔʤ–nÙ•Á Ï£ƒ'Ó\³ í´‹ã†–ªœiÉÌÍ=¯>¬86˜k!±6B3ú,±I„W’b8)F˜AÆ{° žëÓqQl‚ fl6¹QR 2M[ûj»23-–¹O`š•ZkN!öLãL¹ŠV#îK‹x09,-â!reHô*êE 2Xd`á&A5#j~h—c©L˽Ò2¹‹Lk" '’RÌÙø\·õÉb¼+;4`zO‰!ªD&‚xĹè%âº,©ažS·¬ª 2˜yŒª¦ž™—Ÿµƒí{83Ó‚›ûÅ&_1£Œ’Úe §ò™R32e%VxĽ§È•Ž £/}äZ*·(5351ÌÄÒ 6=-¿¬Û® -3)—™¹ÿPó•¢DrE 3ñL¡IŒ¶ªä‰² ˆGeö’#” X³ñ²k@ ƒšGM!Ò3bfçÚ¦xUµŸ ìœ( º×µ ¶ÂŠ`Á¸áÔ0¡žkØÉ­3ΕI.â–(d™,Q4%£Ø8o‚Z”  ƒ™ GHPÃfÂÎcàâô²­c?Ä®­! © ct¿i~ØJC˜’DbÈ3]":Ú )ÂRhı²Èxæ4R¦J®Œ]¢ ƒ¢ÇQ¡ÒÓíª‹úÚÇqÞƒšÎðÜ;<™Zin°¤Œ0jŒÏž¥¥¶F"ËÊ€8¡Y=rØ2U™4‹Âd0ÃóèàI4•ÉIz¾mÿQ¼ŠM?&.{[mÚM×±jž”«Ì¤Ý'i…Z)N¸Â’N ¡Ï´œE½ˆ8["n©G® iQråµ$œ-+– fÐåT_ d&9û¦º¸\´c™´‡IZ¥WT+-¸`\3Lž%h£ ––Æ!FM‰¸fYáòœ–F«5׋‚`0ƒö#Zn„™Ùbÿ®ò]kk·]WMqwبøa|“Ä*ËlÝ+[ñJ3IŒÒL£){ ®˱õâÐÄì£!g–ˆs…‘Á¥F1Ê 5‘¶ å¢hÌh=:´2ff“ª¿î‡jm‡Šoëv»mm»â›ªº›W9R1B «3ƒvŸ ¥tÅ%Z3Ì5}ô|ýÛ“uÕœü“¬;_Óer¥§ÕZlK‚¤ŒßÌéâœbäŽÈyᢡÁÃ0ÀàïÀý¶»Š3ðÝ=tt·Y)Ù(à¬÷mѯÛÇ[$n¿mñý›ï>@y;_UÆì˜ýÞº:ž¶›î\°»[SÓ‚(Œåô|m·ŽÝ[ÄâTI჋”£4Pä%aˆ‘ã2"­s>RÌÒ‘2Ààñ:Ÿó|îÖ›¸n/êÖUMñ‚ø“»ÿ\ 7;¶ªæ6M'´ŸÁëÍ$ßëúÚJHJ)åRr-%åÏê~Lê —ÌQd–ˆ-‘4"®¦Â D€’ölwnÊYˆ¹ûœ3L×q¼{ ˆ‘å‡fB•Ò c6} ~Suí:ÝurÝ9€3µü®Y±‰]9)áìëÝAŽçî ï¢íÛæ‡»Ÿ–Œê³o€;o 7i¦ÆWMJd”ÔÈNÕ‚36v•ǺumSù¢uýÐmoàY¸®müe5T}ñ§Põmbwç‹'W¾×«áÜ Ã°F"zЏó™ ’‘9.çAà!2w°XŒÅôÉñm½nÛ]]¼´®ª«áVûS/ªu<.cg7×`ì€+Î$Ê$:)Ç4 O‚B<2,Ž%ŠJ‡ †x(‰¾[¯·Mõ?Ì,Açate½¯šxº$“vSÈò²êNú*œø«O`âx’Iß5e½ÍÿØ?ýÇÚúÏEÕŒ<•?›.Þ¬£û”]ŒP8Á-<Ò«íPÅæ÷C©Öûm7VŸ\mºjm»ë;wºm\ ·&ÝÞa9!B–a­,âÖ8d0- ¶,‰:Jpèðª²MÛ•¿½Ï7í´ «‡.]Q„±âS ÐÛ/g¤Ÿ·G+ýb FÓÌziûÊïâ`ÝÍ},g¶‰ ­}3•,eU§‹ý¶ áàŠÀmãK´pm >¤%ðä€lÒ€f€sú²³ÚK“9“ñÞxâ9@1@+ ‰œ9y&F§¸X~*’„àÇZçüÈ$çHy`‰L# ˜» _>ÀX=ô'8J=³ ìmµ©<¬IŠ@0“ƒPòH 8³áYÂá-É]àp%¼}€“l J:Ø1—œHÏ=xtÝ€12Ìĵ5¥PX2>5}ZÛjt S÷:;2àÞêÂ0šZ ì3cš->þªé‡j؎ŠÂúƒ”Ûö7uøÝkûj¢Ø®òÔ“cÓUq,£¼8k·]Û+úü]U×£¶÷õw6§¿ûqÂ'J&šZ{U…/¯4ކïQ(‰EL3œ N„ä–jÅ£¯òûßüËé¼þXœ¾ÿøñÅ·¯‹7ï?œ}÷ñÅÛG”Ï®j»j¸Þ—7߬\÷ýÎìã.Ý´ÝîËýv3‚¨j.¾kÊvz0íGæÝ¾|²«"‰d¹ŒÞß«¦ÿØ¡Ó}[ l¿àâùû„w«J÷ø–8,|)å¾åÙÐùçÐo˜ÔøE°½0°+®ÓÓ YW‡~‚ªé·müÓ?AÙz[^Cøek¯bg/n~âÔqÀ*o»nû׿ÆsÂÖï»±»ª|\€Àåÿ4ˆ`Ü`Ìfï&½›eÛþ2ú‹í&Ý1¿¦^{J˜¸+?3ý_p>7;sZgý7@Ø=•þ&rßìü ²¤ XÖ]jiîv XKܰ‰¿ŒjÓ+PhÒšÏKª·âû‡W¿šÿì1þƒêÀÜ ß$ ÷šùážA±”+¥¾ºoð'ø=6ßH÷µ-¶· î-O1w AäJ °ûÌD;7ÇÍÏGÍŠÈñéysËlDßI0ð+—‚>2Œ¤¢qk,2”DŒR8‰%' }ýiSÛææS¾/_Æ&–Õ« Ë7>Ü ¶jb˜ 2ÓÆ|î{?ܾÔ]…÷›rôtw++SÛÁ’ dˆÍ7ßl¾KjHåù%%ú¤;ܹOì¾Ü(ÿˆ ˆY-÷Þ¢ñ_ÞýQ*§îöh£Lx3‰2Sýr75zÐ=|òçäÊT²Lù÷ðL+}µî¦ùÊv×ût£½n'¾&hò_Æ«Bl†ª¬b7ÑÛ“á°ÿ×xèêmtÛah›•_÷«‹öêd÷µû“+ÛUcøÚŸøz}^ízsð/S®Sg[¢w?ý³}ѵÛÍ£-5w¬ÜߺÑÅÑÂ5³ô…ïoœïÚ:þf ýøÆ†h×c#&ç9»ÕóÓœÛçŠSÛÅ⬡8ò&v`])i®ß>àüiÀ²°Î{H«<𱿮šxî×ýù8÷Ý•?÷afâ<ãJ»×Yã+{Ïž„ƒ¬†÷·/4=J_Ά-iO´©n½©“f=Ù;fã'ôù mjëg KÉhÖŸ®âMÛoªÁÖ¿¶kä匌ӃÄi^ôÉ´=rÚîaÕ.5aÃoCuûMf˜>½ùÏ–ÖøtŽæ¶Èɽß~¥û_òixm«¦ïn×Gjéžó&/ï¤Ãâ´ýyR¼Xch⩃¤N’~Å»/9ÖšøK’"S¯æøî¥U¥>4ïÈc‹²ç¤ž³é®Bw¾Y0×9û,.göz="å·ôBèŠyç3$ûÌ×ô™Þ­‡pî/» ˜Ó|غu5 1§—¶»Øh@ƒSv”%ÅÖí?žâ(/êÌnò\ÜÄÅq Üy~põÓƒ˜3Û ÅËâUçs•«[×ÁÙk¾näâû‹óª ç>€û~ÌÔü]sÓÀ¶+ÆIׯò‘¥Å –…œ¥…œ¼Ù2ëßY‘ï–ÍšLÖd8a+&xÖd²&ó¥>c¤`£(3/Éd—É’L::eWÉ¢Lv”,ËŒ,“½&Ë2<Ë2(ËäsŽY»yÚ ô jVn²rC0[±¬ÖÌxKVkn>šÏ~’%šùA(;Jh²›,ë&YžÉ^“å™ù;ÉQÓÈ:÷-“Ëøw#üü.‘Ý“iËi]iÿ™ï¼iV£e)mÆè81œ6'™øeVänçæ|k~Z<çÒC‰Žà)˜.9/­G̳€x(#ÒF¤-“>pâ4eàL»c’iÞ%ˆ¹äö‰ª¿üÅýœµíû][ž|‡C/ü0þÃÃ÷6¿x÷òá £"ºÀÕÍp@z‰ãÑ)5ïW>tÅî’€g×õ«’‚|c»¡òÕÆ63×5TM¨®ª°µõÂi1¦R)¼êVÅ[Û4×BòâÍ6ֽР¹\1#¬óÙÕï?=Ÿ+f'-ŸXÒô…0}C0›#‰4‘×”"ΤEZRŠŒ`¼´eÉ£06ß»2>¥3Ààáß ÔÞýR´kÍD†Õ Dïž;²Û‚ˆ1T"1 “o^ÿ•œ|ó×SÈUAI¹C¿'úî šcdrOPòxrOÐ]ÐùŸ[Û w×6¤)Y)" ÊbÌ$!üÞgÚ6ÕÍgúãXñ„Ïõm¹ŽvLǵs§Ô•þ¸0'ïƒ NJ^z¯‚f¨: n G†h‚5Ñï,¡aQR þþHy5®G¢¾ºhúiVÞ{òÈh©¦ˆNßÛ†ëâM¬..(/Ó¢™ûF¦$+M0a˜)JÇúAdúõBÌôëƒ&¡¾,ci‘’^!î±C†rƒœ‘ÆZ[báé¢ÐÌÐj¶(5A35ŽšÜ()™¦¦­}µ]C™˼ÜœI'FPM0æÊ<Ó8³ŒeI CÆ88W™`=Šª‘Q.9Õ‹d°ÈÄ<Â=‚jFÓüÐ0/ÓR—{Å%Ó+Ê©QŠH¦4§êa\®Ûúd1^Ž•01uRË‘²\ ND@Æ‹$ ŽùH©_xd0óUM=3/?kÛ÷pf¦36÷‹M¾œ1´äZlÌ3¥fiƒTJj$uˆ3‘Ú#˜eØZME\”šƒ™šÇfbi›ž—_ÖmW–™–ËÌÜÿÌœ­¸ÆF1¦5c\‹g M&(åÊ$¤.8"£°@Ú•JGœô˪™ ƒšGM!Ò3jfçÚ¦xUµŸ ìœ( º×µ µ¢„K­6ZÉž+A½žø P,©E\¬Q )¯¢+£'ܘE 2˜ z„5l&ìü8æþ-N/Û:öCìÚÂЙ 2F÷ˆµ¢BcÃ4&œ .žç‘öØ«Ò"&™?©EN3Ž˜7X© £¦jQˆ‚ fˆD…"HOC´«.êkÇyxhZ8Ãsïð¤rE”T”He˜àüY²Sp!œÇ•1hÄEé‘uÂ"µ`ŽêhžÂƒ fv;‰¦’"9 Ï·í?ŠW±éǬeo«M»éÚ!VÍÓcR@•´û—KÉŠ")ÆÊB˜~–¤J—eéJD‰§ˆ3¢3„¡ÒDk”6±nQÒ fÒåT_ d&Aû¦º¸\š´cµ‡‰Z…W’B ÓBrFÌóÔ3„+‹Hq­#2„sTR\ú¨ˆtÙ˜`0“öcZn„™Ùdÿ®ò]kk·]WMqwÚ¨øa|“Æ*ËpÝ뢕+e”a -¥Æ*ËÁõÐòO:)±óÒ#L¼AœG†,¡9-©t†•šÈEÙ 2˜ÙztleÌÌ&UÝÕÚ1ßÖí:vÛÚvÅ7U=t7¯rÄb„"Vg&í^I‹W̨–FbÉ9{˜´oOÖUsòO²Rì|MÊ–žV{XöTñÒ‚èøy¹u iæ ’šÙè57”•‹`ð÷Gà~Û]Åúî:ºë,ˆ”ˆÎìpÖû¶è×íã5·ß¶øþÍw À¯*svaÎŽ~o]OÛÆÇÍw.Øå­©‹iAÆrúR¾¶[ÇîÆ-bqª¤ð¡-­…RRiKä QˆSæ‘Ú#M‚'ŽiW:º(¨AÔù¬¿às±ÞÄu{Q·®jŠÄŸÜýçj¸Ù´U5·‰:¡ý Ro&ùþ#f±’RJ¹”\KIŸ×™¾t’SGQI‰F¼¤Yo²†áȼ¥˜s(iÏvᦜ…˜»ÏÙ1ÇtÇË·€Y~h&T)Í0fÓ'á7U×®ãÐ]'÷è1SËؕcξÞ%äxîò.Ú¾m~¸ûiɨ>û¸óÖpÑfj|Õ¤DFIŒàDP-8ccWyü¬[×6•/Z×Ýöž…ëÚÆ_VCÕ Ußv!vw^±xzå{½㔎ÔK¤äèX3d8Ñ í½As‡„ ÈÜÁBF`M0ӇǷõºmlw]tñÒºª®†[ îO]¼¨Öñd¸ŒÝ\ƒ±®8“(“èHD™wÄ+‚ Òx.r@Vi@3ÀÉ}iZm€¥ËœÉ|o< — ЄN€Ü<€F¤ÀS],?IB øÁ$)qDQQ‰¸ðie5ÒÛh9g‚¹å€ÕCpr€£¤Ñ3{ÁÞV›*ÀÚ¤è39˜%Aä³€3žMp0ÞÀÙÜNYÂÛ8ѶÀᤃóJ¬½r\ 2†x iE#RFòÒÒ2 ^8­mµN:©{po–?Œ¦–û̘æÇŸƒF‹ƒ¿jú¡¶£(f§°þ å¶ýMþ—¯mc‡*6 Ò|Wyêɱéª8 –Q^œµÛ®í}þ®ªkëêø06'Âûq§KÞ{“]{U…/¯4ކïQ(‰EL3œ N„ä–jÅ£¯òûßüËé¼þXœ¾ÿøñÅ·¯‹7ï?œ}÷ñÅÛGÅ®j»j¸Þ—7ß(¶}¿3û¸K7m·†ûòNžYéGÜݾwr[:­a·Æ²ëè@í£€]œ6˜.Ð`Èšì¯n0[ Á¥›¤ÁÓQúÏmgÿtŸ)[oÇqmè¶ñÿË·W±³»Ÿ8½pÒEpÛ‡¸þ5®¶~xß}ˆÝU帺”&¿ŒŒÙìUܯws€¢l»Â_Fÿc±Ý¤+Bð[¹µ'=!™¡ÌLs›·ÌÌP Ë‡Ý3é/"÷Ž—·nÁ·oÁ=+­qÞ›š8LÞûOµZa“ޤÛntª[±øÃ«8w zl®‘n¸YlÓ ÜYžbî?‚È•_Ý}ø܇™û¤»$à;% ÔÜo #+ÅÀ~3ÑÜì‡<çœY9>=on™- ;9~S¥ò¥·Ê (…D”¶3mQöœÔs6ÝUèÎ7ëæ:gŸ§øÅ™½^Lù-}FhjVRQ¼ûÙg¾¦Ïôn=„sÙ]ÀœæÃÖ­«aˆ¡8½´ÝÅž@²§,é)¶nÿñOyQÿ«`ö“gã'.ŽCÑàÎCðƒ«ŸÆœÙn(^¯â87«\ýÛúÎ^óucß_œWM8÷ºøØ÷c àïš›¶]1λ~•,-ʰ,Êž(“7Dfåæ(7ð­Y¸É f+ÆrÀ“Åši?á„­ÝÏ~’šùA(;JÖg²›dyæ0ä™ì5Yžá{•g²<“æ5Y—ŸͺLÖe´\1.s¨“…™™…n.VLó´|v”¬ÌÌCÙQ²2“Ýdq7ÉÊLöš¬Ì̧»IN}¦_x¿Sιo™\ô¾áçOïìžL»(XtHëJûÏ|çM -›Óh3†Ç÷ §ÍI#Ö+¦îš3Û˜ŸÏ~ô`Ê!x2$©EY2ãq)$²JiDM RPo™,ÁÉvÓ HsÉUù‹ ×jÛ÷»¶<ùf†^øaü‡‡¯~ñîåÃÉF-t j#à¨ò•ShÞ¯|D9é‰ ÜPÏiý®ëW$±õÆvCå«mf.¨šP]Uakë…TL%5xÕ­Š·¶i®…äÅ›m¬{¡˜ƒ_’µÅ ,çsvßz>kËN[>;°TÜ aú†`6cI(ñãoTÁ ¨B–Šˆ—\K¥Ææ{·‘§t<ügÚ»_Šv­™‚èϰšèÝsGv 1†J$&aòÍë¿’“oþz ¹€&)wè·ÏBÀí3sŒLnŸIOnŸ¹‹9ÿsk›áî2€4:f+# ¥TÆ©¢’ÝûLÛ¦ºùL+žð¢ñ¹¾-×ÑŽ‰±vÒæä}0ÁI)—¦TyÊJÄqPH{AÇ^;"¢Ü/JJ€Áß)¯ÆIÔWM?ÍÊ{O-5ÃÑéIÛp]¼‰ÕÅååeZ4#sßÈ”d¥ & 3E)ãX?ˆL¿^ˆ™~}`Ðô–#F>Z‹¸‰i=â¥(©q%V‘. MÁ Í#„¦¢‚ð™kÏlÕ}¼ŠÝx;*0"¸¸Š³uÑl×±«|ÑÙaƒÿöÁ·]ü{ŠÛ[Ìb€rv!c™Ìû$3^IÂa‚p!‰Q„?Hæöãûi!<ïj;,FSfL(EDÌꈸ³YŲΠ&BI—‹2d03úM — ©ùÈö¿à‘mZ4ósÿüT£@_’ÒŒ<¬üx± 9ÇŠ šXÃHKÇœ!ÕAÒÇ” Gµ(4A34šÌ!‘˜‡æ;Û÷ã&†ø δx†çÞáIõŠr­µÑR.¹ÐódMèX×a1Ô(êbЕŒpÄu¤H“`QɳT–Ôùe 2˜z„ ‚jŽø4Cë¶ ÅYû±Ë€š–Î]’ ã¥m›a¶k-woÞËRížKš:Zºs¢²ýÐÖ•/&ܰím¾ÎäÎŒLÉè¤åJ¥V‚3L˜ÙU” PëõßÞ\ü=y€Q*}±»JáN„ShŒäüÈëÅ}"­rI— „®°a‚0£5!FŠK$cÏ!Ä5–iKœdÈÅ@'Ö!#AÑ;¥‚Ô>êeWŠAoqMm]ÛÙ!y*éuwœÆ˜Ax2¨ù¶Þú¶E3I±½‡1YEã+¥)%ÜHe0%ôÁyàúâ$¼]d¸«ëÀ´4Æ­$ +Jƒ8u9)5ÂBzq%‹òd0óòèx)©13ûjþÒE[|_ ]{(5Ó™{g'+-%Ñœ`i0¥Ò‰iV’¦•œK†–ÀôZZÊ5FT‚¸+²’¤´Ã†”Ø–Z/ LÁ"ó7 ªUóC€¸LJeZîý˜ ZiʰÄB0ÎÉ#Óòu[Ÿ,†Ë±²Cã%ÁƉÒpÄŽˆk‘cÜ Sm˜S¹(/A3/QÕÔ3óò³v°}EfZ0Ssÿ³rƒ‰¤ŠsŘú™Bcî­ö•LHÄ­ãȲX"G Ô•Ž—fQh fhc‰¥AlzR~Y·]@RfR.#sÿ&æ+)4SZI*5ü™B“a„Žåâ,ä,(JËJ嘣vÙ™9È`†æBSHôŒ”Ù¹¶)^Uí'(;'Jg‚î“ T®¨¡R+¢¤1Bóçvz‰i)xD%q")2Fc$<4xeñÂa'È`&èÔ°™°óã˜û·8½lëØ±kkCg*ÈÝk ªùJ+*81œK&õ³\R %G^[8á™’G$4)µÚ+µ,CA3C¡B¤§ÚUõµã4¼ó3-œÙ¹wv¼Â‚bB•T\NŸ%n¸sÁ.oM]L ¢0–Ó—òµÝ:v7n;ˆS%…-TR8/ŠÚŒÜdiŒÒVZ]zç(.5Èàñ:Ÿó|îÖ›¸n/êÖUMñ‚ø“»ÿ\ 7{¶ªæ6M'´ŸAêÍ$ßÄ,VBRJ)—’k))Vd*¹ðL ˆ¥CS4æ ”¤’b ”´g»‹pSÎBÌÝçì˜aºŽãå[@Œ,?4ª”f³écð›ªk×q讓ûÎô˜©åwÍŠMìÊ1H g_ïr¢(vUÛUÃõ¾¼ùF±íûÙÇ]ºi»5Ü—w‚ðÌÂH?âîö½“ÛÒi »5–]GŸ:hìzä´ÁtCÖduƒÙ †,Ý$ žŽÒGxn;Ûø§ûLÙz;ŽkC·¿ø_¾½Š½ØýÄé…“.‚Û>Äõ¯qõ°õÃûîCì®*¿ÀýÛЦ4÷…`Ü`Ìf/â~½›eÛþ2ú‹í&]‚ßÉ ¨=é É ef𻨼ef†º]>ìžI¹oôp¼ ¸u ¾} îYióÞÔÄaòŠw*˜Xq•¥Ûnôª[µøÃ«@÷ zl¾‘î¸Yl× Ü[žbî@‚È•_Ý}ø܇™û¤Û$à[%" ÔÜoS+Á~3ÒÜlˆôd#5+"ǧçÍ-³ga§'À¥ Í\°ž!0GK‹L)ò—BÒz N ÷úÓ¦¶ÍÍW|_¾ŒM,«$}åçm[51LE’ic>wºn_ê®ÂûM¹‰lº{Ëó{œvaù›O¾ÙN–ÔjÍKêÍIw¸sŸØ}¹Q<þ³Z î½Eã¿ ¼û£TNÝmù†’ðf,J¦bÜnþó {øäÿÎho©þ6Á¾.N¿ZwÓ|e»ë}ºÑÆ^·_4C„¯IU!6CUV±›èíÉ8Øÿk tõ6ºí0´ÍʯûÕE{u²ûÚýÉ•íªQ–ëO|½>¯v½9ø—ɰ©³-ÑÆ»ŸþYT½èÚíæÑ–š»¿Gdô¬Mµx)ùw”egå_²¼ü{_`JFéÎýP>†³>µ³¬'íüa÷ÔCuìüâ‹ !Á}#ívðí:þ{øpB?F ÆÒ¾¿q¾kë¥æ/p`Œolˆv=6bz‚³éªµí®ç§Ç·Ï§¶‹ÅY7BqäMì¾`J³¼~ iuþ$`917Ù|³”ÁÇþºjâ¹_÷çãtÞwWþ܇Áå gÊu1¾R°÷ìI1È’wûBÓ“ ðµYØúìD›êöVIóxì³ñúü†6µõ3¥óâ»æsÀU¼iûM5ØÞ5~¯k…Ë£0¯Ëdä=òö°°–±á¿·;%~­süšÿpiOgÙøin‹œÜû éwºÿ-ŸFʶjú®ñçvRâá}ÌM,^Þ)xÅiûóD x±‡²Ä=RIÝ$ýŠw_r¬5ñ˜äjFÕ žT0ë9iëÒvÜÚÎþ²é®Bw¾Y0‡9û<³/ÎìõzDÉoé)cªWLÉì*_ÓUz·¹¿ì.`¾òaëÖÕ0ÄPœ^ÚîbOTŽEÙU–t[·ÿxŠ«¼¨ÿU0;ÊóqÇ1hpç!øÁÕOZÎl7/‹Wqœ‹U®þmg¯ùºA‹ï/Ϋ&œûŠY|ìû1çïwÍMÛ®çY¿ÊG–aXaN„É ³Ró ”øÖ¬Ód†`¶b,ÚNL³AÌ%Týå/nW«mßïÚòäkzá‡ñ¾ÿ÷Å»—'6uÐånO(©Î*©T 'òZrNlbgë"~²ëêÖuж,v:Ó„ÔøSšÚ-íôàú“®¹Àõð„Öïº~U@²Zol7T¾ÚØf怪 ÕU¶¶^09…çÓ·¢¿êVÅ‹Æïl÷¿ÿ—U’b×Ù¡•ŒÇ/ËÛB$m÷ø4»÷tú’ïÔæ3P:âˆT„Fä9uˆiï‘.GXz‰mŒºäöQ?8;=cFèÅsÒÝñŽgÎuÔÖEdKÍ^ ã¥GÌ•$º@”+ Ï÷nO 0xø7Ì´w¿íZ3ÅÑŸù4ÃÑ»çŽìÎb •HLòã›×%'ßüõráLRîào›D?ðÛfÝ6CØÔm3»¸ó?·¶ªáúñl›+ÙÀš J4ÅŠÝûLÛ¦ºùL+žð¢ñ¹¾-×ÑŽy°vÒæä}0ÁII( Ø‹Õ q%K¤µñ(P¬wÞ” “`ð÷GÊ«q=õÕEÓO³òÞ“GFKÍ0EtúÒ6\obuq9@y™ÍÈÜ72%Yi‚ ÃLQÊ8Ö"Ó¯b¦_4QÒÆ‘‹Î î,AVŒT(ËRàK…&È`†æBSQAøÌµ†g¶jŠ>^Ån¼ \\ÅÎÙºh¶ëØU¾èì0 ÂûàÛ.þ½@Åí­e1@9»±Læ}’™­¨d”(ÅÒT™‡cÙöã÷úi!:ïj;,DSåh 1 èGœj‹œˆQêB¤´$6ÊE 2˜}„ˆ¦†K†Ô|`û_ðÀ6-šñ¹|*¶2’*<¾$¥yŸ?^,Cα¢Ã‚f –Ql5‘[Äy´Èªh‘$cJ#±Â- MÁ Í#„&3DH$æ¡ùÎöý¸!~‚ƒ3-žá¹wxR½¢\km´†KnÄ#ô‘ >‡ØÁ™5£€™Aœ‰ˆ´‘ •Ò[b¢–XŠEÁß[`S[×vvHžJºÝ݃G§§1fžŒj¾­·¾íAáLRlßqLž ±bRiN¸$Zúðòðúâ$¼]b"¸«ëÐV b©°”a(âAP丰ˆà€‰‘ÊI­å%È`æåÑñRRcföÕü¥‹¶ø¾ºö"6Pj¦…3;÷ÎN¢VÒa“RaC)–ðôÌ0Ë$F\ZޏicÒ6Á¼â/l‚ fx<™æšÍhh§]7´T 8àLKfnî™›+Í”âšjF0Ó„?Ï S•\Í52BQÄ…QH{E‘ÀŽ[miä‘/ÊMÁÌÍ£ã&7J D¦¹ik_m×@h¦Å21÷IL½’ÒpC¤Ö„(¡ž'0‰ ’3µ’"^Š4+ ’ÊF¬¥–E 2Xd`á.A5£j~h—I©LË}Ç—L­„á˜2MåøZ®Ûúd1\Ž•/­äž(ﳊ!^R†l$•—„‰Ò—:,ÊKÁÌËcT5õ̼ü¬lßÑ™ÌÔÜ/5ùJH)’k#0y®Ô䑊#G˜iŒ¸–Ù ¢Ú+™4’ÊE© 0˜©yŒQ&–±éYùeÝvUi™I¹ÌÌýGšX­¨6Bi.g”Šg Í XÔA`„­ñˆ3-u8 B4ñeTÞ‘eµLÁ Í#„¦é-³smS¼ªÚOPvN”ÎÝ'A©\qNŒ 3F”ÑÏ– 4’à5G–z…8‘9iòFš²,y$Ò-KPˆÁLÐ#$¨a3açÇ1pqzÙÖ±b×Ö†ÎT1ºß­HdE„6B1I… êy®¨§-%%"ž{Ä£S·ybdPG¤’Š#î„G\8ŽìØã„"˜[e±f|QPƒ ¨ó9ÁçŽa½‰ëö¢n]Õ/ˆ?¹ûÏÕp³e«jnótBû¤ÞLòýGÌb%$¥”r)¹–’òguA¦£¥DZ¤l¤ˆsn‹Ä¢¨pÔDh¬18$>Û]„›rbî>gÇÓu/ßbdù¡™P¥4ØMƒßT]»ŽCw\q ÇL-¿kVlbWŽAJ8ûz7Žc=sãxmß6?Üý´dTŸ}Üyk¸áH35¾jR"£¤FFp"¨œ±±«<~Ò­k›Ê­ë‡n{ÏÂumã/«¡ê‹?…ªo»»;¯X<»ò½^ ‡LÉBT’id©öˆk«¶%FÊ–Æ1ÂõtAÈ€Ì,dÖc1}t|[¯ÛÆv×E/­«êj¸•àþÔÅ‹jO†ËØÙÍ5;àŠ3‰2‰Ž€D˜9…1-‘£–#NyDƉñ?K‚Uàž°%ùC%g˜6§E¼‹¡òŸõÿèÛÆWuuóŸO~À•f} ýö½VEf•pÍ<âÔz¤u ÈSË-SÔ;–ƒ^Uö¢iû¡ò··ú¦dõÐ5¡+Š0V|JzûâåŒþóöhõAŒÁ3yË^Ú¾òÅ»8Xws+Ë™m"l‡ß|% *K;]ì·õ½îì_  €Ëyð!-g"ä”4œØ¢ÐX®Ì™´‡ð&ÀÓÏ2‰ZMçÈÌh0= <ÑÅòó‘$”€§i%¼ÔkDÊ2 Žq@†a…l)Kë8 Ƹå€ÕCpr€£¤Ñ3{ÁÞV›*ÀÚ¤è39˜¥@d³€3žLp.ÞÀÉÜÎXÂÛ8жÀÙ¤ƒó¨·NJ×Þ"^Ьó1DäBPçÀ©vOk[­ÓdêÞ@gGÜö†ÑÔR`ŸÓüøsÐhñqðWM?TÃvÅì֤ܶ¿©ÃÿòµmìPÅfAšï*O=96]‡Á2Ê‹³vÛµ½¢ÀßUum]¿¢&ØŒïÇ Oœ.yïMvíU¾t¼"ŽHEhDžS‡˜öéÒx„¥—ØÆ¨Kn}•g§gÌýˆ|ØUmW ×ûrÝy¶ïwf÷ߦíÖpÇÝ©¿3« ýȶۗLnK§5ìTv½z‚Þ M°ËÓÓ Y€ýÕ f 4²N“4x:$I¹ílãŸî3eëí8ˆ Ý6þâùö*vöb÷§WIºnû׿ÆÕÃÖï»±»ªü·mC—“’ÅmI¥bø>’–Ûb;[ñ“]WÍíÚO[Ÿ¨t~7ÜJÚ3’éÉÌw±IËÌôtÚ|Ø=“þ"rßèáxpß|ïÜÃÒ罩‰ÃäïXs¶â:Z·ÝèU·Rñ‡W €îôØ|#Ýn³Ø–¸·<ÅÜ‘+)¾ºûð'¸;2÷I÷HÀ÷I,D°¸ß`³¢ ì73!ÎÍnøÇΙ‘ãÓóæ–Ù°°Àº†1ŠqʲFQÄ™ÔÈòhñk«¸s¼Ùñõ§Mmoã’÷åËØÄ²z@ÏY¾qÞf°UÃTd™6æs§ûáö¥î*¼ß”›È¦»·F0¿Ái¦±¹ñ䛽dI ©Ð¼¤Øœt‡;÷‰`þ2þ³Z î½Eã¿ ¼ûóœOÝí÷†’ðf,J¦JÜn>ô {øäÿÎo©ø6Á¾.N¿ZwÓ|e»ë}ºÑÆ^·_4c„/HU!6CUV±›èíÉ8Øÿk tõ6ºí0´ÍʯûÕE{u²ûÚýÉ•íªQ“ëO|½>¯v½9ø—i°©³-ÑÆ»ŸþYQ½èÚíæÑ–š»¿G4ô,M©x)í—}‰öK–×~ï Nɨ1ݹjÇpÖ§vvƒõ¤?ìžz¨Ž_|QC!$¸o¤Ý¾]ÇîoBèâÇháBYúÂ÷7Îwm½ÔüŒñ Ñ®ÇFLOp6]µ¶Ýõüôøö¹âÔv±8ëF(޼‰ÝLi–×s¡¢í£ÎŸ, î&;o–ò!øØ_WM<÷ëþ|€ÎûîÊŸû0#¸|áL¹.ÆW öž,ÿFxû‚Óc ð…ZØbíD›êöVI“zì»ñúü†6µõ3Ð%fÖ9Þ—eqj×›mÞo‡Ý×zÓö›j”Sæ♬gdL.ɼf“ñwüøÛï\jĆÿÞîûÌαlþ#¦5>kãgº-rrï7¤ßìþw}5Ûªé»ÆŸÛuJŒ‡7;7±xy§ô§íφâÅzÖ÷H]$u“ô+Þ}ɱÖÄc’ Dê•42©`ÖsÒÖ¥í¸µýeÓ]…î|³`söY(ÎìõzDÉoé)Z*¾RšgOùšžÒ»õÎýews•[·®†!†âôÒv{‚ p(Ê®²¤«ØºýÇS\åEý¯‚ÙQž£¸8Aƒ;Á®~zÐrf»¡xY¼Šã´¬rõoë<8{Í×Y|q^5áÜPÈâcßy¿knØvÅ8åúU>²´òóÛê1yŸdm²hßôš%›,ÙÌVŒåà' 6Ó~ [1º+žý$Ë5óƒPv”,Öd7ÉRÍaH5Ùk²TóTóÛI5ùLbÖh²F>`š5š¬Ñ•y¯Äœ»d‘«¿;Kž%«4 a(;JVi²›,í&Y¥É^“Ušùì8É!Ñô ïwú9÷-“[áw#üüžÝ“i i]iÿ™ï¼i>¢eS mÆðø¾á´9ic 7b%ˆùùoWå|«~Z¾x»xr¿;PÀÇ&æ•.pdŒÓˆSÅãŽ#Y¤ž_\Ð6á&QJ:6ÌÝŒ>U3®j}ØQûÉ?µûhgÿñXî ¬}ïÆ¡Í>L[€Áÿ­½û¥hך©àãj\ÛE}uÑô“áǽ'í¦4ÍAd’uïG$ q½‰¶]„’--ÿ8–^™6ϲôÊ´äñäÊ´;íã?·¶î.µI„¦VBKɉŠ*Îï}¬mS 7tŠc¯rªñɾ-×ÑŽùwÞ•xÖXÓÒê}ZÁe/´òL#âx@ÜRŽœÁ%2\â°äšŠ…îØ‚˜Ê‰SÿŽ­åçäižÕ‰’÷Þä!LQŸÅµ[áöÖ¿ª‡¦«Lk\ ™xï¥PùR¨T.† Æðå¡ù —O¶–O˜vÉã»ê £. k Pû3¼&…„mt¹ÒSÄŽÈbçÅ]i¼þ:פ€,çkR~ÓkR(•‡pM ¥2_“²7Êפ|É4:_“’gûËMßÇiõü5)ËLßášJåA\“ Áñ_“B©\þš”|MÊQj63³á@ê ÉóËœ³üùu<8Œ¤Ñøj³ãÁÜÖá¿—=Þ‰“ïÄÉ'Ö³8‘_./™üžN¤Óy×ÿ®Yþv›,áfdî™YèÎ0=~˜>ùÈZ>²–¬á>þCj^• ¬‘5#.A:*†‚ŠÁZl9cdÁCjs‡rHíõ»×?ú)557Ó¹CjëØ]ŒZÜ}"𵙊Žñ€Z> 6¿ë> FvOÓ{O§¯7Ú oÉ5•: H‰¸òi]D- ÖK¦¡Pú~·^o›ê9²8·Š?Ž…ÞWM<]rÿûŽÑåeÕôU8ñWŸ&NþðÑE§¢Ä²ÞÆæ쟋þ朤­ÿ\TÍH¢1þs±éâçÝÉW±(»Ú)ÿk-ü”.¯Ì^z@€ð ¡Öއ"ôxÏn âÃÎÝGwÞštp‡ÅÊYZb¸ñ qæ ²‘pD´“”*8ã mF˜:âåé¼}ão²š–̛ѓÍèýv³i»¡j.¾kÊöP‹àý}œ¤të¨îÚ2­GŒàJæqÐz. êÊ{ðu~:†O‡¡b×lu˯Ý⳯¾vóoÝÿ@6àÃç€ùÅbs ¸Ÿ-` zC<Ç+Ašë³:`ÑF м qíÒ ¤8 ›(™_çÈr>ä#ûr£|à‹Ä‹| k,‹‰&ôKD²¬h’Ì7@‚| È»Â÷ ôå-ŽY“‚îa„/Y–-~§{ç•£¿Œ_g¸åç7Ö—ÿ_ÿZïϲb&æA3‹¯™·ÇÉÛ}êçù"È|$Õ+‚9¾ûcù’¥|'ä´ÏBWœÈ;Ÿ!iUÙgòõóƒSv”|=dv“ýºI¾2{M¾2ŸµÍgmÁíq½µN‡’a‡‚5q²s¤4/•vžiµäý s£·ù~Hƒ1Ýé/£ÿ±ØnŠ?mF‡mÿøI\@½G|07Ì% „éü-÷Ÿfÿ'Ó»§óÁ\›±¶ÌÅè#î%C†RŽ0ÌCázÁûæŽâ~ÄÝþ¸ƒ¸1ߎ(¹ãi˜½ï‡ØnÚ®íŸ|#bRÍq]ƒÌ× ÎÐ;¹Ì0)tP—J†-¥GÒcx$iÏ5R6ʲ4Ê m½Ìdð÷v™áÏQÜLty÷Ü‘]dHŒ¡‰I0}óú¯ä䛿žBI´+÷<ГÞ\8ŸôæÂÝãKÜ\HéJQb8Ç’aF¥~ðêÂ?.tqáìÚB&µÔ)„µ”ˆ;ës#ÊeÌ`‰…X” ƒG Ê|ë+¦ˆN²òe®‹7±º¸ ¸L‹fbD’•&˜0Ì¥Œã‡‘é× 1Ó¯ š†R®µtˆ×* «(E.h]*L<ÑqQh‚ fh!4„#6IÍ3[5EGõa¸.PÁÅU윭‹f»Ž]å‹ÎãrÙß>ø¶‹/PñC3·ÄäìÆ2™÷Ë®´¢\£9ŒQõ ˜ÿÙß맅輫í°-J´6)âTX¤•Ѫ¨¤Á–Ä/ŠhÁŒè#D45\2¤æÛÿ‚¶iÑŒÏýãS±•‘Táñ%)Í{Ÿ?^,Cα¢Ã‚¦%’[çF/áq%ÒNEd1æ\…‰Z6®ÌÐ,»| 2˜áytðdšk6£¡vqÜÐR5à€3-™¹¹gn® %Šh"•áÄ`ú,±é”2V ޤñ02‚*¤¬ ÄØh©^› ƒ›G‡Mn”ˆLcÓÖ¾Ú®ÌL‹e`î˜fE„ÑL¢±"L>O`Ri°§4 Î]‰¸]G‡Jn5+•ç.òE 2Xd`á&A5#j~h—I©LË}‡—̬”Qc#!R?LËu[Ÿ,†Ë±²Cã¥Ñ"ßl6!ÈD&Q "ˆ€¥ \/ÊKÁÌËc5õÌ´ü¬lßÑ™ÌÔÜ/5ù cB QF(c4–Ï”š¼ä†Å‘UŠ nJ‹tpÇ­Õ„…¨ä¢ÔÌÔ<Æ(KƒØô¬ü²n»*€¤Ì¤\fæþ#M‚WÚ`Â%å†R£Ì3…¦gQ9 ŠDKÄ%Èha–TéRFË([š ƒšGM!Ò3ZfçÚ¦xUµŸ ìœ( ºO‚R±¢œhM$‘ZÌžmØé(sA¤…7ˆ«R#í‚FÆQÉ\)4æxQ‚‚ f‚!A › ;?ŽÙÑ‹Ó˶¾¹œ¾­! © ct¯¨æ+i(1”)b4eüy®a´£LâÁh¤•ŒHRq,¨U–. QÁ ÑヨPéiˆvÕE}íã8ïÁM gx®¡Fp® á ³g OF£fD2$¹ˆ+fÖ* ÎŒ¶º$¥Ë. fx<‰¦’"9IÏ·í?ŠW±éǼeo«M»éÚ!VÍÓƒR`•™´û$­æ+Æ1“JHÃ0åæY‚V—Lx)rÚĉÈ.vsÅ~Ù(`0ƒö(§úZ 3ÉÙ7ÕÅåÒ ë̤=LÒ*³ÒÚPÆ æZ`þ<õã°ðeé‘°#n Cš©€”UšQÇfQÒ fÒcHË03[ìßU¾kmí¶ëª)î?ŒoÂX@e®û]´+n0ÕÚh,1gò1º^,×CË?é±WÖxŠH0qÒD ä&š•Ô ¾ð’?Ä`fëѱ•13›Uýu?Tk;ÄP|[·ëØmkÛßTõÐݼÊ‹ŠXX™´{%­ZQI‰¡Ê0…9#âaÒ¾=YWÍÉ?ÉJ±ó5]&[zZí¡­vQ1µÉh8âÎHdeàˆéÈXɈ‘>.J`€Áßûmwgè»{èèî³ R":³WÀYïÛ¢_·?Ž÷HÜ~Ûâû7ß}€w¾ªÌÙ…9;ú½uuÐ ÿý­nÉ×ZÂùÇ?þ±jêõª©.WíÕIûh;y²]×ýI÷©i»õãýÝ`ÎÉôÖãulÂíX`} ‚‹wßï;[ǽ|y¾ÂçÑéív¸l»Þ7ó]û~çüÒ¶áñÈ€˜Õqï-ÿáÝ¥rW}ºÑ­Š·¶i®…äÅ›m¬{¡ÙòäHº*œ Ža,Èëw$"'ŒD.†ƒŽ.(%Èim«uJ €©Yj £©E(0¯ûñç Ñâã(Ø\ÚnmýÔÓƒ~¼íoŠû_¾±ªØ|õþꪺ©ñ‡N6­û.Ú!N—¼÷jºöª _Ú5ކïQ(‰EL3œ N„ä–jÅ£ÝøûßüËé¼þXœ¾ÿøñÅ·¯‹7ï?œ}÷ñÅÛGB‘®j»QAÝ“gÞ„z}¿3û¸{Žã˜­¡Î¹ébï»j3fîmâ‘mUM¿íììl­9wûùÅô«l½Ù6tÛø‹ÿåÛ«ØÙ‹{ÄH>÷§é¥´sk4Õ×ðfß¹sØúá}÷!vW•_àMð&9º*7©jûÀŽÔÝp_”mWøËè,¶›t ¿TR{âNI02³x¸Lˆòô5¾›å­GÓßã•Ö÷WH¶ÝØÎÛ{´>¼Z:¬ØßàP©¤ éÒ2Ä)åÈ(KV%VQKxKæ«Ê^4m?Tþ‡¸i»æ"«‡¿ }EÆŠO­A¿}ñrfñùíÑ.> b F3ò‰í+_¼‹ƒu77îžÙ&‚NoÎT²àÌ)¯+w±ßÖT€\â ¸u| 6.ÆÜqo à–9À}aàfnmÜ¿oì^’™;-àMÜ-Hh4W7 í2 ÀÜ·ð,¦Ë/†$¡ î‚G[‚œ£Z"´‹lù`õМà(iôÌ1¿·Õ¦ ð°&)zÁLf@ùm©JÁ̆'ŠäüµžumüY€öÁ“-wæ`Ç=Bp×”Û´»[¢š?Ü3sj`jculdéöòe¶˜OÝ}ýðf,ô§Bðn¦ú {øäÿÎ龩ö›¢èá‰oújÝMò•í®÷éF{ÝN|MÐ\¾Z…Ø UYÅn¢·'ãPÿ¯ÈÕÛè¶ÃÐ6+¿îw‡in¾vre»j”„û_¯Ï«]oNþeK©³-ÑÆ»ŸþYпèÚíæÑ–š»¿G–pòJÅ1g—f—èòK÷¥ÀdÔ˜îÜ?—.à¬OíìëI;Ø=õP;¿ø¢†BHpßH»|»Žÿ>ÜßÓÅÑÂ%Ìô…ïoœïÚz©ùã¢]˜ž`lºjm»ëy!ãö¹âÔv±8ëF(޼‰ÝÌ0†£\oz8˜™ R_Hž_Àâ'ôóëxpI¢ñÕfǃôÓ¦¾À—Uàk'.‰N`%Ùå·00^]5ñܯûóÑMÎûîÊŸû0£ƒÎpc÷:ëb|¥`TìIžÉ+Qýí Mó1À7À6‚L´©nç ,õÑçúù mjëgFT:ß)¾k>G×Å›¶ßTƒ­á]ã÷º”˜Q¸< óriFÞÑ#oëÝ©þ{»KØ1ƒÖ9~͸´Æ§³lü4·ENîý†ô;Ýÿ–O#e[5}×øs»N)ñð‰&/ïäÚâ´ýy"P¼XCYâ©‹¤n’~Å»/9ÖšxLr6j%ÕnPxNÚº´·¶³¿lº«ÐoÖÌaÎ>Ë8Å™½^(ù-=E3ƒWRëì)_ÓSz·¹¿ì.`®òaëÖÕ0ÄPœ^ÚîbOPEÙU–t[·ÿxŠ«¼¨ÿU0;ÊóqÇ!hpç!øÁÕOZÎl7/‹WqœŠU®þmg¯ùº1‹ï/Ϋ&œû Y|ìûñڸ¶]1N³~•,­Á°¬Áœ“·%g¡æ5ð}åY¦É2 ÁlÅXx²H3í'œ°£»âÙO²D3?eGÉMv“,φ<“½&Ë3<Ë3_UžÉÇ~󆙬ÃÀÏmg%&+1 ¶"8oƒÈZÌœfG± +žÊ1ÙU²3?eWÉ‚Lv”Å%K2Ùk²$s¹§²¨³¼¨“3teçHuxеäð9/˿ҙ¡&yŸýn2ˆp÷dAÀ»QZWê«ó±EšÔn&°€&-çð‰á´9ɉ&-äŠs¼û£»:ç›õÓâ¹÷JxOÅÇ}´B뀴’q[d˜THpRJ,˜g̃SñíNP§ù÷ æ’뜪þòž;uú~×–'_ÊÄÐ ?Œÿ0Vv¤ï^>œjgظK êg§gÌ}P{;˜ +ŒáD"î”B‰ÊÈVÌ")ÏïÝønozg h€ÁлU—$0Z„‘p´·w¿íZ3ÅÑŸù4ÃÑÝs¿Z /¦ÓÖmÕøñ<®Ãc¨Db’ß¼þ+9ù毧 ,îá?…Z‰óÄL2±˜4ˆ~6T–ñFve‡ø±ZÇy îúYßocxäñ¥:-rqþçÖ6CºÑä.6–+NÆFRJ1¡†ßûLÛ¦ºùL+žð¢ñ¹¾-×ÑŽòÎRWú㜼&8)½ôn°4"N¹AšsŒŒç«èQË’`ð÷GÊ«ñLê«‹¦Ÿfå½'Œ–šaŠè$,_¶áºx«‹ËÊË´hFæÞ‘IVš`Â0S”2ŽõƒÈôë…˜é×M[†ˆ-áˆpá/™E&ʉ¨)A*Ø¢ÐÌÐ^Ån̈… Œ.®bçl]4Ûuì*_tv#ÿíƒo»ø÷?ÄMÛ 1@9»±Læ}’¯g‚3M‰Ðšý0™ÿÙì§…ð¼«í°½áŒFƒXIâÎ1dSs͵sÊ /e4È`fô2š.Ró‘íÁ#Û´hæçþù©ØÊHªðø’”f„=ˆÏ/–!çXÑaA“yI•Ñùâ„2d%Ó»Ò+“Z. MÁ Í#„&3DH$æ¡ùÎöý˜F'~‚ƒ3-žá¹wxR½¢\km´†KnÄ#ôð < ÏÑ!36›Ü()™Æ¦­}µ]™™ËÀÜ'0õJsAǘsŒzžÀ <:ÕB1°ˆx4%2Á;‰óÎ8¥H ‹d°ÈÀ<ÂM‚jFÔüÐ .“R™–ûž–s¼’1)0V‚Qú0-×m}².ÇÊ—Âr"¹±È© ÷\  CÔb¡pŒäjQ^‚ f^£¨©g¦ågí`ûŽÌ´`¦æ~©ÉW’*b¨Ñš0#z¦ÔôÁ”Q‰”ñq©2<ÚñËà‰S”ŠE© 0˜©yŒQ&–±éYùeÝvUI™I¹ÌÌýGšX­„”DI5U óg Mí¶4H$Œ!ˆ3b‘õŒ"ˆ#Ê` ^š ƒšGM!Ò3ZfçÚ¦xUµŸ ìœ( º×¥ ¾˜K-6K®Ùs¬Sã¬ö•eŒˆS‘áF".fÊÙ ä²Ì=B‚6v~Sÿ§—m}sO[C:SAÆè~w"©•æÄh£‘X3ñ,WˆóTR)§Î!®i@FJ‚dl(½*[vî2˜!z|Š = Ñ®º¨¯}çá= iá ϽÓ«•`F1Ž©6 ú<áI¨%†[±)·X#«¬EÌ_ÆàqvYxB fx<‰¦’"9IÏ·í?ŠW±éÇÄeo«M»éÚ!VÍÓƒR`•™´û$­&+©6T*‰bêY‚ !µÓKÄÇÈh‘sê0Ô- Z€Á Ú£œêkÌ$gßT—Kƒv¬3“ö0I«äJ if†s¬õó$mŒLR\Z$}ˆ—Ñ"Í•@ÒÆ²´&O¢¤̤=Æ–af¶Ø¿«|×ÚÚm×USÜ6*~ß$„±€Ê2\÷ºh%èJŠ™QL3løcp½XŽ­‡–~ÒE᜕IZ2Ä©rÈš`‘×—¥6Ô•tQ´‚ f´Z3³YÕ_÷Cµ¶C Å·u»ŽÝ¶¶]ñMUÝÍ«©a„Ô™A»eV­”ÖTH†dJ0ù0ißž¬«æäŸd¥Øùš.”,=­ö°¬±ôžqƒãñH02ΖH9¯¹¦AP¾¬^ 0øû#p¿í®â }wÝ}DJDg¶ 8ë}[ôëöÇñ‰Ûo[|ÿæ»PàÎW•9»0gÓ;»áθÀ5u1-ˆÂXNßÊ×vëØÝ¸Eì N•> ½×2âDpˆ9Ã/K‚ŒÀ)ËbdN„Ø¢ <>Pçƒþ‚ÏÃz×íEݺª)^r÷Ÿ«áfÏVÕÜæé„ö3H½™äû˜ÅJHJ)åRr-%}^7d*ýRL!¼Aœ …´SãHBi°“ölwnÊYˆ¹ûœSL×q¼} ˆ‘å‡fB•Ò c6}~Suí:ÝurÇ9€3µü®Y±‰]9)áìë]9ŽõÌ•ã]´}Ûüp÷Ó’Q}ö pç­á†#ÍÔøªI‰Œ’Á‰ ZpÆÆ®òøQ·®m*_´®ºí < ×µ¿¬†ª/þª¾íBìî¼bñìÊ÷z52%.iÊ ’Ix(9ÒV d™£L(¥0à Bdî`!#°&‹é³ãÛzÝ6¶».ºxi]UWí÷§.^Tëx2\ÆÎn®ÁØWœI”It$’ĉID\˜€¸Àiæ#JXe¤!¥ ’dîPIÄ&†Íiïb¨ügý?ú¶ñU]ÝüçÓ£p¥A_A¿}¯eD¢œG\‹xÐÙ{D‰3¥'LKøö¿W•½hÚ~¨üíµ¾içY=tMèŠ"ŒŸ’Þ¾x9£ÿ¼=ZýGcðLâ²—¶¯|ñ.ÖÝÜÊrf›Ûá7_ÉB„ÊÒNûm=@c ÀE/€;;Æ—hàò@|HKà™È9¥Ígöäh´–,s&ï!¼ ðüs€Tb€V@ó9RóÌÏt±ü|$ %àŽÓN•$"\…x¤¢T[™#Љå€ÕCpr€£¤Ñ3{ÁÞV›*ÀÚ¤è39˜å@¤³€3žLp.ÞÀÉÜÎXÂÛ8жÀÙ¤ƒóÊ(±·Á¡RkŒ¸W%²ÂrÄŒA˜u ¾ç´¶Õ:è@¦î tvdÀ=aoM-ö™1Í?ÕôC5lGQÌNaýAÊmû›:ü/_ÛÆUl¤ù®òÔ“cÓUq,£¼8k·]Û+úü]U×ÖÕñ+*`‚͈ð~œðÄé’÷Þd×^UáKÇ«Q.V„Fä9uˆiï‘.GXz‰íè§Ü>ú*ÏNϘúù°«Ú®®÷åº7òlßïÌ>î¿MۭᎻSgVAú‘m·/™Ü–NkØ-¨ìzõ½A›&`—!§ ¦ 4²û«Ìh0d&iðtH>’rÛÙÆ?ÝgÊÖÛqºmüÅÿòíUììÅî'N¯’tÜö!®«‡­ÞwbwUùnÛ†.'%‹Û’JÅð}$?,·Å&v¶.â'»®šÛµŸ¶,>Pé2ü&n¸•´g$Ó“™9îb“–™éé´ù°{&ýEä¾ÑÃñ:à¾-øÞ-¸‡¥5Î{S‡© Þ…ÖfÅT:²n»Ñ©n•â¯à:Ü5è±¹FºÛf±7pgy’¸ÿ¹’â«»‚û°#sŸt‹|›ÄB €û0+ÇÎL„s³þÑSÔ¬ˆŸž7·Ì~…–?ºbŒ!Ηˆ²DÜŒŒÕ iŽeŒÜ•ž•øõ§MmoÃ’÷åËØÄ²z@ÎY¾qÞf°UÃT`™6æs§ûáö¥î*¼ß”›À¦»·D0¿¿i¥±¹ñä›­dI ©Î¼¤Öœt‡;÷‰Ý—Åã‘1«âÞ[4þ »?Ïù´ÑÝv`$ oÆ"‘d*Äí¦Cº‡OþïŒî–joìëâô«u7ÈW¶»Þ§mìu;ñ5AFøzTb3Te»‰ÞžŒƒý¿BWo£ÛCÛ¬üº_]´W'»¯ÝŸ\Ù®%¹þÄ×ëój×›€™›:Ûm¼ûéŸÕ‹®Ýnm©¹û{DBÏJñ×TŠ—’~Ù—H¿tyé÷¾Þ”ŒÓû' t g}jg7XOÚùÃêØùÅ5B‚ûFÚíàÛuü÷ðáþ„.~Œ®“¥/|ã|×ÖKÍ_àÀߨízlÄôgÓUkÛ]ÏOoŸ+Nm‹³n„âÈ›Ø}Á”fy9ªÙ>êüIÀrÚn²ñf)‚ýuÕÄs¿îÏÇè¼ï®ü¹3‚ËΔëb|¥`ïÉ øo¤€÷·/8=¥_§…­ÕN´©no‘4§ÇÞ±?¡ÏohS[?]bfã}Y§v½ÙöèývØ}­7m¿©F9eÞ!žÉrFÆä’˜ÌK6Ï˯¿¥6løïíN°Ÿ¡ìÊæ¿aZãÓ±6~¥Û"'÷~CúÉîÖ§A³­š¾kü¹]§Àxx«s‹—wB_qÚþ<_(^¬ÇQ-ñŽÔCR/I¿âÝ—kM&YÉ J­´âI³ž“¶.mÇ­íì/›î*tç›õs˜³Ï@qf¯×#I~KOáŠ72{Ê×ô”Þ­‡pî/» ˜«|غu5 1§—¶»ØT`#Qö”%=ÅÖí?žâ)/êÌ~òlüÄÅqÜy~põÓC–3Û ÅËâUçd•«[ßÁÙk¾nÄâû‹óª ç>€û~Ì ü]sÓÀ¶+ÆùÖ¯ò‘¥Å–ŘßXŒÉ›$³b“øŽ×,ØdÁ³c9ø™ñ–,×¶btW<ûIkæ¡ì(Y«Én’¥šÃj²×d©†g©æ·“jòĬÑd|º4k4yS Yi–÷Ô̹Ki¸Z±»+q³£d•4 eGÉ*Mv“¥Ý$«4Ùk²J3Ÿ'9!š~áýN?ç¾er#ün„Ÿ?ͳ{2í¢`"­+í?ó7MF´lþ£Í'†Óæ$¢+"讦ùÆü´x¦¤ÓÁo¢Kê-ÒœjÄu)•: ÊX01P]R Nœ´;À˜fK‚˜K.?¨úË_ÜÌV۾ߵåÉW0ôÂã?<|wð‹w/NŒ0ê¢ËݼPSuI Æ Ælú¢…»S”mWøËè,¶›)Éñ§$%\Ò×õ&=q« àɯßuýª€dÀÞØn¨|µ±ÍÌmUª«*lm½`2 J§¯|Õ­Š·¶i®…äÅ›m¬{¡˜ƒ_á…DõGJvj­˜Jî½{šþŸLß=¾Þ;ù ”xEãhˆñ…’XÄ4ÓÈ)‘àDHn©–Q<êß¿øþã_NÿãõÇâôýÇ/¾}]¼yÿáì»/Þ.ŸÐî†`6ÓÈ­uX¡2*‹¸åim92Ñ*)¬”ª406ß»¶<¥3Ààá_MÓÞýR´kÍD†Õ Dïž;²Ëjˆ1T"1 “o^ÿ•œ|ó×SÈM5I¹C¿¦ú®©™cdrMMòøŠR¹‰9ÿsk›áî"$ ¥t…3DË›5Hlè½Ï´mª›ÏôDZâ /ŸëÛrí˜DkçN©+ýqaNÞœ”%QÎ(æ‘f> ˜FZ† ‹œYF£ÇdQR þþHy5.H¢¾ºhúiVÞ{òÈh©¦ˆN_]Ú†ëâM¬..(/Ó¢™{F&‘d¥ & 3E)ãX?ˆL¿^ˆ™~}`ÐÄV;¬½FQ †¸qig"RŽì°•ž,^‚ fh!4„Ï܇xf«¦èãUìÆkÔPÁÅU윭‹f»Ž]å‹Î£ü·¾íâß TÜ^w³ ËdÞ0»b†K® %Ø,ă`þg?~¯Ÿ¢ó®¶ÃBtð^ZÁ $ZÄCÀÈ•" §\ID Î©eãZÁŒè#D45\2¤æÛÿ‚¶iÑŒÏýãS±•‘Táñ%)Í{Ÿ?^,Cα¢+ö y\ ÄÍMªkR¢ /5cÌ»(4A34šÌ!‘˜‡æ;Û÷ã†ø δx†çþcO½¢\km´†KnÄ#ô€ fn7¹QR 2ÍM[ûj»B3-–‰¹Obš3JlåŠb#ž%0=¥!ø`‘ Q îY —ce‡ÆKe"BÄŒTˆ;# ´D\âH0)K³ðÁjÁÌËc5õ̼ü¬lßÑ™ÌÔÜ/5ùJ ͤá\QB…x®Ô ,ÄŒq£=rÖi„'\cgç‹R`0Só£L, bÓ³ò˺íªÒ2“r™™û41]1N8–ZŒ5sóL¡)¼‹:‰˜§ñˆ rÄZ¤5-±RÆV. MÁ Í#„¦é-³smS¼ªÚOPvN”ÎÝ'A)^),$#Œkª¨¢Ï \ñ(…å( )W"ãK‚ˆÁ†³h½—Ëj› ƒ GPÃf¢Îcêßâô²­c?Ä®­!© St¯q¨Ö+"Öʬ{ž›8 ×T Bå*"N\D.ÚaÏDqj–Õ;A3C¡B¤§ÚUõµã,¼ó3-œÙ¹wvR¶bœr* f ò,Ù÷–áñ½G¸âYÏ%ÒŒHìLÐriÕb0³óèØI4•ÉIx¾mÿQ¼ŠM?&-{[mÚM×±jž’«Ì Ý'hX *¡RiI {ž ÕšK¡ FÔkޏÂ9ì1ÒÚZåDĬ¤‹‚`0ƒö('úZ 3ÉÙ7ÕÅåÒ ë̤=LÒJµ2Š`ƒ #L.ž%i£ %7Ž£@i@Ü–Y#¢[FÁ$ˆEI 0˜I{Œ!-7ÂÌì¯Wù®µµÛ®«¦¸;jTü0¾Ic•e¸î5Œ%+mQŠq)™`Âõb9¶ZîIì„g%Há§ž"kMDD†ƒá„2µ(ZA3Z­Œ™ÙŒê¯û¡ZÛ!†âÛº]Çn[Û®ø¦ª‡îæUŽTŒPÂÂêÌ ÝsŽJÁ Ç’iª¹1R>LÚ·'ëª9ù'Y)v¾¦ eJO«=,{Wb«wëM\·u몦xAüÉÝ®†›[Us›¤ÚÏ õf’ï?b+!)¥”Kɵ””?¯Û1¥)=s=âÜzä¤ç(bÍ‹XΠ¤=ÛÝ‚›rbî>gÇüÒuoÞbdù¡™P¥4ØM‚ßT]»ŽCw\v ÇL-¿kVlbWŽAJ8ûz7ã¹È»hû¶ùáî§%£úìàÎ[à Gš©ñU“%52‚AµàŒ]åñsn]ÛT¾h]?tÛx®kY U_ü)T}Û…ØÝyÅò©•ïõj¸òé©öŠD#&ˆc”#¢qdÖKëÍ’™;XȬ Æbúàø¶^·í®‹.^ZWÕÕp+Áý©‹Õ:ž —±³›k0vÀge‰¶Äk‘ÂZ#n=FND‚¨$M1áàåíïÖëmSýÏ#3KÅy]Yï«&ž.ɤݲ¼¬º“¾ 'þêÓ˜8ždÒwMYocó?öÏEã±¶þsQ5#FAåÏŦ‹·ëè>e#Np ôj;T±ùýPªõ~ÛÂ'W›®ZÛîúÃÎ݇nè­I÷€çÇÜS- ZZĦÈêÒ¡’û€•×ÌbðëW•½hÚ~¨üím¾i§Y=t9èŠ"ŒŸR€Þ¾x9#ý¼=ZéGc0šfÖKÛW¾xënnc9³MmdÁø(«:]ì·õ ¼îê_  €Kùï!-§ $“4œÑ›ÐX’Ì™|‡ð&ÀóÎRˆZÍãHÉh0/ <ÃÅòS‘$”€ïIЂpÆ RÚRÄ.‘T#g¸ö±ŒVȸ|€°zèNp”4zfØÛjSxX“=€`&3 ä'<pfÃÓN„Ã[8”»ÀñJxûgÙ8–t°cÓ¥Ö„jx”ˆsï•„ A©Ô1\bðöŽÓÚVët ™º7ÐÙ‘÷Áa4µØgÆ4?þ4Z|üUÓÕ°…;…õ)·íoêð»×öÕD±]å©'Ǧ«â0XFyqÖn»¶Wôø»ª®Gmï+êïlN÷ã„'N”L4µöª _:^i 1Þ£P‹˜f9%"œÉ-Õ2ŠG_å÷/¾ÿø—Óÿxý±8}ÿñã‹o_oÞ8ûîã‹·(Ÿ]ÕvÕp½/o¾Y¹îûÙÇ]ºi»5Ü—ûífQÕ\|×”íô`ÚÌ»}ùdWEÉ.r1¼¿WM9þþ±C§û¶&@Ù~ÁõÃó· ïV•îñ-qXøRÊ}˳¡óÏ; ß0©ð‹`{a`\§ ¦ 4²®ýUÓo;Ûø§‚²õ¶þ¼†ðËÖ^ÅÎ^ÜüÄ©ó€1TÞvÜö!®ç„­ÞwbwUù¸€Ëÿi6Á¸Á˜ÍÞLþz77*ʶ+üeô?ÛMºc~I9¼ö”0qW~fú¿à|nvæþ´Îúo€þ°{*ýMä¾Ù=ødI°¬»ÔÒ.Üí°–¸a‡ÉËò9^ š´æó’ê­øþáÕ¯æ?{Œÿ`‡:p7HÂ7I½f¾F¸g0ŒÅ }ßàOð zl¾‘îk[loÜ[žbî@‚È•`÷™‰vnŽ<ž Ï¬ˆŸž7·ÌFôó5È)"CŠ‚8'ï"Ò>ø()7ÊZ¨ôúÓ¦¶Íͧ|_¾ŒM,«VA@–o|¸lÕÄ0d¦ùÜ÷~¸}©» ï7å&èéîVV¦¶ƒ%AÉ›o¾Ù|—ÔÊóKJôIw¸sŸØ¦2ã‘1«âÞ[4þ »?Jå´ÑÝM`” oÆ"Qfª_î¦Fº‡Oþïœ\™J–)ÿži¥¯ÖÝt _ÙîzŸn´±×íÄ×MáËxUˆÍP•Uì&z{2öÿ]½n; m³òë~uÑ^ì¾vre»j _û_¯Ï«]oNþeÊuêlK´ñî§Ö¡/ºv»y´¥æîï‘•‡,°ïq×)@1O•ìYÅœ.¯˜ßמ’QcºsÿTÜá¬OíìëI;Ø=õP;¿ø¢†BHpßH»|»Žÿ>ÜߺÑÅÑÂ5³ô…ïoœïÚ:þf ýøÆ†h×c#&ç9»ÕóÓœÛçŠSÛÅ⬡8ò&v`])i®ß>àüiÀ²°Î{H«<𱿮šxî×ýù8÷Ý•?÷afâ<ãJ»×Yã+{Ïž„ƒ¬†÷·/4=J_Ά-iO´©n½©“f=Ù;fã'ôù mjëg KÉhÖŸ®âMÛoªÁÖ¿¶kä匌ӃÄi^ôÉ´=rÚîaÕ.5aÃoCuûMf˜>½ùÏ–ÖøtŽæ¶Èɽß~¥û_òixm«¦ïn×Gjéžó&/ï¤Ãâ´ýyR¼Xch⩃¤N’~Å»/9ÖšúKš#“`ŽïþXZUêCóŽ<¶({Nê9›î*tç›õs³ÏâBqf¯×#R~KŸ!„®8‘w>C²Ï|MŸéÝzçþ²»€9͇­[WÃCqzi»‹=48eGYÒQlÝþã)Žò¢þWÁì&ÏÅM\¢Á‡àW?=ˆ9³ÝP¼,^Åq>W¹ú·uœ½æëF.¾¿8¯špî(pñ±ïÇLÍß57 l»bœtý*YZ bYÈYZÈÉ›-³þønÙ¬ÉdMFb²Âÿ¦ÊðÙÌxNÖd0Ç|…‰œ×d²ÏdM&ž²«dU&;JÖeF—É^“užu™ÔeòAÇ,Þ<ñzR5K7Yº!˜­XÞB3ã-Y®á„­M‹g?ÉÍü ”% 4ÙM–u“,Ïd¯ÉòÌ|’ä¬é¤ û–Émü»~~›ÈîÉ´‹‚e‡´®´ÿÌwÞ4­Ñ²™”6ctœN›“L| 5+u·us¾5?-žté¡LGðLÁ‹K¯Q,".4FºÄ1ÃÑQÉPjp¦Ý9É4ñÄ\rýDÕ_þâ‚ÎÚöý®-O¾D‚¡~ÿáá‹›_¼{ùpŽ…Q]àî €æ8!½Äù蔚÷«ŸŒNºâ—IÀÓ¿ëúUÉA¾±ÝPùjc›™ûª&TWUØÚzá¼S¹^u«â­mšk!yñfë^hál²Š0A ϧW¿ÿô|²˜´|v`YÓÂô Ál6¥õ˜‰|° q^*dH´¨tă™öÜÁØ|ïÎø”΃‡9P{÷KÑ®5SýV3½{îÈ® "ÆP‰Ä$L¾yýWròÍ_O!w%åý¢ @è¸(hŽ‘ÉEAÉãÉEAwAçnm3TÃõãY?WTiJ£œIÁޝ´mª›¯ôÇ±Þ 'ŸëÛr혎kçM©'ýqaLÞç”Ø+Ë"+‘ÁŽ.‘‰R!&•02`ÇËrQP þþ@y5.G¢¾ºhúiTÞ{òÈ`©¦ˆNßÛ†ëâM¬..(.Ó¢™˜û&¦$+M0a˜)JÇúAdúõBÌô냦ÂÖb©5ÒAÄKo¥Ap\jW‡—.A34šŠ Âg.¤<³USôñ*vã=v¨Àˆàâ*vÎÖE³]Ç®òEg‡Q þÛßvñï*nÊÙ…Œe2ï“Ìle„’’3%° Äþ ™ÿÙì§…ð¼«íÀ-C4¥Qˆy†·^!­‚E‚KLsŽÓ¸,£!3£ÑÔpÉšlÿ Ù¦E3?÷ÏOÅVFR…Ç—¤4#ìA|þx± 9ÇŠL ˆÁ–’D„Mˆca‘ ¶D J¢çNše¡ 2˜¡y„Ðd†‰Ä<4ßÙ¾71ÄOpp¦Å3<÷OªW”k­–ÂpÉx„ž'kº@Ǻ‹¡³(Dä(Xî§¥@ÚŒŒ *° )Õ¢ Ì =B† A5G|š¡uۆ⬋ýØeÀMKg‚.IÐñ*‘¶‰Í0Ûµ–;†7ïe©vÏ%M-Ý8QÙ~hëÊnØö6_gúgF¦$´—+… ¥”`Â46fWQ2@­×{sñ÷äF©ôÅî*…ßvyN¡1’ó{ ¯÷‰´Ê%]‚`½â’IM¹`ÄP¬Å'’Áç›È¸Çœä8Uˆcm‘ÕŠ [2¥8vÊ¿h`2ø{ ljëÚÎÉSI·»{ðèô4Æ Â“QÍ·õÖ·=(œIŠí;ŽÉ3AÍVÌPª´VÜ<¼8¼¾8 o—˜îê:´Y 5¶$Œ!ˆFÜPŠ4%é|I(.^– ƒ–GKI™ÙUó—.ÚâûjèÚ‹Ø@‘™ÎàÜ;8‰Y)) &ŒC„æìy“†„¥ˆÑP"εA†(Œ*hg +é²ð„Ìð<:x2Í5›ÐN»8ng©p´™–ÌÜÜóÒÊŒZF˜`LÒgÉMŽ­)gˆ7, }@žxQšH¹”vQn‚ fn7¹QR 2ÍM[ûj»†@3)–‰¹÷)úJhA©R,´æÏ˜‚G§-+Å%FX,0^ž ƒžGO¢©¤HNÒómûâUlú1oÙÛjÓnºvˆUóô˜Xe&í>IkØÊ¦f„¡Øó­,ƒ‰†0‚ˆ{áÄ áx‰™v˜µ(h3hr¦¯2“œ}S]\. Ú±ÎLÚÃ$­â+i°Â„aE$3ôY’Va≻yï<"ÎK4IJNƒÓ”ÚEI 0˜I{Œ!-7ÂÌì±Wù®µµÛ®«¦¸;nTü0¾Ic•e¸îuÍJèÁT*Á´JÈÇàz±[-ûd)X•HYÅw‚ ë…C—’•XHÆÍ¢hÌh=:´2ff“ª¿î‡jm‡Šoëv»mm»â›ªº›W9R1B «3ƒv¯ å+M$ãRSb´!ZPç“þ‚ÏÃz×íEݺª)^r÷Ÿ«áfËVÕܦé„ö3H½™äû˜ÅJHJ)åRr-%åÏê‚L¬‚ZD9ˆ[Á‘–%Ež'„À&H %íÙîÜ”³s÷9;f˜®ãxù#ËÍ„*¥Ælú ü¦êÚuºëäºs=fjù]³b»r RÂÙ×»ƒÏÝAÞEÛ·Íw?-ÕgßwÞn8ÒL¯š”È(©‘œªglì*ŸtëÚ¦òEëú¡ÛÞÀ³p]ÛøËj¨úâO¡êÛ.ÄîÎ+O®|¯W?%œ“2*£‘– oÒ‚(”‘Ê2Æ„õå‚™;XȬ Æbúìø¶^·í®‹.^ZWÕÕp+Áý©‹Õ:ž —±³›k0vÀge‰¼÷ÒPA/­B\J… ¡iKf­p%õ ’dîPIÄ&†Íiïb¨ügý?ú¶ñU]ÝüçÓ£p¥A_A?8M…&i"☤½3ˆ«È­òÊ0G ½öUe/š¶*{«oÚyAV]º¢cŧd ·/^Îè?oVÿÄ<“¹ì¥í+_¼‹ƒu7—²œÙ&ÂvøÍW²¡²´ÓÅ~[ÐpÏ àÊŽñ%Ú¸> Òx.r@Vi@3À©}IZm€eËœI|o<ÿ • ÐtN€Ì<€FÓ£À],?IB øžØÈD¡´ q*"2ÄJ„œD´ŠË8«‡àäGI£gö‚½­6U€‡5IÑfr0JÉfg6<™à\8¼%€“¹ œ±„·p m³I;æqn)æØ!0Eœa ãEì·Ä«?<}ZÛjt S÷:;2àÞ 8Œ¦–û̘æÇŸƒF‹ƒ¿jú¡¶£(f§°þ å¶ýMþ—¯mc‡*6 Ò|Wyêɱéª8 –Q^œµÛ®í}„É®ªkëêø06'Âûq§KÞ{“]{U…/¯4ކïQ(‰EL3œ N„ä–jÅ£¯òûßüËé¼þXœ¾ÿøñÅ·¯‹7ï?œ}÷ñÅÛGÅ®j»j¸Þ—7ß(¶}¿3û¸K7m·†ûòNžYéGÜݾwr[:­a·Æ²ëè@í£€]œ6˜.Ð`Èšì¯n0[ Á¥›¤ÁÓQúÏmgÿtŸ)[oÇqmè¶ñÿË·W±³»Ÿ8½pÒEpÛ‡¸þ5®¶~xß}ˆÝU帺”¦¾ŒŒÙìEܯws€¢l»Â_Fÿc±Ý¤+Bð;¹µ'=!™¡ÌLs›·ÌÌP Ë‡Ý3é/"÷Ž—·nÁ·oÁ=+­qÞ›š8L_ñn_i¥Ûnôª[µøÃ«@÷ zl¾‘î¸Yl× Ü[žbî@‚È•_Ý}ø܇™û¤Û$à[%" ÔÜo$ã+ÍÀ~3ÒÜlˆ4ç5+"ǧçÍ-³ga§'Àå|aƒÖX#ç¸B\œ YfX[îÀéŠ^ÚÔ¶¹ùŠïË—±‰eõ¤±|ã¼Í`«&†©H2mÌçN÷ÃíKÝUx¿)7‘Mwo™`~Ó.,bsãÉ7ÛÉ’R­yI½9éwî»/7ŠÇ?"bV Ľ·hü„w”Êi£»-?ÀPÞŒEBÉTŒÛÍtŸüßí-Õß&Ø×ÅéWën:¯lw½O7ÚØëvâk‚fˆð5©*Äf¨Ê*v½=û „®ÞF·†¶Yùu¿ºh¯Nv_»?¹²]5Êrý‰¯×çÕ®7'ÿ26u¶%Úx÷Ó?‹ª]»Ý<ÚRs÷÷ˆŒžÕ⯩/%ÿ޲ì¬üË–—ï Lɨ1ݹÊÇpÖ§vvƒõ¤?ìžz¨Ž_|QC!$¸o¤Ý¾]ÇîïCèâÇháÂXúÂ÷7Îwm½ÔüŒñ Ñ®ÇFLOp6]µ¶Ýõüôøö¹âÔv±8ëF(޼‰ÝLi–×o¡"í£ÎŸ, æ&›o–ò!øØ_WM<÷ëþ|€ÎûîÊŸû0#¸|áL¹.ÆW öž=)Yòîo_hz2¾6 [ŸhSÝÞ i½c6~BŸßЦ¶~²t¾S|×|¸Š7m¿©[ûÆïuÍ"£pyæu™Œ¼£GÞÖR#6ü÷v§ÄÏ uŽ_ó.­ñé,?Ím‘“{¿!ýN÷¿åÓHÙVMß5þÜ®SJ<¼¹‰ÅË;¯8mž/ÖãP–¸Gê"©›¤_ñîK޵&“$_$†¯ÌîF[ˆç¤­KÛqk;û˦» Ýùf=Àæìó̾8³×ë%¿¥§h¥ÌÊ`ž=åkzJïÖC8÷—ÝÌU>lݺ†ŠÓKÛ]ì *À¡(»Ê’®bëöOq•õ¿ fGy>Žââ8 î<?¸úéAË™í†âeñ*ŽS±ÊÕ¿­óàì5_7fñýÅyÕ„s@!‹}?¦üý®¹i`Ûã4ëWùÈÒ ËÌÁi0yÿcjžPßÀšeš,ÓÌVŒå€'‹4Ó~ [1º+žý$K4óƒPv”,Ðd7ÉòÌaÈ3Ùk²<Ã÷*Ïdy&Ÿ/Ìh².> šu™¬ËP¹2RâŸÿHŽz²F33§Âj¥%¿ó™„9Ùg²^3?8eGÉzMv“åÝ$ë5Ùk²^3Ÿó&=ú™~áýNDç¾erÝûn„Ÿ?³{2í¢`)"­+í?ó7Í2´lb£Í)ß7œ6'mŒQ˜¬ðÝŽÎùÆü´x ¤óÁ¯™å% JE¤9aˆc©‘–!¡¤&(®8ôšÙ»c«i$ˆ¹äfƒª¿üŵkµíû][ž|?C/ü0þÃÿx÷òጣBºÀµ p^y‰ÓÊ)4ïW>§œôÄî)€g¶~×õ«’Þzc»¡òÕÆ63WTM¨®ª°µõÂY*¦2¼êVÅ[Û4×BòâÍ6ֽРÌÁ/IÝBUó™»ï?=Ÿºe§8ŸXBî…0}C0›±!%!8 ˃DÜšˆ¬‹ ¥ 5\ ŒÍ÷î$Oé 0xø÷δw¿íZ3ÑŸa5Ñ»çŽì&b •HLÂä›×%'ßüõr MRîÐï „>€;hæ™ÜA“<žÜAssþçÖ6C5\?žƒs¥µL)f¨"T‹{ŸiÛT7ŸécÅ^4>×·å:Ú1;ÖÎRWú㜼&8)Kc…1R ™C\‹4fq£xtD9iâ¤üý‘òj\¦D}uÑôÓ¬¼÷ä‘ÑR³±sNßKÚ†ëâM¬..(/Ó¢™ûF¦$+M0a˜)JÇúAdúõBÌôëƒ&Çe©Ê¨‘°† î8G–‰¼Ž$Dl£Å|Qh‚ fh!4„Ï\vxf«¦èãUìÆ;ÒPÁÅU윭‹f»Ž]å‹Î£ü·¾íâß TÜÞe”³ ËdÞ'™ñÊH¥%æÌHÉ S³ÿìÇöÓBxÞÕvXŒ¶š:ë1GZñˆ¸ Íb±ŒÊiO‹2d03úM — ©ùÈö¿à‘mZ4ósÿüTle$Ux|IJ3ÂÄçËs¬è° éÊÒ0áÒžXÄ5UÈËZy…ˆqY5d0Có¡É ‰yh¾³}?nbˆŸààL‹gxîžT¯(×Z-…á’ñ=OÖt1€Žu˜8 ¥×”$q‰W‚ § E\”Üc¹ tQ†‚ f†!C… š#>ÍкmCqÖÅ~ì2`„¦¥3A—$èx³GÛÄf˜íZËË›÷²T»ç’¦Ž–l?´uå‹ ·l{›¯3ý€3#SÚã•¡\pÎ)Õ”a³«( Ö뿽¹ø{ò£Túbw•Âo<§ÐÉù=׋ûDZå’.A0[a¡‰æ†+Á±‡âÉàs‘œ1¥8"KÄqÈDNw‚•ÜZ¦´[4°ü½6µumg‡ä©¤ÛÝ=xtzcáɨæÛzëÛÎ$ÅöÇä™ á+)¡X3)ÆòÁ‰àúâ$¼]d"¸«ëÀ¶Ö,™ •BkÄ¥`H[*Œj™aD.ÊKÁÌˣ㥤ÆÌl¬ùKmñ}5tíEl ÔL gvîĬ¨ä˜iÉÀÄPõ,á©åÄYŽng¤!¤£Åˆ`K8‰A«…÷%‚ fx<™æšÍhh§]w´T 8àLKfnî—›lŹ’‚iF–šóg‰MËœ6Ñ(vˆcM‘‹‘#é¤%Q±ø®ˆÁŒÍ£Ã&7J D¦±ik_m×f&Å20÷hâæ’bi¨Ð†.žç,Ý–\_"Á‚AÜlòÖJë1Ç‹d°ÈÄ<Â]‚jFÕüÐ0/ÓR—{Å%“+J3‚B ǘë¶>YŒ—ce‡LÎU,*‘å: .4GÎ:‹ˆ‘˜ƒËÎÌA30QÖÔ3ó³v°}efZ0csÿÓrƒ fBB°œPë=6‚ Òq‰xÄ%ÒGÄ”eÌŠÀ°Š‹‚dðø@ú >wëM\·u몦xAüÉÝ®†›=[Us›©ÚÏ õf’ï?b+!)¥”Kɵ””?«;2#ÆR*QdZ N½B–¡e°ei…PÒžíîÂM9 1wŸ³c’é:Ž÷o1²üÐL¨Rša̦Âoª®]Ç¡»N®<Ðc¦–ß5+6±+Ç %œ}½{ÈñÜ=ä]´}Ûüp÷Ó’Q}ö pç­á†#ÍÔøªI‰Œ’Á‰ Zðû'oÒ£n]ÛT¾h]?tÛx®kY U_ü)T}Û…ØÝyÅâù•ïõj8d8¶”Ó ç! n©FºÔ©ŒK[z"„ ÈÜÁBF`M0ÓgÇ·õºmlw]tñÒºª®†[ îO]¼¨Öñd¸ŒÝ\ƒ±®8“(“èHD š‰dŒqc,Ò¬TÈRÊ)Ìjê¡$zUÙ‹¦í‡Êß^š `õðg—Wa¬øÔ„òí‹—33É·G;“Ä<“é¥í+_¼‹ƒu77<œÙ&Âö ÍW²nó$±‹ý¶ 4\Èÿ?¾@‰Ø9µ!-g5ä§4œ%ïÐXÞ½™jð&À3Y’ZÍ Hòk<ÓàÌüò‘MJ­mµN:©{pO¬FSK}fLóãÏA£ÅÇÁ_5ýP ÛQæ³SXrÛþ¦ÿË×¶±C›%i¾«<]¿mº*ƒe”gí¶k{E¿«êÚº:~E9ÍÉy~œðÄé’÷Þd×^UáKÇ+£!Æ{JbÓL#§DD‚!¹¥ZFñè«üþÅ÷ÿrú¯?§ï?~|ñíëâÍûgß}|ñöy´«Ú®®÷åÍ7 a}¿3û¸K7m·†ûònmFbíGÜݾwr[:­a§Öî:úÐA+²°»VÓÓ YÝI<ôŽ,Úv¶ñOÿeëí8L Ý6þâùö*vöâæ'NJ‰¡ò¶‹à¶¾ü+<'lýð¾û»«Ê/p7.x*9“.7¬v§{Íw!uQ¶]á/£ÿ±ØnÒukø}¹€Ú“žü3³ÆÅ¦3¾:ë‡Ý3é/"÷Ž—÷TÀ÷UÀ=+­qÞ›š8L^¿Le+ŒÓ‘iÛ^u+¾~xõ«AΞàô¨|#Y _t9î-O1w AäJ °ûÌ M7;OêcVDŽOÏ›[fïÚnšW9‰ž–•œjÄK%¥N ™³„(Ã=Xå|ýiSÛææS¾/_Æ&–ÕCJ'Äò7ƒ­š¦"‚´1ŸûÞ·/uWáý¦ÜŒPÝ=õt~;Ë.¼bsãÍ7ëõI ©·¤ —t‡;÷‰Ý—Åã‘1«âÞ[4þ »?Jå´ÑݶXHoÆ2!AªQìâØÝÃ'ÿwN’He‰”‡Åé«u7ÈW¶»Þ§mìu;ù5‘>\ª¯Bl†ª¬b7ÑÛ“á°ÿ×xèêmtÛah›•_÷«‹öêd÷µû“+ÛU£ZÑŸøz}^ízsð/S§Rg[¢w?ý³ÖtѵÛÍ£-5w¨‹YDûš"ÚRªØ¨VͪblyUì¾PŒÓû' ªg}jg7XOÚùÃêØùÅT0IüA#ívðí:þ{øpy¶‹£… é ßß8ßµõRÓ80Æ76D»1=ÏÙtÕÚv×óÓœÛçŠSÛÅ⬡8ò&v_0­Y^‡ƒŠm:°€(—ìIXʇàc]5ñܯûóq:ï»+îÃÌÄyÆ•v¯³.ÆW öž= Yºìo_hºû¾d[¶šhSÝz;R'=(½wÌÆOèóÚÔÖÏ@–ÎwŠïšÏWñ¦í7Õ`k@×økÏ…Ë£0ëëyG¼=,¤Fløïm¨n¿Ê Zçø5ÿáҟβñÓÜ9¹÷Òïtÿ[>”mÕô]ãÏí:¥ÄÃÛ;›X¼¼SðŠÓöç‰@ñb=e‰{¤.’ºIúï¾äXkâ1IAÁùJâ»?žV•úм+-Êž“zΦ» Ýùf=À\çìó¿8³×ë*¿¥ÏL”^ñ;Ÿ!Ùg¾¦Ïôn=„sÙ]ÀœæÃÖ­«aˆ¡8½´ÝÅž@ž²«,é*¶nÿñWyQÿ«`v”çã(.ŽƒÑàÎCðƒ«ŸÈœÙn(^¯â8=«\ýÛ:Oö𝽸þâ¼j¹ àÅǾó,~×Ü4°íŠqêõ«|di]†e]æàt™¼·-‹7Ï@¼oNÌÒM–nf+ÆrÀ“åši?á„­M‹g?ÉÍü ”% 4ÙM–v“,Ïd¯ÉòÌü¹ªt{aú…÷;áœû–É-»~~›ÈîÉ´‹‚e‡´®´ÿÌvÞä$ÛÒ‡ç6ctœN›“L|„!+EÓõÇùfý´ô»‡O¹Ïß1†¹v, Å‚EœŠ€´W+™˜ðù»Ý¹ôÐÀ\š^¬ê/‘Ϲ¶}¿kË““„1ôÂã?<œçÿÅ»—éþúÝ•r›ÄGÈîØöƦø¼W=|WlÒ'áÉÂH/ó®ëW$ÇÌÆvCå«mfòqUM¨®ª°µõÂg"¦öÑ¿êVÅ[Û4×BòâÍ6ֽРLÄ/9(ÄÃ)Ýi»|*}Îîi¶ÓuyzPè¾Æ|v`YqÂô ÁlÆZHJ‡„SñÒd³(xá…W’1‰—½äbð÷vwÒϰšèÝsÇv³1T"1}Ùë¿’“oþz Í™–;àD€Ð”r‚‘i"Èäñ]"Hþ´[™W3&5æœ3Ì…~Vwiì=±Œ"Ëd@œŒ–¥Á’ã@–%%Ààï”WãÂ$ê«‹¦Ÿfå½'Œ–ša:s/èË6\obuq9@y™ÍÈÜ32‰$+M0a˜)JÇ#Ó¯b¦_4miœp£ÈCÜ0 c i­X`6F¡ËE¡ 2˜¡y„ÐTTÌÞcf«¦èãUìÆDŨÀˆàâ*vÎÖE³]Ç®òEg‡QþÛßvñï*n ÇåìBÆ2™÷If¼"”1‰¹¡Lcª¡¢ùŸýøÅ–ºñ~WÛaAZ¥¬Åq'âš äJY"lµ¶œR®¤_Ò ƒÒGij¸dH͇¶ÿmÓ¢ û¨b+#©ÂãKRšö >¼X†œcE‡ÍP’(}ÉP´e‰¸ Yæ²AYG45‚-Ù‚ fh!4™!B"1Íw¶ïÇý ñœiñ ÏýK©zE¹ÖÚh) —܈Gèy²¦‹t¬ë°*1÷¥/=*YÔˆÓèå£ÀŒgXJ…]”¡ ƒ™¡GÈP!¨æˆO3´nÛPœu±» ¡iéLÐ% :&’l›Ø ³]k¹yó^–Š÷\ÒÔÑÒ­•퇛+y'ܰn¾ÎäÎŒLÉè¤ñJm åD+ÊwcS:>­×{sñ÷ä©ô½î*…_up>¡1’ó»!¯w‰´Ê%=‚µÒRr¬µJh£Å'’±ç –Š¥æ+Ф4qéÒÑ$¨:*½Ò‹Æ5 ƒ¿·¸¦¾»@;_UæìœýÞº:ž¶›î\°Ë[SÓ‚(Œåô¥|m·ŽÝ[ÄêTiáõ¥Œ8Ï*K§wÊ"-EǨDéƒçbQPƒ ¨ó1Áça½‰ëö¢n]Õ/ˆ?¹ûÏÕp³c«jnÓtBû¬ÞLòýá’RJ¹”\KIù³º Sl# l8â—ÈI§PdZ,¥ CI{¶»7å,ÄÜ}ÎŽ ¦ë8^¾ÄÈòC3¡Ji†1›>¿©ºv‡î:¹ï@™Z~׬ØÄ®ƒ”pöõ.!Çs—wÑömóÃÝOKFõÙ7À·†Ž4Sã«&%2Jjd'‚jÁ»Êãçܺ¶©|Ѻ~è¶7ð,\×6þ²ª¾øS¨ú¶ ±»óŠÅ“+ßëÕpÈèàmˆØ"B5AÜ‹ˆ 7yªeT\ù¨ù‚™;XȬ Æbúàø¶^·í®‹.^ZWÕÕp+Áý©‹Õ:ž —±³›k0vÀge‰dɵ ã ðrt‘ Ò#¯<Ž>o<]D s‡J"Î01lN‹xCå?ëÿÑ·¯êêæ?Ÿý€+Íúúí{-UDI ÁsÄCôÈEæEë•ð|×éwëõ¶©þç1ábq¾ã^Yï«&ž.ÙwÂOyYu'}NüÕ§‰p‚Ìk ÅŸlØÖÃÿQlºx;¡ñ^vº>8_WêÜv¨bóû鬭÷Ûn¬.slºjm»ë;ºm\ &.W d¶jìø6ªU’#Ï™f*R†98ÅË«Ê^4m?Tþöjí´#‚¬º0{EÆŠOi±o_¼œaß­+ˆ1x&wàKÛW¾xënnF:³Mí³©dÁ0!ë«]ì·õˆ.[Ü›3¾H˜î¢€·p ¯; àäÚ€4É€6ÀòÕΤ…7žÌÐ hF5@r,@#€)ŠàÉf–’Pà84á\2ÄŽÈÄ葎Šy¬qÎ/à¬z€“%žÙù¶ÚTÖ$E ˜ÉÁ (  £ ˜ÙðŒ ä ð–ÎÇ/pÒÞ>À±ÒNì˜g˜-•²%RŽ Ä5!H‹’!i½Ôš8î#ødíim«u:ÐLÝèìÈ€{êú0šZ ì3cš->þªé‡j؎ŠÂúƒ”Ûö7uøÝkûj¢Ø®òÔ“cÓUq,£¼8k·]Û+úü]U×ÖÕñ+ÊÐln%Ìž8Q2ÑÔÚ«*|éx¥q4ÄxBI,bši䔈Hp"$·TË(}•ß¿øþã_NÿãõÇâôýÇ/¾}]¼yÿáì»/Þ>¢|vUÛUÃõ¾¼ùfÙ¤ïwfwé¦íÖp_î·›DUsñ]S¶Óƒi?2ïöå“]I$»Èµàðþ^5åøûÇî |˜eûWÏßì½[߽ǷÄaáË#÷-φÎ?/¯A¿aRàÁv¥Á.›OLh0d‡Ë¯n0[ Á…p¨ÏTM¿ílãŸî3eëmýyÑã—Hh¯bg/v?qzº‹à¶Œø®¶~xß}ˆÝUåãØ®×§™„ã&Ù¢øÐÁÝd®(Û®ð—ÑÿXl7éúú$ÖvF’)+¬ö‰qW~F¯Xn:/5<.ÿ6¢|Ø=•þ&rßìü ²® X[†¯/à RoêZM¼Z'GÖ9^ šØý¼®{»ðáÕ×c:ØIFÀýÒð=Ópÿ˜¯îX*½"â«û‚oÐcót›ëb[]áÞò#pD®ä×wñ÷aGæ>éÞDøþÄ…H5÷†ùаßÌD¾7§ÐMÜBÍŠÈñéysËlÜé‡`)c¸ q¡ âDpäD0ȧ-÷S >3úúÓ¦¶ÍÍW|_¾ŒM,«–ð@–oœ·lÕÄ05áHó¹ÓýpûRwÞoÊMÜÝ- NíOLÔ!67ž|³‡;©!Y[Z@‘œì;÷‰Ý—Åã‘1«âÞ[4þ »?Jå¤ÑÝ>[èŒÞŒEf©ø¾›&?è>ù¿3Z{ª·O°¯›‰¸ÝMò•í®÷éF{ÝN~M€_ƒ®Bl†ª¬b7ÑÛ“q°ÿ×@èêmtÛah›•_÷«‹öêd÷µû“+ÛU£ ߟøz}^ízsð/[vIm‰6ÞýôÏ‹(]»Ý<ÞÒ»¿G–ÍòêО¶L×{f–a’å¶ürÏ}25¦;÷OÀå"8ëS;»ÁzÒÎvO=TÇÎ/¾¨¡Ü7Òn߮㿇÷÷uñc´pý4}áûç»¶Ž¿Ùò񿮠h×c#&'8»ãóÓãÛçŠSÛÅ⬡8ò&vàE©¥d~¸–ÿ€ó§Ëšÿ!-QÂÇþºjâ¹_÷çãtÞwWþ܇Áå gÊu1¾R°÷ìI1È+#ýí MÂ÷bÀöcL´©no4yÖÞ1?¡ÏohS[?Y:ß)¾k>\Å›¶ßTƒ­m×ÈK[§ûÇi^Ì=N‚îa75aÃow²þ §ç@6ÿÙÒŸµñÃÜ9¹÷Ò¯tÿK> ™mÕô]ãÏíúáè+=ÑÄâåXœ¶?Ï*Šëq\Lœ#uÔIÒ¯x÷%ÇZIÒ'ëÁßý±´ªÔ‡æylQöœÔs6ÝUèÎ7ëæ:gŸƒâÌ^¯G¤ü–>C]q"ï|†dŸùš>Ó»õÎýewsš[·®†!†âôÒv{ hpÊŽ²¤£ØºýÇSåEý¯‚ÙMž‹›¸8Dƒ;Á®~zsf»¡xY¼Šã­rõoë:8{Í×\|q^5áÜPàâcßIü¿knØvÅ8éúU>²´Àò8³´8“7ÞfM;+2ðÓY“Éš ab%³3ã.YˆÑ‚ÓùÙRv”¬¾¤Qv•¬¿dGÉ Ì(0Ùk²ós€ L>Þšešg Ó@Ï'g‘&‹4³ËÍŒ·d†¶btW<ûI–hæ¡ì(Y Én’å™Ãg²×dyFìQžÉòLN•·Ïd]žÿ+ë2Y—‘x¥Î‘NÖef6Yq¶†¦å³£daf~ÊŽ’…™ì&˺If²×daf>wq’Â뮚ù–Éwìw#üüIÝ“iki]iÿ™ï¼i¶èeToÆðø¾á´9ic #d¥¹ÞÕ4ߘŸOeýPþhxfkj¤TV ä$Õˆ[J¥Î"C"eªÔ\0Îl½Ë>•¦³†˜Kn¤­úË{N<&¨ìû][ž|¯,C/ü0þÃXuÚ}^¼{ùpæÊQ ]à:\€ØÉ;·@Ö¹š÷ª‡ç›Kzâr÷Ën$|×õ«r-áÆvCå«mf®p­šP]Uakë…³Ne¨|Õ­Š·¶i®…äÅ›m¬{¡˜ƒ_’‚W#ªæo\¼ÿô| Þ´|v`).„é;‚Ù)3Ö{\i$âRd¥#H{…•%1˜¡l~ï>§1k›”΃‡_x{÷KÑ®5SýV3½{îÈn'ÆP‰Ä$L¾yýWròÍ_O!ׇ'åýîp@è¸;|Ž‘ÉÝáÉãÉÝáw1çnm3Ü]åšJ¬lE™TSªcFßûJÛ¦ºùJëp¢ñ¹¾-×ÑŽIÎwÞ”zÒÆä}.ÁA)‚¥ŠKŒ¤qìJd"Ö(²@ÇËÒ/ J€Áß(¯ÆåHÔWM?Ê{O,5ÃÑIV¾lÃuñ&V——iÑLÌ=“H²Ò†™¢c§}™~½3ýúÀ ½VQ*J%=∠QP#n…CŽ…L}*«ã¢ÐÌÐÀX=ô'8J=³«ämµ©<¬IŠL0“ƒ`zÀÑx8³“gLá-œò[༼}€Ã1 œs8Ø1OÅùNnœ…0d8eˆ`ìƒñÄø}D§µ­Öé@2uo ³#îý¿a4µØgÆ4?þ4Z|üUÓÕ°e>;…õ)·íoêð¿|m;T±Y’æ»ÊÓõÛ¦«â0XFyqÖn»¶Wôø»ª®­«ãW”óØœœçÇ Oœ.yïMvíU¾t¼Ò8b¼G¡$1Í4rJD$8’[ªe¾Êï_|ÿñ/§ÿñúcqúþãÇß¾.Þ¼ÿpöÝÇo‘G»ªíªáz_Þ|³Ö÷;³»tÓvk¸/ïÖÙf$Ö~ÄÝí{'·¥Óvjí®£O´" »m5m0] ÁÕ¤ÁÓAïÈ¢mgÿôOP¶ÞŽÃÄÐmã/þ—o¯bg/n~âÔ±”*o»nûèË¿ÂsÂÖï»±»ªü·ã‚¡’Sé‚qóÀjwº×|ReÛþ2ú‹í&]·†ß˜ ¨=é IÀ?3k\l03á[ ³~Ø=“þ"rßèáxpO|_ܳÒ罩‰ÃÔÌFJºâ*˜¶ÝèT·Úë‡W¿šãì ®AÊ5’•ðEWÃáÎò#pÿD®¤»ÏÌÈt³áðÑ3zÔ¬ˆŸž7·ÌÖµÝ, ¾iÍ"×HX¡wJ#'eD‚j+0f˜Dð¦µ×Ÿ6µmn>åûòelbY= t‚,ßøp3ت‰a* Hó¹ïýpûRwÞoÊÍÕÝOçw³ì¢«!67Þ|³\ŸÔ*pKªpIw¸sŸØ}¹Q<þ³Z î½Eã¿ ¼û£TNÝíêFðf,¤Å.Œ}Ð=|òç‰T•Hù÷pTœ¾ZwÓ|e»ë}ºÑÆ^·“_èÕú*Äf¨Ê*v½=û‡®ÞF·†¶Yùu¿ºh¯Nv_»?¹²]5Šý‰¯×çÕ®7'ÿ2q*u¶%Úx÷Ó?KM]»Ý<ÚRs÷÷ˆ¸˜5´¯©¡-%ŠbÕ¬(Æ–Åîëɨ1ݹŠjpÖ§vvƒõ¤?ìžz¨Ž_LUSÄ4Òn߮㿇÷Wg»ø1Z¸¾‘¾ðýó][/5c|cC´ë±ÓóœMW­mw=?͹}®8µ],κŠ#ob÷Óšåe8¨Öö¨ó'ËhrÉ–„¥|>ö×UÏýº? ó¾»òç>ÌLœg\i÷:ëb|¥`ïÙ“p•Ëþö…¦›Ïá+V°U«‰6Õ­·#uÒsÒ{Çlü„>¿¡Mmý dé|§ø®ùpoÚ~S ¶tß³ôœQ¸ ³¼ž‘÷ ·üúHjÆÿÞ†êö£Ìu_óß-­ñé(¿Ìm‘“{¿!ýL÷?åÓ@ÙVMß5þÜ®SH<¼¹³‰ÅË;¯8mž/ÖãH–xGê!©—¤_ñîK޵&“¬PFWÜð¤‚YÏI[—¶ãÖvö—MwºóÍz€9ÌÙç‰}qf¯×#I~KOQŠš•Q2{Ê×ô”Þ­‡pî/» ˜«|غu5 1§—¶»ØT`#Qö”%=ÅÖí?žâ)/êÌ~òlüÄÅqÜy~põÓC–3Û ÅËâUça•«[ßÁÙk¾nÄâû‹óª ç>€û~̧ø]sÓÀ¶+Æ9Ö¯ò‘¥–˜Ã`ò&¶¬Ò<•¾ 1‹4Y¤ÁlÅXx²D3í'œ°£iñì'Y ™„²£d}&»ÉÒn’å™ì5Yž™?@•î#L¿ð~'œsß2¹›e7ÂÏïÙ=™vQ°ìÖ•öŸÙΛY[ú”ÜfŒŽïN›“6FÎVÔ³ûÛU9ߪŸ–>X÷ði6ø9;¯´Äš"¡¢@܇¬µEâXŒNš¨ ·Þm†L×Ì¥YĪþòi›kÛ÷»¶<9C/ü0þÃÃéü_¼{™î£ßLY.…@{L•GI¥b8QÚ’t”±‰­‹øÉ®«[×)Ú²ØIN›Á~J§\ÒEá9ÂÈ*ó®ëW$µÌÆvCå«mfÒpUM¨®ª°µõ‚g!<Ÿ¾ääU·*^4¶xg»ÿý¿¬’´ø»Î­¤`L~É1!ƒ(ŸÏsÿéùcB;áù tz‡8"¡yNbÚ{¤Kã–^b£.¹}ÔÎNϘzñ#Ðw<„ãÙ‡x³ª€<‘ñ’{dqY"#„"Tñ²ŒfÑ[’@o·$ý̧ŽÞ=wlW5C%Ó7޽þ+9ù毧Ьi¹Nùˆ~À)GÄR>Ž/r-¨^Q%• Æ0L)gÏê’#Rª”-‘•^#ÎGV2Ь‰<(â…‘rÁûG@æò%Gµ<VÀ®ÇSûºZ$_-‚Iä¼ (Æ›Ø\Qd•ÐÈ:¦b,Š.€¹çsÉQ¾ä(“(“ˆ{.‚ŽÑ2zÄY)±G¥6¼ô†HøBùA¦r.—c͇¼@χ§~IKÂó!//þääÇ '?†ÏÔ#ù1 êËÉ2ùq²x²ôò |neùŒ P3'CÎÉ S¯”ÎÙ?H’³!çlÈF:-1H*Í÷Ô u@BsJm…³äëdCYÎÙÓlÈžóCȆì9ÏÙ÷àF9òIS9rVГľ4ò"’ØdCöœD6d Ž<²çJ¢¤=ãHYI\ˆá™†afffú—VãÓÌ'lY·Ý¬—ƒVÝ«[åR©ä•OišÎ.Ç\/k?ÀXÓÀª^z TGÚÀÊ0wa‰åm k˜ýÙˆ`sj9ˆ4]ÔÄVÖmÒŸ0~ ©za$pÝB"`|áí5·©eLÍ0ÊéRÙÌiÏðÒÒ†™ €|Ø9#W,dKé¬QÊÍ\Á0b¸Å òE3Rx™òú*ZÞ2rùü2­B*drlxrýp¾ÓÛ.IÏ—þé=¬ésç&nu&‡/Í\>\–Þéo•ÞÆ©Îé}tÏ«‰»¤waŽpJú0ö¥·Nz{¤^vHo•ìø“»÷‚àäØ:é‚ÁéñûÒV£SÒÛ*ýaP¸!½ÝÒ;ÍUØãƒ»6Žï;Ÿ ™êìûäÚ;å šî½'ŸŽ§âÞ æÀ„ ãû=º5Z!¾÷ñ[wŽMîáÀ£¿ñѽƒe§7Þ9ém“¾zãû6Vˆì®“ÝÓÛîJ D-½åéÕÒ&é=Pòpq<ìRñ@‚fNu@n¤Oza<½í ô}•¬ ²Û‘]ïñÁ-;¢EàÔe5U/"mˆáÆK}Hˆv9•Km!0{¾F[©:]JŠê)»=D ®èÃP mPÇ¡K+úË_öèZƒ2Íþ4`½˜B/Ç–›¹¤8k ‡ã¨\ˆÅpÛYn jõ¶‚¥*Œ¸Ž“HRe–Dt9f=­b>ŸÎf±˜Ä «vެv_c‹ –J\X¾9›¿cU ¦Y̧ 9ÓÈ̾½Áz ½¼öÝW½ú¢p]ÃLgâ‡BÂmJ+gzl•kÂÌÌÌÌù.Õá«|…Ž÷n/Ûãlû¸aO3«­ìýÏogUI@Ò~F `€8ª•°qöQ“7T%ÒÕnµÉ2Ò‘pÉă˜ thà‰ý\#äèìOUOÉ9~‚È‚DJ\íÙ¢*öxª24ÃtM‡ *ìd{v-UÍ[ |1}삱³Æ:N«Â1èpøÛ^ŽçÃòíáßPÕ†5î¬TDÞ¨:§}ü´±±ùK§¿d¬ áB\‰àäF§™ Isê‚Á¨µÌ[ðvXÞ–†å=Cg·T0¯ô+ÖG8õm…ÿ§pCOG±Éºç¹: m;4xô~åôßn gÅÀïHy|'Á¹‚¿ç´{ØS÷}N²»!V%,]â}ˆ¢oõV ^  æÇ+¸[º(¬2T^ÇÏp.­^ç1­¦”Áû¡›™“çWȤ¼-,Ÿ KGøNãùÐþË#}ÆÀmp~…cÃ\]Ë0¯?úåXÚæùú¤”Ûæt’gð‰½äûG üî\$‡é§ªeW.)•ŠxmëxP-íéVR2€¥†N"Mº@+ƇO=«8ê–Kƒ£N‚ã‚d‡2;VîT4·ÕpZuó¡TGÓ¶ŒgŠ5ñ…Rå_¡£¥i†íºÌºbcš¦ŽÍ.™²Ì™º¼‰è(ßeóÑqT~99j¶a8ÆKOޝÈÑç–Bïi¶¡ ¾·H­8rÆ¥0[™×jÖ©Ü`ʰ™ÇLÛ´uÏa‚2j8¹™Žø´!Òh[HÓE#šX K®ãSŒ+¢ š'¤‰Bž)ä¨Bš+¤É³~ÚŽãé–ç\Ôe{a†ùâÝþ=+ßë[ñ+·R!@S8å x~ŠÚކ¥C"å’¹–O‚‰c&.dý¿–Vìp[ŽÜ¿t‹×ó¶+¸”3ÊPJèÿ}7t!Ο KçÃÒýaBéß³¢ïîEX0ᎭŽý¢òÜ™3¦ù“Ò‰™  j7xùTßÖõ¼ø· þ„$jŒ»9ôÀ5†%üM˜±Ð]àt¦šI1>TÝ„& "¦hƒâ š8ðŠ@¥˜£«««%t-¿¨¦ýt¾Å¹dîó þ)sÐtB#u€=Üž†|ˆÜ¼úp58M2 fùa¤Ÿ·ô0F í-‰´*¾eR£F·‘)Á85‡®;rC5†ö+t‰Ñ,¦k"R‚ÇÆŽ"2 [±¶ÎÌf”ù~N1\EmÕËFµUóÄÀÒXæ0ù 03 $¾˜Í³í=YÔ4”ŠÑ„F3š§Yžp¡)M–Ó$HMžÕdi­±¿ÑP ª«¹–ç0KW™u„ë:p&nÑ8‹ºN<4Hø†AäõoñîéETÄ }*‰®fèš®3Ïf–Æ,ÇQg._4uâÌùŒ`3y lJ§MAB‘2UˆÙ¶nz‚e™Pš 'ñƒh#Ç…òd(φü!ì“D D”„D1E‘¨HÃ"‹40ÅF×àF¢ÞÈ zU™.:’eG¢ðH–±9íǃˆHÈ„c¥a9–f2¤l\ gÓR*™ŸèfmnbZÕ ö÷ÓpFã긮…݉ñöø©c'æ?ZêÃÒö:q1bÂ’¾&6ÒÀL'˱–Gp™nJg›6é£:œ9¨µ+*ùŠYU¯½¼XêàµæBð=þTãaíH×µµ ¶¦ÕMh“`3M·®-ïC—<¢DP|JëqŒ ©Fq˜ŒŽC÷ŒfÅQLv¤£âÐ-:a£ãˆå³9¹@R‘|›ß(ǶÈ@˜ùß„® áŸ^àØéÔ1Óg … šê©èLæàN$YÄVÑ5=ë?‡{LDʮѫOôú“ää_3óë†ÌÞÑ «5´¢Éë™ì Nõ1o ­cÍT±æk˜„‚5A¿š¯^²ÚE*­[´jÑšEOŒÄôL«­U´RÉ÷Nk­P´>ÑêDwO+­K´*IÜü:QÈEºÞB·iXù÷ÍÑŠ÷"m­‹fyºNm­ÃN¬Î K©l¦- òÝ3§.œ7Véß³ ]¼†{®N‡¥›ƒ÷vì>þv ,­èz6ЉÑq ×õ*+JŒi› CíDT!L×™Þ–&ó*Ψ³Ô«8øÁH¼Ã×6™]·ú9j­·ínμ٠&Ž_ðÑ‚[ëŠÅô·#+ÙäÖº½;û.سfhëõþË+¶Üj°›Î`Šª,Y²þþ¤oäÒÙ|åçTðÙXGA³˜¥ä²ð˜² ´Ú2JW6ß^xÌ–6kb,Ì[žΖ6Ü¿l]$×’èÈ“~>WYmÎݼL€kwK²˜NýÓÞþGmíýþðóóWLا$×ï„Y]ÒܯýÚ›šP’@Ú¾rŸ±=à‰Ëˆ¹›=ƒ+¦7ŒÁ€iÆÄã§<ü•óôî[SîÆùÐx°5ËÃ$Ú›±—q&ciIkIZ’Ög½¿¥·Òö¡ÍÝ05 …Á›…hqƒ7‹[¼µÅò®R"‚¾²üGkX¼19nQqª²¯%Z݌цµÞÞ´¿”‰©@Ô¤„SbI¯"¶Õú¦æ`{K`þRåTY>áÈ¿üÄ#B+ÐèM½iw)õÑB«1ÞÖu†Om+KøŽ`½•ŠakþR˜k‡©’U¶A²W¨º|!fú;L%Uõõ‰HHŠ¹Û‹)0 ›Î !^wŸ±‡ús矔Iˆ q?×qÓµ ³g¦¤äm÷Óñxé_»~°ör7bî&K/.Js°ÛÎ&Éþ±={Â3dÇ䦣ÒJlÂJ^{Ùž“¹Î³ŸTÝ纺8µ¼zn?<«8B‹©1×ÊÍñpé‚zíŸ]ïö8|¿ò4=òö•ëø ÜƒœÞ8kLAãe݃é‡7\ŸXò­kG‡¾zˉŸ‘:å˜Î%ÁêõAð0£ËÇÍ€½@¨¾¸Ç!WÁçi÷Ï×ݧd¤Ž³ð¼2Ö®eÔ"Üä‚›¾7¿ÖOãÚ'G3¯·¦ÞŒ£˜¼•֕Ы'!²„ý¸¾dN¤{á$ÜO`Ufò±Bð~sÀíëvý“~Õ™~Ú [Ù§Ïe÷¹ìÞbïz—]t{Yú ¸O³½à;ÌÁ„ä=)oQ¨Ù½É’Ip‘“¾×ë¨CàÝ–y2÷G¡6ݲwÿΆØñÍ¡Ìð ìú¯Ø‘ÛU#QU×RWÊž¹ôùËöË3` Çiß|¼†âþâÀΟ¿3­XtoàŠ»ôúA'6 “aÙÊ·è¬Pµ]ÖXîWe¸ñy÷^)ç[½MIg™ùb]a”qšÿØY ÂTnxXðâÓu…ͧ㈇ éˆG#L,AðÓgåÍKxÖžj[Ïr¦%¨°Aáüׯ6‡˜ Røw¤§žHÕO¤§ëÈA‰©³Ð—`áÒÌCUÌûÿõ¢€Ð0öøû!̰ÌA ýôõ1ø’¾x;—¼iŸ:ŽAò¥¯@ÇíõQ›ã¡# Û;?<µôr¾¤/Þ²gf ù„;²4Û/ÃñËÞ[/ÜüÍüL=Ø/œ¦ƒMzz–\ÉÞ{˜žqö9û–ÃÝdwÝ‚C‚%0 $o~ç39K`m¶oöÍ€Ó™í{ Ÿv÷åÌȨóçÝ»ð™¾vQ¦™HÊsÞ=ñ¹^¸UÏÊ»ùx=€O¡µïBÛó0?äµy¬æáËŠ3PäÞ ¹±K.°u ¼¾ü Â²`•--Q”«”OkLB˜EŠ0£ôà‘†à¨|fŒ--A‚àõά´-­1, ›ÌdÌ 7š´­]|Wx*«JmïªÙÐÀ†v6Ç¥¯16„XSbÔb™ÌÄ2áEØÐÊbÄôcCØ<Àx‘š•˜ÄBH^•x«ýIÉ?[è_rWÏdOœ …²}·C;¹Ûf2¿‚ à'!øP"”íW£¸£{9üƒ7¨¤*é€ð&³cáÈÝŸÊuݵïÜö²ÈAXÆ”ƒ-Çï,vtdŸŽ;±ï†Obj_ÈNŸÈLC@Ó^§@ò–ýrx_æùéÅTôc çá°Ü‘¯Ý^ NU¯çÍ =Ì ­è/¬÷ça¨-¿Œ¹ŸÙ‰iy A™üN²—ì¡çp¿‡µOÏ˘øýPÌiÎðŒ½p6—¼'³Ü‡òrÕè„‘´= »}äUºr­¬Ñt™„_Áo§†d³ûåÐ|È=Ä¥€™g ¶:/×E7Ã^v®/;OîaÜÓ{;¼'亻>]U›T6ì⦡„]‚PìrQ™â¡/-ÑDsÇAŽ’÷‰>ˆâ,숣BaåÄ "Ð胘3L [áª*ÓO1F¦å3°`êQC b¿Ó S’Ø?Ðz 84¦¨44æ½UØZ¦)¸a™¥±íˆlåüýÈTµïx2fYÛ¶QZÛÁæ÷‚Qba܈÷Äcꈞ2(& J‹æ§°âǸäèÁJÄ-Å,*LeÄ•…)y¿SÆðês&è±®¾eë±Ä¶-[¶|Û¾¿ÌˆeìÓkšB–@J±iI!¤ ĈEjµ`þðb 2ŽÊ‹=XFÈ?Œ+ÚC˜•1ø¨„ó Qñž*ßZAaePÆ«Iñ”Å«ó³ôPƒÁR¨çLÊœ˜QΩg„Ê·±àDpT¼’Ëx!+H";U6 h{0¯á^Âk¿‚ËðúýP‚82ŽÊ£¨~ݪ_¶ùWmÅGq,;„%á<È(Ž  ¢ØFXtÇßkf†¨EˆÉTQó…°™Ùbǩ܉Ӏ­À%ȘµÇïåæÏÚC`ñrÚ~~rÞ:Yh§†ìÇxp»ßîé–þ<0«Ÿ¶/Ý(¬:Ñ*=Þý€TamþE8EÎÛ×ô·ÿʯö5ƒË¶ô¢?ýx¬±ÀÀ*snT¦=ïw?f`õG«¢ÍmÅì¿¶ï‘8̶T¾J9VXöË.ÏûM2dÂü˯]“~ ïK3§~ßò’¢t—Âc’ Ï`«Û’Bõä³”A;eÊãën.4è«nã%ùé¾ uI‹¯>ø"wÕ—‡9•eI…1U¦á5Š[R¡¢ ýûXmhO´]‚vA8ÂüA»¾'ô!%áeÌ Ú„jÝ›Pa!LÊ-Š™ÅLdáªwµÿÿÛ—åšPReùtdùÁïxabZÌ Ú>ëôÏÒñ½×œöᔚ1S9L÷ Qê3LïìsF-É^,[.,Û«$Ͼ¾|/´ÿöý0.ÚþÝvœ»±ØøûÞš™tŒ€ÏëÞ;¯{N¼î½ F<%Úáš4Ä7·øÙ8«wÀâ£=`gÄĆE©á;^ϯõ®»Ù}Ãò–hC´ªñPQÇŒôÕÇK³r©ÅØTUÎéAÓŽš›MOwB'Yš™WˆÌ•㎲{†TÓ+ÒÉtÏ©¥ÙÙôLÏëËΟ—“‹]N º¾ÜÄ©‡óþ°Ú®OCæä‰¥…“ÐõÜÁ8”|3nèÍü 'Ið‰{™s¥5dRÚAž†AºÌS|œ!Üpoæ;ÿùó}þåˆVIGŒ±ñô§àïð›ùûáì…ã鱑܃ù04×K=ðZ†0é3©éš½÷à_ìîßÀãbi¦3œ¾9i^±/Þüçôü}0ì‚U]Ù‹ãéé){þRØqHùmZ¦<>ûÏKsþž9e¿NÏŸ³ûN„^wÌýµ%Ú”¨‚ó‰aÊxiî¦s'Ç2§ºá4U˜f@ª˜aŒ`E$s¥÷ÅöXM±&Nàl–1ŒnS ŸRŠ»_|=Çò¿àÑŠx ÞŠw3L ,LÂDªjk5èÏ­‡˜ÙÞús{Ã/ÅÊ!oùò"øF%@(åHf68·²‰±ƒ“˜¨Ž2Óª=hĪ1fF¬|AXÔ‚ìÜFv¼W0lB?ÜQº† œ0b­­!„üÙ`À´ˆÐ"‚™–!,$”"Â+Dü26Á›¥ª>Þ=ÖV¹z=Iq†t½ ¸¸cV= “ü®á< Ë -ü€LïOæ†'L: ¦úÙ{×íW)øL‚ Óî„°}§×~9&–Óð™8ŸÀÙA•SÈ<ê€Âö“0—kß‚û ¢ÕʦR|ÍÝsïXÉZ„!AQéI£ ·#Y+i§˜3ƹUJÒ¨|á’’FöMk *˜ILŽýãi/¯öS<ÐTé¢bðfpì Šék—îê»îßa»÷éÒÂHØž‡¬Qaº²ëÜÏôö€…‹BI©baZz®?²»Ž»>®› ôõ s¥6UžÔ¦júm?;ùŒ2# •>ý‘U–õþX¢­! œDVeâ‘ü pÏc”qŒ„Áá›i¸áÈ÷F´–W?„/¿Áß9âØ@˜9¬\0D¸77}Ï~ˆíø"ñººÊ@BþÁ,C!ÓÀ–Y@ØNñÖÒÿùÎ0@ЃÑH1|Y5ðÈ^‚0/OäˆwÒ>¬,é?ÈòV*FVeä5¢ïNKknaŽ™Zûx…H‘pZ[v6V·ÔGB0‡ÛMl`3ôS“t ž†éá×—®ÉÁcŸç }öíJˆ×<à­OJC’üzWÒØƒSÙÇc°Þ~1;qÒCB` p€–!'óE`ÿ^œgJ v ”,¸{×ÞK³ãé¡a§X2¹œªjúéãÐÿØø»CŸ„j’“ÝaöFºžwñmØ(í8_”®[N¼wÍ^þûè¥i8–Égé‹Cré/-ý½Áq¢à¸Ò#Ò½û>ÈBçк&2ÇŸ-ÍCdé×ê 4¡Žöw1Æep‹b᯶ò«}ù’ìÒJ¾äÝ E×è|ædo(ôí—™ó—!r—šË‹:0úzDeöõæåèfˆ‚e0¤ˆ…d_;/ýßïg»á"èŒWÀ¾5 ±½ èæÅäHhíŸí»ö‡^< --œ‚Û.¼ž¾pQ.ÈÞŠtC~ý~Çgûäû驵v¹+ÂÐ_÷øqßAx3Ç£ ¡xSlZB»Mµ åõI¥Ù…a•]ÁJa¨<½7q$„ 'ð43ÞIVK×d<øC2 ÆahðunÆæ” ç[D& ×ð-[êÄþcé:u•èºü+ÀÑu†`–hðUÖé¤.,­[3© Å‚ Æ…a`¡HêRPŒ›Ì/p—òÿ!C~Øv‡Ék¼å£nÎù{Žjgv)©«‹ª‡î…¨ëkÅ0ÃÂDB˜.–ðe¹€³×—ºö×ÅŸ^_êV,sÕµ,¢PÊe„bôOÕÑ–úXk5xÀý‰áúö»ßM47ÔþÓW‰DÝëK÷¶ÆBÿÃæ7 cÿdÏ?–bâLfôÖ[ì8IQ‡d7ø'P•P‹KP‹Q&׫Gðê(¹¦c§Åx!ÿ1¼ÿ(ž0S2%õ@^9”WæË¦EùÆK£ÇpÄ£Ø@¦)¨àØäá/öVÕ6ý¶¶üèXVZÎ0ùií óMq¨YgŽÑ™cJ ¥ŽõÍ£Ž+µö0hí‰Oõ”j©«ÁGñú‡%ÐÁ•ÄþÔ#OõV=L^s \~x¤Î¶®>\uçWu}EÇ/½Û«#‘U‚4ßôø&Z“o"n`‚M‹1ß,(´šo‚hsL@ÚX™½/½¿Æ3Sc™'×a‰Kl @æåÉÜÍQLsØÍ`ë†A ¯C9Áî0¥ˆ„°ÿìÕòj?v—œ€½=N¥‚àÕ& {X­ôJ*†ðTq&'!Apúáíì¹§ŽÁî‰{Ù{gݼ8¬>ßPït­‰KRrÈŒ;ö`'ô´Ìä‰ôÕ1èT^ÖœéÎu¿ ¾÷´ :[%ÆVPyIñâü «çA7‡!ÁV„óÒùÙVÁÔÒôlÓ3ÊLÂ9×Z1ƒY ÁÍjNhum-GÕ7Y¬–UGEô÷Ó´À›P–ìÎ?¤á«àJù‡M×4]ÓSzTM‘Å,j ®U{…˜éo5ØRïâ–X¢1Ú'1’cëûé‡7@f¹>R0Zrœ“'ðáM7,—ŸÝàåøÖw^÷2­8Å\W*™0Ÿ¤DÛ@^ªao€~QÆoH†ÀÅFë2Ö ›ЭÞø÷Â’÷s¹â©‹Ò!k x¦”}éŽ[°ÊkÁ]¨Àýt22öœí)J©,LB-öÉ9/:V>ãÐÛ2nË’°U74†wJzÇïezñ#7yõ:Æó÷ìž«n /ûú“t¯sB½ˆ^“%Ù¶¬@ˆ ¸éj£Mpµ°Ÿ"s0H·ä~ÂÑ‚ÏPºøiWæÜs°:Ë<ŸØà&†fœ.¸¯LY^í'SÖ<· íRxÝÊ/R\@‡{ Ý´°nÕÞ½=xÔ¥î n ‚¡Ó¿oN8]9uÆ u!S‡¾’‚åt¾°ýj$=ôÄëúCn²S÷& Á“á߆ ÙÐÒìŠ,žwBrG÷\w2èï~‰:ïU–B%‚°Iy™v„ò‘Ž +‚_ŸGz%è n­{#B]Î2¨0…iQS S0„ÂFÝ/µ_î9öY0²G]e2gù!/†šÍDæh™£}t€“T¬aDhX`Ž g6Š®(†‰Ÿ¡ø;ð—MMÊ,Ÿ8þêöÌ­ké;— ŒÌa¿Ý2ü Îö.͹qßS3¬Pv~²Á~1Í€zÂ@ΞìÓ¢ó¤¾+ÇsÌŠØ.ð·1ô=ÇJSî¸Í¡ÒÚð­èðp݉ŽwzÂMýé-¼/ûû ôPP¡ŸšŒ¦WåýsnK¸'{æ·—Nâß«ò•e½8Õ÷íW]ÙÛP8\QFe<]¨äŽóV´^FÒ›®u­Bløê‹ŠÏ$J0U>Z.×ðñ@[Ì5|´B˜9†ØGt(dLJiõH™µµÑ#6aÔHÆ(gá–šÚMü·ïƒ4z,¿Ò2e‰÷úFŒ[EÚèQ=–jôÈM•Õ#ú‡Z=þãŒý¸YaÖ~êÁ_£JõV=„-ËúÏ*Ý"N³;Bá?C`Uį²Då²;Íîêõ‰æ< â‡bMØßAI¨&7úJG)Ù§AU冻78»–E&‚ú³»üj?v§>± p·â¢•Áî\ùìÄbº>Õ¹= Âh½e}}íDž—ýì¾Ýî¯O»Š·Ûë¯nG„>](Ô=í ¡KO ƒ=Ê`÷CÒ ¶ûméÜÕ™Ë °ï¼îVÈîu‡ø°©Ì …‰(7†¤D|8DH!ø­PÄg°õo騧Ĝa"0&†0øù˦½mß“@J]e ˆ/ÿ.p´´°(âL'ÒˆO#>ø4â ñiħŸF|ñiħŸF|ñiħŸF|ñiÄG˜! ÃRºçå 1Ä÷Õ¾;öþmKÕþo¿ÚñÍg"!КR×øæƒþ뎑¿šÛ¶~cFVmÂ@ƒ=Øçl•t²• ÃNóñ5Ý\¶N ãcK³ý!3;×—~»ç–›=Ú½I>þ¼8ý_ž,v%ÿ#|ù*ù§Íÿ„õ¯°¤jÜPeU£F9’¿ÕÊ ÉØ’Ñ?Ø;ÑóÉHŒ3ãƒò{ã W²ç[IÕ˜ ØDÜ`†ia‚Ãø‹ƒ¢±Šì ©Z-hõÅ"å35Æ(&„ajqSPÎIxç— Åª¿€©•Q凈½tÚ3ͽ`¼÷¦)„0Vp¯‚bÈ´ü¸Wåš+)ì¼{M„ÿ3)¢T 9ѦÕ[nZ“QøaŒ!³´˜ôùâ%†¤—½¢¤hô”[”0ƒšE(R~½?DZÑíøH]¶t|´˜º°˜º·˜JÊñsL<)¿_•Ãi`´¯œ,©qˆ”÷¶J'oòíX8yÛ /‘}—ïï‹Éå¡<ÜR#Ü•ô(6o0O{œ”ÉçrÛYgŸÉ$T¹˜ê\LÝ”UÀw¾î3sgÊzâ"ûð·||G§yPEò¡Ü0åì!)7wXÓ}¸Gó{Xz9œyz ÈC½[Ák÷ Ë„]O½SÐS@½Öº¹Ã‹Ÿ‘ì§‚,6´dIq–Cùì«sK¯h¸<Îm00dûì!é>¢VTœ¥Ùîtï+ßZ²'ž¬EÌ6>Pv7·}÷U=ÿ•}¹©DŠ;QÑ3o¹ï¼W-Ynѯ‡!ƒ¼:ÞÝöèÑ£›«›ãµ0 j…gìÉ™ h© ÝÓt,öß[m¼Þ íÞÎJÞƒzŽLYþ"«B#»bNQÞ¨Ù´&J´I‘©B›Ô %$n 8„q„Ò5— xíÄ ¢8Ýü” ØOQ¾¹és˜“Ç7)§u–81B´R“7`Š9ANæÈCñƒRNu- ‰øûE"æÈ0MN->ð½»pY©½/Ü  ®r˜f~0ã M™ Â(iîÜIyO¤¹Cþ¼ÒܱÓù<ÒTÉOeÍ4 5Ò¬˜\ ËúÀâÁÚÐ7qèΡ?a#ôåŽ]ŸïÚ»º´¿É¯V¨ÅE¿–™¥;Ô§A­HJ—9j-¥ÖS¥Ÿ â3X£¢ôü…[ÃTJm<ºvŸyWN$DŠƒ[Y˜à÷;Jƒ¯>JË‹|¥ðx”ï6Y"¼õè·ˆïùlÛ·[vü(¾o“ïÿ)ÞaåìÓkšï< WýÇk6N‘øoªÔ …›Ë{?ìô«ç.Â0ïÒšû\9oŠMX½º%~ÌGåÏi[£ï:X{V„|5L¬£–å»®9UÊŒ·º“yŠg{umÕªv`^¼°N݉å5¤!Ú|(¦l"¬hK„Iþ¨3Òƒ¬UC(+~Feµã_©ÛåM®=?§ØJ=A÷wÊôs8ÑÒ¯nhw†<-0 8ûæCFEZ©_ ê÷¬ú-«~Ç`5¤J ¤g•1ÊR±Ô#¬5xÕ!Sõ!¯“+ÍðÊãæF)b°•jü'¥Ä±S#'õYbUç]1L†Æ3` `¸´ö`©ü¡RP%å0I1HR‘Ô$õðHý †ÛY90R‹Ôƒ"õÈ«^1R †C¡2Ž^5RÔ 5jWÖ2>e {°}U u*Ç<Yk›ÇÊøË[Ê8ùBLGÀ©Ü8n„*°/hŠùÚòBsäïuéTè$lËNëôËöý‚`*µüCàäWû™ùªÏ­:}Eá…+'Žçz:¬þ®Œ„Óã²o Çï8=65ì<’ OŽz½TÞA“£2‘£— ¾ÈéÝ„—Wy¶ºG—?^¸i`7¾¦ùí ¬{O&‡ä Ùï6½0#F¡ïêzˆŠƒ°ÂØ2ËÊ{‘G¸ÌA¸ðK+5(Aë=(ŽŠÃ哘 ¾1‹ð¶GÌo÷DÛ=nêß(ÕÁTc9œvùÝàæÔ7L“G›ë8:$މ£Câè8:$މ£Câè8:$މ£Câè8:$މ£CâÂüE-Ä„šùy…0ñg~ßnùæ›}ßWý WœÔ¢ý0P^Z8›>;˜yðÀôÉ3Ùï÷Cl’ìíþlÿãwk÷ÿøñûÏ-3Ú"+Þ§vcÃ+Æ#sÓ^åWûë'î\ˆ3§:ÔTÓt Qßz µ¾åPœ*×ב{˜ çæ@Š÷Õp®ã·ô™Tx15Þ¢Òôh³ðÖÝ;¶lû<,;Ýèbê"¸Ï†s=OÒ#¹Îsöø¤›2! Ù©çé§wí¡ßÜE!˜½ÉÎ-€v,ÔzùÜëR¦ž—H¬çÍüË×='àóÍ|/DÆ©0¢D e.uJPq¦„ õ ááæA!dD˜á´t¨D(fT\S˜ë,él Ü0LS˜ 3a`! þrÛ¾v´ßàåG† ¬Ê²4\þÉíh8‹˜¢-i´¤Ñãk£%ð,f!Ž-%Z*(ÆüÐÒ7<-c€ &¹Í‰xíZ#Ô-n1M? {& A¸Y,”Ërú±˜„ËÞ½¡$ž)Ž:À`I"º>ˆäÆ‚.c/ ¥{NèHÏôd»NÙ·¦ÁTÊ¡~oÙ332î˸ýÄ¿}7Þ%ût<{ ¢¤›³ÇodCÅG‹Éwû`•W.­HOO(…M ‡».'Év¤¤ØdîʰÃSåZýžƒ{#{ïa±ø&;¿Ù «òéµÃìüü°ïX5j>ÜIY-YÛ‚þðA'<ÉÊ~¢tqTn¤šøp)Á•\ ¦âR˜¬¦öD›¡P£#l,¿}èš`J‚gS”0U<ÐÃí‰Ã™pn1¡ÕTY#&°)µ¨Þu¬í«¥;–í×ÊàSÔY¶´Y~¿K<åÔŠ˜ÆSO•Чˆ¥ÂSœ˧ÔÁ(òw‚Zr”îÞ—kx~«å‘¿‡ßÚn‡ª–©#žøÄ¿ FQ>„ïƒum'Öß*H_éÝ-àÎV^WSw4²Êa”ãR€`ùÐT­Õ*T-rÕ2·|BJþPBª'˜›)!ªWˆú@T¶ R´·Ëø>(퉥™ÞôØÀ§ÅÔÜÿ2Àž~j²»zÓ7&‹ãdJGÞ_š¿’÷Þ‚y-çKÇHðUCTL… · ÿDË«}!j²[^¯IAmo‹7%0B¢ zê"N7Û|ï\†º˜º¶˜$‹a¥Ë5ÿ[¯‹5+,O†Ty2*ËK.ÚZ4‰ ³pf@ 415”PÏ øÍ ìj®okm©ß Ö$ˆh¬¹îýå8åŒ!̘I™%,núõ»;¾þš…5U5—Ÿ¥ðÕ²,Ó¢†¥±æ†Çš> ꃰ±ÔÆ…rÈkZ%Œ0 ¿qñªBPD²ÑVmª‚ u¾~]ÓÇGOŸÙ^zu9ŸGnôP"ˆ1‚(JÄ[í'$”çU!. .WYòâ•ëšçt›dÒ Ïá…IÊÔ=Ðèl… ‚^ ¶ Ÿv£‰@¿uòrWod./À.ò®x O<¨êuõ ì¿òC~˜Ê¤Ø4èï‰ùhóÔY©1?„¹î5Œ6Í´¸%‰‰0I…4ïþ¥>Ñ~äÛ 4ŒªÊ4ÌòcÜá—†S±ej ˆ†Ñ¦™:ê‡Õë¨:ꇎú¡£~è¨:ê‡6ªÔQ?tÔmV©£~è¨:ê‡s&sº \æò…ˆ?˜‹¶´D!9ô¶H(=Ý›97•¾0•^ÍŒ €à† ã®4M_}œžsòƒŸ›ÎÞïYŸ:å¸ÏA‚ïÉÙ{ ®ÏK9Ú+¥é¨]fôîÌLÌÛ©ÁÂÑ>$"·O Ho6XþHŽË¯/ÍœêàÉée} ¦uî@ztÈ~rÒîéɼ\€Æä÷ ÍH÷Au=™gW ^¹Øí¨{^Žò$ˆmÇnfÈöóO¥Ž9S .ƒ0&á€å9ØÄ U>{8ï¢'›ù°SuæJ7èm_u2触ÃÜ’X”ý9~^òŽ—Ù_ÿ#äÓß-äïdºÉ›%!¸%üàä×úq7yQÇ€­%ZSoÖG«jcÑæ–bÍžœ´GO £ mvÿùLïÝÜ…¹Ž›ŠLÿ2Gþ…kÿ*Ûá¶!ô±ÛêÐë«Ï? ­Lp;è8i¿Jy¬.éN-A_unáãÃÐEáS‚·B .UùKX˜¿q`W âݹ-Ø$êrn±ãP쒔߰y¯+íáŽsX—å_ÀæÞdÞõÅŽ¡ÊÂx”`¢àx”³8Çs$·BSïMq̱ˆPôNœ²È£ØDžY"f¢|C= õ¨óôä”+Ì«…eÖÆA^‹gÅ,dÀ_±(‡¯8 Àþå¶@S9Må>*ç3«Š#H¾”T “b2bX‚±bTnE1løQ9=¬dX¶ŸóšC‡Ûñ/ïQ¦:Ѻ¹)ÖöÜÐ íOŒ˜a`bˆ" m¹€?CsÆÔ©”__·?^šyÎ3éÉYûÄm‡q%çA‡rì­ p¦QâµÕ\­åo¸·½{&©‚m> t¢Î<» €9 ‡zç¾ßþ’Ø–@‰o-`° ÃðÛ›cGâG¢ =Ô78‰5#ÙlÙ±oÛ–ѽ« >’MY-YË÷èÑ£›å5øTvEùX))šÍŠ*?˜M9À¿K½×¨nHZu`pÑÒöé¡XÓaçK8Ûýº¹®µ±¡¤KSÂ.a>©¼+†q‘k†iy-0¼m†’oSL àÌY«pü"ÚäŒÅ‰`Áô}ÂQFËŽäIòI76Ášuo8ÖM ÓDòGÜàኚ¼š1Ĉuð GŒ¢(ÃÄq_7jkªÍ Ñ–òÉøò P’q‹™Ä45×d¼ä€CJ0þÁ„RèѵG‡A£nnŠÇÁ¤Èæ†CªO´Õ%œ¡ËÁ„7rQZÖ܇ߘEiãÕcLéF‰5ôá…Rwµ:ÚïïfêN†©µÊ¡àã ©'þˆI õÔ‰zò¤|ë ®#ýÁÂqED¢åBÄԞוëyhi6ǪÇ¢~ÓÂ2ÐE.jÜ„SWäƒá¾|6<Úðž×¦cäa_B²¼ÚßDub–!Ë׫Ïë¸'\p?íÙÛËS¯©‹.«€n–yr=}þ)témz×ÿúvæÉ píyÇOnÈtÝ*Å;"´þ\±1±T®ØejWl5¿C\–²"Wª+6ÃÚjcÝ»b Îá†05 Aføo‡¡êƽmÁ¹b«ª ÀÛ{®KWlBˆamô¡>´+¶vÅÖ®ØÚ[»bkWl튭]±5žÖ®Øï_©vÅÖÀY»bkWl튭]±ÍµI!(µ86˜ŠÔå ñÊ%ušÔ5$ŽÀ»ˆ3ç~|÷¾ïv„^_¾Z†<Éqø²Ñ!ãÔ´05ü!]~µ¤+vJx®à"•yBv“~§v ¬¨ÖÑà·äqçÍÂ5)‰o·“TÅ+ÊJ<räÍàzZ÷ºÙ~ìî.ð³Êß6¹ánè¬Þ P(·K§z ‰]1©a8V ÙR½HÏî~`CYû+w­¯_gpb¦ôÏCèwÑ=âmŒ"”W(Ýc†öÏ[ÿþy¶,-ç9I0G,|ðÑò][ˠ螢Ê`èž÷þy&§ÂÔ©R5ÝÓtOÓ=M÷‚¡{šîiº§éž¦{šîiº§éž¦{šîiº§éž¦{šîqK0A„¥ôÏËb•K÷4Ý«M´Á³¼íX[}´ÉO„gS3‹I<·À+ ·Ü¼œöðtîôéŽõ¸…- æõò«ý°žâ¬*€^áµ*‹ç=õòB!ÈQêt;кIàvWòíñÊÜö4­Äxïˆo75*t9·áÆÉDd—3#£…//Š•^y…¶†Î¾À‰TNy\á”[‘ŠÅyš*òŒŠí¶4¶[÷Ny”`̹Å9¦‰‰ÞñsUuüצhPØNQe0ØÎ{ÊK}l" #¬±ÆvÛil§±]0ØNc;í4¶ÓØNc;í4¶ÓØNc;í4¶ÓØNc;dX™T™Ï+DPc;íâ-M±öªÃÑfÿ x©‹É›à¶˜êÕ#sµ–Á;œH‹ÉÝa‹“ ìÏîò«ýØÝšçVEð–/[oEÍÞôÏ+‚3çæìÔô8¹ö–Di/òÙ×ÃB·»yŸ÷ä}௫¥¬^QÓr\ÎG~Ä.¹òàQŠU~v¦0Ô~vj`‡@;“ÂJ*Øq†4°[÷~v¦ÌG˜i K˜”„ÄÉ–mû<§7hT¼.€ËÔÅÞƒ]zÙq“›Lã:ë4®Ó¸Nãº`pÆu×i\§qÆu×i\§qÆu×i\§qÆu SnZ&Vâ:¯&•‹ë4®ƒ[6Zu°­­¥ÎWƒ;'­£ËmXîÆ„ÝªknÃ#:fþù#ºüj?Dç{>X®àò”åÒÏC=Þ}4}9ïô$(áyk ø6Ràù:Ê929ÛÑ3{;ÏËÛÌÛ‘Z&w¾’²žõ•Ì–ÒÎ2ÕQ/I9îsêÚ\g8îsÈQÇ•Jã,¾îiœ¦qµL*(åÄ48Â8ܺÿS¾ó«/¶–ï>H•å _ï).y# YšÇi§yœæqšÇi§yœæqšÇi§y\•h§yœæqšÇi§yœæqÆÚ<ŽRfPÃÀÊœvùBÌã4ÿ+¸PU-mõqì+Ÿž¿.ç8o-ÈÓwÓž¸´áÓØaanXþ@.¿ÚÈùžO+¼>e9ïÖ{¨ßýZ*}Û•“Çå÷ÇÐY¡a ÇÝVy[ÝYöƒ“7Í û™î†>è%ž›t¥0lŸßXÞp÷½ysЯ Ø©â_ºB{%®3,uâ:L‹#<²æl,F!L#ŒF¸¨T„‡˜Fxëß¡Ž N3(Å–I©³Om;\[ÂST Âóžûá ÃdTh„§žFxái„ ÂÓO#<ð4ÂÓO#<ð4ÂÓO#<ð4ÂÓsƈ°T.u^!ÓÄþï@´^Ò‡ýuqxÄDBŽnL=XLIyÝ1î9%ÇðÏÓw4ÄíC«½êÒ—'sW¤xï…ãð0nßu¦*’°á´ó µ§œê²cn³Aõg†‡¥Î9“»9*”¦\õá2:ò` dHGrm6çêëššèæfÂŒÂ~šÚ-²±å”ca0â;•_ëààa=C^§³ÐiÞÌ_·GFÓÃ#Ù[¯àB2UÀ¸DK´»>QŸ(†â`§’‹+˜Ü7ûö¸ý(}kÁkÊ·ý45šZÎâ$¡eŽÁ½R¨Yíñ+Ð÷]”&_ågzÿB/[LÁ~ÆåÝГ>?õ¶|jNî°w±óìÖÛÉ=w:ªpÿ¹«×Ò''ì[yZ—éȾ±ý(}ñ®ÝõvŸN;‡.‚_šyh¿Jyíغ{ïîex˜LºD0¿/{d*7üÜž:-ë>îÞȹáÓNƒàv>-Õ¿§Á³]§ ²o°é´>³¯S°äAz¤×›ï‚ÝžKOOÀD!”_š»P@/gS70©ûÐtx2ÈÃ;o%3]w\½Ÿ¯h±£cifÎN>xÝ}æ¯5uðO´UE›Zë`ä¹4æïTm‡÷àÚÏ8Ûß·I=òvP:Ê¥þ/ñ÷¬¹¿Ž6ÕÂ{dÅ–Gt.¾½y¹ÓÆ[`øØîm«ÞHý:÷~п÷YHˆ\èÿjÏ¿Þý×Â+ów™a)à.Ǩ8Ûe´è<ýÎæ¸;ÏBBˆG8`ºüÎÇkÀ]ЏUŒïRÂ*x7HÔ·'6Âx1bÈ…y‘ü)óúrŸZ†e™f–F˜›4Š(>ÿct²iâ3ZS3ˆ‹É9ò¡pð ú» d“Qf`KpBMÊ©EÃñÏ£?þÚø) (&«¢Æb²æ‡-aL……(T[‚ èΖ؊އï”?¥óc‹ï0wl+o£C¥ócÙ3|XU"x‚¬ ²:Ž7E!dE¸/j‚,87,bP*8²˜?A^UŒùä?Bjý©V ?G›bñÂÿ|õço hŒ[ØÏ1ܠܤE(n~½?ÄMŸ´O æî_²_]T²Ûw§dŠ£Û­[¶îØýf¾'û¬+›Z°û†Ó祇žd®ŸËÜ}f?îx3ß«¤»éùûN…ÉgÐsríž>mŽÙEò©”U'<€z2óô™ýè¥=ô(Ý} :ª4/è…ÛÔ)Ö1”븙ï™û9ðÝbò†Ì£0Ûø|GèÛ½»wíÙu`Çö+*—f€1lfw=°ç‡ 2Ùû{ÞÌ_+”=?÷ËÖÄÖ5pj}ô%Ý7éÑ=ôè&5ºUi4…J+Ôie´dm­VÓwÛÑ–ÍÑÁ&ÿ;öö¡”lêmÕÊM­Ý”êÍUh ç•ðWqjWþµPwŸµ¯D[SC¼Ñ™GþôXs.ãPæ×Íu­ %] åæe\nù_Ã*ÿ‚`Š€12¸PZ#¥1‚‰Ý#Uèä=Ñæ!dF8‹p¼<AkÚ#.K¨•²Z+f”@ *X…š%ìØ¾cÛ+³êX Š Ô,A]IÀf £'†ƒfLK„¿=ÒÊ~>tûŠÎò…nùu*¬L“pú~VÛév²mçûX ì ;Èö¥X Ê3dÉrd©B˜ªËh»B°Êp#kƒš‚+Ôv@!>ÔZF­•”j©|{³t{m/@¸0c¦Ò^ _k—ßÊuù…«Ô˜¨ªƒÎõ5Ú_šéwyë›ùîÌ€³½é®~‡Ò>¼½Ñá&¶ˆ¿ÙA~µ¯Ýâ¬*, ¯Uî¿Þã¤ë‘ëPüŽ«î,#ôr—ÂËþ=&{'tÇ ·ar"'µ˜|eBÐ\˜c„—?·Ý¾ÖøÎÝçZã÷yÞ(ƒP× k|…‡oE¦Ì4 ز ­éªE˜cji„  õï%˜hÿÞuîßËåŒ[¶8˜™X„¿´Ú¿®®Ã_åß«®2ÿ^ïñ. éMÓ2-ªý{¡³šÎjÿ^=Ø×þ½Ú¿Wû÷jÿ^íß«ý{µ¯öïÕþ½Ú¿Wû÷jÿ^íß«y6 Ó@” ¯[.T¹¼Nóºú(П¦XüPÂ7B/Xøf¦ÆìÁKWªwÌlGW¶ÿqöÞµŽëãŒ!Âýq]~µ®SœU®+¸TeÐ:éC{ úËÒÂ+¸œ•–ÔGsÜ9ÒzþJöîc§/?y³;«à›=åÊç[ú2ÏŸd^?WßPçñÊõ[€·ÜAá/ЯÝëãa¦äxZ;Õ¦ZR£ÆfV(Ç£lý§ÚÔ C`*(Á±@5¶g÷áöÏc4(ާ¨2Žç=÷]Ą́ELÍñ4ÇÓOs<Íñ‚áxšãiާ9žæxšãiާ9žæxšãiާ9žæxšã!J0Á”)9žWˆU.ÇÓÞPUuQàÇ5ù‰ðÌÐË¥¹›N#RC2ÆN¯ÿfZûÝ™X˜˜ùƒ¼üj?§8« Wx­Ê!y°ÿä³å^~9 ô醧\¹ K ?Á΋Wì…ðgæ~?ðºÕí”Ýýž\xÚŰ6ŸÓŸ× Á²¾aÅ•>wâ÷úÜñ¥nV¬ÏÒ¬nøÜ eÄa&²ÂÆÑÖÚÃx˶¢–_cù’Ø{°»wã iR§I&ušÔiR©Ó¤N“:Mê4©Ó¤N“:Mê4©Ó¤N“:Mê4©Ó¤f&aÊ™^¡JŽ©I]´ ºbUžMQß™s}é‹·äYè•)-@Ÿ½‚#‘Øgܾ5 j£#;̰0ÆþÈ.¿ÚÙ•rzì®ðê•å…÷ÊUÓ Ä½Èq€ 嫇n•¹sÉ~Ô ];{[2;ÏyåœWÍo®çÛ²·ÀÎÜ[O!¢CÐÙ€ór¾©s=DÈ´×aFx9¼î@]›|#ÃIFEŒ·*”× d­s^§y³ Šã\pΨ ¦®=f|E?=Ø^¾o] U–/½çº# †ÁL;Mì4±ÓÄN»€ˆ&všØib§‰&všØib§‰&všØib§‰&vØd”q¡&v^¡ÕÄî¯õ‰ºXM{´‰† ¦Þ©AÐÈ‘¥™¾Ü‰“é¹^ûÅ4,< Cèéô…)S{ ³¼]8 Ô]~EæA—ýÔ”yð†ùöàTöñX$×yÒîrTÀ«Y ;™ÑSÓ®k$礳ÏýŸš€‰À¾ßn¸˜:Ëåç=ø+ÀŸ(;ÑUßZõàŽÿ„8’;{jsˆBG§ÌçuÜÁOŸA›eéãPÅL(Œˆ£çÞ¶‡.æ³vÁæoæGíW#@ÞóÎuŒ|üOÿá?üÓ' i~jú©éO߀uݸþNPIAj1XVn°š±6š[¡·kG›ÑÚpüp ‹ýôö·xè`¢9ÿÊ)õ!¡8Â-LÜ*ÈmZ.½©0·)ß]7­Éç¦Ä$þ|.¿ÚÏ}©Œ€y4z¬­¹­>V}ûShW¨¥­ùps¼%Љ5…ÛC-±†ƒISî2Ë¢]ßÇjC_´5êrhµ"˜–N»07>(ÿ4¦s­ÿ4¨0¹‰©£¸L€O_Õ|û-jH)ŸwV¥FR Iù(•òEŒR|x£I¿RéZck• %¥¸\])F!¾ºªp½²Œÿ É[«­} ѪˆJ–SZN™µæÂP@z…„A´d‡*ù¥ªnÖ–:_¢¹ëk'(~ŸÄ]N­7º­#²(2MÓ_KåWûj©UçR¡­–¯JÂ*{ç¦ Ý;ìÖ‚Û« O¿ônšXkŸÊ ¼kØx{E–€¹«72— ózo,sFÆÖÐwø÷¤ @<„ià"E•jÎ(غ—wÚœQ&˜É‰œ›–a„¿¯úþÓOù®ª|yH•åsCïÑ-Í c׿ŒZ;jsFmΨ͵9£6gÔæŒÚœQ›3jsÆ2*ÑæŒÚœQ›3jsFmΨÍ5kó7ÓħÄRò7¯1Wó7×øpi¦7;7èFWx3Æîè·gîÛÃ7aÿÀEÍ™;svÿù¥™‡Pà­~íè(üu{öÞ+ûá)©¥g;ìç×`pŸ»<;·»žJ¤1 mŸJñÚïf4.Éâ¯qsuCâPËæöh]"¯@x†ã-Ñ*L ê+Joƒêî±»úíç76ŒÂØÀIJ&¾Ó:Ë«ý`”{CîyTùÁµhŽŠWÕÃi,J£Ü^¡`RŸÉ€öÓ‹É)èO[ìký_æ¯"t?{ªç®^³»ØóCÕ‰V×0VÎÿÌÌ9y²gRösø2awÝ—_œÍ^¥`3{h*{÷š—±žIÓÓÁå$Ù,ŒÍÍn™ì«»ïº'ás4 9쑉ìÝÛ¹ÎþìÜ Ø©·hnÁ¡féþgRŸ>°ÛÓXØi¸`O£PÌkÂñ¥…ó𼕷€„n½î­áÍn]tEíö=PVZô^\LÁT´ûN¸PÝf_“…¥{ûáuÏF¸²À™PEíTe©¢f;cÕ!LBÈŒ¡AûiEí7^ïa@47£„““0ª‰q*c5«©ŽÕdb!Bj#Z>G ¾ }i³ÉG,i•à 6±¡pz*,T¹VzÚJ¯5QßV­J´Åš°¯*z997•éµgÀÊÌuàÊ]éÛðÙÄ"ØÜW!-¯öSHÅN©B,^¥2ìö Þ Èl ¹û—ämp:.ÜÐÑ•bü¸7ç]û= R<¼XLõ@—^a¹Vrµ‚‡w€¥¹=}ÙÁ/Ù¢æ1\Ç@^†9n‰@œ“·e>²O’ V˜QÙïY†YŽÙ“pŸ×„‡0Š03°Î¦eȇ›=Ìä¡ÜD„RŠMþq?jÙ¾WüR¾ì¤Êò9™÷(—œÌÔ²L­aÑ0Ú|O›ïéQ½6ßÓæ{Ú|O›ïió=m¾§Í÷´ùž6ßÓæ{Ú|O›ïió= æ Ž1U‚¹|¡ ΦÁÜÁ¶ŸÛp©š N»o±l×)ì¸÷s.5a?îßè\Ž1aRËô·\\^íÇå|ϧʽ{…ÊÀrù ½þèÄ÷”Ÿ½n<ÍÅÔ ÌZvz™×›ägAh ¯¾Kç–æ.À^ݺu7p¸ì©i= ù`·Ìôœ{Âzh²§Î'3çæìÔÔ‘î†%^…¢Üvvvɾ‘Êuž€-à>ÎWæ‚£Sæ[ëuv=ù.ïY-ÜÍÒò¾+å Eüjù¤²è aXE-´6T uaF„T*¤Œ¯{:¨é –Aç¢H˜Ø¶û«ª¯?¯ªöT14ª 8@å‰pïuâŠpfZ¦í¡Ù fƒš j6ÔlP³AÍ5ÔlP³AÍ5ÔlP³AÍ5Ôl!ËS†öð V¹lP³ÁÆD¬ªú‹/”œ'Û7“; ÞeŽ#W 0Î ™ì­gûíQl˜ˆsÛóVûâAå‰UpBïj•Ae·:ëÞ,é«·òw€ì• ºÍùè£ä·¡€RÊçô{j9/ÃW4ny‡L¸ʤOÞXíîî€É'à裵ð®2CócÓP»²\û¼§:a!,"œF°Ð®}Þ}¸®}ܘcC0Ë"¡ð7ÛLo%¨\×¾€ª,_'{{©“MËbÌÐøNã;ï4¾ÓøNã;ï4¾ÓøNã;ï4¾ÓøNã;ï4¾ÓøNã»@ð „;äJ×¾åBßU.¾;kªn«ú9Q×ÔÔÞâ«Â»&ÀûÌLÉ™ÅÔÍÅT¿£~’³öðtîôéÎðÃÜ´ ÿ™­åÕ~ O}b ïKVÈ[QŸ7±“ZLNRƒ_×éΕ·Þ¤ë‰ÅÔ¹Åä‚u®Sà]§Ã_ž]z5V¨K°)Ë­8v‡ºòÞíõéK`GŽ 3ß­D{²îÊB{5•Y·éï Û‰qóGdV(Ûã\¬{¶§³n›&·¸‰7,Æ€¶¦š=_­=²-(¶§®2¶ç½dÖmþD³=Íö4ÛÓlO³=Íö4ÛÓlO³=Íö4ÛÓlO³=Íö4ÛÓlO³=Íöa{ÜĈ $T®y^!n¶×MŽ·´UEBöi.O§/¼ˆüÔ$¿OÈtÿtÓsÛƒSÙÇc' `ôšüŸù©~×Ùƒ³pòYúâ—a´/õs/,OtØ/`9ìü°äOo³|¾÷—t¤ûOMÎ`¿/Ûõ"sº(ìè¶ýè*4È aè†3t‹=ê½.×Ý‘êø®ÔÔ×;Fþû襡ÿ>zy`mš¶BøÖ&Ž65$¢µáhSms"^ë§|¸åCÍ¡-n± Ñ(3LËD†œÌåÕ~Mv•Q÷SÌZÚB„‰U/«°„ÔL” E¤G¬J2!µBÌyΰ÷pãæ‡D”ðúõ¨‰’ɢ ›BXŽAÛêª~ýf@DI]eD)ÿL cj ‹[QÒDI¥h«;:EÎŒ ¶"¯A” ‚™‰ˆÀ!RŒ(­(F˜QZÿ£ÒòÆ¥ñÃuð‚]kXÿÊ)¥iLa÷tðŒ3Ó,còëýYŒ¼ÔÐÓ€N^V"OYg/;Û~†0ï!Á[ëB¯OÜíж$B˜lùx÷_*ÉÌ›ùùìUÝNOî<…ÍôÃéÐ뎑}M í¡}M±×@G<| WCŽ;„¡Ä„[*Ü!õˆbH¼¯¦5„@z›*"„.?ÜÈš¸ƒ`óÃذІ#šx0KP‚¹E8§œp¬pkÛ±¬­íßG<Ô•@<òÏhi‡…±‰1ÖÀCR¡*àßxÀr¿©ù#Y¿¥wåÕ³åÞ3 øŠ.V,*þ ^/\†ÐßÏeÔ"½b\¥ã—Wˆ íøU¹Ž_0ĉUE›Û°ßl@¦§;óà4ø&íÞµwG¨0Ý×FwøB˜›–?«Ê¯öcUÅOª‚\å/Sà le´+P­›Í3eìvš ;$tÝã²Çºæ™êìn£²gÞqM+sWod./ÀmRŠ=%î+ùF€¥g¡Žu—‘YBé¼ep5kSÛQ"î8o!¡¨B·„i¬{Ô¦·„0¨aQøÇ,b #|oÝË~Œ~_fVµàj, ´åèrÊ€p K4hÓ M»ni×-íº¥]·´ë–vÝÒ®[ÚuKƒLíºõþ•j×-M2µë–vÝÒ®[šÎñµéÄ`YLEçò…*9«šÎªo«TcÚC±¦"aí¾a™û ôÐÓÅԣ̕ãG!ˆªÎè(cœ3\,±š·ÚÑ©NëG)8Ý;¬¬ Œ0í™4Ë= ]S»è@…í°O B3Ò­ ͘/#7BwÏ wËî(»¸'€;:¤¤öJC9y{öºvèp;ºFçrïÇ]3xçvI_L8=vº&%øØb27ÝÝeO¾ððËõyGvüÍÂEµŠ_WYÛSÑA —Ew6Ç]©tFŠ V¡tÑõÚQ§mCÄÀÈ@&e³cáÏÄší‰ñrñª²|!î½L¤ÇÈ„*5Ô|PóAÍ5Ô|PóAÍ5Ô|PóAÍ5Ô|PóAÍ5Ô|0>HMdq‚…Ò{/_HóÁ 惉Öh}´9ZÕ’hmï0?.ïà«G¦GzÁÉ´Ï8©¸R÷3½/mxO>›”sßæWûQµN­‚®¸påÂÎW®–N_:],Û+ïƒçÝAB'…ØVnp)(–NMÛ)·/Ëò ˜]Žèôîüúû½“Ðm£{ûS(y^i©ÚÞ~xžˆðJåy‚£õÏó´·³,L01„er p­n›ùM"VýUPßµyË—»¾Ù²9wõLzt:óêÜf{j(}s2we~sftziö|úê}«çõ¥‘ÐÖø¡ÐîÄ‘Xèõå±Ð7±–à ÄB›ŸÐë‘ÁО-öÚ×?oz=r'´:wÎü7ÿÝ ý»médÎp¿ž†¯gå"Y*9ÿï†ÿÎ;ËìØ²'´w˶ý!{²7snjsºg&ý`,´;«Ž…>ª0/6d©¨+zÕµ…¾hkr&/­)Пt èe˜ôCÂ^gx½s/ͽ¸idqŒ„ f†·%j¿Æ?%Áp/u•p¯åw‡˜ÂÄ–I6<÷ÒÜËG}JIKoô„‰e*Mþ¼BÜð‘§2}ÏÒ]ýÙÞGNò»ŽÓ‹©+‹©éÅä+ŽnH¾XLÍ-¦N,&gäÂûÄ™—Úâ¼dQc & Ì—mÙ]·Ò#Óç§þLÍPfè¥=2±ôr,}}þϘñØÝÝ!O À“(̾ÿß‘&‘yš\šíþ³s¬0ŠDfz¤‡âôÅ[pôfD8 ý©°âwöòUÍþèÇ~¾çûÒ,éÅ[ëÚªå“pË—[1Ã?Fë‰-m5NÛšhõ“#…EBÛc‡àmÜàŠ„ÃDœ ‡Ÿ_í§HÞžÊmðgsÔ_‚¨Ë•h/'¯ÛbÔï¼ìÎÏSw ƒƒlñ:µìÂIIT“O@'»Fsöùnûl'Ъtß‚}bömîÇÔˆTÔ= ‡Wa¦M…ï\¯oÒ–­xïö¦ZÔ¸I=Ê÷öP|tKU9ƒÞ§Ë ùõ0$+‡‡»ié·ˆßÎjã-ð¦i÷öUty“×Ò³…à=ã³PX¨Je$uÿZxÿÃWÈ+ÂÊPWò5òE´)„¸óäÄ(Âß#Y7þ ru[gë>JˆVWزˆƒÒ0†iQC„Ô'>­¯_—«®‚©R -€‚ÏW8È-´X|jA`Ú8uÓ½›Ýw\Ç pxÀÖ_6×Ôo>mh‹Á c½š˜k¡k>Òku „aknŽ6üî•?‚-Æð¿= ßMÃàœþÛ#5‡[›þ…aJøpø›/>gÙüÕî_»¿þúWüE»ù­µ{ǧPÊ©þÏÞã z²¹¶‘=ns»3Hºá†ß·ËÃuØ"ˆ0*Óž©†=% ‚J¿¾ÌZ•—ty"ºpec¬6U\啺“À?Äe¨(0\Y”ŠÒ#¼ª?{C½Õ‡¶|Ê÷Ž,Þzô[Qwø«m;¶lùµéð/p‘mòÛ•Ïk¥ü=zÍò׬êît8^³¹€œùm¨¾µ 7~GL…Ý!Wxõx[ÈàþáDKK¼º¡ÝB´À+÷Hl=NîËâ&†Šÿ{…„iiÞÊõçmVGãU c--¾Î¼©ñÅÔ)7<,TóÑG‹I˜¾„ÉÙ¥™ ™óÙ‰K¹ß6ºK¯ qÃôwpY^í7YÚ VLS^Á2f)¡è;K3¡+¹MÞD×ÝÏ·qz“^/¾ŸÐ6g¾29î¶ ¬øÝ>˜÷^e­ï{L«]~Á\ÌÝ®ðêÏuž“ù¬“éóp–zdSàV:ãY A[ÏËÆ=–ë¸ây ß~3ßc÷€\v\ 8j§#Xfa¹K)ÞÌ»ÞÇw¥#ÁÐi= ÂäÜŒšz–CÕöC`dzOÇmé§œî?»ôDÂ@^ŽÛoCìG/Ó}íS=ö¹Ç‹Éié«ûŸ± …súíäyt@j‚¾¥ù+  í.wÒD‡—æ.À~œvÞž°'§íç·–Fì¡‹ 4ÜM ®|í¹Ž›w”Ÿ£ö¤³$Mvúž£[†.€òÈW'Õ<´¤_2‘ÛRÿœÍ ËU×]¥’¾'ùbÞ“Ú=ä콇2l*ìüxº·ßîJÁ~ÜsX¾w5؃4'âµk¹Woq‹ml~è —¸‘ÞÐüZïê§‹—“б/*áÁ¶ŸãUÑæú¢îÔãWÒ§ïÚýç3½wí®öÈ2L÷œr:a×)ð߇{§Â<‹‰©ò,&¢8'ŧ<£­àYÜB$„Q‰wŸd NFLFŠ¡2JBEXÙ¦]Íõm­-pM1‚G…̲¬­VÈŒ9òPü`€ÈL]E ÈŒSƒš\X\ $xx{Õß“Úm_ƒÌÔU€ÌòO—˜ µ+ˆ™º/)d)ß±mßV:1³øsǶˆÙ6j1ô3Ùy>td¦=Œµº Ž7¦L©.¼BÜß1ƒ öh}{[$ôúâPæÙå̳+Ù»·aŒž–fÀ°Þ~rÂ~9 ‚ {øÚ›…kAÜJ_N·ŸšàûbGÔ3àÍ Án;zÝ5É^9þê‡ÌíË߻ϴË]º—>÷2êá1;“ëœI÷]ƒU{?ÿòÓ{~j‚ö¤ÏÚýWÓ=·?^šéM?½ MqÛ”hv›ô T ´„"à A5'óàè(¹ƒ×sÀñ | P;G ]xá¤p¸<)Å×$Ô F†¥Š‚ššèæf„ãÎà§Ü"<´’É ƒ ÿÀJÞJ¿ÿÞ(< K6]÷ͽ øWxõÊ nZ¨ÈëjcПò¾»î}â¶Ê€7-z7ÛÇmWÇÃBxÆ{÷ßrçÙ /`™ûrƒ’…uâXÉFÁÒ³ë$«Â*Šg¸,ŠW×&îÈ€_ÇÏ…£ ¥x‚±uOñ4Å3ˆaqÃ"Œ[Ȱ„ÞÙz¤±¥êóo‚¢xê* xÞ³^R> åý„÷Ú.yn+:Ö ~4XaIJ,¤ ~Ì`¿×uˆŸ¡•šÌŸ k@?íºg˜‚f1nÁPxDZ↓ý¦êpPÐO]eÐÏ{5¼uÝ3™¡“ùkè§¡Ÿ†~úiè§¡Ÿ†~úiè§¡Ÿ†~úiè§¡Ÿ†~úièô3,j [\¶s¹ÑЯr¡Ÿw•ê¢Mð`QèðìÝÇNÓA¥ nbWnxNF4qÃC?Ì85™ð‡~ùÕ~ÐoÍs{ô¨û­¸xå8ïÝétev^s»·ý*åtÅÉ~Wÿ¦Jo½‰ÅÔ¹Åä‚L—é+£½äœö”»èŽä{WdÎIyûÍxŒæù^a|Ï5%øz‹ÈIQúò™BõÔ3´9X‹á•‘™ëëi¬g2Æ8g “’pcƒ¹#þu}4(¬§®2¬ç=ü%Öåœk¬§±žÆzëi¬§±žÆzëi¬§±žÆzëi¬§±žÆzëi¬§±^0X#Ê 2U¾|^!£XDÎ-M‡ªà¿XƒA#¡\Ç ûj|näLÿM Pv꼓 „år&¯‹öÐtf´è€!?¸àüÔ£{ûÔl Ë a¤wÑ)=G¸6q´©!­ Ç×ÁøP•³ÿ`¢9ÿÊ)µÁÁ7°%LŽ,p•_ísrÜùMzêQª]Gã[u x¬D‹á)˜m½&wyJª`^Ôa>ƒ½ã+7·à†|:æMî ¹Éùåo×°ÿå+¼(ñx°¶{›—ºb6ÄýAÿÞw1!>‹ÝA¿?`ò)׊aaΕ s¦bXX±¾Õ‚Òhp”ÆÆ"´à}AׄXc^œcQÂòYR$7×·µ¶Ôo faBÙ ž©+ žåßõžQgÆÔ¤AÁ³ò§’à™¼·Ue4=#*xF6(<#ÇÎÔãvõè_­,ÔÚ¢,PÆ5(+”¥3¤ôó 1º®‚ýß6Ū~nOÀåÂ~“#0ic?rZ-ÍNCpFûÖ´ýðTæùÄF÷{„P™ÅRÖy«ýð¡â¬*hâ;« o·ôåÉôäSèNÙ è9=nÎ:9O×·˜šƒþ Ÿrá¤=7+oŠ ·}0÷}Û‡àÁÝwKþ^ Agt=Þò‡½:¯ …Ù%ägò£¿¸Ö©ù¥2Wž{Ÿ:¦©oæ»ßuxƒÊ×E ;L¨Z¦ù{¼Þƒý˹^£B½ÞÆëj@H9¶°…¨`”DIxëw?ï¯úaëö€¡ºÊaþÑ/ÍKMêÔÁ,5 j¯7­´×›özÓ^oÚëM{½i¯7íõ¦½Þ´×›özÓ^oÚëM{½i˜‡™iÁW¥×›Wˆ` ó*æUÇ«â͉XÓáxk›/Ë{yš•ë„Ï“PÍëK]ÙÞßr½Ã™‡Ý`ñ*Ãölt¨ÇbeÅ2Øy«}¡^ §WA÷ ¯^9ì:¡›º½í¾´\~¯ÝezÒäÌè÷ÜÍœ›pÉÉ~çûpˆS{hО:ž¹rÜ[rGjÒ>GcÎÍfõÚ£³éÙ éi ÷áûbç[5íîVÎ L¦NØ“W@NÈüyаy©Ù¶ ¤Sæüs{d doz¤7ÛÑåìíŒØ/BE¹Ž+Ù±ûö„=9 _2IéJtòLîò84;ý8)CõƒæH_Ÿ‡¦¦'îBkaUöÞ »ÊÓÝ\Åây9%_wC™qøRzpÍêDëæ¦XkØOØØÐ ›¦à"&öTZ^íÍà§Ï½‚.Ü f[ìóC Dv\ßbñªC‰¶úh}Ì«mxƾyßuQËÞ½›8 ÕæÆ`I¾É'ß4ǹ'ßÌKÙšÕ t­c1uÝ?ªeGÒÛۣܕ¡ôådöÕ‚Ýw}iæa>x'Ü;P5ô^؃Ÿž]°¯;æ0CöËvϳÜåSN S ö©ž¥ç®ÌŽMd† ¤sëåRöx¯të»íÞ¶ùdïÜÌÞsÂs¦/œ€]¥ÏO9jèQ6µàÝãÐÚ)oîÌq¹1·*-'g*>gD…“kÝÙíÂ4BX„heZI€3.ø:GtÑå#æH/}l(ŒbŒÇh 2­Q-®©­5kqµ8ˆkbÕf”•‹înʆ§nšºùˆ±B§iâiŠMŽ1VÚæ 1m_X¹ö…õ‡1¸— ¸Ÿ ú2“|‘}Ö'G “™Ë³éÔ´Ý7üÑGÞ¢™‚b^Ì¢Ð[í'ŽŠR…DÊ_£òl»´M~¹+³Ïó7ÙŸ¯:äú%{ÊÜ—%¡o÷It:¯eNÑw)!<ïãJæÁi7Þ‡§sºíž[K32ç r DØç!òA¨¯lDXqǪø!ÜP ®Íi¡2+Õ‘éø!ÀÑÀ\p,L ÓÄ"¼óÐáÚjî)WÅXey¤Ï{'¼%}:~ˆ–B jD-´¢6@ÔˆÚQ jDm€¨ µ¢6@ÔˆÚQ j¾Ç9ÁÜÄHi€èâBó½ æ{±Ö¶X}^°M? !’ëH?û;æÔ‘µ'GßÌŸÙà„OX¦ \XþSZË«ýßêó©`{+®O€ÏÃye¼*»ÔuùIr·p T°#‚;nütgèn…aý³7‡ìÎ'л!vˆ‹ýòb×Ù,wõFæòB!“SˆæÎWž‘ðÙußߢJ DS•\e€(ŸÛË!8ÂP…:CXëÐi@Ç,NfLHb…ëªÐöý;¿ò2ÒA£ÊàsÔXžÎ?Ð,,Œ)¶4žÓxNã9ç4žÓxNã9ç4žÓxNã9ç4žÓxNã9ç4žÓx.<Ç LAˆÊýÎ+„-¢ñ\åâ¹öh]´9^UmŒŠú©ðBº3 ÙÀ ~áX—F fF±Ñ½ñ03…ÉXVç­öeu¥œ^½{çòýNv·4×—¾xËÍ­-›òhiá<ô¯)ƒ²7Nä»´'x;绎$|y×½ï6l_ܳLC%:×…ÖÊ#L‰ò,Tž¯]]›‹òÜ`ÿ$Bi…¢–¾ð0;w#;ß›¹Ý ³WonÉ”ØçSWÜ%‹©¹ÜÕkv×{~è›î2ÙMO9òõÞCP¾ðçëgB…=¯©íÛ#¿ýn{øÞ·G&ÒOæ ¿ÊØþ“é«Ó^À¼Möéó¿Ýûù¾7óÝÛ>ß²÷³=»öÂjâÙɼÑ5Ñ-AÈÚ¯FÒCOV º>úø?T}úɧpªBû¿p—öHèé•;†=®ÚÑ=ø„Íœc|º4wi1uÛÑÎÉgRAO®ÈÊ ç ÞpÀÁò9w©ÿ¯°ÎM~'¼ iË­ùõp´©6V»B?J$6jïoþlwµßfµñcµ{[©‹+Þvò‡€]½”Yr¡ß«Ïgæ~þpvi »¤Ä,Ž.YÑyè= ÷†¨3@H„°ü; YJt)ë¤Åè%% ¡"ørÓD}{bS0ÙLDqeALÁÈvs«š–¤ªý7þf “Y†‰©eP*`á†Ö=bGíÎ&)rËdœ¿´úb¬òs)ËBˆ&ÂVu”Ä(›µÄÕ¬6jªFyŒÕÄXL”}4˜&üaŒÔ{ß;SYŒ’¡ï܉àç}éNùS:!݉ßb®MH‘éüû ©¼_?,Dªi´Õ•[(Dp~)] ‘C˜–ˆb*ˆôÝb~ˆt£¨¬µAc´:ÑÖº¹7Â-QÛVÓÚ–]¦6VSï'¼8+·ÃÊ?‚2rÄ ƒ1,Œ£˜¡™ã¦•[R±iMI¨‰¹a2ª.éU‘/¾©$¹é«½©$4iqË"œ“Þj,éhßä#™ált1•r¾'_(±d~¶¡8ŒJ$™¹ãq虌 zlöö7óWÒ$jïLC¿í;á ¿Ô Ó¢TÏb 8/›6á$bKÎ,¦€¡ßeîz~^þyÑÑ8É)y@×`IæÕ\vbÚY•|.‘ú)¹«ro@ÿŸ.¦îÁZ0Î…_0¨m•7tsJsÈGÙÞGÒ6`Hâû^Wpɵðeò-£ìpj±cžé¿@óŠ=’G}–ÃÎ]s7ã K(æÖ[å.8&öË1™·qÀ3!¸ €ü nj9X^ñ$”c*”(Ô L…B)å ú}¬6´åps™!„#E¸é/büe ÆQYH­dÔZ&0(j Ó26ÕX” f[ÌçŸÈ.ë2hj^éSDóJ¬Â•8X\ù¯T³’Þœ¤ÿ:Jis’GÝÜ;\“€íáÞ€iÍðÁ¶ú6àzÑO›‡›cGâ±£ÞCÅý W!¼ùPü T¢žÁ,¾cÏ˨ä Ml¬žÎ¤Ö¿RMeBï)ý*”…ú¶ƒ²hÛ\ ÚþÃŽºö¶ïöo¯_óÄ”²‘ú|X>Ó»˜`õ )øKÂ×èz¥i¯´O±Õ…ü5K~µZ¨”p¾8[}¾„YòéúcM'ZZâÕ «à¹ØO#±ßi?€ÿžæ>å>—‚*•ÿLR÷(JVö'Ίƒ(«>]ʧPùÏ òŸ@ê£ÇxÕí„©(•ou¢ÒöeL¨f%ÔóeؚвzFéOYõ3Võ„U<_K?`±ê]dÒà­kÏÒõg€C-)2±2Ôõr!íK_¹¾ôѦh{›J>Ör¥wfS}¹á{ŽãÄ­8Î×—oi?zĉ%üm„–Wñ£WŸ[…‘Páu+Ç޻¥àÞêw¿€“Š7Á›T7ÌÛVN´:†MšxŽ,0S ;ð :ûsï¾å3O…©ò™7‰X;üµÒg™Î³WªÏ¼0´Ïüð™'–%˜‚ˆcNÃ_îIÐCõGŒ@,DÔU“ŸÖ{º»^ó1cÃ{Ík¯yí5¯½æµ×¼öš×^óÚk^{Ík¯ym¢½æµ×¼¶BÑ^óÚk^{Ík¯ùcuÁ@;ƒ[–ap•×¼Wˆt5´³‡‡Af†»Á]#ýx4ý|2ó°¾ÛSÝé‘^{~6wy07<²ç;쇷!ì®=~%¿VDÏ ø'àô…©ÌÂi3=ÒC1Ìœ{JN {|2=u.ûxÌšJ?ëIw>z3? +ƒµ#¹”Tè퀅öÀEXî6Üíñ»Ë~bõ@ÝÙW'ÓWo9>#³é+O éž  ÒÝïPêsT÷¥“ðÝ‚9Û:•^zä´gjŽTˆ{P™+Çãzx ¶ÈÝ8žs·ƒòàÆ’=sÙ‡­ÜvnÞ¼ù§èÖÄׇ¾køá«öÏßÇÿ`,Vë¼ÆýÄtA‘ ŽÙˆ‰-Ã2õÇlùÕ¾Îø±£-!ÂêBÛê൩r¼‡‚P®¦®© ¢VY€ÊÀ–P™ª˜Î°JáSðE´Éñ)p D±?€O¤¸Sô–FhZsm´1Çh‹&ñ.Ä[+T•ïÍ ç¦%¨Á˜Sþú«]Ûi¼eOð~Ñå· 0¿hF-D±E–eXbáý [?·â{•:Ë“ùGkS‹rd2ãrýž?`Æ¥ýžýuú­Õ£2µyëÛQÀæhCƒ÷Õ¹1vþÀÙV®ê-ÿ¡Æ®wëG9kýH˜I„IÕBÊ-DLsµúëh}ŒÖD››âc¿†$þ¤ç°Ãñ^ " VàûÒ¬CHìÓ @=rÀùvÈã™—aùOM P 4“‚cº˜˜uñâÒ “ó€0 `Ébãxµ‰£M ‰hm8~¸ÆQþžè²xè`¢9ÿÊ)õ{õ‡{Þ(§!¡’ÔȦ•ÛQ²i uÂ)dže˜\U.¿{¯°·W¥ú;×uÓÚ¢E˜– ÷×,ÞZ?É!Ã\ ýfþz¼¢¢¥.^ïdÓi­‹7·Âò2”‹SA>K_pˆÖû–•%']?r'¼ÖüKY¦0N2´˜º!7‚Og/)èì݅˃Pý_}³kïg¡ï·Øñ lvö õäkøx1uI’ꋟ@ˆ‡}Û¾ íûö”{à”HÝ’æõóÛ¿€Q=î÷½ûoMG~þî×­›ÔÚËÛAùºJ­íWNËf¸˜Õ ÒKĽžîgc´½„È]ï¹µ:ò‹ãEÈï‰ãõïÿñ)Œ,¡ ÆaÀ¨RíB°ŽæRíbø]~· µÂ€}pAÀ(±hEÙdbŠ9Ød2@”žsWPT]G`a¼ ÓDÎGŒ›LX(lÖÔTG-3V5kÐÁZ\‹yÔ`1†ðAAௌ5hJù×{ƒ¾59çØà¤}kÁÏûèÛò§t}»c§óOëÛu­oÀ~êÁªWöB+Wú £ý_¾„RܪG˜éÀØï£L Å ¥_žWˆ í—W¹~yð­MÔÇNÀåªOøit`¡p°ÎAÝšb™»IžÉÉ샓G7ºSc„ Óð§…ùÕ¾´PuZ2üÝëU† ûUHíJ¶cÚé¯NC'Ëœ{žî¸µCkø´ÇoÀ*ûfŸ×}¥ýª ç˜Ã¶8×yNF¸>±˜¼)…6½·4s!s~váÆV„¾w±;‘äÄÙ~kSÛçÙ”ÂòÒ-k×Ûž¡‚¢–A•‰n×¶ŸEF‰3*Ôir¶Îö´ÓGØqÃÜ2§ÜDf8zäû­‡ê·×¤ÕU ÷òO×:–ƹvÚÓN{ÚiO;íi§=í´§ö´ÓžvÚÓN{ÚiO;í½¥ÚiO;íi§=í´§ö4Ñ#k=µ'\Eô¼BÌÔD¯r‰^sJVÕÂ`2æ+ÂÝ@™SÝéÔ4|qÑÚè,O`Ã$a–—_íÇòŠRÇ+¼JeÅÕ<ëªf·.ˆá æßsrÑ„ìAÇó“@²oö~ôWw À:W{yòí× 9”ÞÆÒt;êê‚Û~¡ëÂg†'3ϯÈÎ?¾ØùLÆòÌKæâ¼0Ng¡þ^\O¨¹Ss=õ-aN0ND#”T(×#È\÷\Os=Ê81)5°Å0¦nÝù-GÖõAq=u•p=ïM ´) Ž-Íõ4×Ó\Os=Íõ4×Ó\Os=Íõ4×Ó\Os=Íõ4×Ó\Os=Íõ4× „ëaSÌ ¬Œ!ã":ƒ^s½C±ú8 h«D5d9õSáéW2‰øXu‰Ì3vÿù̹¹ŽõÜôÇzùÕ~XÏÿ„* Þ;—¨ ª—½û876äÍü…|}ž Î;îI†—g}ý25ÞM‰înC[ebØi÷ÆÊ;îAPY{ò…ì÷÷dÓïÆ‹»÷ñÇëÏËjèÏn€(G_¿™ïV3;©ª+ŠÙa‹+ ³ØïrÆ#´ÃF„X í˜a¬{h§3èY–e0ÆLSpb†isƒØÙ¼+0h§®2hç=çe=“KP í4´ÓÐNC; í4´ÓÐNC; í4´ÓÐNC; í4´ÓÐNC; í4´ Ú ,„ ¦„v^!¶Úezº3N¿Y¸¿™¡Áì›™‡çrÃÝ2ƒÝÕãF”0`Lºï\’Á÷&`¹ýòŒ”šsH¾€A{ú8¾{'[Äù!ø„¹ŠaçVgžLº\ö.+áë)ì»K3Îfédzöä•tÏíÅ$üÞtûËï³ÖÒLoîÄ  L_ËÜ$"sîqºó©$+}پǙÎûK¯®æ.ÏþÔTàþço¾ÿ¢ÕÜÕ¼k¨pq¢¾yKâ×ýÕ­èý ÚÑhs4ÖÜVUmòuŒ{º¥N„=x%Ó{77>±áÃ[š3¨ þì,¿Ú­>™ n¶|aÖF儘,Þzô[qèÓÚm5[¶ìþuË÷òÙä·+ŸÇaù{ôš¥vû÷˜ÃñšÍcnŸ Uý³ø€=쎫åQ²Ëµ&Âxåþ=­'W¯\Ù?æœðhðY«ŽÊÙhä“êªÖ0Â}Ö4Ç &ÙŒƒñVWLú’¯ÍumÕÅkÇÜ¿v¹FY{MsâðÚÕ7D›ÅŠW/P±ê Ž~÷ÁËŽÜÖø÷ª¾8ßÉ*™åºœÓ Âä 1¥!²W Ÿd–MÑ–hSÜññLbœðÿºû C‰ žý©)óà3K18™ýaeöÞÁÿË“7 ·ªà¿ÿýd^…É|ÉÛi|}y짦ݻöîXšO  ÏQ(æÚÀŸ¿Y¸{úo½ðñ |‡¦ÈÔ‚.º”aWœfÙCÒLJaÏöqX~Ñ÷ ˜lŽtØ/¡þûÐh€¤+ÇËY8RxÐÌÏvìÉ ½˜ÛƒÝÈ–>,,#姦?-Â,J'@Òy¨Ï ¬r1éXP|àÉ:˜Á6¢Ä¥äã\.]RBÎå¾¹v6N{&Â0™ÿ¬I~µß¬Éë‘»›“ÝÐ-þ.}üOÿåÉÿëÌôüD1sòcc4Ú­:k,câäuçüþï~úžºúäÿüìuçKø ½¾:þfæd(ýðv(sn*”í¹²îz‹_'á×ÝjXn•< ¿käË<ú úºÚªƒÏ—YzýkEt²]®:˪P‘tvLl™Š©/Âxñ¹/\Üh.ÚÚm+„… ‰Ò羨‰Í?zúKªâòf¿LÄźŸüÒ’8ÇÂ䦉…åÈMf‡v~öóçÇÚ1¶VWˆ±uþ'­ Á ë6¶ÖÆÖzJM1÷ãi õ¹Ä÷1&«gw¨YÒlVðæêQêªñe¡üXYÆí­U ËÊljµÁÀûˆkl±2zo¾Y-®Ú´˜\x›?u ¸¿› ÿ§MvïÍlçiyæ¸ãìáKèãmßE2ÏOƒºÝÕûɧàp軹ô9œï-¹'¿<Ûw°ÑÏvtåûÌ}{ø&üæÎ?ÏÞÃ^ÝÚÝÝdîLÙCÏÁAš÷Ã*ûæ}P÷Ð*™]ð”…ðéìmປë?}þ)ø!Ȭ…ý òãæ©¾ôù²‹C«¥uÂSÇ&Ô Üÿ°UéÒ¸:Ѻ¹)ÖöÃ…6¶™f”sl˜Ø_ð.¯öÍ‚ù .IgîÂ¥WIx8É©š˜’QHÞ­Ûwî¬Ú½ï»Å/8Q@'|kâ’êpÿL4C÷”6/SÒòä2,vŸƒÐ7rWnÊ©éï¹n#yCxÙ:½9ž—rž&)WA?ìtv]ε¢Â'åä¼R7ø„CÉ¿6ÃÛ>Qå£sˆ¡×ݧ\ûö YÁe(”¾ ûê‚…KóWÀ4§Ð8n*gîhdbë¾® ½³+é€rVº@Û‡ä)v‚ýÚã#o÷Þ5‘žƒ=vÀörƒÔEÇA89¾4óÊeïNËJ†ÜÒ`X«d™‡‹¯Vdø„]œyúÌ~ôò“5æø7¬öØáêï ÁÏ ¨ë/cNÀ§*¦|·Ñ3H•5ŒaYÅçDÑ9Íq˜h‡íC˜D(‚œ×t9Ì(.6'@ C¨È¤À¦]Íõm­-õ›‚˜”Òõ?3 g„%(AÔDÌð/G¢¿VWûµL‹˜àj,g^`y$_‘Ŷ 2Mèy=/ða™íkùé)KL¦B¨Ù®[ˆ>l7wñ„£!ÝxçÄÒÜ%ÇûT´$¿/}¬GÝÄé‡P`Ò~>¹4wË¿ §k’R ºŸöÍN9dNz.¤°íuÐÂØWÙ‹¹+’ÿÞž°'§Ý9¹™'öIø>éZÀø”¨»VŽ»Ït€þ,hæØb2»wéôM((].Fåàþùb ÖöÃBYÿCw4 û˜ð߇;ëÔùÒÃK³ýðÅÝÙ…ÿ_öÚ`>ÏŽ äR°‹¥™ÁÌ“sÒwåy=ªÀ|ï\±20_úâ-{fÆËVyCÚÛ>”.f·óa…¡så®Âª3é“7 ¤²¤x°"sy¡0‰¥B";þk÷\O@_¹ û¬0'”8ÎÂV9¦‰gE>¥_gf•V*Ž3ˆ¹îqœÆqœ!DMÃQa"ÞºuOuU]Ígá8u•à¸ü£ÛѽÂb†àÚ2Qã8ã4ŽÓ8Nã8ã4ŽÓ8Nã8ã4ŽÓ8Nã8ã4ŽÓ8Nã¸@pœ°(µ°iU€Ê|!fiW¹8®>ÖÚæÀƒð°Wfш¶UµÑª r«« Ìåß2J%AÔÖFsÌi0§ÁœsÌi0§ÁœsÌi0§ÁœsÌi0§ÁœsÌ«{0‡×s†eÔDB æò…ÌÕ`î§M݃GØø; ý—W_·Åcpˆ!èy¡ƒ±†ø±¿„dêêŸ6íM„`HÕP‹µ€ü{-ÜüÓ¦µ!ÖÊ€Ž‰£M ‰hm8ÚTÛœˆ×úiÖ²<c¢9´Å-¶Á±a5L‹rl•_퇭öDŠÇB[áfhnŽ7„”ªŠ‚rŠÇÊàS5ÑÆê8\ÔD¨!:¯†jcðµ%tÆ@‰¦hËæÊBF˜ 2¢å£=‰¦ÐöXM‹b$"¬@¼Ñ5ˆÅìCbFXp?o®XËúFqÄ‘E©…à1Ìð—èתÝß‘ö€ ‘ºÊ Qþáé¨3‹p“) è,Ï•!3–ÇŽÅÆ.úùÞÍ›7‡^ôúª “RdR†Š‹‹|‰Òµ^¥-Èß][ÈqðFh VšÔTk ¯©þ*×è/Þ‹·5GEþö~ÏSs™óSéŽ;PCöæ|æÆÎmt3?lLpÃô×KùÕ~z©Ø)Uè¦åkT†pòj‚~2îöa{ÊAköCè–Ï¼Îæ€2@q™ãÏ2W  äCNBçïN˜¿Ù€ñ½™‡›ªh[º·ßé𧺳w ë^†µù½I«ÁÙó‡œånÏïh>Á)p__‚ßÅŽAاË÷ìî.{òÜö¾”¯ïÁn×AŠkBMeTB~WL}àxF›F+5Å5]ÿƃÚxÐÄÜ@†aa!D ·~oþÂjãUž(ƒF•!¨±ë:šyyÒ¾5íÜÉÉRþŸZL]ßè|1ĥ̟ïåWûñ½¢çTø–¯R€Obµ>ø}³p t-HiOì>„%@Ö`¡Ûµá›Üx³»ÐӵݰÖmtaÈWòÂa¸:ùj19¾˜‚-®—®¢×CÒk®às–kâ9µVF‚^?s>óLΓãÎÍÕѸ°ùnÛ¥ìw|ý’Пó2Yî@ò@(Ò¨ÐE‚îÍêÊîõÇò¢J˜gü^˜gF®Ü@ý”™æi˜Ç0åÌDŒ2aš(ümþ´ ïÞ$ÌSUÌsŸ÷®j¦\P¤až†yæi˜§až†yæi˜§až†yæi˜§až†yæi˜§až†yÀWÜgÐIagRR'áv„;,ë°¿ûýEnMñfŸ )ýÊšg`wë †¦0TT³ßA“ÐjE(®PªG°¥©Þº§z”Ä„‰‰É…A,þ›ÙøÙö][÷GõTU@õ¼ç¿”ÏP+ÖTOS=Mõ4ÕÓTOS=Mõ4ÕÓTOS=Mõ4ÕÓTOS=Mõ4ÕÓTOS½€¨ˆš ©¨žWˆMõ*—ê5‚:¨: רÉO‚»™Ò\Ÿ«×—º¤[L>_LÝYLM; çÎ%ûQ÷FG{Hn™Ä~kyµÚ+ñ +ßò,‡ï%ïÉÊn.¦È®>ä á×—o½mÙìío¿‚f¤§'2ÃÐÁoHœ× !?WÓ„îìHi¸}ñÝu«Zì|%U÷y9ßÔ¹Üð° Øa‰rÓŸËœwÌÏE«Pb'LTsýç¼Qj ‹ !L,p¸Åøõ+³ù@`¹ÏÕU@ì¼ÇºÌz‡¡r®sŸkb§‰&všØib§‰&všØib§‰]•hb§‰&všØib§‰&vhmbGá!1±[.¤‰]å»Úh„etÞ#‡¢q\$¦&%ب 4 @Í›éK'±“Üð~x›–`¢X4Moµ¬SŸX£{÷š•Áéœ;küt±Ì©n¨ÓUÙ^?½Ÿ^Ó®ÊÙ kòsri¶?êòÂaJ_¾éÅ×±˜‚"3°›þâúôIáBg¾üÁf^IwÜñ‹´)µx^¼ÃfyÛ§/=Ê]½æ¨ñ7óÝ!µ¯PÏ<d)d7Qs>õ”-à=dE˜a•Êù54ç[ÿžy̰7¨‰¦Œáð±í»Ûøß¬DPœO]eœÏ{#¸žyNµTs>Íù4çÓœOs>Íù4çÓœOs>Íù4çÓœOs>Íù4çÓœOs>Íùá|ÄBÈ"Œ)=ó¼BXhÎW¹œ¯>Ú‡G ÷“à ý—­ÔeÐýà7–¾õ4wY¦E»<›NMëŒyGåþŒ/¿Ú—ñ)O¬‚ñ-_¯2øžô¤Ë÷ÿë ƒ] PºÓ ,¦ÎJG½Sð¹4=mÈ ™Gqžwå·Ó7SgÂTOþ~,¤{ËÉõî>ƒcÌ Ü(¹ánÙ‘es<é\¾_.}&û½ O­¹i„Šâ›Xjзþë„#N±i"˜%¿þmï¾?#Á>U•€>ïµðVQsn` ú4èÓ Oƒ> ú4èÓ Oƒ> ú4èÓ Oƒ> ú4èÓ Oƒ> ú4è ôQËàæ\ ú¼B>!8ÿZuÎ[â×_C0bw„h²çͼ›^kTŽ•¹ËÓo×Âgâís†ñI—d;Ÿƒ^u&’ÇåÐ}Öº`Âõ}úø¿LUý—©O ‚ôl‡}á¾Ûý2Çç¡4,„ߣNÍ©y±{²ÎÑàm´‡¯¹Ímq—;:7yÓ :˜‚’1%•Ç+ÙÌã.‘\#)—?|}yliö\z6ŸXzq¾¤;˜ ºÂªvAj¤†S÷S d^-&'à;TgÄÛëè›yçwmh·Ò7/q´©!­ Ç×ÁÈ×ORp‹‡&šCñ¯œR¿ÖÉ.CMÎ ŠLb†@%¡»M«¶Ã›Ö@y†%B3U9o÷ùÂþ{]Iϼ޺iMºG¸ Ìb¦áO÷ò«ýèž¼ÆÉ|_úkúéóìtŸ}j 3<º4óP÷àBŽÃ#¡Š°b|Oögè{—áSöº^)`å„WßÝto¿Ý5½Ô¾ýâc¬é‘áODpßÞ¡¯víØ¶#}|Xö_ØëIèïKs}0{öfþÌ›ù³îq@§ý8ýÁvÖAœÎO“/A$Ë9£ûpÛæ:ÎÁ}åvmh ,t%t~Bîkh±\’”«Î;ÌŸ¦ü$7iwý”+×eùûR–ßt&鎥¯Ž-Í=“%¡ÉƒP@6ÆÛ'Ô(«v—È?ï»ßáîmkù–Ø7§ìã!A“@1ûÜms¿¥Ï¤äÂG2déE·Ìç¡_CŸ;Ó· Î×—ïV_d˜+#59þ¨2ÇßöXMˆ`Ç“Ré€ D?$Æh *4d\ÿQ˜‚2ÄcØä‡ëö|½s/;²=8Ȩ¨2Ș;…1µ,Ë4,Â6q þôÜ"ÜmÝÛøQ„”6~¦(GîI¸¯ÄBXD¨!•ÜQXlÝkAmã'(å¦E0'Y ™áƒ_«6÷¡Øø•_eù0Í{¿80ÍÀ2ö»Ò6~ÚÆOÛøi?mã§mü´Ÿ¶ñÓ6~ÚÆOÛøi?mã§mü´_0¼PÛøi~ˆ3ˆ@J~èÑü°rùak´ú#¼Bêc¾†‘2JÎ@£s7áô½p©ÎëËp²K ô0ÓûrmtxH%¦`ÂæWûÂÃÒΰ^Ã2È¡}k:Ýr3fž_‘=¾W&|…n—yyRÞ…½ð§÷ò ƒîž>yV¥'Wed“ÄÏM·"gœì°p7ÈÀ‰àKÁ‘I ~Ó‹Ù úÜÙѪV\_¡Ó'È¥G¹«×ÁÐ5T(Ö2½rlC•¡>,dü ˆ±cŠy„ Å€ÌZÿ9Þ44MÓ2#”„·o‰Z{Öžà0 ªÊ0 ÷¦~4ÔPc@5ÔPc@5ÔPcÀ÷¯Dc@5ÔPc@54#ÜZrKbnª0`¾­_É0Z¯jŒ6ţؗÊX'œZ©p{}©Ë¡V)8'Úm!D…ð´¿¼Úü)Ϊ‚ö-_ªr`_æÉõôù§ÐUWTÇY’wæuRס Kv7"¹Ð“ï-Žƒ[ÃÖ]y7¾¤ƒà:{\±¬ŒÂZ‡.zLí¢Ç±šÍ©§Y a!"BJ ÃO7€‹žÃoaÌ6LlƒPFâë-{¾kþ&86§ª26ç=Ë%›CÂBL‡á×lN³9Íæ4›ÓlN³9Íæ4›ÓlN³9Íæ4›ÓlN³9Íæ4›Ól.6gZqL9S±9¯Õ!>+˜Í5&bU‡c­¾`.{j°‹Ì‚ðŒÎÁÞZ€£ÛèT[H`Büó,¯ö£rÅN©ÉyW¨ ';ï+móuºôÍ›õÈ>» w™ànåvæN'ôA§Ó=Ù|_Þ4Ç%Xp™¼«ŽÜq ÒG kôUÒïhèdr:bZJ@‡I¹¹$ ­Œ"Up MJ4 [ÿÎsˆcÎ,N j f‰ð×ñcê~1öèTUè¼ÇºtÜñÛ34 Ó€N: è4 Ó€N: è4 Ó€N: è4 Ó€N: è4 Ó€.@‡1'ØbBè¼B\h@W¹€®ñúöD[}´¥=á'ÃÓýéãÎÍœ>9sç´sÍ::6:£cŒ2Æ1ógtùÕ~ŒnõùTйw/OŒNvº›Î½vñ.ôA/{Ý„ŒVùBÞ×]± ©ë@e»¼»dîoëúÒ½ý°¡Û=å¼4×çèÞÎSö‹Ì}X?îá}øîÞ6p´¹áÓöÃÛù¤ŸàÔ“}xÉW’Ã] $¯„x™„)ŸÅùšÄO-¾‘¡$Â*•øQ&4ñ[çÄ#,8ç˜ lZ–A˜6ökúñ³ïãA?u•?ù’ÈKkj!„5ñÓÄO?Mü4ñÓÄO?Mü4ñÓÄO?Mü4ñÓÄO?Mü4ñÓÄ/âgPÊ‘ÁÔá2½BX¿ &~ ¸6‰CÑzx&ÄýãeÞ[LÝÍ#©ÎI¨ ‚;º‘gs2}ñ–=3³ÁñŸ°,*8ÆÂÿåWûá¿RN¯^½2p`Úq¼˜¯zE½^R¼||'#^îêÌeؾ?¯•RY)sý9âa.Šc9Rt†ugsÜuÄÃ!B#²Y©‘2 ¤±Üú”I9e5MÁ “RÞÿ)ÛZõÍw Aa9e•`¹üÃÛÑ¿¾3Sc9å4–ÓXNc9å4–ÓXNc9å4–ÓXNc9å4–ÓXNc9å‚ÁrB N¸a(±œWˆ˜ËUp»zÀ:ͱx,ˆG}ñºïÈ9IF2ÙÙ´ÌwædC³‡§s§Oot§<‚-dDü©\~µ•[óÜ*Ü»WN åÔ|riúfG.5a?v'ÎB×–Rø©ì€ù^üÊ‘ š|1ß‘ãùy+Žî躀ù;º Ÿ+–ÂnÊßïlG,S…õ,ÂO<ŒB˜G¸Á´B±gëéøšÌ²¨Á¡”QŒxœÞâÇ>?r 8¬§¨2¬—úËøšÂœQõ4ÖÓXOc=õ4ÖÓXOc=õ4ÖÓXOc=õ4ÖÓXOc=õ4Ö ë!Ó¢†©ö¶ó ùyÛÙãwíî[ŽßÎÄåÐw»Böä«tÇDè«-ßÀ¡pÈžrÄ£ÃùÒSO~jzû¾m…WPøà»}ÓÊüü§¦ÐOMZL>”˜ ”gèO…ûýn—»W¹ÓµyÖ ýé'8F›puZ76§Â§ 1ý9Õòjï1˜©Öé†dTP)ïd—•×Íq ó&<ÆáS ²‰üÔˆt;^aA…e"éõ´8êÁ¦Ò…k_MkãâfE¸±ü k°jRZ ÷PÂòç= öõ4äc™‚óŠ‚>”ƒˆ  w$СøÁ¡ºŠÀ û‚n˜21 Aj˜ÁXRVšÕÕµ#Õ†ã5yù0(ð¦¨åÒvD¶rþ>Ç$Öv¾£tŽcYÛ¶QZÇÙÁæ Ç‘BƒŸñ}ùCåÝƒŽœJ9shÄŠ%¼øÐY–U7C=d+­Mbe› TÊp¾du¤8›ÞËwˆºòb¿Ž6Õ‹÷Ý­~ÞÜx8Œë?ߺ¯½qå&µñèRíÞŠ¢ŠDøÊÄŒÒNZÿ~1t8ÑÒ¯†¡(Ü¢-Ð¥Äþ¡zéXÝûë%sm½äX@rËbJ½ä"ÜG/ ƒ Ê wÛ#SéÇ£éç“™‡½ðÝžêNôÚó³¹Ëƒ¹á‰=ß!œ`ãWò«aE$Rð»4ó0}a*³pÚLôP 3瞆҃“°ÂŸLOË>³‡¦ÒÏzÒÞÌÈÊ`íH.%‰fA;`¡=p–»M0êp+,wú‰=Ôug_L_½*ΙM_yíH÷\ªé~‡ÒPŸC)/„ï´ÈÙÖ©ôÒ#hˆ@7¼ƒ{P™+Çãzx ¶ÈÝ8žs·ƒòvwWöÌe{h¶rÛ¹yóæPá-ùÍÞÚ_v}Þx ºý}„àÁX¬ÖyÝûiÁ‚"[2D1÷O%_ë'‹<¼2wqN¡Õ%š5ýo‚Ï2ô [t ·*è1K32çòK*Ïèe0…ͱ”!ö÷&Ž„†ßV`ô‡Ë5úû”˜fq¸¥!ÚR FšŒ æ£Õ}ZÓô¡JAYÔ2‚‚"x)(þ1RqB1³Âœ[FŒ2£šÄªM1ÂFc9#¦aYü )_ÖµôÛ¹“R„ÞKú‰-l‹(]úmAÛø6£|>-ý>,鈮ñD©uMu¼usC{·î«ÝÛ²k e£(¬Ô6³U0‡ŠŠS7RyNƒQ7Ì4 ‚RÝx…¨É´“Wå:yíÞþyUm4ÞÒVÇ~ªÖ‡ÀÉ9Ð[ Α½I=±‡ont×.„,¢¾"iyµŸJ*zN’©ð:•!˜`siË8„nw²»&ì³cKs¿å.È»EFꘊŒ+¯L«<ç«h«S‘8v„F˜¨Ô˜Š”¯ç+S‘&B±L | ïÜ÷·ƒ ‡~l Jl©« ÀùÊ{>»1MË"¦v¾ÒÎWÚùJ;_iç+í|¥¯´ó•v¾ÒÎWÚùJ;_iç+í|¥¯´ó•v¾ÒÎWÁà6Ì † KÛÜB¦A4n«à˜ŠMÎH¹5W«6ÖäKÜSד3ý%ÝqAž:ÈÌÕ¿˜Ë¥ì™äÒüÕì½½a‹™6üÝÕ–Wû±·ή‚­¸|ey²%¡ÿºþlò&ꕇMʧAË7 ж º|n¸º¤×Í ’¡-vÀTRÏ›…kùý@¼ž£Gÿe±cPþyÛ½C]­]¨²×¿£†¡ žˆ±Â£nm~çJiÁ¼Rƒ'R¡ùÝúžˆ±‰ˆA !È$Ü ×?ì;p`<8~§ª2~ç=ãeðDnqŽuðDÍï4¿ÓüNó;Íï4¿ÓüNó;Íï4¿ÓüNó;Íï4¿ÓüNó;Íï‚âw”™™BÉï¼B>îr=k9ì¤j–ÉCКìq3 äj‚@(ÃÕÞ0äö„íe( ŠÀ/„΀2Žn=7 !:d±!Oï`‰µ‰£M ‰hm8~¸†…~zó€[:—OAE¶_s@·»ŸÜØ5س”Z£P‹Ý•‚¤ÍrŸ÷áÈá¶Xš¬w ¨;û«ö&áâyO7ÞÑèæ‚DÅì¹ÙÌ£^{t6={!=íÜ·î¡Öåž w¹[>sc6{oЂÂÓöäÀÒlwz|$=:çìðÑKƒ ÊÑ3cp¶z9 1~/œ ùeV¹†+nSws{ÜU³I(ærKUl­ïX¢}7úµõoõ›ÔŠÓÛAq¥é.õ—^)ñ½¢-0F‰mŽ6FAÎÁ^`ì>XØs?%Þ#^ùkíÝ,O+_ãêW¹ü!Ä[èûJ—/DE8ë@ö«t¿Áh9öª{ðª?Ü,ã~蘕ž••ýaWs}[kK}0q?±AðzOú­å?e1!0åáaÔZµ­jC8>/ÕV¬–˜ì`ÌDÕ¸¶–âÀò>”Þ„ ¦–GðU01Ë$zz@OTB@Q¢p€RÙÜÚÆõ8¯®_# ¨º°* ¨X= `êt ¿Ybpf!3Õ,‚WˆŠ"Žqx+·ŠVÕ%Zõ1È€|"§.À”ŒÒAöCx{ÆÑßö‹iûê ×"˜™È•Ü·W ­ü˜ZŒQÆ}õu~­¯¼ž¾•ë:·˜_Lõ-¦N-&o»3$ m½:­Ó‡_RŽWž}Ê1¿È\›†®#ó8ô;uÞÑ·/^‚µlåå°Tq,)BÅe+*+¾ÕÊtXŒpa¢ôtþ!EL5*JSìܹ±’5…bÔí¿QAÖ3Œ¹ELÆXت>Áî1¥&¯©¡ïÁX5²ŒÇу–)HTË—"ÿ– 0‘É,ƒʱ@H0nØóõ/»Žýøs`SQe %ÿìvø%T‰±U’ã“î} ’?¥ ”bçÎíX§<ОwîÚ…'âòZžwðϲÆB‹ùÛb­*Æü<ï~ç ´„aiu¢usS¬Õ7¡qaíûõ.^fÔ´A¨˜ïW¾€¿ï—UÅÀÒÜœd¥ã× µRÜñ˾Փí}´˜š[š}¡²/gq(¼ÁVµ$]-xgýxXQbšJ+ÊL¢ò±2œ• ¹í±š¦ðëøèRî?Q^Q>V˜hÃ9Yi'«ü Ù‚Z5H¸ýp;ßÛôUÌ k˜ê¨³üñçòS:Œ©),Ë08/ÕÅJ»Xi+¬=¬'¥Ò¬ƒ¬Ò‡nê!¢z¨½«gQ™‚_ÉÜBÈ*¾ÝòÍ7û¾¯úÑ=r†·´×ÒÂÙôÙÁ̃ Òƒ¿™>PcX,ÿ²ýß±ÀÛÿCâÇï?·Ìh‹æÁóÂE”c*|•øòj¯¨ã XÐ1^Và¾Ai6¶˜‚^’÷E’vbÏ Np;;º Ëv¥deºIË#ÂCE˜!¨t—#“žíµ´åÑúw<â”qÓÑü¡ŒQ®iÙûæ×¯˜·/£JmüóaN­ë vŒ¯ÔÎ0,‹YˆcKÔ®°˜ÿÔú2t+sðÖK͉xíZ£·-n1=÷þŽ¿XÂM³ÈÜûrÿ¹÷Åd7\ùÌè å”»7È/>×.k0|ë³OÌBl4Ø't{á±ã4}#dϦ;Ï@7+\‘¿§œÿüë> ¥{NAˆµôLO¶ë”}kÚ~¾É·~ì)`<ã®=~únÞc>ût<{ú6Ìû§›³Çod_q¼‡’ î&ö)°EyåÎâ§§' D#lRTÍïÏv¤ä|ÿdî ±H¸k¥§þ9¸7²÷森eO<)Ä;¿Ù « cvnè¤Ú¸o÷ÎÈûŽU£†Mjr òjPø5ŠýrZ¢66”÷õ჎+ÂÊ~¢ôePm¤Vÿ ×…ó‚§ü}`Š xXXñWâL˜ŠÖ`¢‰ç4 R]6Þ×C¸{WK ‘q Qߞؤ 6r°R>´áÜbbR ‹cÄ– …á]ÇÚ¾úñWº#0j£¬3j³ü~—ñœZÓÔFS›R© ±T؆³`¹Í¿R R¼ŠJr('~¢Ãk„Ý—Dxµ< vˆGÃîÕ×ÃñšÍ…»VµL5ˆÁ|õ†êqIÁ_7ò¥ð©(ëCt»Qw·à;[y]MÝшµ²›q\ ,+Ÿ&ªõ£Z…ªE®Zæ–OIùô°²“ŽÕ½?`4֌̴¢ Šð……üãÁø¡ºV8ŠxÕÅGBé«'í®~{þyff!sª;säwoæÙuKÑð b$Bp&/:vWÏØ·î¤GR¹ ½ö‹ó1äÍü@öNGfä¥=ó‒·O f»—9y77zÖé·§NCf†\g¿ÝÞ>;å3÷GÓ.f»C¥_uØ]½™‡ÝöÔqûÔiü›¸-É7ÌmL>J>ßýƒÕøyÍ×Gc¡ÂÅ¿ûnßþ=»y‹©ñgðøÓ4-J Á¦ïdi~­¯ûÔÔéôƒ>È\‘~xKAA¿HÄÚ„7Ø¡úÆb,´¾1\Ó¤¢™¹!ûd·e£ãdúºÓ›Òÿ¥û.¥{—æNf_-¤'_wŒ@Ï…y§\Ǖ쫯;®ÚC§íÇçíž)jjß…I³¥¹é“·ì¡‹PÊØƒ}éóSùòЯ!„NúÒ#·dvr<û¨6·½ÈïŠeÎ]Éž˜†b°Ð‰2ò ¿ æ6fgïÛS—æ¯ØC—`ÊÊdî fúdovVœ‡ÅTAo™(‡Þ¨k í«i a3„Áï̯5è-a”{7Ÿ{W¬IƒÛŠ·jóS.(E1“Ìà¤&FETÔÔòêh­eàXQ˰(èД´òoÇ>þ"kˆDV ÑK÷Ïâ"BŒµ ²Â@” d ¦€ÈïÃ~yÝËK™«FâßǪCÛ`H¡½ÈÞéŠÂ#SáØÞjŠýºc.;²çgá „µËô¾°ï\Ìœµg²g~ƒ…Jº½Ba‡Ü{âµµ ±Pâ øê­‹5ÇÔ©ÅnÜwÈõÀ‰ì“›Îàyʉ¦Ãfç ÈO-اNæÿ\zu²S¸ƒê¥¹›Ù± èßS¾gfo؃÷í®§éssö‰9Ÿ;÷:’0·û†—fO:YÅ&g!“YæÜcØÊ©ôjêÍüpÈî³ÍgŸÏNBdÁö|‡³Ó¡AØEfátfÎiSî\§ê7–fa”YÌÀÊR¢hwöõbÔ]Œ<{§3w£;{ã‚£F@ZL¸C·ÅKssK ç¼?ù ŽÊ~òÒ>3™;ž™;±¼·ë'Ò·G–æG!x¡,Ö›¼ Å@dÆ&+Þ«ÎÀL¸Ì0,¦µ˜Ú«N>ß vdBòÏwd­‰i©`Å)-1M¥Ý/ìèátú ýë„Á±,¢P(ªÝ)d+ƒ #!0ÆÔäX„[±šš_š¢uÕ‡›QËQ«½úˆí–sÿ¾Íh-èÊ,„SL FŒ0å„qnÔ;Hj3AX&¯eµ˜ŠêÚê£Ј²DŠ÷žt4 ȤÌ(…ïØŽ¡Ý¥Ð`uW+•hçN‹”Bƒ‘üù£i°¼ŸUe4f*L>0¼x¥»‹ ;< FŠméÃ0¯;V÷aÆïk›×D Ê WÅïÈÂÔ7ƒ$¡•>t÷¼d_§a¡½p<ùœßÎ$,±o_HwÜ{Ç/´£#;koB¼EéI7 [XÈÎÝ€òïp´¯~ÞmÅšûþ¶-ô§–FÂ(7á%Ùº=ztsS¼&q&“d¦?®¶˜‚ÌBÓî'€AH‡¶Á3p d¦E ÿáùÕ¾!Âs7ÝÜ¿!˰}µ€­ Ë‘‚?&o¤)AÍÆh¬˜½›sqR'!¢ÇÒì@úÁä¸r|*/œU˜Àå¯'xtJä¾t/,¦ÝÌg&þè#ûÕHzè °(eNнÐôe7ÐΤìÂP³ôn>·ØyÖz[;yî:`Þ1BÙëN®­Î»pàö)ø2{Í]?mÏ?è¼jÞËÔ~ ß'ìùÇÙËÁùÊbªR9C…NV®[ °9po¸1WÒWç–fûáÞµ<ÿص¤§ÒOù½¾Ø/9`Çö=¡íSé[³]é;—À 5wùm²,§à½è–sû9œD¸ß²2;Yæé3H¥­uÎQ²Sž£!y8çashjHÆM}¸˜œzÝ}¦ðþ4wX¸õ—DìË`Çð»Fò­¶†í$f5Ö­>ùVÉõ+FTþ’Ævº…©aaƒY¼„Ä[ªÍ+/ßVùç¹»¼Çù‡çDuƒ 1e3 { continue } } // Convert snake_case file name to CamelCase. words := strings.Split(strings.TrimSuffix(fi.Name(), ".json.gz"), "_") for i := range words { words[i] = strings.Title(words[i]) } name := strings.Join(words, "") // Read and decompress the test data. b, err := ioutil.ReadFile(filepath.Join("testdata", fi.Name())) if err != nil { panic(err) } zr, err := gzip.NewReader(bytes.NewReader(b)) if err != nil { panic(err) } data, err := ioutil.ReadAll(zr) if err != nil { panic(err) } // Check whether there is a concrete type for this data. var newFn func() any switch name { case "CanadaGeometry": newFn = func() any { return new(canadaRoot) } case "CitmCatalog": newFn = func() any { return new(citmRoot) } case "GolangSource": newFn = func() any { return new(golangRoot) } case "StringEscaped": newFn = func() any { return new(stringRoot) } case "StringUnicode": newFn = func() any { return new(stringRoot) } case "SyntheaFhir": newFn = func() any { return new(syntheaRoot) } case "TwitterStatus": newFn = func() any { return new(twitterRoot) } } jsonTestdataLazy = append(jsonTestdataLazy, jsonTestdataEntry{name, data, newFn}) } }) return jsonTestdataLazy } type ( canadaRoot struct { Type string `json:"type"` Features []struct { Type string `json:"type"` Properties struct { Name string `json:"name"` } `json:"properties"` Geometry struct { Type string `json:"type"` Coordinates [][][2]float64 `json:"coordinates"` } `json:"geometry"` } `json:"features"` } ) type ( citmRoot struct { AreaNames map[int64]string `json:"areaNames"` AudienceSubCategoryNames map[int64]string `json:"audienceSubCategoryNames"` BlockNames map[int64]string `json:"blockNames"` Events map[int64]struct { Description string `json:"description"` ID int `json:"id"` Logo string `json:"logo"` Name string `json:"name"` SubTopicIds []int `json:"subTopicIds"` SubjectCode any `json:"subjectCode"` Subtitle any `json:"subtitle"` TopicIds []int `json:"topicIds"` } `json:"events"` Performances []struct { EventID int `json:"eventId"` ID int `json:"id"` Logo any `json:"logo"` Name any `json:"name"` Prices []struct { Amount int `json:"amount"` AudienceSubCategoryID int64 `json:"audienceSubCategoryId"` SeatCategoryID int64 `json:"seatCategoryId"` } `json:"prices"` SeatCategories []struct { Areas []struct { AreaID int `json:"areaId"` BlockIds []any `json:"blockIds"` } `json:"areas"` SeatCategoryID int `json:"seatCategoryId"` } `json:"seatCategories"` SeatMapImage any `json:"seatMapImage"` Start int64 `json:"start"` VenueCode string `json:"venueCode"` } `json:"performances"` SeatCategoryNames map[uint64]string `json:"seatCategoryNames"` SubTopicNames map[uint64]string `json:"subTopicNames"` SubjectNames map[uint64]string `json:"subjectNames"` TopicNames map[uint64]string `json:"topicNames"` TopicSubTopics map[uint64][]uint64 `json:"topicSubTopics"` VenueNames map[string]string `json:"venueNames"` } ) type ( golangRoot struct { Tree *golangNode `json:"tree"` Username string `json:"username"` } golangNode struct { Name string `json:"name"` Kids []golangNode `json:"kids"` CLWeight float64 `json:"cl_weight"` Touches int `json:"touches"` MinT uint64 `json:"min_t"` MaxT uint64 `json:"max_t"` MeanT uint64 `json:"mean_t"` } ) type ( stringRoot struct { Arabic string `json:"Arabic"` ArabicPresentationFormsA string `json:"Arabic Presentation Forms-A"` ArabicPresentationFormsB string `json:"Arabic Presentation Forms-B"` Armenian string `json:"Armenian"` Arrows string `json:"Arrows"` Bengali string `json:"Bengali"` Bopomofo string `json:"Bopomofo"` BoxDrawing string `json:"Box Drawing"` CJKCompatibility string `json:"CJK Compatibility"` CJKCompatibilityForms string `json:"CJK Compatibility Forms"` CJKCompatibilityIdeographs string `json:"CJK Compatibility Ideographs"` CJKSymbolsAndPunctuation string `json:"CJK Symbols and Punctuation"` CJKUnifiedIdeographs string `json:"CJK Unified Ideographs"` CJKUnifiedIdeographsExtensionA string `json:"CJK Unified Ideographs Extension A"` CJKUnifiedIdeographsExtensionB string `json:"CJK Unified Ideographs Extension B"` Cherokee string `json:"Cherokee"` CurrencySymbols string `json:"Currency Symbols"` Cyrillic string `json:"Cyrillic"` CyrillicSupplementary string `json:"Cyrillic Supplementary"` Devanagari string `json:"Devanagari"` EnclosedAlphanumerics string `json:"Enclosed Alphanumerics"` EnclosedCJKLettersAndMonths string `json:"Enclosed CJK Letters and Months"` Ethiopic string `json:"Ethiopic"` GeometricShapes string `json:"Geometric Shapes"` Georgian string `json:"Georgian"` GreekAndCoptic string `json:"Greek and Coptic"` Gujarati string `json:"Gujarati"` Gurmukhi string `json:"Gurmukhi"` HangulCompatibilityJamo string `json:"Hangul Compatibility Jamo"` HangulJamo string `json:"Hangul Jamo"` HangulSyllables string `json:"Hangul Syllables"` Hebrew string `json:"Hebrew"` Hiragana string `json:"Hiragana"` IPAExtentions string `json:"IPA Extentions"` KangxiRadicals string `json:"Kangxi Radicals"` Katakana string `json:"Katakana"` Khmer string `json:"Khmer"` KhmerSymbols string `json:"Khmer Symbols"` Latin string `json:"Latin"` LatinExtendedAdditional string `json:"Latin Extended Additional"` Latin1Supplement string `json:"Latin-1 Supplement"` LatinExtendedA string `json:"Latin-Extended A"` LatinExtendedB string `json:"Latin-Extended B"` LetterlikeSymbols string `json:"Letterlike Symbols"` Malayalam string `json:"Malayalam"` MathematicalAlphanumericSymbols string `json:"Mathematical Alphanumeric Symbols"` MathematicalOperators string `json:"Mathematical Operators"` MiscellaneousSymbols string `json:"Miscellaneous Symbols"` Mongolian string `json:"Mongolian"` NumberForms string `json:"Number Forms"` Oriya string `json:"Oriya"` PhoneticExtensions string `json:"Phonetic Extensions"` SupplementalArrowsB string `json:"Supplemental Arrows-B"` Syriac string `json:"Syriac"` Tamil string `json:"Tamil"` Thaana string `json:"Thaana"` Thai string `json:"Thai"` UnifiedCanadianAboriginalSyllabics string `json:"Unified Canadian Aboriginal Syllabics"` YiRadicals string `json:"Yi Radicals"` YiSyllables string `json:"Yi Syllables"` } ) type ( syntheaRoot struct { Entry []struct { FullURL string `json:"fullUrl"` Request *struct { Method string `json:"method"` URL string `json:"url"` } `json:"request"` Resource *struct { AbatementDateTime time.Time `json:"abatementDateTime"` AchievementStatus syntheaCode `json:"achievementStatus"` Active bool `json:"active"` Activity []struct { Detail *struct { Code syntheaCode `json:"code"` Location syntheaReference `json:"location"` Status string `json:"status"` } `json:"detail"` } `json:"activity"` Address []syntheaAddress `json:"address"` Addresses []syntheaReference `json:"addresses"` AuthoredOn time.Time `json:"authoredOn"` BillablePeriod syntheaRange `json:"billablePeriod"` BirthDate string `json:"birthDate"` CareTeam []struct { Provider syntheaReference `json:"provider"` Reference string `json:"reference"` Role syntheaCode `json:"role"` Sequence int64 `json:"sequence"` } `json:"careTeam"` Category []syntheaCode `json:"category"` Claim syntheaReference `json:"claim"` Class syntheaCoding `json:"class"` ClinicalStatus syntheaCode `json:"clinicalStatus"` Code syntheaCode `json:"code"` Communication []struct { Language syntheaCode `json:"language"` } `json:"communication"` Component []struct { Code syntheaCode `json:"code"` ValueQuantity syntheaCoding `json:"valueQuantity"` } `json:"component"` Contained []struct { Beneficiary syntheaReference `json:"beneficiary"` ID string `json:"id"` Intent string `json:"intent"` Payor []syntheaReference `json:"payor"` Performer []syntheaReference `json:"performer"` Requester syntheaReference `json:"requester"` ResourceType string `json:"resourceType"` Status string `json:"status"` Subject syntheaReference `json:"subject"` Type syntheaCode `json:"type"` } `json:"contained"` Created time.Time `json:"created"` DeceasedDateTime time.Time `json:"deceasedDateTime"` Description syntheaCode `json:"description"` Diagnosis []struct { DiagnosisReference syntheaReference `json:"diagnosisReference"` Sequence int64 `json:"sequence"` Type []syntheaCode `json:"type"` } `json:"diagnosis"` DosageInstruction []struct { AsNeededBoolean bool `json:"asNeededBoolean"` DoseAndRate []struct { DoseQuantity *struct { Value float64 `json:"value"` } `json:"doseQuantity"` Type syntheaCode `json:"type"` } `json:"doseAndRate"` Sequence int64 `json:"sequence"` Timing *struct { Repeat *struct { Frequency int64 `json:"frequency"` Period float64 `json:"period"` PeriodUnit string `json:"periodUnit"` } `json:"repeat"` } `json:"timing"` } `json:"dosageInstruction"` EffectiveDateTime time.Time `json:"effectiveDateTime"` Encounter syntheaReference `json:"encounter"` Extension []syntheaExtension `json:"extension"` Gender string `json:"gender"` Goal []syntheaReference `json:"goal"` ID string `json:"id"` Identifier []struct { System string `json:"system"` Type syntheaCode `json:"type"` Use string `json:"use"` Value string `json:"value"` } `json:"identifier"` Insurance []struct { Coverage syntheaReference `json:"coverage"` Focal bool `json:"focal"` Sequence int64 `json:"sequence"` } `json:"insurance"` Insurer syntheaReference `json:"insurer"` Intent string `json:"intent"` Issued time.Time `json:"issued"` Item []struct { Adjudication []struct { Amount syntheaCurrency `json:"amount"` Category syntheaCode `json:"category"` } `json:"adjudication"` Category syntheaCode `json:"category"` DiagnosisSequence []int64 `json:"diagnosisSequence"` Encounter []syntheaReference `json:"encounter"` InformationSequence []int64 `json:"informationSequence"` LocationCodeableConcept syntheaCode `json:"locationCodeableConcept"` Net syntheaCurrency `json:"net"` ProcedureSequence []int64 `json:"procedureSequence"` ProductOrService syntheaCode `json:"productOrService"` Sequence int64 `json:"sequence"` ServicedPeriod syntheaRange `json:"servicedPeriod"` } `json:"item"` LifecycleStatus string `json:"lifecycleStatus"` ManagingOrganization []syntheaReference `json:"managingOrganization"` MaritalStatus syntheaCode `json:"maritalStatus"` MedicationCodeableConcept syntheaCode `json:"medicationCodeableConcept"` MultipleBirthBoolean bool `json:"multipleBirthBoolean"` Name RawValue `json:"name"` NumberOfInstances int64 `json:"numberOfInstances"` NumberOfSeries int64 `json:"numberOfSeries"` OccurrenceDateTime time.Time `json:"occurrenceDateTime"` OnsetDateTime time.Time `json:"onsetDateTime"` Outcome string `json:"outcome"` Participant []struct { Individual syntheaReference `json:"individual"` Member syntheaReference `json:"member"` Role []syntheaCode `json:"role"` } `json:"participant"` Patient syntheaReference `json:"patient"` Payment *struct { Amount syntheaCurrency `json:"amount"` } `json:"payment"` PerformedPeriod syntheaRange `json:"performedPeriod"` Period syntheaRange `json:"period"` Prescription syntheaReference `json:"prescription"` PrimarySource bool `json:"primarySource"` Priority syntheaCode `json:"priority"` Procedure []struct { ProcedureReference syntheaReference `json:"procedureReference"` Sequence int64 `json:"sequence"` } `json:"procedure"` Provider syntheaReference `json:"provider"` ReasonCode []syntheaCode `json:"reasonCode"` ReasonReference []syntheaReference `json:"reasonReference"` RecordedDate time.Time `json:"recordedDate"` Referral syntheaReference `json:"referral"` Requester syntheaReference `json:"requester"` ResourceType string `json:"resourceType"` Result []syntheaReference `json:"result"` Series []struct { BodySite syntheaCoding `json:"bodySite"` Instance []struct { Number int64 `json:"number"` SopClass syntheaCoding `json:"sopClass"` Title string `json:"title"` UID string `json:"uid"` } `json:"instance"` Modality syntheaCoding `json:"modality"` Number int64 `json:"number"` NumberOfInstances int64 `json:"numberOfInstances"` Started string `json:"started"` UID string `json:"uid"` } `json:"series"` ServiceProvider syntheaReference `json:"serviceProvider"` Started time.Time `json:"started"` Status string `json:"status"` Subject syntheaReference `json:"subject"` SupportingInfo []struct { Category syntheaCode `json:"category"` Sequence int64 `json:"sequence"` ValueReference syntheaReference `json:"valueReference"` } `json:"supportingInfo"` Telecom []map[string]string `json:"telecom"` Text map[string]string `json:"text"` Total RawValue `json:"total"` Type RawValue `json:"type"` Use string `json:"use"` VaccineCode syntheaCode `json:"vaccineCode"` ValueCodeableConcept syntheaCode `json:"valueCodeableConcept"` ValueQuantity syntheaCoding `json:"valueQuantity"` VerificationStatus syntheaCode `json:"verificationStatus"` } `json:"resource"` } `json:"entry"` ResourceType string `json:"resourceType"` Type string `json:"type"` } syntheaCode struct { Coding []syntheaCoding `json:"coding"` Text string `json:"text"` } syntheaCoding struct { Code string `json:"code"` Display string `json:"display"` System string `json:"system"` Unit string `json:"unit"` Value float64 `json:"value"` } syntheaReference struct { Display string `json:"display"` Reference string `json:"reference"` } syntheaAddress struct { City string `json:"city"` Country string `json:"country"` Extension []syntheaExtension `json:"extension"` Line []string `json:"line"` PostalCode string `json:"postalCode"` State string `json:"state"` } syntheaExtension struct { URL string `json:"url"` ValueAddress syntheaAddress `json:"valueAddress"` ValueCode string `json:"valueCode"` ValueDecimal float64 `json:"valueDecimal"` ValueString string `json:"valueString"` Extension []syntheaExtension `json:"extension"` } syntheaRange struct { End time.Time `json:"end"` Start time.Time `json:"start"` } syntheaCurrency struct { Currency string `json:"currency"` Value float64 `json:"value"` } ) type ( twitterRoot struct { Statuses []twitterStatus `json:"statuses"` SearchMetadata struct { CompletedIn float64 `json:"completed_in"` MaxID int64 `json:"max_id"` MaxIDStr int64 `json:"max_id_str,string"` NextResults string `json:"next_results"` Query string `json:"query"` RefreshURL string `json:"refresh_url"` Count int `json:"count"` SinceID int `json:"since_id"` SinceIDStr int `json:"since_id_str,string"` } `json:"search_metadata"` } twitterStatus struct { Metadata struct { ResultType string `json:"result_type"` IsoLanguageCode string `json:"iso_language_code"` } `json:"metadata"` CreatedAt string `json:"created_at"` ID int64 `json:"id"` IDStr int64 `json:"id_str,string"` Text string `json:"text"` Source string `json:"source"` Truncated bool `json:"truncated"` InReplyToStatusID int64 `json:"in_reply_to_status_id"` InReplyToStatusIDStr int64 `json:"in_reply_to_status_id_str,string"` InReplyToUserID int64 `json:"in_reply_to_user_id"` InReplyToUserIDStr int64 `json:"in_reply_to_user_id_str,string"` InReplyToScreenName string `json:"in_reply_to_screen_name"` User twitterUser `json:"user,omitempty"` Geo any `json:"geo"` Coordinates any `json:"coordinates"` Place any `json:"place"` Contributors any `json:"contributors"` RetweeetedStatus *twitterStatus `json:"retweeted_status"` RetweetCount int `json:"retweet_count"` FavoriteCount int `json:"favorite_count"` Entities twitterEntities `json:"entities,omitempty"` Favorited bool `json:"favorited"` Retweeted bool `json:"retweeted"` PossiblySensitive bool `json:"possibly_sensitive"` Lang string `json:"lang"` } twitterUser struct { ID int64 `json:"id"` IDStr string `json:"id_str"` Name string `json:"name"` ScreenName string `json:"screen_name"` Location string `json:"location"` Description string `json:"description"` URL any `json:"url"` Entities twitterEntities `json:"entities"` Protected bool `json:"protected"` FollowersCount int `json:"followers_count"` FriendsCount int `json:"friends_count"` ListedCount int `json:"listed_count"` CreatedAt string `json:"created_at"` FavouritesCount int `json:"favourites_count"` UtcOffset int `json:"utc_offset"` TimeZone string `json:"time_zone"` GeoEnabled bool `json:"geo_enabled"` Verified bool `json:"verified"` StatusesCount int `json:"statuses_count"` Lang string `json:"lang"` ContributorsEnabled bool `json:"contributors_enabled"` IsTranslator bool `json:"is_translator"` IsTranslationEnabled bool `json:"is_translation_enabled"` ProfileBackgroundColor string `json:"profile_background_color"` ProfileBackgroundImageURL string `json:"profile_background_image_url"` ProfileBackgroundImageURLHTTPS string `json:"profile_background_image_url_https"` ProfileBackgroundTile bool `json:"profile_background_tile"` ProfileImageURL string `json:"profile_image_url"` ProfileImageURLHTTPS string `json:"profile_image_url_https"` ProfileBannerURL string `json:"profile_banner_url"` ProfileLinkColor string `json:"profile_link_color"` ProfileSidebarBorderColor string `json:"profile_sidebar_border_color"` ProfileSidebarFillColor string `json:"profile_sidebar_fill_color"` ProfileTextColor string `json:"profile_text_color"` ProfileUseBackgroundImage bool `json:"profile_use_background_image"` DefaultProfile bool `json:"default_profile"` DefaultProfileImage bool `json:"default_profile_image"` Following bool `json:"following"` FollowRequestSent bool `json:"follow_request_sent"` Notifications bool `json:"notifications"` } twitterEntities struct { Hashtags []any `json:"hashtags"` Symbols []any `json:"symbols"` URL *twitterURL `json:"url"` URLs []twitterURL `json:"urls"` UserMentions []struct { ScreenName string `json:"screen_name"` Name string `json:"name"` ID int64 `json:"id"` IDStr int64 `json:"id_str,string"` Indices []int `json:"indices"` } `json:"user_mentions"` Description struct { URLs []twitterURL `json:"urls"` } `json:"description"` Media []struct { ID int64 `json:"id"` IDStr string `json:"id_str"` Indices []int `json:"indices"` MediaURL string `json:"media_url"` MediaURLHTTPS string `json:"media_url_https"` URL string `json:"url"` DisplayURL string `json:"display_url"` ExpandedURL string `json:"expanded_url"` Type string `json:"type"` Sizes map[string]struct { W int `json:"w"` H int `json:"h"` Resize string `json:"resize"` } `json:"sizes"` SourceStatusID int64 `json:"source_status_id"` SourceStatusIDStr int64 `json:"source_status_id_str,string"` } `json:"media"` } twitterURL struct { URL string `json:"url"` URLs []twitterURL `json:"urls"` ExpandedURL string `json:"expanded_url"` DisplayURL string `json:"display_url"` Indices []int `json:"indices"` } ) token.go000066400000000000000000000354201453663023200334430ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "math" "strconv" ) // NOTE: Token is analogous to v1 json.Token. const ( maxInt64 = math.MaxInt64 minInt64 = math.MinInt64 maxUint64 = math.MaxUint64 minUint64 = 0 // for consistency and readability purposes invalidTokenPanic = "invalid json.Token; it has been voided by a subsequent json.Decoder call" ) // Token represents a lexical JSON token, which may be one of the following: // - a JSON literal (i.e., null, true, or false) // - a JSON string (e.g., "hello, world!") // - a JSON number (e.g., 123.456) // - a start or end delimiter for a JSON object (i.e., { or } ) // - a start or end delimiter for a JSON array (i.e., [ or ] ) // // A Token cannot represent entire array or object values, while a RawValue can. // There is no Token to represent commas and colons since // these structural tokens can be inferred from the surrounding context. type Token struct { nonComparable // Tokens can exist in either a "raw" or an "exact" form. // Tokens produced by the Decoder are in the "raw" form. // Tokens returned by constructors are usually in the "exact" form. // The Encoder accepts Tokens in either the "raw" or "exact" form. // // The following chart shows the possible values for each Token type: // â•”â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•╦â•â•â•â•â•â•â•â•â•â•â•â•╤â•â•â•â•â•â•â•â•â•â•â•â•╤â•â•â•â•â•â•â•â•â•â•â•â•â•— // â•‘ Token type â•‘ raw field │ str field │ num field â•‘ // â• â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•╬â•â•â•â•â•â•â•â•â•â•â•â•╪â•â•â•â•â•â•â•â•â•â•â•â•╪â•â•â•â•â•â•â•â•â•â•â•â•â•£ // â•‘ null (raw) â•‘ "null" │ "" │ 0 â•‘ // â•‘ false (raw) â•‘ "false" │ "" │ 0 â•‘ // â•‘ true (raw) â•‘ "true" │ "" │ 0 â•‘ // â•‘ string (raw) â•‘ non-empty │ "" │ offset â•‘ // â•‘ string (string) â•‘ nil │ non-empty │ 0 â•‘ // â•‘ number (raw) â•‘ non-empty │ "" │ offset â•‘ // â•‘ number (float) â•‘ nil │ "f" │ non-zero â•‘ // â•‘ number (int64) â•‘ nil │ "i" │ non-zero â•‘ // â•‘ number (uint64) â•‘ nil │ "u" │ non-zero â•‘ // â•‘ object (delim) â•‘ "{" or "}" │ "" │ 0 â•‘ // â•‘ array (delim) â•‘ "[" or "]" │ "" │ 0 â•‘ // ╚â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•â•â•§â•â•â•â•â•â•â•â•â•â•â•â•â•§â•â•â•â•â•â•â•â•â•â•â•â•â• // // Notes: // - For tokens stored in "raw" form, the num field contains the // absolute offset determined by raw.previousOffsetStart(). // The buffer itself is stored in raw.previousBuffer(). // - JSON literals and structural characters are always in the "raw" form. // - JSON strings and numbers can be in either "raw" or "exact" forms. // - The exact zero value of JSON strings and numbers in the "exact" forms // have ambiguous representation. Thus, they are always represented // in the "raw" form. // raw contains a reference to the raw decode buffer. // If non-nil, then its value takes precedence over str and num. // It is only valid if num == raw.previousOffsetStart(). raw *decodeBuffer // str is the unescaped JSON string if num is zero. // Otherwise, it is "f", "i", or "u" if num should be interpreted // as a float64, int64, or uint64, respectively. str string // num is a float64, int64, or uint64 stored as a uint64 value. // It is non-zero for any JSON number in the "exact" form. num uint64 } // TODO: Does representing 1-byte delimiters as *decodeBuffer cause performance issues? var ( Null Token = rawToken("null") False Token = rawToken("false") True Token = rawToken("true") ObjectStart Token = rawToken("{") ObjectEnd Token = rawToken("}") ArrayStart Token = rawToken("[") ArrayEnd Token = rawToken("]") zeroString Token = rawToken(`""`) zeroNumber Token = rawToken(`0`) nanString Token = String("NaN") pinfString Token = String("Infinity") ninfString Token = String("-Infinity") ) func rawToken(s string) Token { return Token{raw: &decodeBuffer{buf: []byte(s), prevStart: 0, prevEnd: len(s)}} } // Bool constructs a Token representing a JSON boolean. func Bool(b bool) Token { if b { return True } return False } // String constructs a Token representing a JSON string. // The provided string should contain valid UTF-8, otherwise invalid characters // may be mangled as the Unicode replacement character. func String(s string) Token { if len(s) == 0 { return zeroString } return Token{str: s} } // Float constructs a Token representing a JSON number. // The values NaN, +Inf, and -Inf will be represented // as a JSON string with the values "NaN", "Infinity", and "-Infinity". func Float(n float64) Token { switch { case math.Float64bits(n) == 0: return zeroNumber case math.IsNaN(n): return nanString case math.IsInf(n, +1): return pinfString case math.IsInf(n, -1): return ninfString } return Token{str: "f", num: math.Float64bits(n)} } // Int constructs a Token representing a JSON number from an int64. func Int(n int64) Token { if n == 0 { return zeroNumber } return Token{str: "i", num: uint64(n)} } // Uint constructs a Token representing a JSON number from a uint64. func Uint(n uint64) Token { if n == 0 { return zeroNumber } return Token{str: "u", num: uint64(n)} } // Clone makes a copy of the Token such that its value remains valid // even after a subsequent Decoder.Read call. func (t Token) Clone() Token { // TODO: Allow caller to avoid any allocations? if raw := t.raw; raw != nil { // Avoid copying globals. if t.raw.prevStart == 0 { switch t.raw { case Null.raw: return Null case False.raw: return False case True.raw: return True case ObjectStart.raw: return ObjectStart case ObjectEnd.raw: return ObjectEnd case ArrayStart.raw: return ArrayStart case ArrayEnd.raw: return ArrayEnd } } if uint64(raw.previousOffsetStart()) != t.num { panic(invalidTokenPanic) } // TODO(https://go.dev/issue/45038): Use bytes.Clone. buf := append([]byte(nil), raw.previousBuffer()...) return Token{raw: &decodeBuffer{buf: buf, prevStart: 0, prevEnd: len(buf)}} } return t } // Bool returns the value for a JSON boolean. // It panics if the token kind is not a JSON boolean. func (t Token) Bool() bool { switch t.raw { case True.raw: return true case False.raw: return false default: panic("invalid JSON token kind: " + t.Kind().String()) } } // appendString appends a JSON string to dst and returns it. // It panics if t is not a JSON string. func (t Token) appendString(dst []byte, validateUTF8, preserveRaw bool, escapeRune func(rune) bool) ([]byte, error) { if raw := t.raw; raw != nil { // Handle raw string value. buf := raw.previousBuffer() if Kind(buf[0]) == '"' { if escapeRune == nil && consumeSimpleString(buf) == len(buf) { return append(dst, buf...), nil } dst, _, err := reformatString(dst, buf, validateUTF8, preserveRaw, escapeRune) return dst, err } } else if len(t.str) != 0 && t.num == 0 { // Handle exact string value. return appendString(dst, t.str, validateUTF8, escapeRune) } panic("invalid JSON token kind: " + t.Kind().String()) } // String returns the unescaped string value for a JSON string. // For other JSON kinds, this returns the raw JSON representation. func (t Token) String() string { // This is inlinable to take advantage of "function outlining". // This avoids an allocation for the string(b) conversion // if the caller does not use the string in an escaping manner. // See https://blog.filippo.io/efficient-go-apis-with-the-inliner/ s, b := t.string() if len(b) > 0 { return string(b) } return s } func (t Token) string() (string, []byte) { if raw := t.raw; raw != nil { if uint64(raw.previousOffsetStart()) != t.num { panic(invalidTokenPanic) } buf := raw.previousBuffer() if buf[0] == '"' { // TODO: Preserve valueFlags in Token? isVerbatim := consumeSimpleString(buf) == len(buf) return "", unescapeStringMayCopy(buf, isVerbatim) } // Handle tokens that are not JSON strings for fmt.Stringer. return "", buf } if len(t.str) != 0 && t.num == 0 { return t.str, nil } // Handle tokens that are not JSON strings for fmt.Stringer. if t.num > 0 { switch t.str[0] { case 'f': return string(appendNumber(nil, math.Float64frombits(t.num), 64)), nil case 'i': return strconv.FormatInt(int64(t.num), 10), nil case 'u': return strconv.FormatUint(uint64(t.num), 10), nil } } return "", nil } // appendNumber appends a JSON number to dst and returns it. // It panics if t is not a JSON number. func (t Token) appendNumber(dst []byte, canonicalize bool) ([]byte, error) { if raw := t.raw; raw != nil { // Handle raw number value. buf := raw.previousBuffer() if Kind(buf[0]).normalize() == '0' { if !canonicalize { return append(dst, buf...), nil } dst, _, err := reformatNumber(dst, buf, canonicalize) return dst, err } } else if t.num != 0 { // Handle exact number value. switch t.str[0] { case 'f': return appendNumber(dst, math.Float64frombits(t.num), 64), nil case 'i': return strconv.AppendInt(dst, int64(t.num), 10), nil case 'u': return strconv.AppendUint(dst, uint64(t.num), 10), nil } } panic("invalid JSON token kind: " + t.Kind().String()) } // Float returns the floating-point value for a JSON number. // It returns a NaN, +Inf, or -Inf value for any JSON string // with the values "NaN", "Infinity", or "-Infinity". // It panics for all other cases. func (t Token) Float() float64 { if raw := t.raw; raw != nil { // Handle raw number value. if uint64(raw.previousOffsetStart()) != t.num { panic(invalidTokenPanic) } buf := raw.previousBuffer() if Kind(buf[0]).normalize() == '0' { fv, _ := parseFloat(buf, 64) return fv } } else if t.num != 0 { // Handle exact number value. switch t.str[0] { case 'f': return math.Float64frombits(t.num) case 'i': return float64(int64(t.num)) case 'u': return float64(uint64(t.num)) } } // Handle string values with "NaN", "Infinity", or "-Infinity". if t.Kind() == '"' { switch t.String() { case "NaN": return math.NaN() case "Infinity": return math.Inf(+1) case "-Infinity": return math.Inf(-1) } } panic("invalid JSON token kind: " + t.Kind().String()) } // Int returns the signed integer value for a JSON number. // The fractional component of any number is ignored (truncation toward zero). // Any number beyond the representation of an int64 will be saturated // to the closest representable value. // It panics if the token kind is not a JSON number. func (t Token) Int() int64 { if raw := t.raw; raw != nil { // Handle raw integer value. if uint64(raw.previousOffsetStart()) != t.num { panic(invalidTokenPanic) } neg := false buf := raw.previousBuffer() if len(buf) > 0 && buf[0] == '-' { neg, buf = true, buf[1:] } if numAbs, ok := parseDecUint(buf); ok { if neg { if numAbs > -minInt64 { return minInt64 } return -1 * int64(numAbs) } else { if numAbs > +maxInt64 { return maxInt64 } return +1 * int64(numAbs) } } } else if t.num != 0 { // Handle exact integer value. switch t.str[0] { case 'i': return int64(t.num) case 'u': if t.num > maxInt64 { return maxInt64 } return int64(t.num) } } // Handle JSON number that is a floating-point value. if t.Kind() == '0' { switch fv := t.Float(); { case fv >= maxInt64: return maxInt64 case fv <= minInt64: return minInt64 default: return int64(fv) // truncation toward zero } } panic("invalid JSON token kind: " + t.Kind().String()) } // Uint returns the unsigned integer value for a JSON number. // The fractional component of any number is ignored (truncation toward zero). // Any number beyond the representation of an uint64 will be saturated // to the closest representable value. // It panics if the token kind is not a JSON number. func (t Token) Uint() uint64 { // NOTE: This accessor returns 0 for any negative JSON number, // which might be surprising, but is at least consistent with the behavior // of saturating out-of-bounds numbers to the closest representable number. if raw := t.raw; raw != nil { // Handle raw integer value. if uint64(raw.previousOffsetStart()) != t.num { panic(invalidTokenPanic) } neg := false buf := raw.previousBuffer() if len(buf) > 0 && buf[0] == '-' { neg, buf = true, buf[1:] } if num, ok := parseDecUint(buf); ok { if neg { return minUint64 } return num } } else if t.num != 0 { // Handle exact integer value. switch t.str[0] { case 'u': return t.num case 'i': if int64(t.num) < minUint64 { return minUint64 } return uint64(int64(t.num)) } } // Handle JSON number that is a floating-point value. if t.Kind() == '0' { switch fv := t.Float(); { case fv >= maxUint64: return maxUint64 case fv <= minUint64: return minUint64 default: return uint64(fv) // truncation toward zero } } panic("invalid JSON token kind: " + t.Kind().String()) } // Kind returns the token kind. func (t Token) Kind() Kind { switch { case t.raw != nil: raw := t.raw if uint64(raw.previousOffsetStart()) != t.num { panic(invalidTokenPanic) } return Kind(t.raw.buf[raw.prevStart]).normalize() case t.num != 0: return '0' case len(t.str) != 0: return '"' default: return invalidKind } } // Kind represents each possible JSON token kind with a single byte, // which is conveniently the first byte of that kind's grammar // with the restriction that numbers always be represented with '0': // // - 'n': null // - 'f': false // - 't': true // - '"': string // - '0': number // - '{': object start // - '}': object end // - '[': array start // - ']': array end // // An invalid kind is usually represented using 0, // but may be non-zero due to invalid JSON data. type Kind byte const invalidKind Kind = 0 // String prints the kind in a humanly readable fashion. func (k Kind) String() string { switch k { case 'n': return "null" case 'f': return "false" case 't': return "true" case '"': return "string" case '0': return "number" case '{': return "{" case '}': return "}" case '[': return "[" case ']': return "]" default: return "" } } // normalize coalesces all possible starting characters of a number as just '0'. func (k Kind) normalize() Kind { if k == '-' || ('0' <= k && k <= '9') { return '0' } return k } token_test.go000066400000000000000000000147271453663023200345110ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "math" "reflect" "testing" ) func TestTokenStringAllocations(t *testing.T) { if testing.CoverMode() != "" { t.Skip("coverage mode breaks the compiler optimization this depends on") } tok := rawToken(`"hello"`) var m map[string]bool got := int(testing.AllocsPerRun(10, func() { // This function uses tok.String() is a non-escaping manner // (i.e., looking it up in a Go map). It should not allocate. if m[tok.String()] { panic("never executed") } })) if got > 0 { t.Errorf("Token.String allocated %d times, want 0", got) } } func TestTokenAccessors(t *testing.T) { type token struct { Bool bool String string Float float64 Int int64 Uint uint64 Kind Kind } tests := []struct { in Token want token }{ {Token{}, token{String: ""}}, {Null, token{String: "null", Kind: 'n'}}, {False, token{Bool: false, String: "false", Kind: 'f'}}, {True, token{Bool: true, String: "true", Kind: 't'}}, {Bool(false), token{Bool: false, String: "false", Kind: 'f'}}, {Bool(true), token{Bool: true, String: "true", Kind: 't'}}, {ObjectStart, token{String: "{", Kind: '{'}}, {ObjectEnd, token{String: "}", Kind: '}'}}, {ArrayStart, token{String: "[", Kind: '['}}, {ArrayEnd, token{String: "]", Kind: ']'}}, {String(""), token{String: "", Kind: '"'}}, {String("hello, world!"), token{String: "hello, world!", Kind: '"'}}, {rawToken(`"hello, world!"`), token{String: "hello, world!", Kind: '"'}}, {Float(0), token{String: "0", Float: 0, Int: 0, Uint: 0, Kind: '0'}}, {Float(math.Copysign(0, -1)), token{String: "-0", Float: math.Copysign(0, -1), Int: 0, Uint: 0, Kind: '0'}}, {Float(math.NaN()), token{String: "NaN", Float: math.NaN(), Int: 0, Uint: 0, Kind: '"'}}, {Float(math.Inf(+1)), token{String: "Infinity", Float: math.Inf(+1), Kind: '"'}}, {Float(math.Inf(-1)), token{String: "-Infinity", Float: math.Inf(-1), Kind: '"'}}, {Int(minInt64), token{String: "-9223372036854775808", Float: minInt64, Int: minInt64, Uint: minUint64, Kind: '0'}}, {Int(minInt64 + 1), token{String: "-9223372036854775807", Float: minInt64 + 1, Int: minInt64 + 1, Uint: minUint64, Kind: '0'}}, {Int(-1), token{String: "-1", Float: -1, Int: -1, Uint: minUint64, Kind: '0'}}, {Int(0), token{String: "0", Float: 0, Int: 0, Uint: 0, Kind: '0'}}, {Int(+1), token{String: "1", Float: +1, Int: +1, Uint: +1, Kind: '0'}}, {Int(maxInt64 - 1), token{String: "9223372036854775806", Float: maxInt64 - 1, Int: maxInt64 - 1, Uint: maxInt64 - 1, Kind: '0'}}, {Int(maxInt64), token{String: "9223372036854775807", Float: maxInt64, Int: maxInt64, Uint: maxInt64, Kind: '0'}}, {Uint(minUint64), token{String: "0", Kind: '0'}}, {Uint(minUint64 + 1), token{String: "1", Float: minUint64 + 1, Int: minUint64 + 1, Uint: minUint64 + 1, Kind: '0'}}, {Uint(maxUint64 - 1), token{String: "18446744073709551614", Float: maxUint64 - 1, Int: maxInt64, Uint: maxUint64 - 1, Kind: '0'}}, {Uint(maxUint64), token{String: "18446744073709551615", Float: maxUint64, Int: maxInt64, Uint: maxUint64, Kind: '0'}}, {rawToken(`-0`), token{String: "-0", Float: math.Copysign(0, -1), Int: 0, Uint: 0, Kind: '0'}}, {rawToken(`1e1000`), token{String: "1e1000", Float: math.MaxFloat64, Int: maxInt64, Uint: maxUint64, Kind: '0'}}, {rawToken(`-1e1000`), token{String: "-1e1000", Float: -math.MaxFloat64, Int: minInt64, Uint: minUint64, Kind: '0'}}, {rawToken(`0.1`), token{String: "0.1", Float: 0.1, Int: 0, Uint: 0, Kind: '0'}}, {rawToken(`0.5`), token{String: "0.5", Float: 0.5, Int: 0, Uint: 0, Kind: '0'}}, {rawToken(`0.9`), token{String: "0.9", Float: 0.9, Int: 0, Uint: 0, Kind: '0'}}, {rawToken(`1.1`), token{String: "1.1", Float: 1.1, Int: 1, Uint: 1, Kind: '0'}}, {rawToken(`-0.1`), token{String: "-0.1", Float: -0.1, Int: 0, Uint: 0, Kind: '0'}}, {rawToken(`-0.5`), token{String: "-0.5", Float: -0.5, Int: 0, Uint: 0, Kind: '0'}}, {rawToken(`-0.9`), token{String: "-0.9", Float: -0.9, Int: 0, Uint: 0, Kind: '0'}}, {rawToken(`-1.1`), token{String: "-1.1", Float: -1.1, Int: -1, Uint: 0, Kind: '0'}}, {rawToken(`99999999999999999999`), token{String: "99999999999999999999", Float: 1e20 - 1, Int: maxInt64, Uint: maxUint64, Kind: '0'}}, {rawToken(`-99999999999999999999`), token{String: "-99999999999999999999", Float: -1e20 - 1, Int: minInt64, Uint: minUint64, Kind: '0'}}, } for _, tt := range tests { t.Run("", func(t *testing.T) { got := token{ Bool: func() bool { defer func() { recover() }() return tt.in.Bool() }(), String: tt.in.String(), Float: func() float64 { defer func() { recover() }() return tt.in.Float() }(), Int: func() int64 { defer func() { recover() }() return tt.in.Int() }(), Uint: func() uint64 { defer func() { recover() }() return tt.in.Uint() }(), Kind: tt.in.Kind(), } if got.Bool != tt.want.Bool { t.Errorf("Token(%s).Bool() = %v, want %v", tt.in, got.Bool, tt.want.Bool) } if got.String != tt.want.String { t.Errorf("Token(%s).String() = %v, want %v", tt.in, got.String, tt.want.String) } if math.Float64bits(got.Float) != math.Float64bits(tt.want.Float) { t.Errorf("Token(%s).Float() = %v, want %v", tt.in, got.Float, tt.want.Float) } if got.Int != tt.want.Int { t.Errorf("Token(%s).Int() = %v, want %v", tt.in, got.Int, tt.want.Int) } if got.Uint != tt.want.Uint { t.Errorf("Token(%s).Uint() = %v, want %v", tt.in, got.Uint, tt.want.Uint) } if got.Kind != tt.want.Kind { t.Errorf("Token(%s).Kind() = %v, want %v", tt.in, got.Kind, tt.want.Kind) } }) } } func TestTokenClone(t *testing.T) { tests := []struct { in Token wantExactRaw bool }{ {Token{}, true}, {Null, true}, {False, true}, {True, true}, {ObjectStart, true}, {ObjectEnd, true}, {ArrayStart, true}, {ArrayEnd, true}, {String("hello, world!"), true}, {rawToken(`"hello, world!"`), false}, {Float(3.14159), true}, {rawToken(`3.14159`), false}, } for _, tt := range tests { t.Run("", func(t *testing.T) { got := tt.in.Clone() if !reflect.DeepEqual(got, tt.in) { t.Errorf("Token(%s) == Token(%s).Clone() = false, want true", tt.in, tt.in) } gotExactRaw := got.raw == tt.in.raw if gotExactRaw != tt.wantExactRaw { t.Errorf("Token(%s).raw == Token(%s).Clone().raw = %v, want %v", tt.in, tt.in, gotExactRaw, tt.wantExactRaw) } }) } } value.go000066400000000000000000000304721453663023200334410ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "bytes" "errors" "io" "sort" "sync" "unicode/utf16" "unicode/utf8" ) // NOTE: RawValue is analogous to v1 json.RawMessage. // RawValue represents a single raw JSON value, which may be one of the following: // - a JSON literal (i.e., null, true, or false) // - a JSON string (e.g., "hello, world!") // - a JSON number (e.g., 123.456) // - an entire JSON object (e.g., {"fizz":"buzz"} ) // - an entire JSON array (e.g., [1,2,3] ) // // RawValue can represent entire array or object values, while Token cannot. // RawValue may contain leading and/or trailing whitespace. type RawValue []byte // Clone returns a copy of v. func (v RawValue) Clone() RawValue { if v == nil { return nil } return append(RawValue{}, v...) } // String returns the string formatting of v. func (v RawValue) String() string { if v == nil { return "null" } return string(v) } // IsValid reports whether the raw JSON value is syntactically valid // according to RFC 7493. // // It verifies whether the input is properly encoded as UTF-8, // that escape sequences within strings decode to valid Unicode codepoints, and // that all names in each object are unique. // It does not verify whether numbers are representable within the limits // of any common numeric type (e.g., float64, int64, or uint64). func (v RawValue) IsValid() bool { d := getBufferedDecoder(v, DecodeOptions{}) defer putBufferedDecoder(d) _, errVal := d.ReadValue() _, errEOF := d.ReadToken() return errVal == nil && errEOF == io.EOF } // Compact removes all whitespace from the raw JSON value. // // It does not reformat JSON strings to use any other representation. // It is guaranteed to succeed if the input is valid. // If the value is already compacted, then the buffer is not mutated. func (v *RawValue) Compact() error { return v.reformat(false, false, "", "") } // Indent reformats the whitespace in the raw JSON value so that each element // in a JSON object or array begins on a new, indented line beginning with // prefix followed by one or more copies of indent according to the nesting. // The value does not begin with the prefix nor any indention, // to make it easier to embed inside other formatted JSON data. // // It does not reformat JSON strings to use any other representation. // It is guaranteed to succeed if the input is valid. // If the value is already indented properly, then the buffer is not mutated. func (v *RawValue) Indent(prefix, indent string) error { return v.reformat(false, true, prefix, indent) } // Canonicalize canonicalizes the raw JSON value according to the // JSON Canonicalization Scheme (JCS) as defined by RFC 8785 // where it produces a stable representation of a JSON value. // // The output stability is dependent on the stability of the application data // (see RFC 8785, Appendix E). It cannot produce stable output from // fundamentally unstable input. For example, if the JSON value // contains ephemeral data (e.g., a frequently changing timestamp), // then the value is still unstable regardless of whether this is called. // // Note that JCS treats all JSON numbers as IEEE 754 double precision numbers. // Any numbers with precision beyond what is representable by that form // will lose their precision when canonicalized. For example, integer values // beyond ±2âµÂ³ will lose their precision. It is recommended that // int64 and uint64 data types be represented as a JSON string. // // It is guaranteed to succeed if the input is valid. // If the value is already canonicalized, then the buffer is not mutated. func (v *RawValue) Canonicalize() error { return v.reformat(true, false, "", "") } // TODO: Instead of implementing the v1 Marshaler/Unmarshaler, // consider implementing the v2 versions instead. // MarshalJSON returns v as the JSON encoding of v. // It returns the stored value as the raw JSON output without any validation. // If v is nil, then this returns a JSON null. func (v RawValue) MarshalJSON() ([]byte, error) { // NOTE: This matches the behavior of v1 json.RawMessage.MarshalJSON. if v == nil { return []byte("null"), nil } return v, nil } // UnmarshalJSON sets v as the JSON encoding of b. // It stores a copy of the provided raw JSON input without any validation. func (v *RawValue) UnmarshalJSON(b []byte) error { // NOTE: This matches the behavior of v1 json.RawMessage.UnmarshalJSON. if v == nil { return errors.New("json.RawValue: UnmarshalJSON on nil pointer") } *v = append((*v)[:0], b...) return nil } // Kind returns the starting token kind. // For a valid value, this will never include '}' or ']'. func (v RawValue) Kind() Kind { if v := v[consumeWhitespace(v):]; len(v) > 0 { return Kind(v[0]).normalize() } return invalidKind } func (v *RawValue) reformat(canonical, multiline bool, prefix, indent string) error { var eo EncodeOptions if canonical { eo.AllowInvalidUTF8 = false // per RFC 8785, section 3.2.4 eo.AllowDuplicateNames = false // per RFC 8785, section 3.1 eo.canonicalizeNumbers = true // per RFC 8785, section 3.2.2.3 eo.EscapeRune = nil // per RFC 8785, section 3.2.2.2 eo.multiline = false // per RFC 8785, section 3.2.1 } else { if s := trimLeftSpaceTab(prefix); len(s) > 0 { panic("json: invalid character " + quoteRune([]byte(s)) + " in indent prefix") } if s := trimLeftSpaceTab(indent); len(s) > 0 { panic("json: invalid character " + quoteRune([]byte(s)) + " in indent") } eo.AllowInvalidUTF8 = true eo.AllowDuplicateNames = true eo.preserveRawStrings = true eo.multiline = multiline // in case indent is empty eo.IndentPrefix = prefix eo.Indent = indent } eo.omitTopLevelNewline = true // Write the entire value to reformat all tokens and whitespace. e := getBufferedEncoder(eo) defer putBufferedEncoder(e) if err := e.WriteValue(*v); err != nil { return err } // For canonical output, we may need to reorder object members. if canonical { // Obtain a buffered encoder just to use its internal buffer as // a scratch buffer in reorderObjects for reordering object members. e2 := getBufferedEncoder(EncodeOptions{}) defer putBufferedEncoder(e2) // Disable redundant checks performed earlier during encoding. d := getBufferedDecoder(e.buf, DecodeOptions{AllowInvalidUTF8: true, AllowDuplicateNames: true}) defer putBufferedDecoder(d) reorderObjects(d, &e2.buf) // per RFC 8785, section 3.2.3 } // Store the result back into the value if different. if !bytes.Equal(*v, e.buf) { *v = append((*v)[:0], e.buf...) } return nil } func trimLeftSpaceTab(s string) string { for i, r := range s { switch r { case ' ', '\t': default: return s[i:] } } return "" } type memberName struct { // name is the unescaped name. name []byte // before and after are byte offsets into Decoder.buf that represents // the entire name/value pair. It may contain leading commas. before, after int64 } var memberNamePool = sync.Pool{New: func() any { return new(memberNames) }} func getMemberNames() *memberNames { ns := memberNamePool.Get().(*memberNames) *ns = (*ns)[:0] return ns } func putMemberNames(ns *memberNames) { if cap(*ns) < 1<<10 { for i := range *ns { (*ns)[i] = memberName{} // avoid pinning name } memberNamePool.Put(ns) } } type memberNames []memberName func (m *memberNames) Len() int { return len(*m) } func (m *memberNames) Less(i, j int) bool { return lessUTF16((*m)[i].name, (*m)[j].name) } func (m *memberNames) Swap(i, j int) { (*m)[i], (*m)[j] = (*m)[j], (*m)[i] } // reorderObjects recursively reorders all object members in place // according to the ordering specified in RFC 8785, section 3.2.3. // // Pre-conditions: // - The value is valid (i.e., no decoder errors should ever occur). // - The value is compact (i.e., no whitespace is present). // - Initial call is provided a Decoder reading from the start of v. // // Post-conditions: // - Exactly one JSON value is read from the Decoder. // - All fully-parsed JSON objects are reordered by directly moving // the members in the value buffer. // // The runtime is approximately O(n·log(n)) + O(m·log(m)), // where n is len(v) and m is the total number of object members. func reorderObjects(d *Decoder, scratch *[]byte) { switch tok, _ := d.ReadToken(); tok.Kind() { case '{': // Iterate and collect the name and offsets for every object member. members := getMemberNames() defer putMemberNames(members) var prevName []byte isSorted := true beforeBody := d.InputOffset() // offset after '{' for d.PeekKind() != '}' { beforeName := d.InputOffset() var flags valueFlags name, _ := d.readValue(&flags) name = unescapeStringMayCopy(name, flags.isVerbatim()) reorderObjects(d, scratch) afterValue := d.InputOffset() if isSorted && len(*members) > 0 { isSorted = lessUTF16(prevName, []byte(name)) } *members = append(*members, memberName{name, beforeName, afterValue}) prevName = name } afterBody := d.InputOffset() // offset before '}' d.ReadToken() // Sort the members; return early if it's already sorted. if isSorted { return } // TODO(https://go.dev/issue/47619): Use slices.Sort. sort.Sort(members) // Append the reordered members to a new buffer, // then copy the reordered members back over the original members. // Avoid swapping in place since each member may be a different size // where moving a member over a smaller member may corrupt the data // for subsequent members before they have been moved. // // The following invariant must hold: // sum([m.after-m.before for m in members]) == afterBody-beforeBody sorted := (*scratch)[:0] for i, member := range *members { if d.buf[member.before] == ',' { member.before++ // trim leading comma } sorted = append(sorted, d.buf[member.before:member.after]...) if i < len(*members)-1 { sorted = append(sorted, ',') // append trailing comma } } if int(afterBody-beforeBody) != len(sorted) { panic("BUG: length invariant violated") } copy(d.buf[beforeBody:afterBody], sorted) // Update scratch buffer to the largest amount ever used. if len(sorted) > len(*scratch) { *scratch = sorted } case '[': for d.PeekKind() != ']' { reorderObjects(d, scratch) } d.ReadToken() } } // lessUTF16 reports whether x is lexicographically less than y according // to the UTF-16 codepoints of the UTF-8 encoded input strings. // This implements the ordering specified in RFC 8785, section 3.2.3. // The inputs must be valid UTF-8, otherwise this may panic. func lessUTF16[Bytes []byte | string](x, y Bytes) bool { // NOTE: This is an optimized, allocation-free implementation // of lessUTF16Simple in fuzz_test.go. FuzzLessUTF16 verifies that the // two implementations agree on the result of comparing any two strings. isUTF16Self := func(r rune) bool { return ('\u0000' <= r && r <= '\uD7FF') || ('\uE000' <= r && r <= '\uFFFF') } var invalidUTF8 bool x0, y0 := x, y for { if len(x) == 0 || len(y) == 0 { if len(x) == len(y) && invalidUTF8 { return string(x0) < string(y0) } return len(x) < len(y) } // ASCII fast-path. if x[0] < utf8.RuneSelf || y[0] < utf8.RuneSelf { if x[0] != y[0] { return x[0] < y[0] } x, y = x[1:], y[1:] continue } // Decode next pair of runes as UTF-8. // TODO(https://go.dev/issue/56948): Use a generic implementation // of utf8.DecodeRune, or rely on a compiler optimization to statically // hide the cost of a type switch (https://go.dev/issue/57072). var rx, ry rune var nx, ny int switch any(x).(type) { case string: rx, nx = utf8.DecodeRuneInString(string(x)) ry, ny = utf8.DecodeRuneInString(string(y)) case []byte: rx, nx = utf8.DecodeRune([]byte(x)) ry, ny = utf8.DecodeRune([]byte(y)) } selfx := isUTF16Self(rx) selfy := isUTF16Self(ry) switch { // The x rune is a single UTF-16 codepoint, while // the y rune is a surrogate pair of UTF-16 codepoints. case selfx && !selfy: ry, _ = utf16.EncodeRune(ry) // The y rune is a single UTF-16 codepoint, while // the x rune is a surrogate pair of UTF-16 codepoints. case selfy && !selfx: rx, _ = utf16.EncodeRune(rx) } if rx != ry { return rx < ry } invalidUTF8 = invalidUTF8 || (rx == utf8.RuneError && nx == 1) || (ry == utf8.RuneError && ny == 1) x, y = x[nx:], y[ny:] } } value_test.go000066400000000000000000000201171453663023200344730ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/internal/third_party/go-json-experiment/json// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package json import ( "reflect" "strings" "testing" "unicode/utf16" ) type rawValueTestdataEntry struct { name testName in string wantValid bool wantCompacted string wantCompactErr error // implies wantCompacted is in wantIndented string // wantCompacted if empty; uses "\t" for indent prefix and " " for indent wantIndentErr error // implies wantCompacted is in wantCanonicalized string // wantCompacted if empty wantCanonicalizeErr error // implies wantCompacted is in } var rawValueTestdata = append(func() (out []rawValueTestdataEntry) { // Initialize rawValueTestdata from coderTestdata. for _, td := range coderTestdata { // NOTE: The Compact method preserves the raw formatting of strings, // while the Encoder (by default) does not. if td.name.name == "ComplicatedString" { td.outCompacted = strings.TrimSpace(td.in) } out = append(out, rawValueTestdataEntry{ name: td.name, in: td.in, wantValid: true, wantCompacted: td.outCompacted, wantIndented: td.outIndented, wantCanonicalized: td.outCanonicalized, }) } return out }(), []rawValueTestdataEntry{{ name: name("RFC8785/Primitives"), in: `{ "numbers": [333333333.33333329, 1E30, 4.50, 2e-3, 0.000000000000000000000000001], "string": "\u20ac$\u000F\u000aA'\u0042\u0022\u005c\\\"\/", "literals": [null, true, false] }`, wantValid: true, wantCompacted: `{"numbers":[333333333.33333329,1E30,4.50,2e-3,0.000000000000000000000000001],"string":"\u20ac$\u000F\u000aA'\u0042\u0022\u005c\\\"\/","literals":[null,true,false]}`, wantIndented: `{ "numbers": [ 333333333.33333329, 1E30, 4.50, 2e-3, 0.000000000000000000000000001 ], "string": "\u20ac$\u000F\u000aA'\u0042\u0022\u005c\\\"\/", "literals": [ null, true, false ] }`, wantCanonicalized: `{"literals":[null,true,false],"numbers":[333333333.3333333,1e+30,4.5,0.002,1e-27],"string":"€$\u000f\nA'B\"\\\\\"/"}`, }, { name: name("RFC8785/ObjectOrdering"), in: `{ "\u20ac": "Euro Sign", "\r": "Carriage Return", "\ufb33": "Hebrew Letter Dalet With Dagesh", "1": "One", "\ud83d\ude00": "Emoji: Grinning Face", "\u0080": "Control", "\u00f6": "Latin Small Letter O With Diaeresis" }`, wantValid: true, wantCompacted: `{"\u20ac":"Euro Sign","\r":"Carriage Return","\ufb33":"Hebrew Letter Dalet With Dagesh","1":"One","\ud83d\ude00":"Emoji: Grinning Face","\u0080":"Control","\u00f6":"Latin Small Letter O With Diaeresis"}`, wantIndented: `{ "\u20ac": "Euro Sign", "\r": "Carriage Return", "\ufb33": "Hebrew Letter Dalet With Dagesh", "1": "One", "\ud83d\ude00": "Emoji: Grinning Face", "\u0080": "Control", "\u00f6": "Latin Small Letter O With Diaeresis" }`, wantCanonicalized: `{"\r":"Carriage Return","1":"One","€":"Control","ö":"Latin Small Letter O With Diaeresis","€":"Euro Sign","😀":"Emoji: Grinning Face","דּ":"Hebrew Letter Dalet With Dagesh"}`, }, { name: name("LargeIntegers"), in: ` [ -9223372036854775808 , 9223372036854775807 ] `, wantValid: true, wantCompacted: `[-9223372036854775808,9223372036854775807]`, wantIndented: `[ -9223372036854775808, 9223372036854775807 ]`, wantCanonicalized: `[-9223372036854776000,9223372036854776000]`, // NOTE: Loss of precision due to numbers being treated as floats. }, { name: name("InvalidUTF8"), in: ` "living` + "\xde\xad\xbe\xef" + `\ufffd�" `, wantValid: false, // uses RFC 7493 as the definition; which validates UTF-8 wantCompacted: `"living` + "\xde\xad\xbe\xef" + `\ufffd�"`, wantCanonicalizeErr: &SyntacticError{str: "invalid UTF-8 within string"}, }, { name: name("InvalidUTF8/SurrogateHalf"), in: `"\ud800"`, wantValid: false, // uses RFC 7493 as the definition; which validates UTF-8 wantCompacted: `"\ud800"`, wantCanonicalizeErr: &SyntacticError{str: `invalid escape sequence "\"" within string`}, }, { name: name("UppercaseEscaped"), in: `"\u000B"`, wantValid: true, wantCompacted: `"\u000B"`, wantCanonicalized: `"\u000b"`, }, { name: name("DuplicateNames"), in: ` { "0" : 0 , "1" : 1 , "0" : 0 }`, wantValid: false, // uses RFC 7493 as the definition; which does check for object uniqueness wantCompacted: `{"0":0,"1":1,"0":0}`, wantIndented: `{ "0": 0, "1": 1, "0": 0 }`, wantCanonicalizeErr: &SyntacticError{str: `duplicate name "0" in object`}, }}...) func TestRawValueMethods(t *testing.T) { for _, td := range rawValueTestdata { t.Run(td.name.name, func(t *testing.T) { if td.wantIndented == "" { td.wantIndented = td.wantCompacted } if td.wantCanonicalized == "" { td.wantCanonicalized = td.wantCompacted } if td.wantCompactErr != nil { td.wantCompacted = td.in } if td.wantIndentErr != nil { td.wantIndented = td.in } if td.wantCanonicalizeErr != nil { td.wantCanonicalized = td.in } v := RawValue(td.in) gotValid := v.IsValid() if gotValid != td.wantValid { t.Errorf("%s: RawValue.IsValid = %v, want %v", td.name.where, gotValid, td.wantValid) } gotCompacted := RawValue(td.in) gotCompactErr := gotCompacted.Compact() if string(gotCompacted) != td.wantCompacted { t.Errorf("%s: RawValue.Compact = %s, want %s", td.name.where, gotCompacted, td.wantCompacted) } if !reflect.DeepEqual(gotCompactErr, td.wantCompactErr) { t.Errorf("%s: RawValue.Compact error mismatch: got %#v, want %#v", td.name.where, gotCompactErr, td.wantCompactErr) } gotIndented := RawValue(td.in) gotIndentErr := gotIndented.Indent("\t", " ") if string(gotIndented) != td.wantIndented { t.Errorf("%s: RawValue.Indent = %s, want %s", td.name.where, gotIndented, td.wantIndented) } if !reflect.DeepEqual(gotIndentErr, td.wantIndentErr) { t.Errorf("%s: RawValue.Indent error mismatch: got %#v, want %#v", td.name.where, gotIndentErr, td.wantIndentErr) } gotCanonicalized := RawValue(td.in) gotCanonicalizeErr := gotCanonicalized.Canonicalize() if string(gotCanonicalized) != td.wantCanonicalized { t.Errorf("%s: RawValue.Canonicalize = %s, want %s", td.name.where, gotCanonicalized, td.wantCanonicalized) } if !reflect.DeepEqual(gotCanonicalizeErr, td.wantCanonicalizeErr) { t.Errorf("%s: RawValue.Canonicalize error mismatch: got %#v, want %#v", td.name.where, gotCanonicalizeErr, td.wantCanonicalizeErr) } }) } } var lessUTF16Testdata = []string{"", "\r", "1", "\u0080", "\u00f6", "\u20ac", "\U0001f600", "\ufb33"} func TestLessUTF16(t *testing.T) { for i, si := range lessUTF16Testdata { for j, sj := range lessUTF16Testdata { got := lessUTF16([]byte(si), []byte(sj)) want := i < j if got != want { t.Errorf("lessUTF16(%q, %q) = %v, want %v", si, sj, got, want) } } } } func FuzzLessUTF16(f *testing.F) { for _, td1 := range lessUTF16Testdata { for _, td2 := range lessUTF16Testdata { f.Add([]byte(td1), []byte(td2)) } } // lessUTF16Simple is identical to lessUTF16, // but relies on naively converting a string to a []uint16 codepoints. // It is easy to verify as correct, but is slow. lessUTF16Simple := func(x, y []byte) bool { ux := utf16.Encode([]rune(string(x))) uy := utf16.Encode([]rune(string(y))) // TODO(https://go.dev/issue/57433): Use slices.Compare. for { if len(ux) == 0 || len(uy) == 0 { if len(ux) == len(uy) { return string(x) < string(y) } return len(ux) < len(uy) } if ux[0] != uy[0] { return ux[0] < uy[0] } ux, uy = ux[1:], uy[1:] } } f.Fuzz(func(t *testing.T, s1, s2 []byte) { // Compare the optimized and simplified implementations. got := lessUTF16(s1, s2) want := lessUTF16Simple(s1, s2) if got != want { t.Errorf("lessUTF16(%q, %q) = %v, want %v", s1, s2, got, want) } }) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/openapiconv/000077500000000000000000000000001453663023200235205ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/openapiconv/convert.go000066400000000000000000000231361453663023200255340ustar00rootroot00000000000000/* Copyright 2022 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package openapiconv import ( "strings" klog "k8s.io/klog/v2" builderutil "k8s.io/kube-openapi/pkg/builder3/util" "k8s.io/kube-openapi/pkg/spec3" "k8s.io/kube-openapi/pkg/validation/spec" ) var OpenAPIV2DefPrefix = "#/definitions/" var OpenAPIV3DefPrefix = "#/components/schemas/" // ConvertV2ToV3 converts an OpenAPI V2 object into V3. // Certain references may be shared between the V2 and V3 objects in the conversion. func ConvertV2ToV3(v2Spec *spec.Swagger) *spec3.OpenAPI { v3Spec := &spec3.OpenAPI{ Version: "3.0.0", Info: v2Spec.Info, ExternalDocs: ConvertExternalDocumentation(v2Spec.ExternalDocs), Paths: ConvertPaths(v2Spec.Paths), Components: ConvertComponents(v2Spec.SecurityDefinitions, v2Spec.Definitions, v2Spec.Responses, v2Spec.Produces), } return v3Spec } func ConvertExternalDocumentation(v2ED *spec.ExternalDocumentation) *spec3.ExternalDocumentation { if v2ED == nil { return nil } return &spec3.ExternalDocumentation{ ExternalDocumentationProps: spec3.ExternalDocumentationProps{ Description: v2ED.Description, URL: v2ED.URL, }, } } func ConvertComponents(v2SecurityDefinitions spec.SecurityDefinitions, v2Definitions spec.Definitions, v2Responses map[string]spec.Response, produces []string) *spec3.Components { components := &spec3.Components{} if v2Definitions != nil { components.Schemas = make(map[string]*spec.Schema) } for s, schema := range v2Definitions { components.Schemas[s] = ConvertSchema(&schema) } if v2SecurityDefinitions != nil { components.SecuritySchemes = make(spec3.SecuritySchemes) } for s, securityScheme := range v2SecurityDefinitions { components.SecuritySchemes[s] = ConvertSecurityScheme(securityScheme) } if v2Responses != nil { components.Responses = make(map[string]*spec3.Response) } for r, response := range v2Responses { components.Responses[r] = ConvertResponse(&response, produces) } return components } func ConvertSchema(v2Schema *spec.Schema) *spec.Schema { if v2Schema == nil { return nil } v3Schema := spec.Schema{ VendorExtensible: v2Schema.VendorExtensible, SchemaProps: v2Schema.SchemaProps, SwaggerSchemaProps: v2Schema.SwaggerSchemaProps, ExtraProps: v2Schema.ExtraProps, } if refString := v2Schema.Ref.String(); refString != "" { if idx := strings.Index(refString, OpenAPIV2DefPrefix); idx != -1 { v3Schema.Ref = spec.MustCreateRef(OpenAPIV3DefPrefix + refString[idx+len(OpenAPIV2DefPrefix):]) } else { klog.Errorf("Error: Swagger V2 Ref %s does not contain #/definitions\n", refString) } } if v2Schema.Properties != nil { v3Schema.Properties = make(map[string]spec.Schema) for key, property := range v2Schema.Properties { v3Schema.Properties[key] = *ConvertSchema(&property) } } if v2Schema.Items != nil { v3Schema.Items = &spec.SchemaOrArray{ Schema: ConvertSchema(v2Schema.Items.Schema), Schemas: ConvertSchemaList(v2Schema.Items.Schemas), } } if v2Schema.AdditionalProperties != nil { v3Schema.AdditionalProperties = &spec.SchemaOrBool{ Schema: ConvertSchema(v2Schema.AdditionalProperties.Schema), Allows: v2Schema.AdditionalProperties.Allows, } } if v2Schema.AdditionalItems != nil { v3Schema.AdditionalItems = &spec.SchemaOrBool{ Schema: ConvertSchema(v2Schema.AdditionalItems.Schema), Allows: v2Schema.AdditionalItems.Allows, } } return builderutil.WrapRefs(&v3Schema) } func ConvertSchemaList(v2SchemaList []spec.Schema) []spec.Schema { if v2SchemaList == nil { return nil } v3SchemaList := []spec.Schema{} for _, s := range v2SchemaList { v3SchemaList = append(v3SchemaList, *ConvertSchema(&s)) } return v3SchemaList } func ConvertSecurityScheme(v2securityScheme *spec.SecurityScheme) *spec3.SecurityScheme { if v2securityScheme == nil { return nil } securityScheme := &spec3.SecurityScheme{ VendorExtensible: v2securityScheme.VendorExtensible, SecuritySchemeProps: spec3.SecuritySchemeProps{ Description: v2securityScheme.Description, Type: v2securityScheme.Type, Name: v2securityScheme.Name, In: v2securityScheme.In, }, } if v2securityScheme.Flow != "" { securityScheme.Flows = make(map[string]*spec3.OAuthFlow) securityScheme.Flows[v2securityScheme.Flow] = &spec3.OAuthFlow{ OAuthFlowProps: spec3.OAuthFlowProps{ AuthorizationUrl: v2securityScheme.AuthorizationURL, TokenUrl: v2securityScheme.TokenURL, Scopes: v2securityScheme.Scopes, }, } } return securityScheme } func ConvertPaths(v2Paths *spec.Paths) *spec3.Paths { if v2Paths == nil { return nil } paths := &spec3.Paths{ VendorExtensible: v2Paths.VendorExtensible, } if v2Paths.Paths != nil { paths.Paths = make(map[string]*spec3.Path) } for k, v := range v2Paths.Paths { paths.Paths[k] = ConvertPathItem(v) } return paths } func ConvertPathItem(v2pathItem spec.PathItem) *spec3.Path { path := &spec3.Path{ Refable: v2pathItem.Refable, PathProps: spec3.PathProps{ Get: ConvertOperation(v2pathItem.Get), Put: ConvertOperation(v2pathItem.Put), Post: ConvertOperation(v2pathItem.Post), Delete: ConvertOperation(v2pathItem.Delete), Options: ConvertOperation(v2pathItem.Options), Head: ConvertOperation(v2pathItem.Head), Patch: ConvertOperation(v2pathItem.Patch), }, VendorExtensible: v2pathItem.VendorExtensible, } for _, param := range v2pathItem.Parameters { path.Parameters = append(path.Parameters, ConvertParameter(param)) } return path } func ConvertOperation(v2Operation *spec.Operation) *spec3.Operation { if v2Operation == nil { return nil } operation := &spec3.Operation{ VendorExtensible: v2Operation.VendorExtensible, OperationProps: spec3.OperationProps{ Description: v2Operation.Description, ExternalDocs: ConvertExternalDocumentation(v2Operation.OperationProps.ExternalDocs), Tags: v2Operation.Tags, Summary: v2Operation.Summary, Deprecated: v2Operation.Deprecated, OperationId: v2Operation.ID, }, } for _, param := range v2Operation.Parameters { if param.ParamProps.Name == "body" && param.ParamProps.Schema != nil { operation.OperationProps.RequestBody = &spec3.RequestBody{ RequestBodyProps: spec3.RequestBodyProps{}, } if v2Operation.Consumes != nil { operation.RequestBody.Content = make(map[string]*spec3.MediaType) } for _, consumer := range v2Operation.Consumes { operation.RequestBody.Content[consumer] = &spec3.MediaType{ MediaTypeProps: spec3.MediaTypeProps{ Schema: ConvertSchema(param.ParamProps.Schema), }, } } } else { operation.Parameters = append(operation.Parameters, ConvertParameter(param)) } } operation.Responses = &spec3.Responses{ResponsesProps: spec3.ResponsesProps{ Default: ConvertResponse(v2Operation.Responses.Default, v2Operation.Produces), }, VendorExtensible: v2Operation.Responses.VendorExtensible, } if v2Operation.Responses.StatusCodeResponses != nil { operation.Responses.StatusCodeResponses = make(map[int]*spec3.Response) } for k, v := range v2Operation.Responses.StatusCodeResponses { operation.Responses.StatusCodeResponses[k] = ConvertResponse(&v, v2Operation.Produces) } return operation } func ConvertResponse(v2Response *spec.Response, produces []string) *spec3.Response { if v2Response == nil { return nil } response := &spec3.Response{ Refable: ConvertRefableResponse(v2Response.Refable), VendorExtensible: v2Response.VendorExtensible, ResponseProps: spec3.ResponseProps{ Description: v2Response.Description, }, } if v2Response.Schema != nil { if produces != nil { response.Content = make(map[string]*spec3.MediaType) } for _, producer := range produces { response.ResponseProps.Content[producer] = &spec3.MediaType{ MediaTypeProps: spec3.MediaTypeProps{ Schema: ConvertSchema(v2Response.Schema), }, } } } return response } func ConvertParameter(v2Param spec.Parameter) *spec3.Parameter { param := &spec3.Parameter{ Refable: ConvertRefableParameter(v2Param.Refable), VendorExtensible: v2Param.VendorExtensible, ParameterProps: spec3.ParameterProps{ Name: v2Param.Name, Description: v2Param.Description, In: v2Param.In, Required: v2Param.Required, Schema: ConvertSchema(v2Param.Schema), AllowEmptyValue: v2Param.AllowEmptyValue, }, } // Convert SimpleSchema into Schema if param.Schema == nil { param.Schema = &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{v2Param.Type}, Format: v2Param.Format, UniqueItems: v2Param.UniqueItems, }, } } return param } func ConvertRefableParameter(refable spec.Refable) spec.Refable { if refable.Ref.String() != "" { return spec.Refable{Ref: spec.MustCreateRef(strings.Replace(refable.Ref.String(), "#/parameters/", "#/components/parameters/", 1))} } return refable } func ConvertRefableResponse(refable spec.Refable) spec.Refable { if refable.Ref.String() != "" { return spec.Refable{Ref: spec.MustCreateRef(strings.Replace(refable.Ref.String(), "#/responses/", "#/components/responses/", 1))} } return refable } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/openapiconv/convert_test.go000066400000000000000000000037311453663023200265720ustar00rootroot00000000000000/* Copyright 2022 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package openapiconv import ( "encoding/json" "os" "path/filepath" "reflect" "testing" "k8s.io/kube-openapi/pkg/spec3" "k8s.io/kube-openapi/pkg/util/jsontesting" "k8s.io/kube-openapi/pkg/validation/spec" ) func TestConvert(t *testing.T) { tcs := []struct { groupVersion string }{{ "batch.v1", }, { "api.v1", }, { "apiextensions.k8s.io.v1", }} for _, tc := range tcs { spec2JSON, err := os.ReadFile(filepath.Join("testdata_generated_from_k8s/v2_" + tc.groupVersion + ".json")) if err != nil { t.Fatal(err) } var swaggerSpec spec.Swagger err = json.Unmarshal(spec2JSON, &swaggerSpec) if err != nil { t.Fatal(err) } openAPIV2JSONBeforeConversion, err := swaggerSpec.MarshalJSON() if err != nil { t.Fatal(err) } convertedV3Spec := ConvertV2ToV3(&swaggerSpec) openAPIV2JSONAfterConversion, err := swaggerSpec.MarshalJSON() if err != nil { t.Fatal(err) } if err := jsontesting.JsonCompare(openAPIV2JSONBeforeConversion, openAPIV2JSONAfterConversion); err != nil { t.Errorf("Expected OpenAPI V2 to be untouched before and after conversion: %v", err) } spec3JSON, err := os.ReadFile(filepath.Join("testdata_generated_from_k8s/v3_" + tc.groupVersion + ".json")) if err != nil { t.Fatal(err) } var V3Spec spec3.OpenAPI json.Unmarshal(spec3JSON, &V3Spec) if !reflect.DeepEqual(V3Spec, *convertedV3Spec) { t.Error("Expected specs to be equal") } } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/openapiconv/testdata_generated_from_k8s/000077500000000000000000000000001453663023200311575ustar00rootroot00000000000000README.md000066400000000000000000000002121453663023200323520ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/openapiconv/testdata_generated_from_k8sPlease do not edit these test files by hand. They were generated from running the OpenAPI v2 and v3 builders on select Kubernetes groups. v2_api.v1.json000066400000000000000000037472251453663023200335240ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/openapiconv/testdata_generated_from_k8s{"swagger":"2.0","info":{"title":"Kubernetes","version":"v1.24.0"},"paths":{"/api/v1/":{"get":{"description":"get available resources","consumes":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"getCoreV1APIResources","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}},"401":{"description":"Unauthorized"}}}},"/api/v1/componentstatuses":{"get":{"description":"list objects of kind ComponentStatus","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1ComponentStatus","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ComponentStatusList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ComponentStatus"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/componentstatuses/{name}":{"get":{"description":"read the specified ComponentStatus","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1ComponentStatus","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ComponentStatus"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ComponentStatus"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the ComponentStatus","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/configmaps":{"get":{"description":"list or watch objects of kind ConfigMap","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1ConfigMapForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ConfigMapList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/endpoints":{"get":{"description":"list or watch objects of kind Endpoints","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1EndpointsForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.EndpointsList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/events":{"get":{"description":"list or watch objects of kind Event","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1EventForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.EventList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/limitranges":{"get":{"description":"list or watch objects of kind LimitRange","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1LimitRangeForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.LimitRangeList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/namespaces":{"get":{"description":"list or watch objects of kind Namespace","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1Namespace","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.NamespaceList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"post":{"description":"create a Namespace","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"createCoreV1Namespace","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"parameters":[{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/bindings":{"post":{"description":"create a Binding","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"createCoreV1NamespacedBinding","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Binding"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Binding"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Binding"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Binding"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Binding"}},"parameters":[{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/configmaps":{"get":{"description":"list or watch objects of kind ConfigMap","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1NamespacedConfigMap","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ConfigMapList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"post":{"description":"create a ConfigMap","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"createCoreV1NamespacedConfigMap","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ConfigMap"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ConfigMap"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ConfigMap"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ConfigMap"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"delete":{"description":"delete collection of ConfigMap","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1CollectionNamespacedConfigMap","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/configmaps/{name}":{"get":{"description":"read the specified ConfigMap","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedConfigMap","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ConfigMap"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"put":{"description":"replace the specified ConfigMap","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespacedConfigMap","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ConfigMap"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ConfigMap"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ConfigMap"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"delete":{"description":"delete a ConfigMap","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1NamespacedConfigMap","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"patch":{"description":"partially update the specified ConfigMap","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespacedConfigMap","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ConfigMap"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ConfigMap"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the ConfigMap","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/endpoints":{"get":{"description":"list or watch objects of kind Endpoints","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1NamespacedEndpoints","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.EndpointsList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"post":{"description":"create Endpoints","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"createCoreV1NamespacedEndpoints","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Endpoints"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Endpoints"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Endpoints"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Endpoints"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"delete":{"description":"delete collection of Endpoints","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1CollectionNamespacedEndpoints","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/endpoints/{name}":{"get":{"description":"read the specified Endpoints","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedEndpoints","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Endpoints"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"put":{"description":"replace the specified Endpoints","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespacedEndpoints","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Endpoints"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Endpoints"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Endpoints"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"delete":{"description":"delete Endpoints","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1NamespacedEndpoints","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"patch":{"description":"partially update the specified Endpoints","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespacedEndpoints","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Endpoints"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Endpoints"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the Endpoints","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/events":{"get":{"description":"list or watch objects of kind Event","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1NamespacedEvent","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.EventList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"post":{"description":"create an Event","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"createCoreV1NamespacedEvent","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Event"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Event"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Event"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Event"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"delete":{"description":"delete collection of Event","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1CollectionNamespacedEvent","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/events/{name}":{"get":{"description":"read the specified Event","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedEvent","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Event"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"put":{"description":"replace the specified Event","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespacedEvent","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Event"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Event"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Event"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"delete":{"description":"delete an Event","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1NamespacedEvent","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"patch":{"description":"partially update the specified Event","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespacedEvent","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Event"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Event"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the Event","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/limitranges":{"get":{"description":"list or watch objects of kind LimitRange","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1NamespacedLimitRange","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.LimitRangeList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"post":{"description":"create a LimitRange","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"createCoreV1NamespacedLimitRange","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.LimitRange"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.LimitRange"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.LimitRange"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.LimitRange"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"delete":{"description":"delete collection of LimitRange","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1CollectionNamespacedLimitRange","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/limitranges/{name}":{"get":{"description":"read the specified LimitRange","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedLimitRange","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.LimitRange"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"put":{"description":"replace the specified LimitRange","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespacedLimitRange","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.LimitRange"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.LimitRange"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.LimitRange"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"delete":{"description":"delete a LimitRange","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1NamespacedLimitRange","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"patch":{"description":"partially update the specified LimitRange","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespacedLimitRange","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.LimitRange"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.LimitRange"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the LimitRange","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/persistentvolumeclaims":{"get":{"description":"list or watch objects of kind PersistentVolumeClaim","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1NamespacedPersistentVolumeClaim","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"post":{"description":"create a PersistentVolumeClaim","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"createCoreV1NamespacedPersistentVolumeClaim","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"delete":{"description":"delete collection of PersistentVolumeClaim","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1CollectionNamespacedPersistentVolumeClaim","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}":{"get":{"description":"read the specified PersistentVolumeClaim","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedPersistentVolumeClaim","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"put":{"description":"replace the specified PersistentVolumeClaim","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespacedPersistentVolumeClaim","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"delete":{"description":"delete a PersistentVolumeClaim","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1NamespacedPersistentVolumeClaim","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"patch":{"description":"partially update the specified PersistentVolumeClaim","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespacedPersistentVolumeClaim","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the PersistentVolumeClaim","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status":{"get":{"description":"read status of the specified PersistentVolumeClaim","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedPersistentVolumeClaimStatus","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"put":{"description":"replace status of the specified PersistentVolumeClaim","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespacedPersistentVolumeClaimStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"patch":{"description":"partially update status of the specified PersistentVolumeClaim","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespacedPersistentVolumeClaimStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the PersistentVolumeClaim","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/pods":{"get":{"description":"list or watch objects of kind Pod","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1NamespacedPod","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PodList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"post":{"description":"create a Pod","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"createCoreV1NamespacedPod","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"delete":{"description":"delete collection of Pod","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1CollectionNamespacedPod","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/pods/{name}":{"get":{"description":"read the specified Pod","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedPod","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"put":{"description":"replace the specified Pod","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespacedPod","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"delete":{"description":"delete a Pod","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1NamespacedPod","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"patch":{"description":"partially update the specified Pod","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespacedPod","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the Pod","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/pods/{name}/attach":{"get":{"description":"connect GET requests to attach of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1GetNamespacedPodAttach","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodAttachOptions"}},"post":{"description":"connect POST requests to attach of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PostNamespacedPodAttach","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodAttachOptions"}},"parameters":[{"uniqueItems":true,"type":"string","description":"The container in which to execute the command. Defaults to only container if there is only one container in the pod.","name":"container","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the PodAttachOptions","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"boolean","description":"Stderr if true indicates that stderr is to be redirected for the attach call. Defaults to true.","name":"stderr","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Stdin if true, redirects the standard input stream of the pod for this call. Defaults to false.","name":"stdin","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Stdout if true indicates that stdout is to be redirected for the attach call. Defaults to true.","name":"stdout","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"tty","in":"query"}]},"/api/v1/namespaces/{namespace}/pods/{name}/binding":{"post":{"description":"create binding of a Pod","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"createCoreV1NamespacedPodBinding","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Binding"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Binding"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Binding"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Binding"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Binding"}},"parameters":[{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the Binding","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers":{"get":{"description":"read ephemeralcontainers of the specified Pod","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedPodEphemeralcontainers","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"put":{"description":"replace ephemeralcontainers of the specified Pod","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespacedPodEphemeralcontainers","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"patch":{"description":"partially update ephemeralcontainers of the specified Pod","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespacedPodEphemeralcontainers","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the Pod","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/pods/{name}/eviction":{"post":{"description":"create eviction of a Pod","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"createCoreV1NamespacedPodEviction","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.policy.v1.Eviction"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.policy.v1.Eviction"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.policy.v1.Eviction"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.policy.v1.Eviction"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"policy","version":"v1","kind":"Eviction"}},"parameters":[{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the Eviction","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/pods/{name}/exec":{"get":{"description":"connect GET requests to exec of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1GetNamespacedPodExec","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodExecOptions"}},"post":{"description":"connect POST requests to exec of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PostNamespacedPodExec","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodExecOptions"}},"parameters":[{"uniqueItems":true,"type":"string","description":"Command is the remote command to execute. argv array. Not executed within a shell.","name":"command","in":"query"},{"uniqueItems":true,"type":"string","description":"Container in which to execute the command. Defaults to only container if there is only one container in the pod.","name":"container","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the PodExecOptions","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"boolean","description":"Redirect the standard error stream of the pod for this call.","name":"stderr","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Redirect the standard input stream of the pod for this call. Defaults to false.","name":"stdin","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Redirect the standard output stream of the pod for this call.","name":"stdout","in":"query"},{"uniqueItems":true,"type":"boolean","description":"TTY if true indicates that a tty will be allocated for the exec call. Defaults to false.","name":"tty","in":"query"}]},"/api/v1/namespaces/{namespace}/pods/{name}/log":{"get":{"description":"read log of the specified Pod","consumes":["*/*"],"produces":["text/plain","application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedPodLog","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"parameters":[{"uniqueItems":true,"type":"string","description":"The container for which to stream logs. Defaults to only container if there is one container in the pod.","name":"container","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Follow the log stream of the pod. Defaults to false.","name":"follow","in":"query"},{"uniqueItems":true,"type":"boolean","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).","name":"insecureSkipTLSVerifyBackend","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limitBytes","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the Pod","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Return previous terminated container logs. Defaults to false.","name":"previous","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"sinceSeconds","in":"query"},{"uniqueItems":true,"type":"integer","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","name":"tailLines","in":"query"},{"uniqueItems":true,"type":"boolean","description":"If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line of log output. Defaults to false.","name":"timestamps","in":"query"}]},"/api/v1/namespaces/{namespace}/pods/{name}/portforward":{"get":{"description":"connect GET requests to portforward of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1GetNamespacedPodPortforward","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodPortForwardOptions"}},"post":{"description":"connect POST requests to portforward of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PostNamespacedPodPortforward","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodPortForwardOptions"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the PodPortForwardOptions","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"integer","description":"List of ports to forward Required when using WebSockets","name":"ports","in":"query"}]},"/api/v1/namespaces/{namespace}/pods/{name}/proxy":{"get":{"description":"connect GET requests to proxy of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1GetNamespacedPodProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"put":{"description":"connect PUT requests to proxy of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PutNamespacedPodProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"post":{"description":"connect POST requests to proxy of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PostNamespacedPodProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"delete":{"description":"connect DELETE requests to proxy of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1DeleteNamespacedPodProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"options":{"description":"connect OPTIONS requests to proxy of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1OptionsNamespacedPodProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"head":{"description":"connect HEAD requests to proxy of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1HeadNamespacedPodProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"patch":{"description":"connect PATCH requests to proxy of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PatchNamespacedPodProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the PodProxyOptions","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"Path is the URL path to use for the current proxy request to pod.","name":"path","in":"query"}]},"/api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}":{"get":{"description":"connect GET requests to proxy of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1GetNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"put":{"description":"connect PUT requests to proxy of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PutNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"post":{"description":"connect POST requests to proxy of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PostNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"delete":{"description":"connect DELETE requests to proxy of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1DeleteNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"options":{"description":"connect OPTIONS requests to proxy of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1OptionsNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"head":{"description":"connect HEAD requests to proxy of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1HeadNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"patch":{"description":"connect PATCH requests to proxy of Pod","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PatchNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the PodProxyOptions","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"path to the resource","name":"path","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"Path is the URL path to use for the current proxy request to pod.","name":"path","in":"query"}]},"/api/v1/namespaces/{namespace}/pods/{name}/status":{"get":{"description":"read status of the specified Pod","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedPodStatus","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"put":{"description":"replace status of the specified Pod","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespacedPodStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"patch":{"description":"partially update status of the specified Pod","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespacedPodStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the Pod","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/podtemplates":{"get":{"description":"list or watch objects of kind PodTemplate","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1NamespacedPodTemplate","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PodTemplateList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"post":{"description":"create a PodTemplate","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"createCoreV1NamespacedPodTemplate","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PodTemplate"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PodTemplate"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PodTemplate"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PodTemplate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"delete":{"description":"delete collection of PodTemplate","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1CollectionNamespacedPodTemplate","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/podtemplates/{name}":{"get":{"description":"read the specified PodTemplate","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedPodTemplate","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PodTemplate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"put":{"description":"replace the specified PodTemplate","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespacedPodTemplate","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PodTemplate"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PodTemplate"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PodTemplate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"delete":{"description":"delete a PodTemplate","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1NamespacedPodTemplate","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PodTemplate"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PodTemplate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"patch":{"description":"partially update the specified PodTemplate","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespacedPodTemplate","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PodTemplate"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PodTemplate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the PodTemplate","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/replicationcontrollers":{"get":{"description":"list or watch objects of kind ReplicationController","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1NamespacedReplicationController","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationControllerList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"post":{"description":"create a ReplicationController","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"createCoreV1NamespacedReplicationController","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationController"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationController"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationController"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationController"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"delete":{"description":"delete collection of ReplicationController","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1CollectionNamespacedReplicationController","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/replicationcontrollers/{name}":{"get":{"description":"read the specified ReplicationController","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedReplicationController","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationController"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"put":{"description":"replace the specified ReplicationController","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespacedReplicationController","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationController"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationController"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationController"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"delete":{"description":"delete a ReplicationController","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1NamespacedReplicationController","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"patch":{"description":"partially update the specified ReplicationController","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespacedReplicationController","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationController"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationController"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the ReplicationController","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/scale":{"get":{"description":"read scale of the specified ReplicationController","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedReplicationControllerScale","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.autoscaling.v1.Scale"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"autoscaling","version":"v1","kind":"Scale"}},"put":{"description":"replace scale of the specified ReplicationController","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespacedReplicationControllerScale","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.autoscaling.v1.Scale"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.autoscaling.v1.Scale"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.autoscaling.v1.Scale"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"autoscaling","version":"v1","kind":"Scale"}},"patch":{"description":"partially update scale of the specified ReplicationController","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespacedReplicationControllerScale","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.autoscaling.v1.Scale"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.autoscaling.v1.Scale"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"autoscaling","version":"v1","kind":"Scale"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the Scale","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status":{"get":{"description":"read status of the specified ReplicationController","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedReplicationControllerStatus","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationController"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"put":{"description":"replace status of the specified ReplicationController","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespacedReplicationControllerStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationController"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationController"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationController"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"patch":{"description":"partially update status of the specified ReplicationController","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespacedReplicationControllerStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationController"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationController"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the ReplicationController","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/resourcequotas":{"get":{"description":"list or watch objects of kind ResourceQuota","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1NamespacedResourceQuota","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuotaList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"post":{"description":"create a ResourceQuota","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"createCoreV1NamespacedResourceQuota","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuota"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuota"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuota"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuota"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"delete":{"description":"delete collection of ResourceQuota","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1CollectionNamespacedResourceQuota","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/resourcequotas/{name}":{"get":{"description":"read the specified ResourceQuota","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedResourceQuota","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuota"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"put":{"description":"replace the specified ResourceQuota","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespacedResourceQuota","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuota"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuota"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuota"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"delete":{"description":"delete a ResourceQuota","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1NamespacedResourceQuota","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuota"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuota"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"patch":{"description":"partially update the specified ResourceQuota","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespacedResourceQuota","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuota"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuota"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the ResourceQuota","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/resourcequotas/{name}/status":{"get":{"description":"read status of the specified ResourceQuota","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedResourceQuotaStatus","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuota"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"put":{"description":"replace status of the specified ResourceQuota","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespacedResourceQuotaStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuota"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuota"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuota"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"patch":{"description":"partially update status of the specified ResourceQuota","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespacedResourceQuotaStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuota"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuota"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the ResourceQuota","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/secrets":{"get":{"description":"list or watch objects of kind Secret","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1NamespacedSecret","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.SecretList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"post":{"description":"create a Secret","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"createCoreV1NamespacedSecret","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Secret"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Secret"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Secret"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Secret"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"delete":{"description":"delete collection of Secret","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1CollectionNamespacedSecret","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/secrets/{name}":{"get":{"description":"read the specified Secret","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedSecret","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Secret"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"put":{"description":"replace the specified Secret","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespacedSecret","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Secret"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Secret"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Secret"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"delete":{"description":"delete a Secret","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1NamespacedSecret","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"patch":{"description":"partially update the specified Secret","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespacedSecret","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Secret"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Secret"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the Secret","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/serviceaccounts":{"get":{"description":"list or watch objects of kind ServiceAccount","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1NamespacedServiceAccount","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ServiceAccountList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"post":{"description":"create a ServiceAccount","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"createCoreV1NamespacedServiceAccount","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ServiceAccount"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ServiceAccount"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ServiceAccount"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ServiceAccount"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"delete":{"description":"delete collection of ServiceAccount","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1CollectionNamespacedServiceAccount","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/serviceaccounts/{name}":{"get":{"description":"read the specified ServiceAccount","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedServiceAccount","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ServiceAccount"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"put":{"description":"replace the specified ServiceAccount","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespacedServiceAccount","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ServiceAccount"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ServiceAccount"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ServiceAccount"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"delete":{"description":"delete a ServiceAccount","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1NamespacedServiceAccount","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ServiceAccount"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ServiceAccount"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"patch":{"description":"partially update the specified ServiceAccount","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespacedServiceAccount","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ServiceAccount"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ServiceAccount"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the ServiceAccount","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/serviceaccounts/{name}/token":{"post":{"description":"create token of a ServiceAccount","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"createCoreV1NamespacedServiceAccountToken","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.authentication.v1.TokenRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.authentication.v1.TokenRequest"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.authentication.v1.TokenRequest"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.authentication.v1.TokenRequest"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"authentication.k8s.io","version":"v1","kind":"TokenRequest"}},"parameters":[{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the TokenRequest","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/services":{"get":{"description":"list or watch objects of kind Service","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1NamespacedService","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ServiceList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"post":{"description":"create a Service","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"createCoreV1NamespacedService","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Service"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Service"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Service"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Service"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"delete":{"description":"delete collection of Service","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1CollectionNamespacedService","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/services/{name}":{"get":{"description":"read the specified Service","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedService","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Service"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"put":{"description":"replace the specified Service","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespacedService","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Service"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Service"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Service"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"delete":{"description":"delete a Service","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1NamespacedService","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Service"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Service"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"patch":{"description":"partially update the specified Service","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespacedService","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Service"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Service"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the Service","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{namespace}/services/{name}/proxy":{"get":{"description":"connect GET requests to proxy of Service","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1GetNamespacedServiceProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"put":{"description":"connect PUT requests to proxy of Service","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PutNamespacedServiceProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"post":{"description":"connect POST requests to proxy of Service","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PostNamespacedServiceProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"delete":{"description":"connect DELETE requests to proxy of Service","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1DeleteNamespacedServiceProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"options":{"description":"connect OPTIONS requests to proxy of Service","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1OptionsNamespacedServiceProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"head":{"description":"connect HEAD requests to proxy of Service","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1HeadNamespacedServiceProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"patch":{"description":"connect PATCH requests to proxy of Service","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PatchNamespacedServiceProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the ServiceProxyOptions","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","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.","name":"path","in":"query"}]},"/api/v1/namespaces/{namespace}/services/{name}/proxy/{path}":{"get":{"description":"connect GET requests to proxy of Service","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1GetNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"put":{"description":"connect PUT requests to proxy of Service","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PutNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"post":{"description":"connect POST requests to proxy of Service","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PostNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"delete":{"description":"connect DELETE requests to proxy of Service","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1DeleteNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"options":{"description":"connect OPTIONS requests to proxy of Service","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1OptionsNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"head":{"description":"connect HEAD requests to proxy of Service","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1HeadNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"patch":{"description":"connect PATCH requests to proxy of Service","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PatchNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the ServiceProxyOptions","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"path to the resource","name":"path","in":"path","required":true},{"uniqueItems":true,"type":"string","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.","name":"path","in":"query"}]},"/api/v1/namespaces/{namespace}/services/{name}/status":{"get":{"description":"read status of the specified Service","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespacedServiceStatus","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Service"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"put":{"description":"replace status of the specified Service","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespacedServiceStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Service"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Service"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Service"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"patch":{"description":"partially update status of the specified Service","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespacedServiceStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Service"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Service"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the Service","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{name}":{"get":{"description":"read the specified Namespace","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1Namespace","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"put":{"description":"replace the specified Namespace","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1Namespace","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"delete":{"description":"delete a Namespace","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1Namespace","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"patch":{"description":"partially update the specified Namespace","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1Namespace","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the Namespace","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{name}/finalize":{"put":{"description":"replace finalize of the specified Namespace","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespaceFinalize","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"parameters":[{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the Namespace","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/namespaces/{name}/status":{"get":{"description":"read status of the specified Namespace","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NamespaceStatus","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"put":{"description":"replace status of the specified Namespace","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NamespaceStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"patch":{"description":"partially update status of the specified Namespace","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NamespaceStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the Namespace","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/nodes":{"get":{"description":"list or watch objects of kind Node","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1Node","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.NodeList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"post":{"description":"create a Node","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"createCoreV1Node","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Node"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Node"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Node"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Node"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"delete":{"description":"delete collection of Node","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1CollectionNode","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"parameters":[{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/nodes/{name}":{"get":{"description":"read the specified Node","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1Node","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Node"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"put":{"description":"replace the specified Node","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1Node","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Node"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Node"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Node"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"delete":{"description":"delete a Node","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1Node","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"patch":{"description":"partially update the specified Node","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1Node","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Node"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Node"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the Node","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/nodes/{name}/proxy":{"get":{"description":"connect GET requests to proxy of Node","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1GetNodeProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"put":{"description":"connect PUT requests to proxy of Node","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PutNodeProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"post":{"description":"connect POST requests to proxy of Node","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PostNodeProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"delete":{"description":"connect DELETE requests to proxy of Node","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1DeleteNodeProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"options":{"description":"connect OPTIONS requests to proxy of Node","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1OptionsNodeProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"head":{"description":"connect HEAD requests to proxy of Node","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1HeadNodeProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"patch":{"description":"connect PATCH requests to proxy of Node","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PatchNodeProxy","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the NodeProxyOptions","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"Path is the URL path to use for the current proxy request to node.","name":"path","in":"query"}]},"/api/v1/nodes/{name}/proxy/{path}":{"get":{"description":"connect GET requests to proxy of Node","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1GetNodeProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"put":{"description":"connect PUT requests to proxy of Node","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PutNodeProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"post":{"description":"connect POST requests to proxy of Node","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PostNodeProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"delete":{"description":"connect DELETE requests to proxy of Node","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1DeleteNodeProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"options":{"description":"connect OPTIONS requests to proxy of Node","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1OptionsNodeProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"head":{"description":"connect HEAD requests to proxy of Node","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1HeadNodeProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"patch":{"description":"connect PATCH requests to proxy of Node","consumes":["*/*"],"produces":["*/*"],"schemes":["https"],"tags":["core_v1"],"operationId":"connectCoreV1PatchNodeProxyWithPath","responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the NodeProxyOptions","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"path to the resource","name":"path","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"Path is the URL path to use for the current proxy request to node.","name":"path","in":"query"}]},"/api/v1/nodes/{name}/status":{"get":{"description":"read status of the specified Node","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1NodeStatus","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Node"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"put":{"description":"replace status of the specified Node","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1NodeStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Node"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Node"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Node"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"patch":{"description":"partially update status of the specified Node","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1NodeStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Node"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.Node"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the Node","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/persistentvolumeclaims":{"get":{"description":"list or watch objects of kind PersistentVolumeClaim","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1PersistentVolumeClaimForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/persistentvolumes":{"get":{"description":"list or watch objects of kind PersistentVolume","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1PersistentVolume","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"post":{"description":"create a PersistentVolume","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"createCoreV1PersistentVolume","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolume"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolume"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolume"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolume"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"delete":{"description":"delete collection of PersistentVolume","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1CollectionPersistentVolume","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"parameters":[{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/persistentvolumes/{name}":{"get":{"description":"read the specified PersistentVolume","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1PersistentVolume","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolume"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"put":{"description":"replace the specified PersistentVolume","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1PersistentVolume","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolume"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolume"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolume"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"delete":{"description":"delete a PersistentVolume","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"deleteCoreV1PersistentVolume","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolume"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolume"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"patch":{"description":"partially update the specified PersistentVolume","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1PersistentVolume","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolume"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolume"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the PersistentVolume","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/persistentvolumes/{name}/status":{"get":{"description":"read status of the specified PersistentVolume","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"readCoreV1PersistentVolumeStatus","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolume"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"put":{"description":"replace status of the specified PersistentVolume","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"replaceCoreV1PersistentVolumeStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolume"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolume"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolume"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"patch":{"description":"partially update status of the specified PersistentVolume","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["core_v1"],"operationId":"patchCoreV1PersistentVolumeStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolume"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolume"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the PersistentVolume","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/api/v1/pods":{"get":{"description":"list or watch objects of kind Pod","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1PodForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PodList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/podtemplates":{"get":{"description":"list or watch objects of kind PodTemplate","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1PodTemplateForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.PodTemplateList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/replicationcontrollers":{"get":{"description":"list or watch objects of kind ReplicationController","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1ReplicationControllerForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationControllerList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/resourcequotas":{"get":{"description":"list or watch objects of kind ResourceQuota","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1ResourceQuotaForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuotaList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/secrets":{"get":{"description":"list or watch objects of kind Secret","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1SecretForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.SecretList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/serviceaccounts":{"get":{"description":"list or watch objects of kind ServiceAccount","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1ServiceAccountForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ServiceAccountList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/services":{"get":{"description":"list or watch objects of kind Service","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"listCoreV1ServiceForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.core.v1.ServiceList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/configmaps":{"get":{"description":"watch individual changes to a list of ConfigMap. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1ConfigMapListForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/endpoints":{"get":{"description":"watch individual changes to a list of Endpoints. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1EndpointsListForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/events":{"get":{"description":"watch individual changes to a list of Event. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1EventListForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/limitranges":{"get":{"description":"watch individual changes to a list of LimitRange. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1LimitRangeListForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces":{"get":{"description":"watch individual changes to a list of Namespace. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespaceList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/configmaps":{"get":{"description":"watch individual changes to a list of ConfigMap. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedConfigMapList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/configmaps/{name}":{"get":{"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.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedConfigMap","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the ConfigMap","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/endpoints":{"get":{"description":"watch individual changes to a list of Endpoints. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedEndpointsList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/endpoints/{name}":{"get":{"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.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedEndpoints","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the Endpoints","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/events":{"get":{"description":"watch individual changes to a list of Event. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedEventList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/events/{name}":{"get":{"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.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedEvent","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the Event","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/limitranges":{"get":{"description":"watch individual changes to a list of LimitRange. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedLimitRangeList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/limitranges/{name}":{"get":{"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.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedLimitRange","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the LimitRange","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/persistentvolumeclaims":{"get":{"description":"watch individual changes to a list of PersistentVolumeClaim. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedPersistentVolumeClaimList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/persistentvolumeclaims/{name}":{"get":{"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.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedPersistentVolumeClaim","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the PersistentVolumeClaim","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/pods":{"get":{"description":"watch individual changes to a list of Pod. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedPodList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/pods/{name}":{"get":{"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.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedPod","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the Pod","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/podtemplates":{"get":{"description":"watch individual changes to a list of PodTemplate. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedPodTemplateList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/podtemplates/{name}":{"get":{"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.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedPodTemplate","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the PodTemplate","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/replicationcontrollers":{"get":{"description":"watch individual changes to a list of ReplicationController. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedReplicationControllerList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/replicationcontrollers/{name}":{"get":{"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.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedReplicationController","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the ReplicationController","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/resourcequotas":{"get":{"description":"watch individual changes to a list of ResourceQuota. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedResourceQuotaList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/resourcequotas/{name}":{"get":{"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.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedResourceQuota","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the ResourceQuota","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/secrets":{"get":{"description":"watch individual changes to a list of Secret. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedSecretList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/secrets/{name}":{"get":{"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.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedSecret","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the Secret","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/serviceaccounts":{"get":{"description":"watch individual changes to a list of ServiceAccount. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedServiceAccountList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/serviceaccounts/{name}":{"get":{"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.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedServiceAccount","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the ServiceAccount","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/services":{"get":{"description":"watch individual changes to a list of Service. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedServiceList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{namespace}/services/{name}":{"get":{"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.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NamespacedService","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the Service","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/namespaces/{name}":{"get":{"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.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1Namespace","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the Namespace","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/nodes":{"get":{"description":"watch individual changes to a list of Node. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1NodeList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/nodes/{name}":{"get":{"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.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1Node","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the Node","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/persistentvolumeclaims":{"get":{"description":"watch individual changes to a list of PersistentVolumeClaim. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1PersistentVolumeClaimListForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/persistentvolumes":{"get":{"description":"watch individual changes to a list of PersistentVolume. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1PersistentVolumeList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/persistentvolumes/{name}":{"get":{"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.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1PersistentVolume","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the PersistentVolume","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/pods":{"get":{"description":"watch individual changes to a list of Pod. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1PodListForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/podtemplates":{"get":{"description":"watch individual changes to a list of PodTemplate. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1PodTemplateListForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/replicationcontrollers":{"get":{"description":"watch individual changes to a list of ReplicationController. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1ReplicationControllerListForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/resourcequotas":{"get":{"description":"watch individual changes to a list of ResourceQuota. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1ResourceQuotaListForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/secrets":{"get":{"description":"watch individual changes to a list of Secret. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1SecretListForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/serviceaccounts":{"get":{"description":"watch individual changes to a list of ServiceAccount. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1ServiceAccountListForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/api/v1/watch/services":{"get":{"description":"watch individual changes to a list of Service. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["core_v1"],"operationId":"watchCoreV1ServiceListForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]}},"definitions":{"io.k8s.api.authentication.v1.BoundObjectReference":{"description":"BoundObjectReference is a reference to an object that a token is bound to.","type":"object","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. Valid kinds are 'Pod' and 'Secret'.","type":"string"},"name":{"description":"Name of the referent.","type":"string"},"uid":{"description":"UID of the referent.","type":"string"}}},"io.k8s.api.authentication.v1.TokenRequest":{"description":"TokenRequest requests a token for a given service account.","type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"Spec holds information about the request being evaluated","default":{},"$ref":"#/definitions/io.k8s.api.authentication.v1.TokenRequestSpec"},"status":{"description":"Status is filled in by the server and indicates whether the token can be authenticated.","default":{},"$ref":"#/definitions/io.k8s.api.authentication.v1.TokenRequestStatus"}},"x-kubernetes-group-version-kind":[{"group":"authentication.k8s.io","kind":"TokenRequest","version":"v1"}]},"io.k8s.api.authentication.v1.TokenRequestSpec":{"description":"TokenRequestSpec contains client provided parameters of a token request.","type":"object","required":["audiences"],"properties":{"audiences":{"description":"Audiences are the intendend audiences of the token. A recipient of a token must identitfy 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.","type":"array","items":{"type":"string","default":""}},"boundObjectRef":{"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.","$ref":"#/definitions/io.k8s.api.authentication.v1.BoundObjectReference"},"expirationSeconds":{"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.","type":"integer","format":"int64"}}},"io.k8s.api.authentication.v1.TokenRequestStatus":{"description":"TokenRequestStatus is the result of a token request.","type":"object","required":["token","expirationTimestamp"],"properties":{"expirationTimestamp":{"description":"ExpirationTimestamp is the time of expiration of the returned token.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"token":{"description":"Token is the opaque bearer token.","type":"string","default":""}}},"io.k8s.api.autoscaling.v1.Scale":{"description":"Scale represents a scaling request for a resource.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.","default":{},"$ref":"#/definitions/io.k8s.api.autoscaling.v1.ScaleSpec"},"status":{"description":"current status of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. Read-only.","default":{},"$ref":"#/definitions/io.k8s.api.autoscaling.v1.ScaleStatus"}},"x-kubernetes-group-version-kind":[{"group":"autoscaling","kind":"Scale","version":"v1"}]},"io.k8s.api.autoscaling.v1.ScaleSpec":{"description":"ScaleSpec describes the attributes of a scale subresource.","type":"object","properties":{"replicas":{"description":"desired number of instances for the scaled object.","type":"integer","format":"int32"}}},"io.k8s.api.autoscaling.v1.ScaleStatus":{"description":"ScaleStatus represents the current status of a scale subresource.","type":"object","required":["replicas"],"properties":{"replicas":{"description":"actual number of observed instances of the scaled object.","type":"integer","format":"int32","default":0},"selector":{"description":"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: http://kubernetes.io/docs/user-guide/labels#label-selectors","type":"string"}}},"io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource":{"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.","type":"object","required":["volumeID"],"properties":{"fsType":{"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","type":"string"},"partition":{"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).","type":"integer","format":"int32"},"readOnly":{"description":"readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore","type":"boolean"},"volumeID":{"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","type":"string","default":""}}},"io.k8s.api.core.v1.Affinity":{"description":"Affinity is a group of affinity scheduling rules.","type":"object","properties":{"nodeAffinity":{"description":"Describes node affinity scheduling rules for the pod.","$ref":"#/definitions/io.k8s.api.core.v1.NodeAffinity"},"podAffinity":{"description":"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).","$ref":"#/definitions/io.k8s.api.core.v1.PodAffinity"},"podAntiAffinity":{"description":"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).","$ref":"#/definitions/io.k8s.api.core.v1.PodAntiAffinity"}}},"io.k8s.api.core.v1.AttachedVolume":{"description":"AttachedVolume describes a volume attached to a node","type":"object","required":["name","devicePath"],"properties":{"devicePath":{"description":"DevicePath represents the device path where the volume should be available","type":"string","default":""},"name":{"description":"Name of the attached volume","type":"string","default":""}}},"io.k8s.api.core.v1.AzureDiskVolumeSource":{"description":"AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.","type":"object","required":["diskName","diskURI"],"properties":{"cachingMode":{"description":"cachingMode is the Host Caching mode: None, Read Only, Read Write.","type":"string"},"diskName":{"description":"diskName is the Name of the data disk in the blob storage","type":"string","default":""},"diskURI":{"description":"diskURI is the URI of data disk in the blob storage","type":"string","default":""},"fsType":{"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.","type":"string"},"kind":{"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","type":"string"},"readOnly":{"description":"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"}}},"io.k8s.api.core.v1.AzureFilePersistentVolumeSource":{"description":"AzureFile represents an Azure File Service mount on the host and bind mount to the pod.","type":"object","required":["secretName","shareName"],"properties":{"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretName":{"description":"secretName is the name of secret that contains Azure Storage Account Name and Key","type":"string","default":""},"secretNamespace":{"description":"secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod","type":"string"},"shareName":{"description":"shareName is the azure Share Name","type":"string","default":""}}},"io.k8s.api.core.v1.AzureFileVolumeSource":{"description":"AzureFile represents an Azure File Service mount on the host and bind mount to the pod.","type":"object","required":["secretName","shareName"],"properties":{"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretName":{"description":"secretName is the name of secret that contains Azure Storage Account Name and Key","type":"string","default":""},"shareName":{"description":"shareName is the azure share Name","type":"string","default":""}}},"io.k8s.api.core.v1.Binding":{"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.","type":"object","required":["target"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"target":{"description":"The target object that you want to bind to the standard object.","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ObjectReference"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Binding","version":"v1"}]},"io.k8s.api.core.v1.CSIPersistentVolumeSource":{"description":"Represents storage that is managed by an external CSI volume driver (Beta feature)","type":"object","required":["driver","volumeHandle"],"properties":{"controllerExpandSecretRef":{"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 is an alpha field and requires enabling ExpandCSIVolumes feature gate. 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.","$ref":"#/definitions/io.k8s.api.core.v1.SecretReference"},"controllerPublishSecretRef":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.SecretReference"},"driver":{"description":"driver is the name of the driver to use for this volume. Required.","type":"string","default":""},"fsType":{"description":"fsType to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\".","type":"string"},"nodePublishSecretRef":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.SecretReference"},"nodeStageSecretRef":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.SecretReference"},"readOnly":{"description":"readOnly value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).","type":"boolean"},"volumeAttributes":{"description":"volumeAttributes of the volume to publish.","type":"object","additionalProperties":{"type":"string","default":""}},"volumeHandle":{"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.","type":"string","default":""}}},"io.k8s.api.core.v1.CSIVolumeSource":{"description":"Represents a source location of a volume to mount, managed by an external CSI driver","type":"object","required":["driver"],"properties":{"driver":{"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.","type":"string","default":""},"fsType":{"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.","type":"string"},"nodePublishSecretRef":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.LocalObjectReference"},"readOnly":{"description":"readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).","type":"boolean"},"volumeAttributes":{"description":"volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.","type":"object","additionalProperties":{"type":"string","default":""}}}},"io.k8s.api.core.v1.Capabilities":{"description":"Adds and removes POSIX capabilities from running containers.","type":"object","properties":{"add":{"description":"Added capabilities","type":"array","items":{"type":"string","default":""}},"drop":{"description":"Removed capabilities","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.CephFSPersistentVolumeSource":{"description":"Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["monitors"],"properties":{"monitors":{"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","type":"array","items":{"type":"string","default":""}},"path":{"description":"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /","type":"string"},"readOnly":{"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","type":"boolean"},"secretFile":{"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","type":"string"},"secretRef":{"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","$ref":"#/definitions/io.k8s.api.core.v1.SecretReference"},"user":{"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","type":"string"}}},"io.k8s.api.core.v1.CephFSVolumeSource":{"description":"Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["monitors"],"properties":{"monitors":{"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","type":"array","items":{"type":"string","default":""}},"path":{"description":"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /","type":"string"},"readOnly":{"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","type":"boolean"},"secretFile":{"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","type":"string"},"secretRef":{"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","$ref":"#/definitions/io.k8s.api.core.v1.LocalObjectReference"},"user":{"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","type":"string"}}},"io.k8s.api.core.v1.CinderPersistentVolumeSource":{"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.","type":"object","required":["volumeID"],"properties":{"fsType":{"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","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"description":"secretRef is Optional: points to a secret object containing parameters used to connect to OpenStack.","$ref":"#/definitions/io.k8s.api.core.v1.SecretReference"},"volumeID":{"description":"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","type":"string","default":""}}},"io.k8s.api.core.v1.CinderVolumeSource":{"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.","type":"object","required":["volumeID"],"properties":{"fsType":{"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","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"description":"secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.","$ref":"#/definitions/io.k8s.api.core.v1.LocalObjectReference"},"volumeID":{"description":"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","type":"string","default":""}}},"io.k8s.api.core.v1.ClientIPConfig":{"description":"ClientIPConfig represents the configurations of Client IP based session affinity.","type":"object","properties":{"timeoutSeconds":{"description":"timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be \u003e0 \u0026\u0026 \u003c=86400(for 1 day) if ServiceAffinity == \"ClientIP\". Default value is 10800(for 3 hours).","type":"integer","format":"int32"}}},"io.k8s.api.core.v1.ComponentCondition":{"description":"Information about the condition of a component.","type":"object","required":["type","status"],"properties":{"error":{"description":"Condition error code for a component. For example, a health check error code.","type":"string"},"message":{"description":"Message about the condition for a component. For example, information about a health check.","type":"string"},"status":{"description":"Status of the condition for a component. Valid values for \"Healthy\": \"True\", \"False\", or \"Unknown\".","type":"string","default":""},"type":{"description":"Type of condition for a component. Valid value: \"Healthy\"","type":"string","default":""}}},"io.k8s.api.core.v1.ComponentStatus":{"description":"ComponentStatus (and ComponentStatusList) holds the cluster validation info. Deprecated: This API is deprecated in v1.19+","type":"object","properties":{"apiVersion":{"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","type":"string"},"conditions":{"description":"List of component conditions observed","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ComponentCondition"},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ComponentStatus","version":"v1"}]},"io.k8s.api.core.v1.ComponentStatusList":{"description":"Status of all the conditions for the component as a list of ComponentStatus objects. Deprecated: This API is deprecated in v1.19+","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of ComponentStatus objects.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ComponentStatus"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ComponentStatusList","version":"v1"}]},"io.k8s.api.core.v1.ConfigMap":{"description":"ConfigMap holds configuration data for pods to consume.","type":"object","properties":{"apiVersion":{"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","type":"string"},"binaryData":{"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.","type":"object","additionalProperties":{"type":"string","format":"byte"}},"data":{"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.","type":"object","additionalProperties":{"type":"string","default":""}},"immutable":{"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.","type":"boolean"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ConfigMap","version":"v1"}]},"io.k8s.api.core.v1.ConfigMapEnvSource":{"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.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the ConfigMap must be defined","type":"boolean"}}},"io.k8s.api.core.v1.ConfigMapKeySelector":{"description":"Selects a key from a ConfigMap.","type":"object","required":["key"],"properties":{"key":{"description":"The key to select.","type":"string","default":""},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the ConfigMap or its key must be defined","type":"boolean"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ConfigMapList":{"description":"ConfigMapList is a resource containing a list of ConfigMap objects.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"Items is the list of ConfigMaps.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ConfigMap"}},"kind":{"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","type":"string"},"metadata":{"description":"More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ConfigMapList","version":"v1"}]},"io.k8s.api.core.v1.ConfigMapNodeConfigSource":{"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","type":"object","required":["namespace","name","kubeletConfigKey"],"properties":{"kubeletConfigKey":{"description":"KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.","type":"string","default":""},"name":{"description":"Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.","type":"string","default":""},"namespace":{"description":"Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.","type":"string","default":""},"resourceVersion":{"description":"ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.","type":"string"},"uid":{"description":"UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.","type":"string"}}},"io.k8s.api.core.v1.ConfigMapProjection":{"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.","type":"object","properties":{"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.KeyToPath"}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional specify whether the ConfigMap or its keys must be defined","type":"boolean"}}},"io.k8s.api.core.v1.ConfigMapVolumeSource":{"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.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.KeyToPath"}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional specify whether the ConfigMap or its keys must be defined","type":"boolean"}}},"io.k8s.api.core.v1.Container":{"description":"A single application container that you want to run within a pod.","type":"object","required":["name"],"properties":{"args":{"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","type":"array","items":{"type":"string","default":""}},"command":{"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","type":"array","items":{"type":"string","default":""}},"env":{"description":"List of environment variables to set in the container. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.EnvVar"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"envFrom":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.EnvFromSource"}},"image":{"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.","type":"string"},"imagePullPolicy":{"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\nPossible enum values:\n - `\"Always\"` means that kubelet always attempts to pull the latest image. Container will fail If the pull fails.\n - `\"IfNotPresent\"` means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails.\n - `\"Never\"` means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present","type":"string","enum":["Always","IfNotPresent","Never"]},"lifecycle":{"description":"Actions that the management system should take in response to container lifecycle events. Cannot be updated.","$ref":"#/definitions/io.k8s.api.core.v1.Lifecycle"},"livenessProbe":{"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","$ref":"#/definitions/io.k8s.api.core.v1.Probe"},"name":{"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.","type":"string","default":""},"ports":{"description":"List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. 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. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ContainerPort"},"x-kubernetes-list-map-keys":["containerPort","protocol"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"containerPort","x-kubernetes-patch-strategy":"merge"},"readinessProbe":{"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","$ref":"#/definitions/io.k8s.api.core.v1.Probe"},"resources":{"description":"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ResourceRequirements"},"securityContext":{"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/","$ref":"#/definitions/io.k8s.api.core.v1.SecurityContext"},"startupProbe":{"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","$ref":"#/definitions/io.k8s.api.core.v1.Probe"},"stdin":{"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.","type":"boolean"},"stdinOnce":{"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","type":"boolean"},"terminationMessagePath":{"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.","type":"string"},"terminationMessagePolicy":{"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\nPossible enum values:\n - `\"FallbackToLogsOnError\"` will read the most recent contents of the container logs for the container status message when the container exits with an error and the terminationMessagePath has no contents.\n - `\"File\"` is the default behavior and will set the container status message to the contents of the container's terminationMessagePath when the container exits.","type":"string","enum":["FallbackToLogsOnError","File"]},"tty":{"description":"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.","type":"boolean"},"volumeDevices":{"description":"volumeDevices is the list of block devices to be used by the container.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.VolumeDevice"},"x-kubernetes-patch-merge-key":"devicePath","x-kubernetes-patch-strategy":"merge"},"volumeMounts":{"description":"Pod volumes to mount into the container's filesystem. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.VolumeMount"},"x-kubernetes-patch-merge-key":"mountPath","x-kubernetes-patch-strategy":"merge"},"workingDir":{"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.","type":"string"}}},"io.k8s.api.core.v1.ContainerImage":{"description":"Describe a container image","type":"object","properties":{"names":{"description":"Names by which this image is known. e.g. [\"k8s.gcr.io/hyperkube:v1.0.7\", \"dockerhub.io/google_containers/hyperkube:v1.0.7\"]","type":"array","items":{"type":"string","default":""}},"sizeBytes":{"description":"The size of the image in bytes.","type":"integer","format":"int64"}}},"io.k8s.api.core.v1.ContainerPort":{"description":"ContainerPort represents a network port in a single container.","type":"object","required":["containerPort"],"properties":{"containerPort":{"description":"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \u003c x \u003c 65536.","type":"integer","format":"int32","default":0},"hostIP":{"description":"What host IP to bind the external port to.","type":"string"},"hostPort":{"description":"Number of port to expose on the host. If specified, this must be a valid port number, 0 \u003c x \u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.","type":"integer","format":"int32"},"name":{"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.","type":"string"},"protocol":{"description":"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n\nPossible enum values:\n - `\"SCTP\"` is the SCTP protocol.\n - `\"TCP\"` is the TCP protocol.\n - `\"UDP\"` is the UDP protocol.","type":"string","default":"TCP","enum":["SCTP","TCP","UDP"]}}},"io.k8s.api.core.v1.ContainerState":{"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.","type":"object","properties":{"running":{"description":"Details about a running container","$ref":"#/definitions/io.k8s.api.core.v1.ContainerStateRunning"},"terminated":{"description":"Details about a terminated container","$ref":"#/definitions/io.k8s.api.core.v1.ContainerStateTerminated"},"waiting":{"description":"Details about a waiting container","$ref":"#/definitions/io.k8s.api.core.v1.ContainerStateWaiting"}}},"io.k8s.api.core.v1.ContainerStateRunning":{"description":"ContainerStateRunning is a running state of a container.","type":"object","properties":{"startedAt":{"description":"Time at which the container was last (re-)started","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.api.core.v1.ContainerStateTerminated":{"description":"ContainerStateTerminated is a terminated state of a container.","type":"object","required":["exitCode"],"properties":{"containerID":{"description":"Container's ID in the format '\u003ctype\u003e://\u003ccontainer_id\u003e'","type":"string"},"exitCode":{"description":"Exit status from the last termination of the container","type":"integer","format":"int32","default":0},"finishedAt":{"description":"Time at which the container last terminated","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"Message regarding the last termination of the container","type":"string"},"reason":{"description":"(brief) reason from the last termination of the container","type":"string"},"signal":{"description":"Signal from the last termination of the container","type":"integer","format":"int32"},"startedAt":{"description":"Time at which previous execution of the container started","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.api.core.v1.ContainerStateWaiting":{"description":"ContainerStateWaiting is a waiting state of a container.","type":"object","properties":{"message":{"description":"Message regarding why the container is not yet running.","type":"string"},"reason":{"description":"(brief) reason the container is not yet running.","type":"string"}}},"io.k8s.api.core.v1.ContainerStatus":{"description":"ContainerStatus contains details for the current status of this container.","type":"object","required":["name","ready","restartCount","image","imageID"],"properties":{"containerID":{"description":"Container's ID in the format '\u003ctype\u003e://\u003ccontainer_id\u003e'.","type":"string"},"image":{"description":"The image the container is running. More info: https://kubernetes.io/docs/concepts/containers/images.","type":"string","default":""},"imageID":{"description":"ImageID of the container's image.","type":"string","default":""},"lastState":{"description":"Details about the container's last termination condition.","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ContainerState"},"name":{"description":"This must be a DNS_LABEL. Each container in a pod must have a unique name. Cannot be updated.","type":"string","default":""},"ready":{"description":"Specifies whether the container has passed its readiness probe.","type":"boolean","default":false},"restartCount":{"description":"The number of times the container has been restarted.","type":"integer","format":"int32","default":0},"started":{"description":"Specifies whether the container has 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. Is always true when no startupProbe is defined.","type":"boolean"},"state":{"description":"Details about the container's current condition.","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ContainerState"}}},"io.k8s.api.core.v1.DaemonEndpoint":{"description":"DaemonEndpoint contains information about a single Daemon endpoint.","type":"object","required":["Port"],"properties":{"Port":{"description":"Port number of the given endpoint.","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.DownwardAPIProjection":{"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.","type":"object","properties":{"items":{"description":"Items is a list of DownwardAPIVolume file","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeFile"}}}},"io.k8s.api.core.v1.DownwardAPIVolumeFile":{"description":"DownwardAPIVolumeFile represents information to create the file containing the pod field","type":"object","required":["path"],"properties":{"fieldRef":{"description":"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.","$ref":"#/definitions/io.k8s.api.core.v1.ObjectFieldSelector"},"mode":{"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.","type":"integer","format":"int32"},"path":{"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 '..'","type":"string","default":""},"resourceFieldRef":{"description":"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.","$ref":"#/definitions/io.k8s.api.core.v1.ResourceFieldSelector"}}},"io.k8s.api.core.v1.DownwardAPIVolumeSource":{"description":"DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"description":"Items is a list of downward API volume file","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeFile"}}}},"io.k8s.api.core.v1.EmptyDirVolumeSource":{"description":"Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.","type":"object","properties":{"medium":{"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","type":"string"},"sizeLimit":{"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: http://kubernetes.io/docs/user-guide/volumes#emptydir","$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}}},"io.k8s.api.core.v1.EndpointAddress":{"description":"EndpointAddress is a tuple that describes single IP address.","type":"object","required":["ip"],"properties":{"hostname":{"description":"The Hostname of this endpoint","type":"string"},"ip":{"description":"The IP of this endpoint. May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), or link-local multicast ((224.0.0.0/24). IPv6 is also accepted but not fully supported on all platforms. Also, certain kubernetes components, like kube-proxy, are not IPv6 ready.","type":"string","default":""},"nodeName":{"description":"Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.","type":"string"},"targetRef":{"description":"Reference to object providing the endpoint.","$ref":"#/definitions/io.k8s.api.core.v1.ObjectReference"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.EndpointPort":{"description":"EndpointPort is a tuple that describes a single port.","type":"object","required":["port"],"properties":{"appProtocol":{"description":"The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol.","type":"string"},"name":{"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.","type":"string"},"port":{"description":"The port number of the endpoint.","type":"integer","format":"int32","default":0},"protocol":{"description":"The IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP.\n\nPossible enum values:\n - `\"SCTP\"` is the SCTP protocol.\n - `\"TCP\"` is the TCP protocol.\n - `\"UDP\"` is the UDP protocol.","type":"string","enum":["SCTP","TCP","UDP"]}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.EndpointSubset":{"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 Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n }\nThe resulting set of endpoints can be viewed 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 ]","type":"object","properties":{"addresses":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.EndpointAddress"}},"notReadyAddresses":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.EndpointAddress"}},"ports":{"description":"Port numbers available on the related IP addresses.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.EndpointPort"}}}},"io.k8s.api.core.v1.Endpoints":{"description":"Endpoints is a collection of endpoints that implement the actual service. Example:\n Name: \"mysvc\",\n Subsets: [\n {\n Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n },\n {\n Addresses: [{\"ip\": \"10.10.3.3\"}],\n Ports: [{\"name\": \"a\", \"port\": 93}, {\"name\": \"b\", \"port\": 76}]\n },\n ]","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"subsets":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.EndpointSubset"}}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Endpoints","version":"v1"}]},"io.k8s.api.core.v1.EndpointsList":{"description":"EndpointsList is a list of endpoints.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of endpoints.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.Endpoints"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"EndpointsList","version":"v1"}]},"io.k8s.api.core.v1.EnvFromSource":{"description":"EnvFromSource represents the source of a set of ConfigMaps","type":"object","properties":{"configMapRef":{"description":"The ConfigMap to select from","$ref":"#/definitions/io.k8s.api.core.v1.ConfigMapEnvSource"},"prefix":{"description":"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.","type":"string"},"secretRef":{"description":"The Secret to select from","$ref":"#/definitions/io.k8s.api.core.v1.SecretEnvSource"}}},"io.k8s.api.core.v1.EnvVar":{"description":"EnvVar represents an environment variable present in a Container.","type":"object","required":["name"],"properties":{"name":{"description":"Name of the environment variable. Must be a C_IDENTIFIER.","type":"string","default":""},"value":{"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 \"\".","type":"string"},"valueFrom":{"description":"Source for the environment variable's value. Cannot be used if value is not empty.","$ref":"#/definitions/io.k8s.api.core.v1.EnvVarSource"}}},"io.k8s.api.core.v1.EnvVarSource":{"description":"EnvVarSource represents a source for the value of an EnvVar.","type":"object","properties":{"configMapKeyRef":{"description":"Selects a key of a ConfigMap.","$ref":"#/definitions/io.k8s.api.core.v1.ConfigMapKeySelector"},"fieldRef":{"description":"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\u003cKEY\u003e']`, `metadata.annotations['\u003cKEY\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.","$ref":"#/definitions/io.k8s.api.core.v1.ObjectFieldSelector"},"resourceFieldRef":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.ResourceFieldSelector"},"secretKeyRef":{"description":"Selects a key of a secret in the pod's namespace","$ref":"#/definitions/io.k8s.api.core.v1.SecretKeySelector"}}},"io.k8s.api.core.v1.EphemeralContainer":{"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\nThis is a beta feature available on clusters that haven't disabled the EphemeralContainers feature gate.","type":"object","required":["name"],"properties":{"args":{"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","type":"array","items":{"type":"string","default":""}},"command":{"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","type":"array","items":{"type":"string","default":""}},"env":{"description":"List of environment variables to set in the container. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.EnvVar"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"envFrom":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.EnvFromSource"}},"image":{"description":"Container image name. More info: https://kubernetes.io/docs/concepts/containers/images","type":"string"},"imagePullPolicy":{"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\nPossible enum values:\n - `\"Always\"` means that kubelet always attempts to pull the latest image. Container will fail If the pull fails.\n - `\"IfNotPresent\"` means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails.\n - `\"Never\"` means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present","type":"string","enum":["Always","IfNotPresent","Never"]},"lifecycle":{"description":"Lifecycle is not allowed for ephemeral containers.","$ref":"#/definitions/io.k8s.api.core.v1.Lifecycle"},"livenessProbe":{"description":"Probes are not allowed for ephemeral containers.","$ref":"#/definitions/io.k8s.api.core.v1.Probe"},"name":{"description":"Name of the ephemeral container specified as a DNS_LABEL. This name must be unique among all containers, init containers and ephemeral containers.","type":"string","default":""},"ports":{"description":"Ports are not allowed for ephemeral containers.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ContainerPort"},"x-kubernetes-list-map-keys":["containerPort","protocol"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"containerPort","x-kubernetes-patch-strategy":"merge"},"readinessProbe":{"description":"Probes are not allowed for ephemeral containers.","$ref":"#/definitions/io.k8s.api.core.v1.Probe"},"resources":{"description":"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources already allocated to the pod.","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ResourceRequirements"},"securityContext":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.SecurityContext"},"startupProbe":{"description":"Probes are not allowed for ephemeral containers.","$ref":"#/definitions/io.k8s.api.core.v1.Probe"},"stdin":{"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.","type":"boolean"},"stdinOnce":{"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","type":"boolean"},"targetContainerName":{"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.","type":"string"},"terminationMessagePath":{"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.","type":"string"},"terminationMessagePolicy":{"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\nPossible enum values:\n - `\"FallbackToLogsOnError\"` will read the most recent contents of the container logs for the container status message when the container exits with an error and the terminationMessagePath has no contents.\n - `\"File\"` is the default behavior and will set the container status message to the contents of the container's terminationMessagePath when the container exits.","type":"string","enum":["FallbackToLogsOnError","File"]},"tty":{"description":"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.","type":"boolean"},"volumeDevices":{"description":"volumeDevices is the list of block devices to be used by the container.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.VolumeDevice"},"x-kubernetes-patch-merge-key":"devicePath","x-kubernetes-patch-strategy":"merge"},"volumeMounts":{"description":"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.VolumeMount"},"x-kubernetes-patch-merge-key":"mountPath","x-kubernetes-patch-strategy":"merge"},"workingDir":{"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.","type":"string"}}},"io.k8s.api.core.v1.EphemeralVolumeSource":{"description":"Represents an ephemeral volume that is handled by a normal storage driver.","type":"object","properties":{"volumeClaimTemplate":{"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 `\u003cpod name\u003e-\u003cvolume name\u003e` where `\u003cvolume name\u003e` 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.","$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimTemplate"}}},"io.k8s.api.core.v1.Event":{"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.","type":"object","required":["metadata","involvedObject"],"properties":{"action":{"description":"What action was taken/failed regarding to the Regarding object.","type":"string"},"apiVersion":{"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","type":"string"},"count":{"description":"The number of times this event has occurred.","type":"integer","format":"int32"},"eventTime":{"description":"Time when this Event was first observed.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime"},"firstTimestamp":{"description":"The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"involvedObject":{"description":"The object that this event is about.","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ObjectReference"},"kind":{"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","type":"string"},"lastTimestamp":{"description":"The time at which the most recent occurrence of this event was recorded.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"reason":{"description":"This should be a short, machine understandable string that gives the reason for the transition into the object's current status.","type":"string"},"related":{"description":"Optional secondary object for more complex actions.","$ref":"#/definitions/io.k8s.api.core.v1.ObjectReference"},"reportingComponent":{"description":"Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.","type":"string","default":""},"reportingInstance":{"description":"ID of the controller instance, e.g. `kubelet-xyzf`.","type":"string","default":""},"series":{"description":"Data about the Event series this event represents or nil if it's a singleton Event.","$ref":"#/definitions/io.k8s.api.core.v1.EventSeries"},"source":{"description":"The component reporting this event. Should be a short machine understandable string.","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.EventSource"},"type":{"description":"Type of this event (Normal, Warning), new types could be added in the future","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Event","version":"v1"}]},"io.k8s.api.core.v1.EventList":{"description":"EventList is a list of events.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of events","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.Event"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"EventList","version":"v1"}]},"io.k8s.api.core.v1.EventSeries":{"description":"EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time.","type":"object","properties":{"count":{"description":"Number of occurrences in this series up to the last heartbeat time","type":"integer","format":"int32"},"lastObservedTime":{"description":"Time of the last occurrence observed","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime"}}},"io.k8s.api.core.v1.EventSource":{"description":"EventSource contains information for an event.","type":"object","properties":{"component":{"description":"Component from which the event is generated.","type":"string"},"host":{"description":"Node name on which the event is generated.","type":"string"}}},"io.k8s.api.core.v1.ExecAction":{"description":"ExecAction describes a \"run in container\" action.","type":"object","properties":{"command":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.FCVolumeSource":{"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.","type":"object","properties":{"fsType":{"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.","type":"string"},"lun":{"description":"lun is Optional: FC target lun number","type":"integer","format":"int32"},"readOnly":{"description":"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"targetWWNs":{"description":"targetWWNs is Optional: FC target worldwide names (WWNs)","type":"array","items":{"type":"string","default":""}},"wwids":{"description":"wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.FlexPersistentVolumeSource":{"description":"FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.","type":"object","required":["driver"],"properties":{"driver":{"description":"driver is the name of the driver to use for this volume.","type":"string","default":""},"fsType":{"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.","type":"string"},"options":{"description":"options is Optional: this field holds extra command options if any.","type":"object","additionalProperties":{"type":"string","default":""}},"readOnly":{"description":"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.SecretReference"}}},"io.k8s.api.core.v1.FlexVolumeSource":{"description":"FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.","type":"object","required":["driver"],"properties":{"driver":{"description":"driver is the name of the driver to use for this volume.","type":"string","default":""},"fsType":{"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.","type":"string"},"options":{"description":"options is Optional: this field holds extra command options if any.","type":"object","additionalProperties":{"type":"string","default":""}},"readOnly":{"description":"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.LocalObjectReference"}}},"io.k8s.api.core.v1.FlockerVolumeSource":{"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.","type":"object","properties":{"datasetName":{"description":"datasetName is Name of the dataset stored as metadata -\u003e name on the dataset for Flocker should be considered as deprecated","type":"string"},"datasetUUID":{"description":"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset","type":"string"}}},"io.k8s.api.core.v1.GCEPersistentDiskVolumeSource":{"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.","type":"object","required":["pdName"],"properties":{"fsType":{"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","type":"string"},"partition":{"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","type":"integer","format":"int32"},"pdName":{"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","type":"string","default":""},"readOnly":{"description":"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk","type":"boolean"}}},"io.k8s.api.core.v1.GRPCAction":{"type":"object","required":["port"],"properties":{"port":{"description":"Port number of the gRPC service. Number must be in the range 1 to 65535.","type":"integer","format":"int32","default":0},"service":{"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.","type":"string","default":""}}},"io.k8s.api.core.v1.GitRepoVolumeSource":{"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.","type":"object","required":["repository"],"properties":{"directory":{"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.","type":"string"},"repository":{"description":"repository is the URL","type":"string","default":""},"revision":{"description":"revision is the commit hash for the specified revision.","type":"string"}}},"io.k8s.api.core.v1.GlusterfsPersistentVolumeSource":{"description":"Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["endpoints","path"],"properties":{"endpoints":{"description":"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"endpointsNamespace":{"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","type":"string"},"path":{"description":"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"readOnly":{"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","type":"boolean"}}},"io.k8s.api.core.v1.GlusterfsVolumeSource":{"description":"Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["endpoints","path"],"properties":{"endpoints":{"description":"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"path":{"description":"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"readOnly":{"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","type":"boolean"}}},"io.k8s.api.core.v1.HTTPGetAction":{"description":"HTTPGetAction describes an action based on HTTP Get requests.","type":"object","required":["port"],"properties":{"host":{"description":"Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.","type":"string"},"httpHeaders":{"description":"Custom headers to set in the request. HTTP allows repeated headers.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.HTTPHeader"}},"path":{"description":"Path to access on the HTTP server.","type":"string"},"port":{"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.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString"},"scheme":{"description":"Scheme to use for connecting to the host. Defaults to HTTP.\n\nPossible enum values:\n - `\"HTTP\"` means that the scheme used will be http://\n - `\"HTTPS\"` means that the scheme used will be https://","type":"string","enum":["HTTP","HTTPS"]}}},"io.k8s.api.core.v1.HTTPHeader":{"description":"HTTPHeader describes a custom header to be used in HTTP probes","type":"object","required":["name","value"],"properties":{"name":{"description":"The header field name","type":"string","default":""},"value":{"description":"The header field value","type":"string","default":""}}},"io.k8s.api.core.v1.HostAlias":{"description":"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.","type":"object","properties":{"hostnames":{"description":"Hostnames for the above IP address.","type":"array","items":{"type":"string","default":""}},"ip":{"description":"IP address of the host file entry.","type":"string"}}},"io.k8s.api.core.v1.HostPathVolumeSource":{"description":"Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.","type":"object","required":["path"],"properties":{"path":{"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","type":"string","default":""},"type":{"description":"type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath","type":"string"}}},"io.k8s.api.core.v1.ISCSIPersistentVolumeSource":{"description":"ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.","type":"object","required":["targetPortal","iqn","lun"],"properties":{"chapAuthDiscovery":{"description":"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication","type":"boolean"},"chapAuthSession":{"description":"chapAuthSession defines whether support iSCSI Session CHAP authentication","type":"boolean"},"fsType":{"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","type":"string"},"initiatorName":{"description":"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \u003ctarget portal\u003e:\u003cvolume name\u003e will be created for the connection.","type":"string"},"iqn":{"description":"iqn is Target iSCSI Qualified Name.","type":"string","default":""},"iscsiInterface":{"description":"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).","type":"string"},"lun":{"description":"lun is iSCSI Target Lun number.","type":"integer","format":"int32","default":0},"portals":{"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).","type":"array","items":{"type":"string","default":""}},"readOnly":{"description":"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.","type":"boolean"},"secretRef":{"description":"secretRef is the CHAP Secret for iSCSI target and initiator authentication","$ref":"#/definitions/io.k8s.api.core.v1.SecretReference"},"targetPortal":{"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).","type":"string","default":""}}},"io.k8s.api.core.v1.ISCSIVolumeSource":{"description":"Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.","type":"object","required":["targetPortal","iqn","lun"],"properties":{"chapAuthDiscovery":{"description":"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication","type":"boolean"},"chapAuthSession":{"description":"chapAuthSession defines whether support iSCSI Session CHAP authentication","type":"boolean"},"fsType":{"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","type":"string"},"initiatorName":{"description":"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \u003ctarget portal\u003e:\u003cvolume name\u003e will be created for the connection.","type":"string"},"iqn":{"description":"iqn is the target iSCSI Qualified Name.","type":"string","default":""},"iscsiInterface":{"description":"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).","type":"string"},"lun":{"description":"lun represents iSCSI Target Lun number.","type":"integer","format":"int32","default":0},"portals":{"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).","type":"array","items":{"type":"string","default":""}},"readOnly":{"description":"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.","type":"boolean"},"secretRef":{"description":"secretRef is the CHAP Secret for iSCSI target and initiator authentication","$ref":"#/definitions/io.k8s.api.core.v1.LocalObjectReference"},"targetPortal":{"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).","type":"string","default":""}}},"io.k8s.api.core.v1.KeyToPath":{"description":"Maps a string key to a path within a volume.","type":"object","required":["key","path"],"properties":{"key":{"description":"key is the key to project.","type":"string","default":""},"mode":{"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.","type":"integer","format":"int32"},"path":{"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 '..'.","type":"string","default":""}}},"io.k8s.api.core.v1.Lifecycle":{"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.","type":"object","properties":{"postStart":{"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","$ref":"#/definitions/io.k8s.api.core.v1.LifecycleHandler"},"preStop":{"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","$ref":"#/definitions/io.k8s.api.core.v1.LifecycleHandler"}}},"io.k8s.api.core.v1.LifecycleHandler":{"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.","type":"object","properties":{"exec":{"description":"Exec specifies the action to take.","$ref":"#/definitions/io.k8s.api.core.v1.ExecAction"},"httpGet":{"description":"HTTPGet specifies the http request to perform.","$ref":"#/definitions/io.k8s.api.core.v1.HTTPGetAction"},"tcpSocket":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.TCPSocketAction"}}},"io.k8s.api.core.v1.LimitRange":{"description":"LimitRange sets resource usage limits for each kind of resource in a Namespace.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"Spec defines the limits enforced. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.LimitRangeSpec"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"LimitRange","version":"v1"}]},"io.k8s.api.core.v1.LimitRangeItem":{"description":"LimitRangeItem defines a min/max usage limit for any resource that matches on kind.","type":"object","required":["type"],"properties":{"default":{"description":"Default resource requirement limit value by resource name if resource limit is omitted.","type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"defaultRequest":{"description":"DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.","type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"max":{"description":"Max usage constraints on this kind by resource name.","type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"maxLimitRequestRatio":{"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.","type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"min":{"description":"Min usage constraints on this kind by resource name.","type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"type":{"description":"Type of resource that this limit applies to.","type":"string","default":""}}},"io.k8s.api.core.v1.LimitRangeList":{"description":"LimitRangeList is a list of LimitRange items.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"Items is a list of LimitRange objects. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.LimitRange"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"LimitRangeList","version":"v1"}]},"io.k8s.api.core.v1.LimitRangeSpec":{"description":"LimitRangeSpec defines a min/max usage limit for resources that match on kind.","type":"object","required":["limits"],"properties":{"limits":{"description":"Limits is the list of LimitRangeItem objects that are enforced.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.LimitRangeItem"}}}},"io.k8s.api.core.v1.LoadBalancerIngress":{"description":"LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.","type":"object","properties":{"hostname":{"description":"Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers)","type":"string"},"ip":{"description":"IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)","type":"string"},"ports":{"description":"Ports is a list of records of service ports If used, every port defined in the service should have an entry in it","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PortStatus"},"x-kubernetes-list-type":"atomic"}}},"io.k8s.api.core.v1.LoadBalancerStatus":{"description":"LoadBalancerStatus represents the status of a load-balancer.","type":"object","properties":{"ingress":{"description":"Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.LoadBalancerIngress"}}}},"io.k8s.api.core.v1.LocalObjectReference":{"description":"LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.LocalVolumeSource":{"description":"Local represents directly-attached storage with node affinity (Beta feature)","type":"object","required":["path"],"properties":{"fsType":{"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.","type":"string"},"path":{"description":"path of the full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).","type":"string","default":""}}},"io.k8s.api.core.v1.NFSVolumeSource":{"description":"Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.","type":"object","required":["server","path"],"properties":{"path":{"description":"path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs","type":"string","default":""},"readOnly":{"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","type":"boolean"},"server":{"description":"server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs","type":"string","default":""}}},"io.k8s.api.core.v1.Namespace":{"description":"Namespace provides a scope for Names. Use of multiple namespaces is optional.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.NamespaceSpec"},"status":{"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","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.NamespaceStatus"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Namespace","version":"v1"}]},"io.k8s.api.core.v1.NamespaceCondition":{"description":"NamespaceCondition contains details about state of namespace.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"type":"string"},"reason":{"type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string","default":""},"type":{"description":"Type of namespace controller condition.","type":"string","default":""}}},"io.k8s.api.core.v1.NamespaceList":{"description":"NamespaceList is a list of Namespaces.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"Items is the list of Namespace objects in the list. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.Namespace"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"NamespaceList","version":"v1"}]},"io.k8s.api.core.v1.NamespaceSpec":{"description":"NamespaceSpec describes the attributes on a Namespace.","type":"object","properties":{"finalizers":{"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/","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.NamespaceStatus":{"description":"NamespaceStatus is information about the current status of a Namespace.","type":"object","properties":{"conditions":{"description":"Represents the latest available observations of a namespace's current state.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.NamespaceCondition"},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"phase":{"description":"Phase is the current lifecycle phase of the namespace. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/\n\nPossible enum values:\n - `\"Active\"` means the namespace is available for use in the system\n - `\"Terminating\"` means the namespace is undergoing graceful termination","type":"string","enum":["Active","Terminating"]}}},"io.k8s.api.core.v1.Node":{"description":"Node is a worker node in Kubernetes. Each node will have a unique identifier in the cache (i.e. in etcd).","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"Spec defines the behavior of a node. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.NodeSpec"},"status":{"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","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.NodeStatus"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Node","version":"v1"}]},"io.k8s.api.core.v1.NodeAddress":{"description":"NodeAddress contains information for the node's address.","type":"object","required":["type","address"],"properties":{"address":{"description":"The node address.","type":"string","default":""},"type":{"description":"Node address type, one of Hostname, ExternalIP or InternalIP.","type":"string","default":""}}},"io.k8s.api.core.v1.NodeAffinity":{"description":"Node affinity is a group of node affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PreferredSchedulingTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.NodeSelector"}}},"io.k8s.api.core.v1.NodeCondition":{"description":"NodeCondition contains condition information for a node.","type":"object","required":["type","status"],"properties":{"lastHeartbeatTime":{"description":"Last time we got an update on a given condition.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"lastTransitionTime":{"description":"Last time the condition transit from one status to another.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"Human readable message indicating details about last transition.","type":"string"},"reason":{"description":"(brief) reason for the condition's last transition.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string","default":""},"type":{"description":"Type of node condition.","type":"string","default":""}}},"io.k8s.api.core.v1.NodeConfigSource":{"description":"NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil. This API is deprecated since 1.22","type":"object","properties":{"configMap":{"description":"ConfigMap is a reference to a Node's ConfigMap","$ref":"#/definitions/io.k8s.api.core.v1.ConfigMapNodeConfigSource"}}},"io.k8s.api.core.v1.NodeConfigStatus":{"description":"NodeConfigStatus describes the status of the config assigned by Node.Spec.ConfigSource.","type":"object","properties":{"active":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.NodeConfigSource"},"assigned":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.NodeConfigSource"},"error":{"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.","type":"string"},"lastKnownGood":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.NodeConfigSource"}}},"io.k8s.api.core.v1.NodeDaemonEndpoints":{"description":"NodeDaemonEndpoints lists ports opened by daemons running on the Node.","type":"object","properties":{"kubeletEndpoint":{"description":"Endpoint on which Kubelet is listening.","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.DaemonEndpoint"}}},"io.k8s.api.core.v1.NodeList":{"description":"NodeList is the whole list of all Nodes which have been registered with master.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of nodes","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.Node"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"NodeList","version":"v1"}]},"io.k8s.api.core.v1.NodeSelector":{"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.","type":"object","required":["nodeSelectorTerms"],"properties":{"nodeSelectorTerms":{"description":"Required. A list of node selector terms. The terms are ORed.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.NodeSelectorTerm"}}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.NodeSelectorRequirement":{"description":"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.","type":"object","required":["key","operator"],"properties":{"key":{"description":"The label key that the selector applies to.","type":"string","default":""},"operator":{"description":"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n\nPossible enum values:\n - `\"DoesNotExist\"`\n - `\"Exists\"`\n - `\"Gt\"`\n - `\"In\"`\n - `\"Lt\"`\n - `\"NotIn\"`","type":"string","default":"","enum":["DoesNotExist","Exists","Gt","In","Lt","NotIn"]},"values":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.NodeSelectorTerm":{"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.","type":"object","properties":{"matchExpressions":{"description":"A list of node selector requirements by node's labels.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.NodeSelectorRequirement"}},"matchFields":{"description":"A list of node selector requirements by node's fields.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.NodeSelectorRequirement"}}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.NodeSpec":{"description":"NodeSpec describes the attributes that a node is created with.","type":"object","properties":{"configSource":{"description":"Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed from Kubelets as of 1.24 and will be fully removed in 1.26.","$ref":"#/definitions/io.k8s.api.core.v1.NodeConfigSource"},"externalID":{"description":"Deprecated. Not all kubelets will set this field. Remove field after 1.13. see: https://issues.k8s.io/61966","type":"string"},"podCIDR":{"description":"PodCIDR represents the pod IP range assigned to the node.","type":"string"},"podCIDRs":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"providerID":{"description":"ID of the node assigned by the cloud provider in the format: \u003cProviderName\u003e://\u003cProviderSpecificNodeID\u003e","type":"string"},"taints":{"description":"If specified, the node's taints.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.Taint"}},"unschedulable":{"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","type":"boolean"}}},"io.k8s.api.core.v1.NodeStatus":{"description":"NodeStatus is information about the current status of a node.","type":"object","properties":{"addresses":{"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 http://pr.k8s.io/79391 for an example.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.NodeAddress"},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"allocatable":{"description":"Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity.","type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"capacity":{"description":"Capacity represents the total resources of a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity","type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"conditions":{"description":"Conditions is an array of current observed node conditions. More info: https://kubernetes.io/docs/concepts/nodes/node/#condition","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.NodeCondition"},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"config":{"description":"Status of the config assigned to the node via the dynamic Kubelet config feature.","$ref":"#/definitions/io.k8s.api.core.v1.NodeConfigStatus"},"daemonEndpoints":{"description":"Endpoints of daemons running on the Node.","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.NodeDaemonEndpoints"},"images":{"description":"List of container images on this node","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ContainerImage"}},"nodeInfo":{"description":"Set of ids/uuids to uniquely identify the node. More info: https://kubernetes.io/docs/concepts/nodes/node/#info","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.NodeSystemInfo"},"phase":{"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\nPossible enum values:\n - `\"Pending\"` means the node has been created/added by the system, but not configured.\n - `\"Running\"` means the node has been configured and has Kubernetes components running.\n - `\"Terminated\"` means the node has been removed from the cluster.","type":"string","enum":["Pending","Running","Terminated"]},"volumesAttached":{"description":"List of volumes that are attached to the node.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.AttachedVolume"}},"volumesInUse":{"description":"List of attachable volumes in use (mounted) by the node.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.NodeSystemInfo":{"description":"NodeSystemInfo is a set of ids/uuids to uniquely identify the node.","type":"object","required":["machineID","systemUUID","bootID","kernelVersion","osImage","containerRuntimeVersion","kubeletVersion","kubeProxyVersion","operatingSystem","architecture"],"properties":{"architecture":{"description":"The Architecture reported by the node","type":"string","default":""},"bootID":{"description":"Boot ID reported by the node.","type":"string","default":""},"containerRuntimeVersion":{"description":"ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0).","type":"string","default":""},"kernelVersion":{"description":"Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).","type":"string","default":""},"kubeProxyVersion":{"description":"KubeProxy Version reported by the node.","type":"string","default":""},"kubeletVersion":{"description":"Kubelet Version reported by the node.","type":"string","default":""},"machineID":{"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","type":"string","default":""},"operatingSystem":{"description":"The Operating System reported by the node","type":"string","default":""},"osImage":{"description":"OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).","type":"string","default":""},"systemUUID":{"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","type":"string","default":""}}},"io.k8s.api.core.v1.ObjectFieldSelector":{"description":"ObjectFieldSelector selects an APIVersioned field of an object.","type":"object","required":["fieldPath"],"properties":{"apiVersion":{"description":"Version of the schema the FieldPath is written in terms of, defaults to \"v1\".","type":"string"},"fieldPath":{"description":"Path of the field to select in the specified API version.","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ObjectReference":{"description":"ObjectReference contains enough information to let you inspect or modify the referred object.","type":"object","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"fieldPath":{"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.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"},"resourceVersion":{"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","type":"string"},"uid":{"description":"UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids","type":"string"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.PersistentVolume":{"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","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeSpec"},"status":{"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","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeStatus"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PersistentVolume","version":"v1"}]},"io.k8s.api.core.v1.PersistentVolumeClaim":{"description":"PersistentVolumeClaim is a user's request for and claim to a persistent volume","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimSpec"},"status":{"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","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimStatus"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PersistentVolumeClaim","version":"v1"}]},"io.k8s.api.core.v1.PersistentVolumeClaimCondition":{"description":"PersistentVolumeClaimCondition contails details about state of pvc","type":"object","required":["type","status"],"properties":{"lastProbeTime":{"description":"lastProbeTime is the time we probed the condition.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"lastTransitionTime":{"description":"lastTransitionTime is the time the condition transitioned from one status to another.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"message is the human-readable message indicating details about last transition.","type":"string"},"reason":{"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 \"ResizeStarted\" that means the underlying persistent volume is being resized.","type":"string"},"status":{"type":"string","default":""},"type":{"type":"string","default":""}}},"io.k8s.api.core.v1.PersistentVolumeClaimList":{"description":"PersistentVolumeClaimList is a list of PersistentVolumeClaim items.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"items is a list of persistent volume claims. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PersistentVolumeClaimList","version":"v1"}]},"io.k8s.api.core.v1.PersistentVolumeClaimSpec":{"description":"PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes","type":"object","properties":{"accessModes":{"description":"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1","type":"array","items":{"type":"string","default":""}},"dataSource":{"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. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.","$ref":"#/definitions/io.k8s.api.core.v1.TypedLocalObjectReference"},"dataSourceRef":{"description":"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local 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, 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. There are two 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(Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled.","$ref":"#/definitions/io.k8s.api.core.v1.TypedLocalObjectReference"},"resources":{"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","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ResourceRequirements"},"selector":{"description":"selector is a label query over volumes to consider for binding.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"storageClassName":{"description":"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1","type":"string"},"volumeMode":{"description":"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.","type":"string"},"volumeName":{"description":"volumeName is the binding reference to the PersistentVolume backing this claim.","type":"string"}}},"io.k8s.api.core.v1.PersistentVolumeClaimStatus":{"description":"PersistentVolumeClaimStatus is the current status of a persistent volume claim.","type":"object","properties":{"accessModes":{"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","type":"array","items":{"type":"string","default":""}},"allocatedResources":{"description":"allocatedResources is the storage resource within AllocatedResources tracks the capacity allocated to a PVC. It 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. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.","type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"capacity":{"description":"capacity represents the actual resources of the underlying volume.","type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"conditions":{"description":"conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimCondition"},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"phase":{"description":"phase represents the current phase of PersistentVolumeClaim.\n\nPossible enum values:\n - `\"Bound\"` used for PersistentVolumeClaims that are bound\n - `\"Lost\"` used for PersistentVolumeClaims that lost their underlying PersistentVolume. The claim was bound to a PersistentVolume and this volume does not exist any longer and all data on it was lost.\n - `\"Pending\"` used for PersistentVolumeClaims that are not yet bound","type":"string","enum":["Bound","Lost","Pending"]},"resizeStatus":{"description":"resizeStatus stores status of resize operation. ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty string by resize controller or kubelet. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.","type":"string"}}},"io.k8s.api.core.v1.PersistentVolumeClaimTemplate":{"description":"PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource.","type":"object","required":["spec"],"properties":{"metadata":{"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.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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.","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimSpec"}}},"io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource":{"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).","type":"object","required":["claimName"],"properties":{"claimName":{"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","type":"string","default":""},"readOnly":{"description":"readOnly Will force the ReadOnly setting in VolumeMounts. Default false.","type":"boolean"}}},"io.k8s.api.core.v1.PersistentVolumeList":{"description":"PersistentVolumeList is a list of PersistentVolume items.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"items is a list of persistent volumes. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolume"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PersistentVolumeList","version":"v1"}]},"io.k8s.api.core.v1.PersistentVolumeSpec":{"description":"PersistentVolumeSpec is the specification of a persistent volume.","type":"object","properties":{"accessModes":{"description":"accessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes","type":"array","items":{"type":"string","default":""}},"awsElasticBlockStore":{"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","$ref":"#/definitions/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource"},"azureDisk":{"description":"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.","$ref":"#/definitions/io.k8s.api.core.v1.AzureDiskVolumeSource"},"azureFile":{"description":"azureFile represents an Azure File Service mount on the host and bind mount to the pod.","$ref":"#/definitions/io.k8s.api.core.v1.AzureFilePersistentVolumeSource"},"capacity":{"description":"capacity is the description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity","type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"cephfs":{"description":"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime","$ref":"#/definitions/io.k8s.api.core.v1.CephFSPersistentVolumeSource"},"cinder":{"description":"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","$ref":"#/definitions/io.k8s.api.core.v1.CinderPersistentVolumeSource"},"claimRef":{"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","$ref":"#/definitions/io.k8s.api.core.v1.ObjectReference"},"csi":{"description":"csi represents storage that is handled by an external CSI driver (Beta feature).","$ref":"#/definitions/io.k8s.api.core.v1.CSIPersistentVolumeSource"},"fc":{"description":"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.","$ref":"#/definitions/io.k8s.api.core.v1.FCVolumeSource"},"flexVolume":{"description":"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.","$ref":"#/definitions/io.k8s.api.core.v1.FlexPersistentVolumeSource"},"flocker":{"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","$ref":"#/definitions/io.k8s.api.core.v1.FlockerVolumeSource"},"gcePersistentDisk":{"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","$ref":"#/definitions/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource"},"glusterfs":{"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","$ref":"#/definitions/io.k8s.api.core.v1.GlusterfsPersistentVolumeSource"},"hostPath":{"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","$ref":"#/definitions/io.k8s.api.core.v1.HostPathVolumeSource"},"iscsi":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.ISCSIPersistentVolumeSource"},"local":{"description":"local represents directly-attached storage with node affinity","$ref":"#/definitions/io.k8s.api.core.v1.LocalVolumeSource"},"mountOptions":{"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","type":"array","items":{"type":"string","default":""}},"nfs":{"description":"nfs represents an NFS mount on the host. Provisioned by an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs","$ref":"#/definitions/io.k8s.api.core.v1.NFSVolumeSource"},"nodeAffinity":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.VolumeNodeAffinity"},"persistentVolumeReclaimPolicy":{"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\nPossible enum values:\n - `\"Delete\"` means the volume will be deleted from Kubernetes on release from its claim. The volume plugin must support Deletion.\n - `\"Recycle\"` means the volume will be recycled back into the pool of unbound persistent volumes on release from its claim. The volume plugin must support Recycling.\n - `\"Retain\"` means the volume will be left in its current phase (Released) for manual reclamation by the administrator. The default policy is Retain.","type":"string","enum":["Delete","Recycle","Retain"]},"photonPersistentDisk":{"description":"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine","$ref":"#/definitions/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource"},"portworxVolume":{"description":"portworxVolume represents a portworx volume attached and mounted on kubelets host machine","$ref":"#/definitions/io.k8s.api.core.v1.PortworxVolumeSource"},"quobyte":{"description":"quobyte represents a Quobyte mount on the host that shares a pod's lifetime","$ref":"#/definitions/io.k8s.api.core.v1.QuobyteVolumeSource"},"rbd":{"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","$ref":"#/definitions/io.k8s.api.core.v1.RBDPersistentVolumeSource"},"scaleIO":{"description":"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.","$ref":"#/definitions/io.k8s.api.core.v1.ScaleIOPersistentVolumeSource"},"storageClassName":{"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.","type":"string"},"storageos":{"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","$ref":"#/definitions/io.k8s.api.core.v1.StorageOSPersistentVolumeSource"},"volumeMode":{"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.","type":"string"},"vsphereVolume":{"description":"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine","$ref":"#/definitions/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource"}}},"io.k8s.api.core.v1.PersistentVolumeStatus":{"description":"PersistentVolumeStatus is the current status of a persistent volume.","type":"object","properties":{"message":{"description":"message is a human-readable message indicating details about why the volume is in this state.","type":"string"},"phase":{"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\nPossible enum values:\n - `\"Available\"` used for PersistentVolumes that are not yet bound Available volumes are held by the binder and matched to PersistentVolumeClaims\n - `\"Bound\"` used for PersistentVolumes that are bound\n - `\"Failed\"` used for PersistentVolumes that failed to be correctly recycled or deleted after being released from a claim\n - `\"Pending\"` used for PersistentVolumes that are not available\n - `\"Released\"` used for PersistentVolumes where the bound PersistentVolumeClaim was deleted released volumes must be recycled before becoming available again this phase is used by the persistent volume claim binder to signal to another process to reclaim the resource","type":"string","enum":["Available","Bound","Failed","Pending","Released"]},"reason":{"description":"reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI.","type":"string"}}},"io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource":{"description":"Represents a Photon Controller persistent disk resource.","type":"object","required":["pdID"],"properties":{"fsType":{"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.","type":"string"},"pdID":{"description":"pdID is the ID that identifies Photon Controller persistent disk","type":"string","default":""}}},"io.k8s.api.core.v1.Pod":{"description":"Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PodSpec"},"status":{"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","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PodStatus"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Pod","version":"v1"}]},"io.k8s.api.core.v1.PodAffinity":{"description":"Pod affinity is a group of inter pod affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PodAffinityTerm"}}}},"io.k8s.api.core.v1.PodAffinityTerm":{"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 \u003ctopologyKey\u003e matches that of any node on which a pod of the set of pods is running","type":"object","required":["topologyKey"],"properties":{"labelSelector":{"description":"A label query over a set of resources, in this case pods.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"namespaceSelector":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"namespaces":{"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\".","type":"array","items":{"type":"string","default":""}},"topologyKey":{"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.","type":"string","default":""}}},"io.k8s.api.core.v1.PodAntiAffinity":{"description":"Pod anti affinity is a group of inter pod anti affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PodAffinityTerm"}}}},"io.k8s.api.core.v1.PodCondition":{"description":"PodCondition contains details for the current condition of this pod.","type":"object","required":["type","status"],"properties":{"lastProbeTime":{"description":"Last time we probed the condition.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"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","type":"string","default":""},"type":{"description":"Type is the type of the condition. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions","type":"string","default":""}}},"io.k8s.api.core.v1.PodDNSConfig":{"description":"PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.","type":"object","properties":{"nameservers":{"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.","type":"array","items":{"type":"string","default":""}},"options":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PodDNSConfigOption"}},"searches":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.PodDNSConfigOption":{"description":"PodDNSConfigOption defines DNS resolver options of a pod.","type":"object","properties":{"name":{"description":"Required.","type":"string"},"value":{"type":"string"}}},"io.k8s.api.core.v1.PodIP":{"description":"IP address information for entries in the (plural) PodIPs field. Each entry includes:\n IP: An IP address allocated to the pod. Routable at least within the cluster.","type":"object","properties":{"ip":{"description":"ip is an IP address (IPv4 or IPv6) assigned to the pod","type":"string"}}},"io.k8s.api.core.v1.PodList":{"description":"PodList is a list of Pods.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of pods. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.Pod"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PodList","version":"v1"}]},"io.k8s.api.core.v1.PodOS":{"description":"PodOS defines the OS parameters of a pod.","type":"object","required":["name"],"properties":{"name":{"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","type":"string","default":""}}},"io.k8s.api.core.v1.PodReadinessGate":{"description":"PodReadinessGate contains the reference to a pod condition","type":"object","required":["conditionType"],"properties":{"conditionType":{"description":"ConditionType refers to a condition in the pod's condition list with matching type.","type":"string","default":""}}},"io.k8s.api.core.v1.PodSecurityContext":{"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.","type":"object","properties":{"fsGroup":{"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.","type":"integer","format":"int64"},"fsGroupChangePolicy":{"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.","type":"string"},"runAsGroup":{"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.","type":"integer","format":"int64"},"runAsNonRoot":{"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.","type":"boolean"},"runAsUser":{"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.","type":"integer","format":"int64"},"seLinuxOptions":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.SELinuxOptions"},"seccompProfile":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.SeccompProfile"},"supplementalGroups":{"description":"A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container. Note that this field cannot be set when spec.os.name is windows.","type":"array","items":{"type":"integer","format":"int64","default":0}},"sysctls":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.Sysctl"}},"windowsOptions":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.WindowsSecurityContextOptions"}}},"io.k8s.api.core.v1.PodSpec":{"description":"PodSpec is a description of a pod.","type":"object","required":["containers"],"properties":{"activeDeadlineSeconds":{"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.","type":"integer","format":"int64"},"affinity":{"description":"If specified, the pod's scheduling constraints","$ref":"#/definitions/io.k8s.api.core.v1.Affinity"},"automountServiceAccountToken":{"description":"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.","type":"boolean"},"containers":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.Container"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"dnsConfig":{"description":"Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.","$ref":"#/definitions/io.k8s.api.core.v1.PodDNSConfig"},"dnsPolicy":{"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\nPossible enum values:\n - `\"ClusterFirst\"` indicates that the pod should use cluster DNS first unless hostNetwork is true, if it is available, then fall back on the default (as determined by kubelet) DNS settings.\n - `\"ClusterFirstWithHostNet\"` indicates that the pod should use cluster DNS first, if it is available, then fall back on the default (as determined by kubelet) DNS settings.\n - `\"Default\"` indicates that the pod should use the default (as determined by kubelet) DNS settings.\n - `\"None\"` indicates that the pod should use empty DNS settings. DNS parameters such as nameservers and search paths should be defined via DNSConfig.","type":"string","enum":["ClusterFirst","ClusterFirstWithHostNet","Default","None"]},"enableServiceLinks":{"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.","type":"boolean"},"ephemeralContainers":{"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. This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.EphemeralContainer"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"hostAliases":{"description":"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.HostAlias"},"x-kubernetes-patch-merge-key":"ip","x-kubernetes-patch-strategy":"merge"},"hostIPC":{"description":"Use the host's ipc namespace. Optional: Default to false.","type":"boolean"},"hostNetwork":{"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.","type":"boolean"},"hostPID":{"description":"Use the host's pid namespace. Optional: Default to false.","type":"boolean"},"hostname":{"description":"Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.","type":"string"},"imagePullSecrets":{"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. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.LocalObjectReference"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"initContainers":{"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/","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.Container"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"nodeName":{"description":"NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.","type":"string"},"nodeSelector":{"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/","type":"object","additionalProperties":{"type":"string","default":""},"x-kubernetes-map-type":"atomic"},"os":{"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.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.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 This is a beta field and requires the IdentifyPodOS feature","$ref":"#/definitions/io.k8s.api.core.v1.PodOS"},"overhead":{"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","type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"preemptionPolicy":{"description":"PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset.","type":"string"},"priority":{"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.","type":"integer","format":"int32"},"priorityClassName":{"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.","type":"string"},"readinessGates":{"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","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PodReadinessGate"}},"restartPolicy":{"description":"Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\n\nPossible enum values:\n - `\"Always\"`\n - `\"Never\"`\n - `\"OnFailure\"`","type":"string","enum":["Always","Never","OnFailure"]},"runtimeClassName":{"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","type":"string"},"schedulerName":{"description":"If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.","type":"string"},"securityContext":{"description":"SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.","$ref":"#/definitions/io.k8s.api.core.v1.PodSecurityContext"},"serviceAccount":{"description":"DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.","type":"string"},"serviceAccountName":{"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/","type":"string"},"setHostnameAsFQDN":{"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.","type":"boolean"},"shareProcessNamespace":{"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.","type":"boolean"},"subdomain":{"description":"If specified, the fully qualified Pod hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the pod will not have a domainname at all.","type":"string"},"terminationGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"tolerations":{"description":"If specified, the pod's tolerations.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.Toleration"}},"topologySpreadConstraints":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.TopologySpreadConstraint"},"x-kubernetes-list-map-keys":["topologyKey","whenUnsatisfiable"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"topologyKey","x-kubernetes-patch-strategy":"merge"},"volumes":{"description":"List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.Volume"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge,retainKeys"}}},"io.k8s.api.core.v1.PodStatus":{"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.","type":"object","properties":{"conditions":{"description":"Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PodCondition"},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"containerStatuses":{"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","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ContainerStatus"}},"ephemeralContainerStatuses":{"description":"Status for any ephemeral containers that have run in this pod. This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ContainerStatus"}},"hostIP":{"description":"IP address of the host to which the pod is assigned. Empty if not yet scheduled.","type":"string"},"initContainerStatuses":{"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","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ContainerStatus"}},"message":{"description":"A human readable message indicating details about why the pod is in this condition.","type":"string"},"nominatedNodeName":{"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.","type":"string"},"phase":{"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\nPossible enum values:\n - `\"Failed\"` means that all containers in the pod have terminated, and at least one container has terminated in a failure (exited with a non-zero exit code or was stopped by the system).\n - `\"Pending\"` means the pod has been accepted by the system, but one or more of the containers has not been started. This includes time before being bound to a node, as well as time spent pulling images onto the host.\n - `\"Running\"` means the pod has been bound to a node and all of the containers have been started. At least one container is still running or is in the process of being restarted.\n - `\"Succeeded\"` means that all containers in the pod have voluntarily terminated with a container exit code of 0, and the system is not going to restart any of these containers.\n - `\"Unknown\"` means that 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. Deprecated: It isn't being set since 2015 (74da3b14b0c0f658b3bb8d2def5094686d0e9095)","type":"string","enum":["Failed","Pending","Running","Succeeded","Unknown"]},"podIP":{"description":"IP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated.","type":"string"},"podIPs":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PodIP"},"x-kubernetes-patch-merge-key":"ip","x-kubernetes-patch-strategy":"merge"},"qosClass":{"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://git.k8s.io/community/contributors/design-proposals/node/resource-qos.md\n\nPossible enum values:\n - `\"BestEffort\"` is the BestEffort qos class.\n - `\"Burstable\"` is the Burstable qos class.\n - `\"Guaranteed\"` is the Guaranteed qos class.","type":"string","enum":["BestEffort","Burstable","Guaranteed"]},"reason":{"description":"A brief CamelCase message indicating details about why the pod is in this state. e.g. 'Evicted'","type":"string"},"startTime":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.api.core.v1.PodTemplate":{"description":"PodTemplate describes a template for creating copies of a predefined pod.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"template":{"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","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PodTemplateSpec"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PodTemplate","version":"v1"}]},"io.k8s.api.core.v1.PodTemplateList":{"description":"PodTemplateList is a list of PodTemplates.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of pod templates","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PodTemplate"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PodTemplateList","version":"v1"}]},"io.k8s.api.core.v1.PodTemplateSpec":{"description":"PodTemplateSpec describes the data a pod should have when created from a template","type":"object","properties":{"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PodSpec"}}},"io.k8s.api.core.v1.PortStatus":{"type":"object","required":["port","protocol"],"properties":{"error":{"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.","type":"string"},"port":{"description":"Port is the port number of the service port of which status is recorded here","type":"integer","format":"int32","default":0},"protocol":{"description":"Protocol is the protocol of the service port of which status is recorded here The supported values are: \"TCP\", \"UDP\", \"SCTP\"\n\nPossible enum values:\n - `\"SCTP\"` is the SCTP protocol.\n - `\"TCP\"` is the TCP protocol.\n - `\"UDP\"` is the UDP protocol.","type":"string","default":"","enum":["SCTP","TCP","UDP"]}}},"io.k8s.api.core.v1.PortworxVolumeSource":{"description":"PortworxVolumeSource represents a Portworx volume resource.","type":"object","required":["volumeID"],"properties":{"fsType":{"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.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"volumeID":{"description":"volumeID uniquely identifies a Portworx volume","type":"string","default":""}}},"io.k8s.api.core.v1.PreferredSchedulingTerm":{"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).","type":"object","required":["weight","preference"],"properties":{"preference":{"description":"A node selector term, associated with the corresponding weight.","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.NodeSelectorTerm"},"weight":{"description":"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.Probe":{"description":"Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.","type":"object","properties":{"exec":{"description":"Exec specifies the action to take.","$ref":"#/definitions/io.k8s.api.core.v1.ExecAction"},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.","type":"integer","format":"int32"},"grpc":{"description":"GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate.","$ref":"#/definitions/io.k8s.api.core.v1.GRPCAction"},"httpGet":{"description":"HTTPGet specifies the http request to perform.","$ref":"#/definitions/io.k8s.api.core.v1.HTTPGetAction"},"initialDelaySeconds":{"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","type":"integer","format":"int32"},"periodSeconds":{"description":"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.","type":"integer","format":"int32"},"successThreshold":{"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.","type":"integer","format":"int32"},"tcpSocket":{"description":"TCPSocket specifies an action involving a TCP port.","$ref":"#/definitions/io.k8s.api.core.v1.TCPSocketAction"},"terminationGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"timeoutSeconds":{"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","type":"integer","format":"int32"}}},"io.k8s.api.core.v1.ProjectedVolumeSource":{"description":"Represents a projected volume source","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"sources":{"description":"sources is the list of volume projections","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.VolumeProjection"}}}},"io.k8s.api.core.v1.QuobyteVolumeSource":{"description":"Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.","type":"object","required":["registry","volume"],"properties":{"group":{"description":"group to map volume access to Default is no group","type":"string"},"readOnly":{"description":"readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.","type":"boolean"},"registry":{"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","type":"string","default":""},"tenant":{"description":"tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin","type":"string"},"user":{"description":"user to map volume access to Defaults to serivceaccount user","type":"string"},"volume":{"description":"volume is a string that references an already created Quobyte volume by name.","type":"string","default":""}}},"io.k8s.api.core.v1.RBDPersistentVolumeSource":{"description":"Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.","type":"object","required":["monitors","image"],"properties":{"fsType":{"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","type":"string"},"image":{"description":"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string","default":""},"keyring":{"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","type":"string"},"monitors":{"description":"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"array","items":{"type":"string","default":""}},"pool":{"description":"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"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","$ref":"#/definitions/io.k8s.api.core.v1.SecretReference"},"user":{"description":"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"}}},"io.k8s.api.core.v1.RBDVolumeSource":{"description":"Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.","type":"object","required":["monitors","image"],"properties":{"fsType":{"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","type":"string"},"image":{"description":"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string","default":""},"keyring":{"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","type":"string"},"monitors":{"description":"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"array","items":{"type":"string","default":""}},"pool":{"description":"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"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","$ref":"#/definitions/io.k8s.api.core.v1.LocalObjectReference"},"user":{"description":"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"}}},"io.k8s.api.core.v1.ReplicationController":{"description":"ReplicationController represents the configuration of a replication controller.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"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","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationControllerSpec"},"status":{"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","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationControllerStatus"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ReplicationController","version":"v1"}]},"io.k8s.api.core.v1.ReplicationControllerCondition":{"description":"ReplicationControllerCondition describes the state of a replication controller at a certain point.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"The last time the condition transitioned from one status to another.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"A human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The reason for the condition's last transition.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string","default":""},"type":{"description":"Type of replication controller condition.","type":"string","default":""}}},"io.k8s.api.core.v1.ReplicationControllerList":{"description":"ReplicationControllerList is a collection of replication controllers.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of replication controllers. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationController"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ReplicationControllerList","version":"v1"}]},"io.k8s.api.core.v1.ReplicationControllerSpec":{"description":"ReplicationControllerSpec is the specification of a replication controller.","type":"object","properties":{"minReadySeconds":{"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)","type":"integer","format":"int32"},"replicas":{"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","type":"integer","format":"int32"},"selector":{"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","type":"object","additionalProperties":{"type":"string","default":""},"x-kubernetes-map-type":"atomic"},"template":{"description":"Template is the object that describes the pod that will be created if insufficient replicas are detected. This takes precedence over a TemplateRef. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template","$ref":"#/definitions/io.k8s.api.core.v1.PodTemplateSpec"}}},"io.k8s.api.core.v1.ReplicationControllerStatus":{"description":"ReplicationControllerStatus represents the current status of a replication controller.","type":"object","required":["replicas"],"properties":{"availableReplicas":{"description":"The number of available replicas (ready for at least minReadySeconds) for this replication controller.","type":"integer","format":"int32"},"conditions":{"description":"Represents the latest available observations of a replication controller's current state.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ReplicationControllerCondition"},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"fullyLabeledReplicas":{"description":"The number of pods that have labels matching the labels of the pod template of the replication controller.","type":"integer","format":"int32"},"observedGeneration":{"description":"ObservedGeneration reflects the generation of the most recently observed replication controller.","type":"integer","format":"int64"},"readyReplicas":{"description":"The number of ready replicas for this replication controller.","type":"integer","format":"int32"},"replicas":{"description":"Replicas is the most recently oberved number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.ResourceFieldSelector":{"description":"ResourceFieldSelector represents container resources (cpu, memory) and their output format","type":"object","required":["resource"],"properties":{"containerName":{"description":"Container name: required for volumes, optional for env vars","type":"string"},"divisor":{"description":"Specifies the output format of the exposed resources, defaults to \"1\"","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"},"resource":{"description":"Required: resource to select","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ResourceQuota":{"description":"ResourceQuota sets aggregate quota restrictions enforced per namespace","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"Spec defines the desired quota. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuotaSpec"},"status":{"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","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuotaStatus"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ResourceQuota","version":"v1"}]},"io.k8s.api.core.v1.ResourceQuotaList":{"description":"ResourceQuotaList is a list of ResourceQuota items.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"Items is a list of ResourceQuota objects. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ResourceQuota"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ResourceQuotaList","version":"v1"}]},"io.k8s.api.core.v1.ResourceQuotaSpec":{"description":"ResourceQuotaSpec defines the desired hard limits to enforce for Quota.","type":"object","properties":{"hard":{"description":"hard is the set of desired hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/","type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"scopeSelector":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.ScopeSelector"},"scopes":{"description":"A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.ResourceQuotaStatus":{"description":"ResourceQuotaStatus defines the enforced hard limits and observed use.","type":"object","properties":{"hard":{"description":"Hard is the set of enforced hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/","type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"used":{"description":"Used is the current observed total usage of the resource in the namespace.","type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}}}},"io.k8s.api.core.v1.ResourceRequirements":{"description":"ResourceRequirements describes the compute resource requirements.","type":"object","properties":{"limits":{"description":"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"requests":{"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. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}}}},"io.k8s.api.core.v1.SELinuxOptions":{"description":"SELinuxOptions are the labels to be applied to the container","type":"object","properties":{"level":{"description":"Level is SELinux level label that applies to the container.","type":"string"},"role":{"description":"Role is a SELinux role label that applies to the container.","type":"string"},"type":{"description":"Type is a SELinux type label that applies to the container.","type":"string"},"user":{"description":"User is a SELinux user label that applies to the container.","type":"string"}}},"io.k8s.api.core.v1.ScaleIOPersistentVolumeSource":{"description":"ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume","type":"object","required":["gateway","system","secretRef"],"properties":{"fsType":{"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\"","type":"string"},"gateway":{"description":"gateway is the host address of the ScaleIO API Gateway.","type":"string","default":""},"protectionDomain":{"description":"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.","$ref":"#/definitions/io.k8s.api.core.v1.SecretReference"},"sslEnabled":{"description":"sslEnabled is the flag to enable/disable SSL communication with Gateway, default false","type":"boolean"},"storageMode":{"description":"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.","type":"string"},"storagePool":{"description":"storagePool is the ScaleIO Storage Pool associated with the protection domain.","type":"string"},"system":{"description":"system is the name of the storage system as configured in ScaleIO.","type":"string","default":""},"volumeName":{"description":"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.","type":"string"}}},"io.k8s.api.core.v1.ScaleIOVolumeSource":{"description":"ScaleIOVolumeSource represents a persistent ScaleIO volume","type":"object","required":["gateway","system","secretRef"],"properties":{"fsType":{"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\".","type":"string"},"gateway":{"description":"gateway is the host address of the ScaleIO API Gateway.","type":"string","default":""},"protectionDomain":{"description":"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.","type":"string"},"readOnly":{"description":"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.","$ref":"#/definitions/io.k8s.api.core.v1.LocalObjectReference"},"sslEnabled":{"description":"sslEnabled Flag enable/disable SSL communication with Gateway, default false","type":"boolean"},"storageMode":{"description":"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.","type":"string"},"storagePool":{"description":"storagePool is the ScaleIO Storage Pool associated with the protection domain.","type":"string"},"system":{"description":"system is the name of the storage system as configured in ScaleIO.","type":"string","default":""},"volumeName":{"description":"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.","type":"string"}}},"io.k8s.api.core.v1.ScopeSelector":{"description":"A scope selector represents the AND of the selectors represented by the scoped-resource selector requirements.","type":"object","properties":{"matchExpressions":{"description":"A list of scope selector requirements by scope of the resources.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ScopedResourceSelectorRequirement"}}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ScopedResourceSelectorRequirement":{"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.","type":"object","required":["scopeName","operator"],"properties":{"operator":{"description":"Represents a scope's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist.\n\nPossible enum values:\n - `\"DoesNotExist\"`\n - `\"Exists\"`\n - `\"In\"`\n - `\"NotIn\"`","type":"string","default":"","enum":["DoesNotExist","Exists","In","NotIn"]},"scopeName":{"description":"The name of the scope that the selector applies to.\n\nPossible enum values:\n - `\"BestEffort\"` Match all pod objects that have best effort quality of service\n - `\"CrossNamespacePodAffinity\"` Match all pod objects that have cross-namespace pod (anti)affinity mentioned.\n - `\"NotBestEffort\"` Match all pod objects that do not have best effort quality of service\n - `\"NotTerminating\"` Match all pod objects where spec.activeDeadlineSeconds is nil\n - `\"PriorityClass\"` Match all pod objects that have priority class mentioned\n - `\"Terminating\"` Match all pod objects where spec.activeDeadlineSeconds \u003e=0","type":"string","default":"","enum":["BestEffort","CrossNamespacePodAffinity","NotBestEffort","NotTerminating","PriorityClass","Terminating"]},"values":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.SeccompProfile":{"description":"SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set.","type":"object","required":["type"],"properties":{"localhostProfile":{"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 only be set if type is \"Localhost\".","type":"string"},"type":{"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\nPossible enum values:\n - `\"Localhost\"` indicates a profile defined in a file on the node should be used. The file's location relative to \u003ckubelet-root-dir\u003e/seccomp.\n - `\"RuntimeDefault\"` represents the default container runtime seccomp profile.\n - `\"Unconfined\"` indicates no seccomp profile is applied (A.K.A. unconfined).","type":"string","default":"","enum":["Localhost","RuntimeDefault","Unconfined"]}},"x-kubernetes-unions":[{"discriminator":"type","fields-to-discriminateBy":{"localhostProfile":"LocalhostProfile"}}]},"io.k8s.api.core.v1.Secret":{"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.","type":"object","properties":{"apiVersion":{"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","type":"string"},"data":{"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","type":"object","additionalProperties":{"type":"string","format":"byte"}},"immutable":{"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.","type":"boolean"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"stringData":{"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.","type":"object","additionalProperties":{"type":"string","default":""}},"type":{"description":"Used to facilitate programmatic handling of secret data. More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Secret","version":"v1"}]},"io.k8s.api.core.v1.SecretEnvSource":{"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.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the Secret must be defined","type":"boolean"}}},"io.k8s.api.core.v1.SecretKeySelector":{"description":"SecretKeySelector selects a key of a Secret.","type":"object","required":["key"],"properties":{"key":{"description":"The key of the secret to select from. Must be a valid secret key.","type":"string","default":""},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the Secret or its key must be defined","type":"boolean"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.SecretList":{"description":"SecretList is a list of Secret.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"Items is a list of secret objects. More info: https://kubernetes.io/docs/concepts/configuration/secret","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.Secret"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"SecretList","version":"v1"}]},"io.k8s.api.core.v1.SecretProjection":{"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.","type":"object","properties":{"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.KeyToPath"}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional field specify whether the Secret or its key must be defined","type":"boolean"}}},"io.k8s.api.core.v1.SecretReference":{"description":"SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace","type":"object","properties":{"name":{"description":"name is unique within a namespace to reference a secret resource.","type":"string"},"namespace":{"description":"namespace defines the space within which the secret name must be unique.","type":"string"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.SecretVolumeSource":{"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.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.KeyToPath"}},"optional":{"description":"optional field specify whether the Secret or its keys must be defined","type":"boolean"},"secretName":{"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","type":"string"}}},"io.k8s.api.core.v1.SecurityContext":{"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.","type":"object","properties":{"allowPrivilegeEscalation":{"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.","type":"boolean"},"capabilities":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.Capabilities"},"privileged":{"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.","type":"boolean"},"procMount":{"description":"procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount 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.","type":"string"},"readOnlyRootFilesystem":{"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.","type":"boolean"},"runAsGroup":{"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.","type":"integer","format":"int64"},"runAsNonRoot":{"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.","type":"boolean"},"runAsUser":{"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.","type":"integer","format":"int64"},"seLinuxOptions":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.SELinuxOptions"},"seccompProfile":{"description":"The seccomp options to use by this container. If seccomp options are provided at both the pod \u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.","$ref":"#/definitions/io.k8s.api.core.v1.SeccompProfile"},"windowsOptions":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.WindowsSecurityContextOptions"}}},"io.k8s.api.core.v1.Service":{"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.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"Spec defines the behavior of a service. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ServiceSpec"},"status":{"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","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ServiceStatus"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Service","version":"v1"}]},"io.k8s.api.core.v1.ServiceAccount":{"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","type":"object","properties":{"apiVersion":{"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","type":"string"},"automountServiceAccountToken":{"description":"AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. Can be overridden at the pod level.","type":"boolean"},"imagePullSecrets":{"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","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.LocalObjectReference"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"secrets":{"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","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ObjectReference"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ServiceAccount","version":"v1"}]},"io.k8s.api.core.v1.ServiceAccountList":{"description":"ServiceAccountList is a list of ServiceAccount objects","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of ServiceAccounts. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ServiceAccount"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ServiceAccountList","version":"v1"}]},"io.k8s.api.core.v1.ServiceAccountTokenProjection":{"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).","type":"object","required":["path"],"properties":{"audience":{"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.","type":"string"},"expirationSeconds":{"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.","type":"integer","format":"int64"},"path":{"description":"path is the path relative to the mount point of the file to project the token into.","type":"string","default":""}}},"io.k8s.api.core.v1.ServiceList":{"description":"ServiceList holds a list of services.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of services","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.Service"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ServiceList","version":"v1"}]},"io.k8s.api.core.v1.ServicePort":{"description":"ServicePort contains information on service's port.","type":"object","required":["port"],"properties":{"appProtocol":{"description":"The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol.","type":"string"},"name":{"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.","type":"string"},"nodePort":{"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","type":"integer","format":"int32"},"port":{"description":"The port that will be exposed by this service.","type":"integer","format":"int32","default":0},"protocol":{"description":"The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.\n\nPossible enum values:\n - `\"SCTP\"` is the SCTP protocol.\n - `\"TCP\"` is the TCP protocol.\n - `\"UDP\"` is the UDP protocol.","type":"string","default":"TCP","enum":["SCTP","TCP","UDP"]},"targetPort":{"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","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString"}}},"io.k8s.api.core.v1.ServiceSpec":{"description":"ServiceSpec describes the attributes that a user creates on a service.","type":"object","properties":{"allocateLoadBalancerNodePorts":{"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.","type":"boolean"},"clusterIP":{"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","type":"string"},"clusterIPs":{"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","type":"array","items":{"type":"string","default":""},"x-kubernetes-list-type":"atomic"},"externalIPs":{"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.","type":"array","items":{"type":"string","default":""}},"externalName":{"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\".","type":"string"},"externalTrafficPolicy":{"description":"externalTrafficPolicy denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. \"Local\" preserves the client source IP and avoids a second hop for LoadBalancer and Nodeport type services, but risks potentially imbalanced traffic spreading. \"Cluster\" obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading.\n\nPossible enum values:\n - `\"Cluster\"` specifies node-global (legacy) behavior.\n - `\"Local\"` specifies node-local endpoints behavior.","type":"string","enum":["Cluster","Local"]},"healthCheckNodePort":{"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).","type":"integer","format":"int32"},"internalTrafficPolicy":{"description":"InternalTrafficPolicy specifies if the cluster internal traffic should be routed to all endpoints or node-local endpoints only. \"Cluster\" routes internal traffic to a Service to all endpoints. \"Local\" routes traffic to node-local endpoints only, traffic is dropped if no node-local endpoints are ready. The default value is \"Cluster\".","type":"string"},"ipFamilies":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-list-type":"atomic"},"ipFamilyPolicy":{"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.","type":"string"},"loadBalancerClass":{"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.","type":"string"},"loadBalancerIP":{"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, and it cannot support dual-stack. As of Kubernetes v1.24, users are encouraged to use implementation-specific annotations when available. This field may be removed in a future API version.","type":"string"},"loadBalancerSourceRanges":{"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/","type":"array","items":{"type":"string","default":""}},"ports":{"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","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ServicePort"},"x-kubernetes-list-map-keys":["port","protocol"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"port","x-kubernetes-patch-strategy":"merge"},"publishNotReadyAddresses":{"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.","type":"boolean"},"selector":{"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/","type":"object","additionalProperties":{"type":"string","default":""},"x-kubernetes-map-type":"atomic"},"sessionAffinity":{"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\nPossible enum values:\n - `\"ClientIP\"` is the Client IP based.\n - `\"None\"` - no session affinity.","type":"string","enum":["ClientIP","None"]},"sessionAffinityConfig":{"description":"sessionAffinityConfig contains the configurations of session affinity.","$ref":"#/definitions/io.k8s.api.core.v1.SessionAffinityConfig"},"type":{"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\nPossible enum values:\n - `\"ClusterIP\"` means a service will only be accessible inside the cluster, via the cluster IP.\n - `\"ExternalName\"` means a service consists of only a reference to an external name that kubedns or equivalent will return as a CNAME record, with no exposing or proxying of any pods involved.\n - `\"LoadBalancer\"` means a service will be exposed via an external load balancer (if the cloud provider supports it), in addition to 'NodePort' type.\n - `\"NodePort\"` means a service will be exposed on one port of every node, in addition to 'ClusterIP' type.","type":"string","enum":["ClusterIP","ExternalName","LoadBalancer","NodePort"]}}},"io.k8s.api.core.v1.ServiceStatus":{"description":"ServiceStatus represents the current status of a service.","type":"object","properties":{"conditions":{"description":"Current service state","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Condition"},"x-kubernetes-list-map-keys":["type"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"loadBalancer":{"description":"LoadBalancer contains the current status of the load-balancer, if one is present.","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.LoadBalancerStatus"}}},"io.k8s.api.core.v1.SessionAffinityConfig":{"description":"SessionAffinityConfig represents the configurations of session affinity.","type":"object","properties":{"clientIP":{"description":"clientIP contains the configurations of Client IP based session affinity.","$ref":"#/definitions/io.k8s.api.core.v1.ClientIPConfig"}}},"io.k8s.api.core.v1.StorageOSPersistentVolumeSource":{"description":"Represents a StorageOS persistent volume resource.","type":"object","properties":{"fsType":{"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.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.","$ref":"#/definitions/io.k8s.api.core.v1.ObjectReference"},"volumeName":{"description":"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.","type":"string"},"volumeNamespace":{"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.","type":"string"}}},"io.k8s.api.core.v1.StorageOSVolumeSource":{"description":"Represents a StorageOS persistent volume resource.","type":"object","properties":{"fsType":{"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.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.","$ref":"#/definitions/io.k8s.api.core.v1.LocalObjectReference"},"volumeName":{"description":"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.","type":"string"},"volumeNamespace":{"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.","type":"string"}}},"io.k8s.api.core.v1.Sysctl":{"description":"Sysctl defines a kernel parameter to be set","type":"object","required":["name","value"],"properties":{"name":{"description":"Name of a property to set","type":"string","default":""},"value":{"description":"Value of a property to set","type":"string","default":""}}},"io.k8s.api.core.v1.TCPSocketAction":{"description":"TCPSocketAction describes an action based on opening a socket","type":"object","required":["port"],"properties":{"host":{"description":"Optional: Host name to connect to, defaults to the pod IP.","type":"string"},"port":{"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.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString"}}},"io.k8s.api.core.v1.Taint":{"description":"The node this Taint is attached to has the \"effect\" on any pod that does not tolerate the Taint.","type":"object","required":["key","effect"],"properties":{"effect":{"description":"Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute.\n\nPossible enum values:\n - `\"NoExecute\"` Evict any already-running pods that do not tolerate the taint. Currently enforced by NodeController.\n - `\"NoSchedule\"` Do not allow new pods to schedule onto the node unless they tolerate the taint, but allow all pods submitted to Kubelet without going through the scheduler to start, and allow all already-running pods to continue running. Enforced by the scheduler.\n - `\"PreferNoSchedule\"` Like TaintEffectNoSchedule, but the scheduler tries not to schedule new pods onto the node, rather than prohibiting new pods from scheduling onto the node entirely. Enforced by the scheduler.","type":"string","default":"","enum":["NoExecute","NoSchedule","PreferNoSchedule"]},"key":{"description":"Required. The taint key to be applied to a node.","type":"string","default":""},"timeAdded":{"description":"TimeAdded represents the time at which the taint was added. It is only written for NoExecute taints.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"value":{"description":"The taint value corresponding to the taint key.","type":"string"}}},"io.k8s.api.core.v1.Toleration":{"description":"The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.","type":"object","properties":{"effect":{"description":"Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n\nPossible enum values:\n - `\"NoExecute\"` Evict any already-running pods that do not tolerate the taint. Currently enforced by NodeController.\n - `\"NoSchedule\"` Do not allow new pods to schedule onto the node unless they tolerate the taint, but allow all pods submitted to Kubelet without going through the scheduler to start, and allow all already-running pods to continue running. Enforced by the scheduler.\n - `\"PreferNoSchedule\"` Like TaintEffectNoSchedule, but the scheduler tries not to schedule new pods onto the node, rather than prohibiting new pods from scheduling onto the node entirely. Enforced by the scheduler.","type":"string","enum":["NoExecute","NoSchedule","PreferNoSchedule"]},"key":{"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.","type":"string"},"operator":{"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\nPossible enum values:\n - `\"Equal\"`\n - `\"Exists\"`","type":"string","enum":["Equal","Exists"]},"tolerationSeconds":{"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.","type":"integer","format":"int64"},"value":{"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.","type":"string"}}},"io.k8s.api.core.v1.TopologySpreadConstraint":{"description":"TopologySpreadConstraint specifies how to spread matching pods among the given topology.","type":"object","required":["maxSkew","topologyKey","whenUnsatisfiable"],"properties":{"labelSelector":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"maxSkew":{"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.","type":"integer","format":"int32","default":0},"minDomains":{"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\nThis is an alpha field and requires enabling MinDomainsInPodTopologySpread feature gate.","type":"integer","format":"int32"},"topologyKey":{"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 \u003ckey, value\u003e 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 match the node selector. 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.","type":"string","default":""},"whenUnsatisfiable":{"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\nPossible enum values:\n - `\"DoNotSchedule\"` instructs the scheduler not to schedule the pod when constraints are not satisfied.\n - `\"ScheduleAnyway\"` instructs the scheduler to schedule the pod even if constraints are not satisfied.","type":"string","default":"","enum":["DoNotSchedule","ScheduleAnyway"]}}},"io.k8s.api.core.v1.TypedLocalObjectReference":{"description":"TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.","type":"object","required":["kind","name"],"properties":{"apiGroup":{"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.","type":"string"},"kind":{"description":"Kind is the type of resource being referenced","type":"string","default":""},"name":{"description":"Name is the name of resource being referenced","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.Volume":{"description":"Volume represents a named volume in a pod that may be accessed by any container in the pod.","type":"object","required":["name"],"properties":{"awsElasticBlockStore":{"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","$ref":"#/definitions/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource"},"azureDisk":{"description":"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.","$ref":"#/definitions/io.k8s.api.core.v1.AzureDiskVolumeSource"},"azureFile":{"description":"azureFile represents an Azure File Service mount on the host and bind mount to the pod.","$ref":"#/definitions/io.k8s.api.core.v1.AzureFileVolumeSource"},"cephfs":{"description":"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime","$ref":"#/definitions/io.k8s.api.core.v1.CephFSVolumeSource"},"cinder":{"description":"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","$ref":"#/definitions/io.k8s.api.core.v1.CinderVolumeSource"},"configMap":{"description":"configMap represents a configMap that should populate this volume","$ref":"#/definitions/io.k8s.api.core.v1.ConfigMapVolumeSource"},"csi":{"description":"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).","$ref":"#/definitions/io.k8s.api.core.v1.CSIVolumeSource"},"downwardAPI":{"description":"downwardAPI represents downward API about the pod that should populate this volume","$ref":"#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeSource"},"emptyDir":{"description":"emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir","$ref":"#/definitions/io.k8s.api.core.v1.EmptyDirVolumeSource"},"ephemeral":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.EphemeralVolumeSource"},"fc":{"description":"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.","$ref":"#/definitions/io.k8s.api.core.v1.FCVolumeSource"},"flexVolume":{"description":"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.","$ref":"#/definitions/io.k8s.api.core.v1.FlexVolumeSource"},"flocker":{"description":"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running","$ref":"#/definitions/io.k8s.api.core.v1.FlockerVolumeSource"},"gcePersistentDisk":{"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","$ref":"#/definitions/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource"},"gitRepo":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.GitRepoVolumeSource"},"glusterfs":{"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","$ref":"#/definitions/io.k8s.api.core.v1.GlusterfsVolumeSource"},"hostPath":{"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","$ref":"#/definitions/io.k8s.api.core.v1.HostPathVolumeSource"},"iscsi":{"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","$ref":"#/definitions/io.k8s.api.core.v1.ISCSIVolumeSource"},"name":{"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","type":"string","default":""},"nfs":{"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","$ref":"#/definitions/io.k8s.api.core.v1.NFSVolumeSource"},"persistentVolumeClaim":{"description":"persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims","$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource"},"photonPersistentDisk":{"description":"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine","$ref":"#/definitions/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource"},"portworxVolume":{"description":"portworxVolume represents a portworx volume attached and mounted on kubelets host machine","$ref":"#/definitions/io.k8s.api.core.v1.PortworxVolumeSource"},"projected":{"description":"projected items for all in one resources secrets, configmaps, and downward API","$ref":"#/definitions/io.k8s.api.core.v1.ProjectedVolumeSource"},"quobyte":{"description":"quobyte represents a Quobyte mount on the host that shares a pod's lifetime","$ref":"#/definitions/io.k8s.api.core.v1.QuobyteVolumeSource"},"rbd":{"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","$ref":"#/definitions/io.k8s.api.core.v1.RBDVolumeSource"},"scaleIO":{"description":"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.","$ref":"#/definitions/io.k8s.api.core.v1.ScaleIOVolumeSource"},"secret":{"description":"secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret","$ref":"#/definitions/io.k8s.api.core.v1.SecretVolumeSource"},"storageos":{"description":"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.","$ref":"#/definitions/io.k8s.api.core.v1.StorageOSVolumeSource"},"vsphereVolume":{"description":"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine","$ref":"#/definitions/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource"}}},"io.k8s.api.core.v1.VolumeDevice":{"description":"volumeDevice describes a mapping of a raw block device within a container.","type":"object","required":["name","devicePath"],"properties":{"devicePath":{"description":"devicePath is the path inside of the container that the device will be mapped to.","type":"string","default":""},"name":{"description":"name must match the name of a persistentVolumeClaim in the pod","type":"string","default":""}}},"io.k8s.api.core.v1.VolumeMount":{"description":"VolumeMount describes a mounting of a Volume within a container.","type":"object","required":["name","mountPath"],"properties":{"mountPath":{"description":"Path within the container at which the volume should be mounted. Must not contain ':'.","type":"string","default":""},"mountPropagation":{"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.","type":"string"},"name":{"description":"This must match the Name of a Volume.","type":"string","default":""},"readOnly":{"description":"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.","type":"boolean"},"subPath":{"description":"Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).","type":"string"},"subPathExpr":{"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.","type":"string"}}},"io.k8s.api.core.v1.VolumeNodeAffinity":{"description":"VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.","type":"object","properties":{"required":{"description":"required specifies hard node constraints that must be met.","$ref":"#/definitions/io.k8s.api.core.v1.NodeSelector"}}},"io.k8s.api.core.v1.VolumeProjection":{"description":"Projection that may be projected along with other supported volume types","type":"object","properties":{"configMap":{"description":"configMap information about the configMap data to project","$ref":"#/definitions/io.k8s.api.core.v1.ConfigMapProjection"},"downwardAPI":{"description":"downwardAPI information about the downwardAPI data to project","$ref":"#/definitions/io.k8s.api.core.v1.DownwardAPIProjection"},"secret":{"description":"secret information about the secret data to project","$ref":"#/definitions/io.k8s.api.core.v1.SecretProjection"},"serviceAccountToken":{"description":"serviceAccountToken is information about the serviceAccountToken data to project","$ref":"#/definitions/io.k8s.api.core.v1.ServiceAccountTokenProjection"}}},"io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource":{"description":"Represents a vSphere volume resource.","type":"object","required":["volumePath"],"properties":{"fsType":{"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.","type":"string"},"storagePolicyID":{"description":"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.","type":"string"},"storagePolicyName":{"description":"storagePolicyName is the storage Policy Based Management (SPBM) profile name.","type":"string"},"volumePath":{"description":"volumePath is the path that identifies vSphere volume vmdk","type":"string","default":""}}},"io.k8s.api.core.v1.WeightedPodAffinityTerm":{"description":"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)","type":"object","required":["weight","podAffinityTerm"],"properties":{"podAffinityTerm":{"description":"Required. A pod affinity term, associated with the corresponding weight.","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PodAffinityTerm"},"weight":{"description":"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.WindowsSecurityContextOptions":{"description":"WindowsSecurityContextOptions contain Windows-specific options and credentials.","type":"object","properties":{"gmsaCredentialSpec":{"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.","type":"string"},"gmsaCredentialSpecName":{"description":"GMSACredentialSpecName is the name of the GMSA credential spec to use.","type":"string"},"hostProcess":{"description":"HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. 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.","type":"boolean"},"runAsUserName":{"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.","type":"string"}}},"io.k8s.api.policy.v1.Eviction":{"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/\u003cpod name\u003e/evictions.","type":"object","properties":{"apiVersion":{"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","type":"string"},"deleteOptions":{"description":"DeleteOptions may be provided","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"},"kind":{"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","type":"string"},"metadata":{"description":"ObjectMeta describes the pod that is being evicted.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}},"x-kubernetes-group-version-kind":[{"group":"policy","kind":"Eviction","version":"v1"}]},"io.k8s.apimachinery.pkg.api.resource.Quantity":{"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\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\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 a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 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.","type":"string"},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResource":{"description":"APIResource specifies the name of a resource and whether it is namespaced.","type":"object","required":["name","singularName","namespaced","kind","verbs"],"properties":{"categories":{"description":"categories is a list of the grouped resources this resource belongs to (e.g. 'all')","type":"array","items":{"type":"string","default":""}},"group":{"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\".","type":"string"},"kind":{"description":"kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')","type":"string","default":""},"name":{"description":"name is the plural name of the resource.","type":"string","default":""},"namespaced":{"description":"namespaced indicates if a resource is namespaced or not.","type":"boolean","default":false},"shortNames":{"description":"shortNames is a list of suggested short names of the resource.","type":"array","items":{"type":"string","default":""}},"singularName":{"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.","type":"string","default":""},"storageVersionHash":{"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.","type":"string"},"verbs":{"description":"verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)","type":"array","items":{"type":"string","default":""}},"version":{"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)\".","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList":{"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.","type":"object","required":["groupVersion","resources"],"properties":{"apiVersion":{"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","type":"string"},"groupVersion":{"description":"groupVersion is the group and version this APIResourceList is for.","type":"string","default":""},"kind":{"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","type":"string"},"resources":{"description":"resources contains the name of the resources and if they are namespaced.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResource"}}},"x-kubernetes-group-version-kind":[{"group":"","kind":"APIResourceList","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.Condition":{"description":"Condition contains details for one aspect of the current state of this API Resource.","type":"object","required":["type","status","lastTransitionTime","reason","message"],"properties":{"lastTransitionTime":{"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.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"message is a human readable message indicating details about the transition. This may be an empty string.","type":"string","default":""},"observedGeneration":{"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.","type":"integer","format":"int64"},"reason":{"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.","type":"string","default":""},"status":{"description":"status of the condition, one of True, False, Unknown.","type":"string","default":""},"type":{"description":"type of condition in CamelCase or in foo.example.com/CamelCase.","type":"string","default":""}}},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"},"propagationPolicy":{"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.","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta2"},{"group":"batch","kind":"DeleteOptions","version":"v1"},{"group":"batch","kind":"DeleteOptions","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"extensions","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"policy","kind":"DeleteOptions","version":"v1"},{"group":"policy","kind":"DeleteOptions","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector":{"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.","type":"object","properties":{"matchExpressions":{"description":"matchExpressions is a list of label selector requirements. The requirements are ANDed.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement"}},"matchLabels":{"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.","type":"object","additionalProperties":{"type":"string","default":""}}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement":{"description":"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.","type":"object","required":["key","operator"],"properties":{"key":{"description":"key is the label key that the selector applies to.","type":"string","default":"","x-kubernetes-patch-merge-key":"key","x-kubernetes-patch-strategy":"merge"},"operator":{"description":"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.","type":"string","default":""},"values":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime":{"description":"MicroTime is version of Time with microsecond level precision.","type":"string","format":"date-time"},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"clusterName":{"description":"Deprecated: ClusterName is a legacy field that was always cleared by the system and never used; it will be removed completely in 1.25.\n\nThe name in the go struct is changed to help clients detect accidental use.","type":"string"},"creationTimestamp":{"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","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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 NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"},"reason":{"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.","type":"string"},"status":{"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","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Status","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"},"io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent":{"description":"Event represents a single event to a watched resource.","type":"object","required":["type","object"],"properties":{"object":{"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.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.runtime.RawExtension"},"type":{"type":"string","default":""}},"x-kubernetes-group-version-kind":[{"group":"","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1"},{"group":"apps","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta2"},{"group":"batch","kind":"WatchEvent","version":"v1"},{"group":"batch","kind":"WatchEvent","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"extensions","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"policy","kind":"WatchEvent","version":"v1"},{"group":"policy","kind":"WatchEvent","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.runtime.RawExtension":{"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: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.Object `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// External package: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.RawExtension `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// On the wire, the JSON will look something like this: {\n\t\"kind\":\"MyAPIObject\",\n\t\"apiVersion\":\"v1\",\n\t\"myPlugin\": {\n\t\t\"kind\":\"PluginA\",\n\t\t\"aOption\":\"foo\",\n\t},\n}\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.)","type":"object"},"io.k8s.apimachinery.pkg.util.intstr.IntOrString":{"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.","type":"string","format":"int-or-string"}},"securityDefinitions":{"BearerToken":{"description":"Bearer Token authentication","type":"apiKey","name":"authorization","in":"header"}},"security":[{"BearerToken":[]}]} v2_apiextensions.k8s.io.v1.json000066400000000000000000003334421453663023200367430ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/openapiconv/testdata_generated_from_k8s{"swagger":"2.0","info":{"title":"Kubernetes","version":"v1.24.0"},"paths":{"/apis/apiextensions.k8s.io/v1/":{"get":{"description":"get available resources","consumes":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["apiextensions_v1"],"operationId":"getApiextensionsV1APIResources","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}},"401":{"description":"Unauthorized"}}}},"/apis/apiextensions.k8s.io/v1/customresourcedefinitions":{"get":{"description":"list or watch objects of kind CustomResourceDefinition","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["apiextensions_v1"],"operationId":"listApiextensionsV1CustomResourceDefinition","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"post":{"description":"create a CustomResourceDefinition","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["apiextensions_v1"],"operationId":"createApiextensionsV1CustomResourceDefinition","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"delete":{"description":"delete collection of CustomResourceDefinition","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["apiextensions_v1"],"operationId":"deleteApiextensionsV1CollectionCustomResourceDefinition","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"parameters":[{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}":{"get":{"description":"read the specified CustomResourceDefinition","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["apiextensions_v1"],"operationId":"readApiextensionsV1CustomResourceDefinition","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"put":{"description":"replace the specified CustomResourceDefinition","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["apiextensions_v1"],"operationId":"replaceApiextensionsV1CustomResourceDefinition","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"delete":{"description":"delete a CustomResourceDefinition","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["apiextensions_v1"],"operationId":"deleteApiextensionsV1CustomResourceDefinition","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"patch":{"description":"partially update the specified CustomResourceDefinition","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["apiextensions_v1"],"operationId":"patchApiextensionsV1CustomResourceDefinition","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the CustomResourceDefinition","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}/status":{"get":{"description":"read status of the specified CustomResourceDefinition","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["apiextensions_v1"],"operationId":"readApiextensionsV1CustomResourceDefinitionStatus","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"put":{"description":"replace status of the specified CustomResourceDefinition","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["apiextensions_v1"],"operationId":"replaceApiextensionsV1CustomResourceDefinitionStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"patch":{"description":"partially update status of the specified CustomResourceDefinition","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["apiextensions_v1"],"operationId":"patchApiextensionsV1CustomResourceDefinitionStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the CustomResourceDefinition","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/apiextensions.k8s.io/v1/watch/customresourcedefinitions":{"get":{"description":"watch individual changes to a list of CustomResourceDefinition. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["apiextensions_v1"],"operationId":"watchApiextensionsV1CustomResourceDefinitionList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/apis/apiextensions.k8s.io/v1/watch/customresourcedefinitions/{name}":{"get":{"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.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["apiextensions_v1"],"operationId":"watchApiextensionsV1CustomResourceDefinition","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the CustomResourceDefinition","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]}},"definitions":{"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition":{"description":"CustomResourceColumnDefinition specifies a column for server side printing.","type":"object","required":["name","type","jsonPath"],"properties":{"description":{"description":"description is a human readable description of this column.","type":"string"},"format":{"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.","type":"string"},"jsonPath":{"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.","type":"string","default":""},"name":{"description":"name is a human readable name for the column.","type":"string","default":""},"priority":{"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.","type":"integer","format":"int32"},"type":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion":{"description":"CustomResourceConversion describes how to convert different versions of a CR.","type":"object","required":["strategy"],"properties":{"strategy":{"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.","type":"string","default":""},"webhook":{"description":"webhook describes how to call the conversion webhook. Required when `strategy` is set to `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition":{"description":"CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format \u003c.spec.name\u003e.\u003c.spec.group\u003e.","type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"spec describes how the user wants the resources to appear","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec"},"status":{"description":"status indicates the actual state of the CustomResourceDefinition","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus"}},"x-kubernetes-group-version-kind":[{"group":"apiextensions.k8s.io","kind":"CustomResourceDefinition","version":"v1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition":{"description":"CustomResourceDefinitionCondition contains details for the current condition of this pod.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"lastTransitionTime last time the condition transitioned from one status to another.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"message is a human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"reason is a unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"status is the status of the condition. Can be True, False, Unknown.","type":"string","default":""},"type":{"description":"type is the type of the condition. Types include Established, NamesAccepted and Terminating.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList":{"description":"CustomResourceDefinitionList is a list of CustomResourceDefinition objects.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"items list individual CustomResourceDefinition objects","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"apiextensions.k8s.io","kind":"CustomResourceDefinitionList","version":"v1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames":{"description":"CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition","type":"object","required":["plural","kind"],"properties":{"categories":{"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`.","type":"array","items":{"type":"string","default":""}},"kind":{"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.","type":"string","default":""},"listKind":{"description":"listKind is the serialized kind of the list for this resource. Defaults to \"`kind`List\".","type":"string"},"plural":{"description":"plural is the plural name of the resource to serve. The custom resources are served under `/apis/\u003cgroup\u003e/\u003cversion\u003e/.../\u003cplural\u003e`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`). Must be all lowercase.","type":"string","default":""},"shortNames":{"description":"shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get \u003cshortname\u003e`. It must be all lowercase.","type":"array","items":{"type":"string","default":""}},"singular":{"description":"singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec":{"description":"CustomResourceDefinitionSpec describes how a user wants their resource to appear","type":"object","required":["group","names","scope","versions"],"properties":{"conversion":{"description":"conversion defines conversion settings for the CRD.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion"},"group":{"description":"group is the API group of the defined custom resource. The custom resources are served under `/apis/\u003cgroup\u003e/...`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`).","type":"string","default":""},"names":{"description":"names specify the resource and kind names for the custom resource.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"preserveUnknownFields":{"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/access-kubernetes-api/custom-resources/custom-resource-definitions/#pruning-versus-preserving-unknown-fields for details.","type":"boolean"},"scope":{"description":"scope indicates whether the defined custom resource is cluster- or namespace-scoped. Allowed values are `Cluster` and `Namespaced`.","type":"string","default":""},"versions":{"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 \u003e beta \u003e 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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion"}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus":{"description":"CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition","type":"object","properties":{"acceptedNames":{"description":"acceptedNames are the names that are actually being used to serve discovery. They may be different than the names in spec.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"conditions":{"description":"conditions indicate state for particular aspects of a CustomResourceDefinition","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition"},"x-kubernetes-list-map-keys":["type"],"x-kubernetes-list-type":"map"},"storedVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion":{"description":"CustomResourceDefinitionVersion describes a version for CRD.","type":"object","required":["name","served","storage"],"properties":{"additionalPrinterColumns":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition"}},"deprecated":{"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.","type":"boolean"},"deprecationWarning":{"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.","type":"string"},"name":{"description":"name is the version name, e.g. “v1â€, “v2beta1â€, etc. The custom resources are served under this version at `/apis/\u003cgroup\u003e/\u003cversion\u003e/...` if `served` is true.","type":"string","default":""},"schema":{"description":"schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation"},"served":{"description":"served is a flag enabling/disabling this version from being served via REST APIs","type":"boolean","default":false},"storage":{"description":"storage indicates this version should be used when persisting custom resources to storage. There must be exactly one version with storage=true.","type":"boolean","default":false},"subresources":{"description":"subresources specify what subresources this version of the defined custom resource have.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale":{"description":"CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.","type":"object","required":["specReplicasPath","statusReplicasPath"],"properties":{"labelSelectorPath":{"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.","type":"string"},"specReplicasPath":{"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.","type":"string","default":""},"statusReplicasPath":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus":{"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","type":"object"},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources":{"description":"CustomResourceSubresources defines the status and scale subresources for CustomResources.","type":"object","properties":{"scale":{"description":"scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale"},"status":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation":{"description":"CustomResourceValidation is a list of validation methods for CustomResources.","type":"object","properties":{"openAPIV3Schema":{"description":"openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation":{"description":"ExternalDocumentation allows referencing an external resource for extended documentation.","type":"object","properties":{"description":{"type":"string"},"url":{"type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON":{"description":"JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps":{"description":"JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).","type":"object","properties":{"$ref":{"type":"string"},"$schema":{"type":"string"},"additionalItems":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"additionalProperties":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"allOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"anyOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"default":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"definitions":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"dependencies":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray"}},"description":{"type":"string"},"enum":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"}},"example":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"exclusiveMaximum":{"type":"boolean"},"exclusiveMinimum":{"type":"boolean"},"externalDocs":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation"},"format":{"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.","type":"string"},"id":{"type":"string"},"items":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray"},"maxItems":{"type":"integer","format":"int64"},"maxLength":{"type":"integer","format":"int64"},"maxProperties":{"type":"integer","format":"int64"},"maximum":{"type":"number","format":"double"},"minItems":{"type":"integer","format":"int64"},"minLength":{"type":"integer","format":"int64"},"minProperties":{"type":"integer","format":"int64"},"minimum":{"type":"number","format":"double"},"multipleOf":{"type":"number","format":"double"},"not":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"},"nullable":{"type":"boolean"},"oneOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"pattern":{"type":"string"},"patternProperties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"properties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"required":{"type":"array","items":{"type":"string","default":""}},"title":{"type":"string"},"type":{"type":"string"},"uniqueItems":{"type":"boolean"},"x-kubernetes-embedded-resource":{"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).","type":"boolean"},"x-kubernetes-int-or-string":{"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","type":"boolean"},"x-kubernetes-list-map-keys":{"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.","type":"array","items":{"type":"string","default":""}},"x-kubernetes-list-type":{"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.","type":"string"},"x-kubernetes-map-type":{"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.","type":"string"},"x-kubernetes-preserve-unknown-fields":{"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.","type":"boolean"},"x-kubernetes-validations":{"description":"x-kubernetes-validations describes a list of validation rules written in the CEL expression language. This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule"},"x-kubernetes-list-map-keys":["rule"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"rule","x-kubernetes-patch-strategy":"merge"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray":{"description":"JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool":{"description":"JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray":{"description":"JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference":{"description":"ServiceReference holds a reference to Service.legacy.k8s.io","type":"object","required":["namespace","name"],"properties":{"name":{"description":"name is the name of the service. Required","type":"string","default":""},"namespace":{"description":"namespace is the namespace of the service. Required","type":"string","default":""},"path":{"description":"path is an optional URL path at which the webhook will be contacted.","type":"string"},"port":{"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.","type":"integer","format":"int32"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule":{"description":"ValidationRule describes a validation rule written in the CEL expression language.","type":"object","required":["rule"],"properties":{"message":{"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\"","type":"string"},"rule":{"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 \u003c= 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 \u003c 10\"} - Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value \u003e= 0 \u0026\u0026 value \u003c 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__ \u003e 0\"}\n - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop \u003e 0\"}\n - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d \u003e 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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig":{"description":"WebhookClientConfig contains the information to make a TLS connection with the webhook.","type":"object","properties":{"caBundle":{"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.","type":"string","format":"byte"},"service":{"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`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference"},"url":{"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.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion":{"description":"WebhookConversion describes how to call a conversion webhook","type":"object","required":["conversionReviewVersions"],"properties":{"clientConfig":{"description":"clientConfig is the instructions for how to call the webhook if strategy is `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig"},"conversionReviewVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResource":{"description":"APIResource specifies the name of a resource and whether it is namespaced.","type":"object","required":["name","singularName","namespaced","kind","verbs"],"properties":{"categories":{"description":"categories is a list of the grouped resources this resource belongs to (e.g. 'all')","type":"array","items":{"type":"string","default":""}},"group":{"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\".","type":"string"},"kind":{"description":"kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')","type":"string","default":""},"name":{"description":"name is the plural name of the resource.","type":"string","default":""},"namespaced":{"description":"namespaced indicates if a resource is namespaced or not.","type":"boolean","default":false},"shortNames":{"description":"shortNames is a list of suggested short names of the resource.","type":"array","items":{"type":"string","default":""}},"singularName":{"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.","type":"string","default":""},"storageVersionHash":{"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.","type":"string"},"verbs":{"description":"verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)","type":"array","items":{"type":"string","default":""}},"version":{"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)\".","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList":{"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.","type":"object","required":["groupVersion","resources"],"properties":{"apiVersion":{"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","type":"string"},"groupVersion":{"description":"groupVersion is the group and version this APIResourceList is for.","type":"string","default":""},"kind":{"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","type":"string"},"resources":{"description":"resources contains the name of the resources and if they are namespaced.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResource"}}},"x-kubernetes-group-version-kind":[{"group":"","kind":"APIResourceList","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"},"propagationPolicy":{"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.","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta2"},{"group":"batch","kind":"DeleteOptions","version":"v1"},{"group":"batch","kind":"DeleteOptions","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"extensions","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"policy","kind":"DeleteOptions","version":"v1"},{"group":"policy","kind":"DeleteOptions","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"clusterName":{"description":"Deprecated: ClusterName is a legacy field that was always cleared by the system and never used; it will be removed completely in 1.25.\n\nThe name in the go struct is changed to help clients detect accidental use.","type":"string"},"creationTimestamp":{"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","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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 NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"},"reason":{"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.","type":"string"},"status":{"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","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Status","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"},"io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent":{"description":"Event represents a single event to a watched resource.","type":"object","required":["type","object"],"properties":{"object":{"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.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.runtime.RawExtension"},"type":{"type":"string","default":""}},"x-kubernetes-group-version-kind":[{"group":"","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1"},{"group":"apps","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta2"},{"group":"batch","kind":"WatchEvent","version":"v1"},{"group":"batch","kind":"WatchEvent","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"extensions","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"policy","kind":"WatchEvent","version":"v1"},{"group":"policy","kind":"WatchEvent","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.runtime.RawExtension":{"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: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.Object `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// External package: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.RawExtension `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// On the wire, the JSON will look something like this: {\n\t\"kind\":\"MyAPIObject\",\n\t\"apiVersion\":\"v1\",\n\t\"myPlugin\": {\n\t\t\"kind\":\"PluginA\",\n\t\t\"aOption\":\"foo\",\n\t},\n}\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.)","type":"object"}},"securityDefinitions":{"BearerToken":{"description":"Bearer Token authentication","type":"apiKey","name":"authorization","in":"header"}},"security":[{"BearerToken":[]}]} v2_batch.v1.json000066400000000000000000011060421453663023200340140ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/openapiconv/testdata_generated_from_k8s{"swagger":"2.0","info":{"title":"Kubernetes","version":"v1.24.0"},"paths":{"/apis/batch/v1/":{"get":{"description":"get available resources","consumes":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["batch_v1"],"operationId":"getBatchV1APIResources","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}},"401":{"description":"Unauthorized"}}}},"/apis/batch/v1/cronjobs":{"get":{"description":"list or watch objects of kind CronJob","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["batch_v1"],"operationId":"listBatchV1CronJobForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.CronJobList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/apis/batch/v1/jobs":{"get":{"description":"list or watch objects of kind Job","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["batch_v1"],"operationId":"listBatchV1JobForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.JobList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/apis/batch/v1/namespaces/{namespace}/cronjobs":{"get":{"description":"list or watch objects of kind CronJob","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["batch_v1"],"operationId":"listBatchV1NamespacedCronJob","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.CronJobList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"post":{"description":"create a CronJob","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["batch_v1"],"operationId":"createBatchV1NamespacedCronJob","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.CronJob"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.CronJob"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.CronJob"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.CronJob"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"delete":{"description":"delete collection of CronJob","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["batch_v1"],"operationId":"deleteBatchV1CollectionNamespacedCronJob","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/batch/v1/namespaces/{namespace}/cronjobs/{name}":{"get":{"description":"read the specified CronJob","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["batch_v1"],"operationId":"readBatchV1NamespacedCronJob","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.CronJob"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"put":{"description":"replace the specified CronJob","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["batch_v1"],"operationId":"replaceBatchV1NamespacedCronJob","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.CronJob"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.CronJob"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.CronJob"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"delete":{"description":"delete a CronJob","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["batch_v1"],"operationId":"deleteBatchV1NamespacedCronJob","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"patch":{"description":"partially update the specified CronJob","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["batch_v1"],"operationId":"patchBatchV1NamespacedCronJob","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.CronJob"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.CronJob"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the CronJob","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/batch/v1/namespaces/{namespace}/cronjobs/{name}/status":{"get":{"description":"read status of the specified CronJob","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["batch_v1"],"operationId":"readBatchV1NamespacedCronJobStatus","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.CronJob"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"put":{"description":"replace status of the specified CronJob","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["batch_v1"],"operationId":"replaceBatchV1NamespacedCronJobStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.CronJob"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.CronJob"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.CronJob"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"patch":{"description":"partially update status of the specified CronJob","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["batch_v1"],"operationId":"patchBatchV1NamespacedCronJobStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.CronJob"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.CronJob"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the CronJob","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/batch/v1/namespaces/{namespace}/jobs":{"get":{"description":"list or watch objects of kind Job","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["batch_v1"],"operationId":"listBatchV1NamespacedJob","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.JobList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"post":{"description":"create a Job","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["batch_v1"],"operationId":"createBatchV1NamespacedJob","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.Job"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.Job"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.Job"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.Job"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"delete":{"description":"delete collection of Job","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["batch_v1"],"operationId":"deleteBatchV1CollectionNamespacedJob","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/batch/v1/namespaces/{namespace}/jobs/{name}":{"get":{"description":"read the specified Job","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["batch_v1"],"operationId":"readBatchV1NamespacedJob","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.Job"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"put":{"description":"replace the specified Job","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["batch_v1"],"operationId":"replaceBatchV1NamespacedJob","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.Job"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.Job"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.Job"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"delete":{"description":"delete a Job","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["batch_v1"],"operationId":"deleteBatchV1NamespacedJob","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"patch":{"description":"partially update the specified Job","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["batch_v1"],"operationId":"patchBatchV1NamespacedJob","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.Job"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.Job"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the Job","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/batch/v1/namespaces/{namespace}/jobs/{name}/status":{"get":{"description":"read status of the specified Job","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["batch_v1"],"operationId":"readBatchV1NamespacedJobStatus","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.Job"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"put":{"description":"replace status of the specified Job","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["batch_v1"],"operationId":"replaceBatchV1NamespacedJobStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.Job"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.Job"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.Job"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"patch":{"description":"partially update status of the specified Job","consumes":["application/json-patch+json","application/merge-patch+json","application/strategic-merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf"],"schemes":["https"],"tags":["batch_v1"],"operationId":"patchBatchV1NamespacedJobStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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).","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"force","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.Job"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/io.k8s.api.batch.v1.Job"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the Job","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/batch/v1/watch/cronjobs":{"get":{"description":"watch individual changes to a list of CronJob. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["batch_v1"],"operationId":"watchBatchV1CronJobListForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/apis/batch/v1/watch/jobs":{"get":{"description":"watch individual changes to a list of Job. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["batch_v1"],"operationId":"watchBatchV1JobListForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/apis/batch/v1/watch/namespaces/{namespace}/cronjobs":{"get":{"description":"watch individual changes to a list of CronJob. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["batch_v1"],"operationId":"watchBatchV1NamespacedCronJobList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/apis/batch/v1/watch/namespaces/{namespace}/cronjobs/{name}":{"get":{"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.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["batch_v1"],"operationId":"watchBatchV1NamespacedCronJob","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the CronJob","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/apis/batch/v1/watch/namespaces/{namespace}/jobs":{"get":{"description":"watch individual changes to a list of Job. deprecated: use the 'watch' parameter with a list operation instead.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["batch_v1"],"operationId":"watchBatchV1NamespacedJobList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/apis/batch/v1/watch/namespaces/{namespace}/jobs/{name}":{"get":{"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.","consumes":["*/*"],"produces":["application/json","application/yaml","application/vnd.kubernetes.protobuf","application/json;stream=watch","application/vnd.kubernetes.protobuf;stream=watch"],"schemes":["https"],"tags":["batch_v1"],"operationId":"watchBatchV1NamespacedJob","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"name of the Job","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]}},"definitions":{"io.k8s.api.batch.v1.CronJob":{"description":"CronJob represents the configuration of a single cron job.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/definitions/io.k8s.api.batch.v1.CronJobSpec"},"status":{"description":"Current status of a cron job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status","default":{},"$ref":"#/definitions/io.k8s.api.batch.v1.CronJobStatus"}},"x-kubernetes-group-version-kind":[{"group":"batch","kind":"CronJob","version":"v1"}]},"io.k8s.api.batch.v1.CronJobList":{"description":"CronJobList is a collection of cron jobs.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"items is the list of CronJobs.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.batch.v1.CronJob"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"batch","kind":"CronJobList","version":"v1"}]},"io.k8s.api.batch.v1.CronJobSpec":{"description":"CronJobSpec describes how the job execution will look like and when it will actually run.","type":"object","required":["schedule","jobTemplate"],"properties":{"concurrencyPolicy":{"description":"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\nPossible enum values:\n - `\"Allow\"` allows CronJobs to run concurrently.\n - `\"Forbid\"` forbids concurrent runs, skipping next run if previous hasn't finished yet.\n - `\"Replace\"` cancels currently running job and replaces it with a new one.","type":"string","enum":["Allow","Forbid","Replace"]},"failedJobsHistoryLimit":{"description":"The number of failed finished jobs to retain. Value must be non-negative integer. Defaults to 1.","type":"integer","format":"int32"},"jobTemplate":{"description":"Specifies the job that will be created when executing a CronJob.","default":{},"$ref":"#/definitions/io.k8s.api.batch.v1.JobTemplateSpec"},"schedule":{"description":"The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.","type":"string","default":""},"startingDeadlineSeconds":{"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.","type":"integer","format":"int64"},"successfulJobsHistoryLimit":{"description":"The number of successful finished jobs to retain. Value must be non-negative integer. Defaults to 3.","type":"integer","format":"int32"},"suspend":{"description":"This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.","type":"boolean"}}},"io.k8s.api.batch.v1.CronJobStatus":{"description":"CronJobStatus represents the current state of a cron job.","type":"object","properties":{"active":{"description":"A list of pointers to currently running jobs.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ObjectReference"},"x-kubernetes-list-type":"atomic"},"lastScheduleTime":{"description":"Information when was the last time the job was successfully scheduled.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"lastSuccessfulTime":{"description":"Information when was the last time the job successfully completed.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.api.batch.v1.Job":{"description":"Job represents the configuration of a single job.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/definitions/io.k8s.api.batch.v1.JobSpec"},"status":{"description":"Current status of a job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status","default":{},"$ref":"#/definitions/io.k8s.api.batch.v1.JobStatus"}},"x-kubernetes-group-version-kind":[{"group":"batch","kind":"Job","version":"v1"}]},"io.k8s.api.batch.v1.JobCondition":{"description":"JobCondition describes current state of a job.","type":"object","required":["type","status"],"properties":{"lastProbeTime":{"description":"Last time the condition was checked.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"lastTransitionTime":{"description":"Last time the condition transit from one status to another.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"Human readable message indicating details about last transition.","type":"string"},"reason":{"description":"(brief) reason for the condition's last transition.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string","default":""},"type":{"description":"Type of job condition, Complete or Failed.","type":"string","default":""}}},"io.k8s.api.batch.v1.JobList":{"description":"JobList is a collection of jobs.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"items is the list of Jobs.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.batch.v1.Job"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"batch","kind":"JobList","version":"v1"}]},"io.k8s.api.batch.v1.JobSpec":{"description":"JobSpec describes how the job execution will look like.","type":"object","required":["template"],"properties":{"activeDeadlineSeconds":{"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.","type":"integer","format":"int64"},"backoffLimit":{"description":"Specifies the number of retries before marking this job failed. Defaults to 6","type":"integer","format":"int32"},"completionMode":{"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.","type":"string"},"completions":{"description":"Specifies the desired number of successfully finished pods the job should be run with. Setting to nil 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/","type":"integer","format":"int32"},"manualSelector":{"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","type":"boolean"},"parallelism":{"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) \u003c .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/","type":"integer","format":"int32"},"selector":{"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","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"suspend":{"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.","type":"boolean"},"template":{"description":"Describes the pod that will be created when executing a job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PodTemplateSpec"},"ttlSecondsAfterFinished":{"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.","type":"integer","format":"int32"}}},"io.k8s.api.batch.v1.JobStatus":{"description":"JobStatus represents the current state of a Job.","type":"object","properties":{"active":{"description":"The number of pending and running pods.","type":"integer","format":"int32"},"completedIndexes":{"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\".","type":"string"},"completionTime":{"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 only set when the job finishes successfully.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"conditions":{"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. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.batch.v1.JobCondition"},"x-kubernetes-list-type":"atomic","x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"failed":{"description":"The number of pods which reached phase Failed.","type":"integer","format":"int32"},"ready":{"description":"The number of pods which have a Ready condition.\n\nThis field is alpha-level. The job controller populates the field when the feature gate JobReadyPods is enabled (disabled by default).","type":"integer","format":"int32"},"startTime":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"succeeded":{"description":"The number of pods which reached phase Succeeded.","type":"integer","format":"int32"},"uncountedTerminatedPods":{"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: (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\nThis field is beta-level. The job controller only makes use of this field when the feature gate JobTrackingWithFinalizers is enabled (enabled by default). Old jobs might not be tracked using this field, in which case the field remains null.","$ref":"#/definitions/io.k8s.api.batch.v1.UncountedTerminatedPods"}}},"io.k8s.api.batch.v1.JobTemplateSpec":{"description":"JobTemplateSpec describes the data a Job should have when created from a template","type":"object","properties":{"metadata":{"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","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/definitions/io.k8s.api.batch.v1.JobSpec"}}},"io.k8s.api.batch.v1.UncountedTerminatedPods":{"description":"UncountedTerminatedPods holds UIDs of Pods that have terminated but haven't been accounted in Job status counters.","type":"object","properties":{"failed":{"description":"Failed holds UIDs of failed Pods.","type":"array","items":{"type":"string","default":""},"x-kubernetes-list-type":"set"},"succeeded":{"description":"Succeeded holds UIDs of succeeded Pods.","type":"array","items":{"type":"string","default":""},"x-kubernetes-list-type":"set"}}},"io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource":{"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.","type":"object","required":["volumeID"],"properties":{"fsType":{"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","type":"string"},"partition":{"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).","type":"integer","format":"int32"},"readOnly":{"description":"readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore","type":"boolean"},"volumeID":{"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","type":"string","default":""}}},"io.k8s.api.core.v1.Affinity":{"description":"Affinity is a group of affinity scheduling rules.","type":"object","properties":{"nodeAffinity":{"description":"Describes node affinity scheduling rules for the pod.","$ref":"#/definitions/io.k8s.api.core.v1.NodeAffinity"},"podAffinity":{"description":"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).","$ref":"#/definitions/io.k8s.api.core.v1.PodAffinity"},"podAntiAffinity":{"description":"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).","$ref":"#/definitions/io.k8s.api.core.v1.PodAntiAffinity"}}},"io.k8s.api.core.v1.AzureDiskVolumeSource":{"description":"AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.","type":"object","required":["diskName","diskURI"],"properties":{"cachingMode":{"description":"cachingMode is the Host Caching mode: None, Read Only, Read Write.","type":"string"},"diskName":{"description":"diskName is the Name of the data disk in the blob storage","type":"string","default":""},"diskURI":{"description":"diskURI is the URI of data disk in the blob storage","type":"string","default":""},"fsType":{"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.","type":"string"},"kind":{"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","type":"string"},"readOnly":{"description":"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"}}},"io.k8s.api.core.v1.AzureFileVolumeSource":{"description":"AzureFile represents an Azure File Service mount on the host and bind mount to the pod.","type":"object","required":["secretName","shareName"],"properties":{"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretName":{"description":"secretName is the name of secret that contains Azure Storage Account Name and Key","type":"string","default":""},"shareName":{"description":"shareName is the azure share Name","type":"string","default":""}}},"io.k8s.api.core.v1.CSIVolumeSource":{"description":"Represents a source location of a volume to mount, managed by an external CSI driver","type":"object","required":["driver"],"properties":{"driver":{"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.","type":"string","default":""},"fsType":{"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.","type":"string"},"nodePublishSecretRef":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.LocalObjectReference"},"readOnly":{"description":"readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).","type":"boolean"},"volumeAttributes":{"description":"volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.","type":"object","additionalProperties":{"type":"string","default":""}}}},"io.k8s.api.core.v1.Capabilities":{"description":"Adds and removes POSIX capabilities from running containers.","type":"object","properties":{"add":{"description":"Added capabilities","type":"array","items":{"type":"string","default":""}},"drop":{"description":"Removed capabilities","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.CephFSVolumeSource":{"description":"Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["monitors"],"properties":{"monitors":{"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","type":"array","items":{"type":"string","default":""}},"path":{"description":"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /","type":"string"},"readOnly":{"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","type":"boolean"},"secretFile":{"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","type":"string"},"secretRef":{"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","$ref":"#/definitions/io.k8s.api.core.v1.LocalObjectReference"},"user":{"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","type":"string"}}},"io.k8s.api.core.v1.CinderVolumeSource":{"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.","type":"object","required":["volumeID"],"properties":{"fsType":{"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","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"description":"secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.","$ref":"#/definitions/io.k8s.api.core.v1.LocalObjectReference"},"volumeID":{"description":"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","type":"string","default":""}}},"io.k8s.api.core.v1.ConfigMapEnvSource":{"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.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the ConfigMap must be defined","type":"boolean"}}},"io.k8s.api.core.v1.ConfigMapKeySelector":{"description":"Selects a key from a ConfigMap.","type":"object","required":["key"],"properties":{"key":{"description":"The key to select.","type":"string","default":""},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the ConfigMap or its key must be defined","type":"boolean"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ConfigMapProjection":{"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.","type":"object","properties":{"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.KeyToPath"}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional specify whether the ConfigMap or its keys must be defined","type":"boolean"}}},"io.k8s.api.core.v1.ConfigMapVolumeSource":{"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.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.KeyToPath"}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional specify whether the ConfigMap or its keys must be defined","type":"boolean"}}},"io.k8s.api.core.v1.Container":{"description":"A single application container that you want to run within a pod.","type":"object","required":["name"],"properties":{"args":{"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","type":"array","items":{"type":"string","default":""}},"command":{"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","type":"array","items":{"type":"string","default":""}},"env":{"description":"List of environment variables to set in the container. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.EnvVar"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"envFrom":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.EnvFromSource"}},"image":{"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.","type":"string"},"imagePullPolicy":{"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\nPossible enum values:\n - `\"Always\"` means that kubelet always attempts to pull the latest image. Container will fail If the pull fails.\n - `\"IfNotPresent\"` means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails.\n - `\"Never\"` means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present","type":"string","enum":["Always","IfNotPresent","Never"]},"lifecycle":{"description":"Actions that the management system should take in response to container lifecycle events. Cannot be updated.","$ref":"#/definitions/io.k8s.api.core.v1.Lifecycle"},"livenessProbe":{"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","$ref":"#/definitions/io.k8s.api.core.v1.Probe"},"name":{"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.","type":"string","default":""},"ports":{"description":"List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. 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. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ContainerPort"},"x-kubernetes-list-map-keys":["containerPort","protocol"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"containerPort","x-kubernetes-patch-strategy":"merge"},"readinessProbe":{"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","$ref":"#/definitions/io.k8s.api.core.v1.Probe"},"resources":{"description":"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ResourceRequirements"},"securityContext":{"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/","$ref":"#/definitions/io.k8s.api.core.v1.SecurityContext"},"startupProbe":{"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","$ref":"#/definitions/io.k8s.api.core.v1.Probe"},"stdin":{"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.","type":"boolean"},"stdinOnce":{"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","type":"boolean"},"terminationMessagePath":{"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.","type":"string"},"terminationMessagePolicy":{"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\nPossible enum values:\n - `\"FallbackToLogsOnError\"` will read the most recent contents of the container logs for the container status message when the container exits with an error and the terminationMessagePath has no contents.\n - `\"File\"` is the default behavior and will set the container status message to the contents of the container's terminationMessagePath when the container exits.","type":"string","enum":["FallbackToLogsOnError","File"]},"tty":{"description":"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.","type":"boolean"},"volumeDevices":{"description":"volumeDevices is the list of block devices to be used by the container.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.VolumeDevice"},"x-kubernetes-patch-merge-key":"devicePath","x-kubernetes-patch-strategy":"merge"},"volumeMounts":{"description":"Pod volumes to mount into the container's filesystem. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.VolumeMount"},"x-kubernetes-patch-merge-key":"mountPath","x-kubernetes-patch-strategy":"merge"},"workingDir":{"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.","type":"string"}}},"io.k8s.api.core.v1.ContainerPort":{"description":"ContainerPort represents a network port in a single container.","type":"object","required":["containerPort"],"properties":{"containerPort":{"description":"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \u003c x \u003c 65536.","type":"integer","format":"int32","default":0},"hostIP":{"description":"What host IP to bind the external port to.","type":"string"},"hostPort":{"description":"Number of port to expose on the host. If specified, this must be a valid port number, 0 \u003c x \u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.","type":"integer","format":"int32"},"name":{"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.","type":"string"},"protocol":{"description":"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n\nPossible enum values:\n - `\"SCTP\"` is the SCTP protocol.\n - `\"TCP\"` is the TCP protocol.\n - `\"UDP\"` is the UDP protocol.","type":"string","default":"TCP","enum":["SCTP","TCP","UDP"]}}},"io.k8s.api.core.v1.DownwardAPIProjection":{"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.","type":"object","properties":{"items":{"description":"Items is a list of DownwardAPIVolume file","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeFile"}}}},"io.k8s.api.core.v1.DownwardAPIVolumeFile":{"description":"DownwardAPIVolumeFile represents information to create the file containing the pod field","type":"object","required":["path"],"properties":{"fieldRef":{"description":"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.","$ref":"#/definitions/io.k8s.api.core.v1.ObjectFieldSelector"},"mode":{"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.","type":"integer","format":"int32"},"path":{"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 '..'","type":"string","default":""},"resourceFieldRef":{"description":"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.","$ref":"#/definitions/io.k8s.api.core.v1.ResourceFieldSelector"}}},"io.k8s.api.core.v1.DownwardAPIVolumeSource":{"description":"DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"description":"Items is a list of downward API volume file","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeFile"}}}},"io.k8s.api.core.v1.EmptyDirVolumeSource":{"description":"Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.","type":"object","properties":{"medium":{"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","type":"string"},"sizeLimit":{"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: http://kubernetes.io/docs/user-guide/volumes#emptydir","$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}}},"io.k8s.api.core.v1.EnvFromSource":{"description":"EnvFromSource represents the source of a set of ConfigMaps","type":"object","properties":{"configMapRef":{"description":"The ConfigMap to select from","$ref":"#/definitions/io.k8s.api.core.v1.ConfigMapEnvSource"},"prefix":{"description":"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.","type":"string"},"secretRef":{"description":"The Secret to select from","$ref":"#/definitions/io.k8s.api.core.v1.SecretEnvSource"}}},"io.k8s.api.core.v1.EnvVar":{"description":"EnvVar represents an environment variable present in a Container.","type":"object","required":["name"],"properties":{"name":{"description":"Name of the environment variable. Must be a C_IDENTIFIER.","type":"string","default":""},"value":{"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 \"\".","type":"string"},"valueFrom":{"description":"Source for the environment variable's value. Cannot be used if value is not empty.","$ref":"#/definitions/io.k8s.api.core.v1.EnvVarSource"}}},"io.k8s.api.core.v1.EnvVarSource":{"description":"EnvVarSource represents a source for the value of an EnvVar.","type":"object","properties":{"configMapKeyRef":{"description":"Selects a key of a ConfigMap.","$ref":"#/definitions/io.k8s.api.core.v1.ConfigMapKeySelector"},"fieldRef":{"description":"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\u003cKEY\u003e']`, `metadata.annotations['\u003cKEY\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.","$ref":"#/definitions/io.k8s.api.core.v1.ObjectFieldSelector"},"resourceFieldRef":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.ResourceFieldSelector"},"secretKeyRef":{"description":"Selects a key of a secret in the pod's namespace","$ref":"#/definitions/io.k8s.api.core.v1.SecretKeySelector"}}},"io.k8s.api.core.v1.EphemeralContainer":{"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\nThis is a beta feature available on clusters that haven't disabled the EphemeralContainers feature gate.","type":"object","required":["name"],"properties":{"args":{"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","type":"array","items":{"type":"string","default":""}},"command":{"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","type":"array","items":{"type":"string","default":""}},"env":{"description":"List of environment variables to set in the container. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.EnvVar"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"envFrom":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.EnvFromSource"}},"image":{"description":"Container image name. More info: https://kubernetes.io/docs/concepts/containers/images","type":"string"},"imagePullPolicy":{"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\nPossible enum values:\n - `\"Always\"` means that kubelet always attempts to pull the latest image. Container will fail If the pull fails.\n - `\"IfNotPresent\"` means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails.\n - `\"Never\"` means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present","type":"string","enum":["Always","IfNotPresent","Never"]},"lifecycle":{"description":"Lifecycle is not allowed for ephemeral containers.","$ref":"#/definitions/io.k8s.api.core.v1.Lifecycle"},"livenessProbe":{"description":"Probes are not allowed for ephemeral containers.","$ref":"#/definitions/io.k8s.api.core.v1.Probe"},"name":{"description":"Name of the ephemeral container specified as a DNS_LABEL. This name must be unique among all containers, init containers and ephemeral containers.","type":"string","default":""},"ports":{"description":"Ports are not allowed for ephemeral containers.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ContainerPort"},"x-kubernetes-list-map-keys":["containerPort","protocol"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"containerPort","x-kubernetes-patch-strategy":"merge"},"readinessProbe":{"description":"Probes are not allowed for ephemeral containers.","$ref":"#/definitions/io.k8s.api.core.v1.Probe"},"resources":{"description":"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources already allocated to the pod.","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ResourceRequirements"},"securityContext":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.SecurityContext"},"startupProbe":{"description":"Probes are not allowed for ephemeral containers.","$ref":"#/definitions/io.k8s.api.core.v1.Probe"},"stdin":{"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.","type":"boolean"},"stdinOnce":{"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","type":"boolean"},"targetContainerName":{"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.","type":"string"},"terminationMessagePath":{"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.","type":"string"},"terminationMessagePolicy":{"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\nPossible enum values:\n - `\"FallbackToLogsOnError\"` will read the most recent contents of the container logs for the container status message when the container exits with an error and the terminationMessagePath has no contents.\n - `\"File\"` is the default behavior and will set the container status message to the contents of the container's terminationMessagePath when the container exits.","type":"string","enum":["FallbackToLogsOnError","File"]},"tty":{"description":"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.","type":"boolean"},"volumeDevices":{"description":"volumeDevices is the list of block devices to be used by the container.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.VolumeDevice"},"x-kubernetes-patch-merge-key":"devicePath","x-kubernetes-patch-strategy":"merge"},"volumeMounts":{"description":"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.VolumeMount"},"x-kubernetes-patch-merge-key":"mountPath","x-kubernetes-patch-strategy":"merge"},"workingDir":{"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.","type":"string"}}},"io.k8s.api.core.v1.EphemeralVolumeSource":{"description":"Represents an ephemeral volume that is handled by a normal storage driver.","type":"object","properties":{"volumeClaimTemplate":{"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 `\u003cpod name\u003e-\u003cvolume name\u003e` where `\u003cvolume name\u003e` 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.","$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimTemplate"}}},"io.k8s.api.core.v1.ExecAction":{"description":"ExecAction describes a \"run in container\" action.","type":"object","properties":{"command":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.FCVolumeSource":{"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.","type":"object","properties":{"fsType":{"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.","type":"string"},"lun":{"description":"lun is Optional: FC target lun number","type":"integer","format":"int32"},"readOnly":{"description":"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"targetWWNs":{"description":"targetWWNs is Optional: FC target worldwide names (WWNs)","type":"array","items":{"type":"string","default":""}},"wwids":{"description":"wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.FlexVolumeSource":{"description":"FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.","type":"object","required":["driver"],"properties":{"driver":{"description":"driver is the name of the driver to use for this volume.","type":"string","default":""},"fsType":{"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.","type":"string"},"options":{"description":"options is Optional: this field holds extra command options if any.","type":"object","additionalProperties":{"type":"string","default":""}},"readOnly":{"description":"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.LocalObjectReference"}}},"io.k8s.api.core.v1.FlockerVolumeSource":{"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.","type":"object","properties":{"datasetName":{"description":"datasetName is Name of the dataset stored as metadata -\u003e name on the dataset for Flocker should be considered as deprecated","type":"string"},"datasetUUID":{"description":"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset","type":"string"}}},"io.k8s.api.core.v1.GCEPersistentDiskVolumeSource":{"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.","type":"object","required":["pdName"],"properties":{"fsType":{"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","type":"string"},"partition":{"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","type":"integer","format":"int32"},"pdName":{"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","type":"string","default":""},"readOnly":{"description":"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk","type":"boolean"}}},"io.k8s.api.core.v1.GRPCAction":{"type":"object","required":["port"],"properties":{"port":{"description":"Port number of the gRPC service. Number must be in the range 1 to 65535.","type":"integer","format":"int32","default":0},"service":{"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.","type":"string","default":""}}},"io.k8s.api.core.v1.GitRepoVolumeSource":{"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.","type":"object","required":["repository"],"properties":{"directory":{"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.","type":"string"},"repository":{"description":"repository is the URL","type":"string","default":""},"revision":{"description":"revision is the commit hash for the specified revision.","type":"string"}}},"io.k8s.api.core.v1.GlusterfsVolumeSource":{"description":"Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["endpoints","path"],"properties":{"endpoints":{"description":"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"path":{"description":"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"readOnly":{"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","type":"boolean"}}},"io.k8s.api.core.v1.HTTPGetAction":{"description":"HTTPGetAction describes an action based on HTTP Get requests.","type":"object","required":["port"],"properties":{"host":{"description":"Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.","type":"string"},"httpHeaders":{"description":"Custom headers to set in the request. HTTP allows repeated headers.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.HTTPHeader"}},"path":{"description":"Path to access on the HTTP server.","type":"string"},"port":{"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.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString"},"scheme":{"description":"Scheme to use for connecting to the host. Defaults to HTTP.\n\nPossible enum values:\n - `\"HTTP\"` means that the scheme used will be http://\n - `\"HTTPS\"` means that the scheme used will be https://","type":"string","enum":["HTTP","HTTPS"]}}},"io.k8s.api.core.v1.HTTPHeader":{"description":"HTTPHeader describes a custom header to be used in HTTP probes","type":"object","required":["name","value"],"properties":{"name":{"description":"The header field name","type":"string","default":""},"value":{"description":"The header field value","type":"string","default":""}}},"io.k8s.api.core.v1.HostAlias":{"description":"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.","type":"object","properties":{"hostnames":{"description":"Hostnames for the above IP address.","type":"array","items":{"type":"string","default":""}},"ip":{"description":"IP address of the host file entry.","type":"string"}}},"io.k8s.api.core.v1.HostPathVolumeSource":{"description":"Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.","type":"object","required":["path"],"properties":{"path":{"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","type":"string","default":""},"type":{"description":"type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath","type":"string"}}},"io.k8s.api.core.v1.ISCSIVolumeSource":{"description":"Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.","type":"object","required":["targetPortal","iqn","lun"],"properties":{"chapAuthDiscovery":{"description":"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication","type":"boolean"},"chapAuthSession":{"description":"chapAuthSession defines whether support iSCSI Session CHAP authentication","type":"boolean"},"fsType":{"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","type":"string"},"initiatorName":{"description":"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \u003ctarget portal\u003e:\u003cvolume name\u003e will be created for the connection.","type":"string"},"iqn":{"description":"iqn is the target iSCSI Qualified Name.","type":"string","default":""},"iscsiInterface":{"description":"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).","type":"string"},"lun":{"description":"lun represents iSCSI Target Lun number.","type":"integer","format":"int32","default":0},"portals":{"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).","type":"array","items":{"type":"string","default":""}},"readOnly":{"description":"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.","type":"boolean"},"secretRef":{"description":"secretRef is the CHAP Secret for iSCSI target and initiator authentication","$ref":"#/definitions/io.k8s.api.core.v1.LocalObjectReference"},"targetPortal":{"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).","type":"string","default":""}}},"io.k8s.api.core.v1.KeyToPath":{"description":"Maps a string key to a path within a volume.","type":"object","required":["key","path"],"properties":{"key":{"description":"key is the key to project.","type":"string","default":""},"mode":{"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.","type":"integer","format":"int32"},"path":{"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 '..'.","type":"string","default":""}}},"io.k8s.api.core.v1.Lifecycle":{"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.","type":"object","properties":{"postStart":{"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","$ref":"#/definitions/io.k8s.api.core.v1.LifecycleHandler"},"preStop":{"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","$ref":"#/definitions/io.k8s.api.core.v1.LifecycleHandler"}}},"io.k8s.api.core.v1.LifecycleHandler":{"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.","type":"object","properties":{"exec":{"description":"Exec specifies the action to take.","$ref":"#/definitions/io.k8s.api.core.v1.ExecAction"},"httpGet":{"description":"HTTPGet specifies the http request to perform.","$ref":"#/definitions/io.k8s.api.core.v1.HTTPGetAction"},"tcpSocket":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.TCPSocketAction"}}},"io.k8s.api.core.v1.LocalObjectReference":{"description":"LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.NFSVolumeSource":{"description":"Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.","type":"object","required":["server","path"],"properties":{"path":{"description":"path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs","type":"string","default":""},"readOnly":{"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","type":"boolean"},"server":{"description":"server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs","type":"string","default":""}}},"io.k8s.api.core.v1.NodeAffinity":{"description":"Node affinity is a group of node affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PreferredSchedulingTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.NodeSelector"}}},"io.k8s.api.core.v1.NodeSelector":{"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.","type":"object","required":["nodeSelectorTerms"],"properties":{"nodeSelectorTerms":{"description":"Required. A list of node selector terms. The terms are ORed.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.NodeSelectorTerm"}}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.NodeSelectorRequirement":{"description":"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.","type":"object","required":["key","operator"],"properties":{"key":{"description":"The label key that the selector applies to.","type":"string","default":""},"operator":{"description":"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n\nPossible enum values:\n - `\"DoesNotExist\"`\n - `\"Exists\"`\n - `\"Gt\"`\n - `\"In\"`\n - `\"Lt\"`\n - `\"NotIn\"`","type":"string","default":"","enum":["DoesNotExist","Exists","Gt","In","Lt","NotIn"]},"values":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.NodeSelectorTerm":{"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.","type":"object","properties":{"matchExpressions":{"description":"A list of node selector requirements by node's labels.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.NodeSelectorRequirement"}},"matchFields":{"description":"A list of node selector requirements by node's fields.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.NodeSelectorRequirement"}}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ObjectFieldSelector":{"description":"ObjectFieldSelector selects an APIVersioned field of an object.","type":"object","required":["fieldPath"],"properties":{"apiVersion":{"description":"Version of the schema the FieldPath is written in terms of, defaults to \"v1\".","type":"string"},"fieldPath":{"description":"Path of the field to select in the specified API version.","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ObjectReference":{"description":"ObjectReference contains enough information to let you inspect or modify the referred object.","type":"object","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"fieldPath":{"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.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"},"resourceVersion":{"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","type":"string"},"uid":{"description":"UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids","type":"string"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.PersistentVolumeClaimSpec":{"description":"PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes","type":"object","properties":{"accessModes":{"description":"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1","type":"array","items":{"type":"string","default":""}},"dataSource":{"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. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.","$ref":"#/definitions/io.k8s.api.core.v1.TypedLocalObjectReference"},"dataSourceRef":{"description":"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local 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, 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. There are two 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(Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled.","$ref":"#/definitions/io.k8s.api.core.v1.TypedLocalObjectReference"},"resources":{"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","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.ResourceRequirements"},"selector":{"description":"selector is a label query over volumes to consider for binding.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"storageClassName":{"description":"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1","type":"string"},"volumeMode":{"description":"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.","type":"string"},"volumeName":{"description":"volumeName is the binding reference to the PersistentVolume backing this claim.","type":"string"}}},"io.k8s.api.core.v1.PersistentVolumeClaimTemplate":{"description":"PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource.","type":"object","required":["spec"],"properties":{"metadata":{"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.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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.","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimSpec"}}},"io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource":{"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).","type":"object","required":["claimName"],"properties":{"claimName":{"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","type":"string","default":""},"readOnly":{"description":"readOnly Will force the ReadOnly setting in VolumeMounts. Default false.","type":"boolean"}}},"io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource":{"description":"Represents a Photon Controller persistent disk resource.","type":"object","required":["pdID"],"properties":{"fsType":{"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.","type":"string"},"pdID":{"description":"pdID is the ID that identifies Photon Controller persistent disk","type":"string","default":""}}},"io.k8s.api.core.v1.PodAffinity":{"description":"Pod affinity is a group of inter pod affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PodAffinityTerm"}}}},"io.k8s.api.core.v1.PodAffinityTerm":{"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 \u003ctopologyKey\u003e matches that of any node on which a pod of the set of pods is running","type":"object","required":["topologyKey"],"properties":{"labelSelector":{"description":"A label query over a set of resources, in this case pods.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"namespaceSelector":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"namespaces":{"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\".","type":"array","items":{"type":"string","default":""}},"topologyKey":{"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.","type":"string","default":""}}},"io.k8s.api.core.v1.PodAntiAffinity":{"description":"Pod anti affinity is a group of inter pod anti affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PodAffinityTerm"}}}},"io.k8s.api.core.v1.PodDNSConfig":{"description":"PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.","type":"object","properties":{"nameservers":{"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.","type":"array","items":{"type":"string","default":""}},"options":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PodDNSConfigOption"}},"searches":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.PodDNSConfigOption":{"description":"PodDNSConfigOption defines DNS resolver options of a pod.","type":"object","properties":{"name":{"description":"Required.","type":"string"},"value":{"type":"string"}}},"io.k8s.api.core.v1.PodOS":{"description":"PodOS defines the OS parameters of a pod.","type":"object","required":["name"],"properties":{"name":{"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","type":"string","default":""}}},"io.k8s.api.core.v1.PodReadinessGate":{"description":"PodReadinessGate contains the reference to a pod condition","type":"object","required":["conditionType"],"properties":{"conditionType":{"description":"ConditionType refers to a condition in the pod's condition list with matching type.","type":"string","default":""}}},"io.k8s.api.core.v1.PodSecurityContext":{"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.","type":"object","properties":{"fsGroup":{"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.","type":"integer","format":"int64"},"fsGroupChangePolicy":{"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.","type":"string"},"runAsGroup":{"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.","type":"integer","format":"int64"},"runAsNonRoot":{"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.","type":"boolean"},"runAsUser":{"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.","type":"integer","format":"int64"},"seLinuxOptions":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.SELinuxOptions"},"seccompProfile":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.SeccompProfile"},"supplementalGroups":{"description":"A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container. Note that this field cannot be set when spec.os.name is windows.","type":"array","items":{"type":"integer","format":"int64","default":0}},"sysctls":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.Sysctl"}},"windowsOptions":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.WindowsSecurityContextOptions"}}},"io.k8s.api.core.v1.PodSpec":{"description":"PodSpec is a description of a pod.","type":"object","required":["containers"],"properties":{"activeDeadlineSeconds":{"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.","type":"integer","format":"int64"},"affinity":{"description":"If specified, the pod's scheduling constraints","$ref":"#/definitions/io.k8s.api.core.v1.Affinity"},"automountServiceAccountToken":{"description":"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.","type":"boolean"},"containers":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.Container"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"dnsConfig":{"description":"Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.","$ref":"#/definitions/io.k8s.api.core.v1.PodDNSConfig"},"dnsPolicy":{"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\nPossible enum values:\n - `\"ClusterFirst\"` indicates that the pod should use cluster DNS first unless hostNetwork is true, if it is available, then fall back on the default (as determined by kubelet) DNS settings.\n - `\"ClusterFirstWithHostNet\"` indicates that the pod should use cluster DNS first, if it is available, then fall back on the default (as determined by kubelet) DNS settings.\n - `\"Default\"` indicates that the pod should use the default (as determined by kubelet) DNS settings.\n - `\"None\"` indicates that the pod should use empty DNS settings. DNS parameters such as nameservers and search paths should be defined via DNSConfig.","type":"string","enum":["ClusterFirst","ClusterFirstWithHostNet","Default","None"]},"enableServiceLinks":{"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.","type":"boolean"},"ephemeralContainers":{"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. This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.EphemeralContainer"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"hostAliases":{"description":"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.HostAlias"},"x-kubernetes-patch-merge-key":"ip","x-kubernetes-patch-strategy":"merge"},"hostIPC":{"description":"Use the host's ipc namespace. Optional: Default to false.","type":"boolean"},"hostNetwork":{"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.","type":"boolean"},"hostPID":{"description":"Use the host's pid namespace. Optional: Default to false.","type":"boolean"},"hostname":{"description":"Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.","type":"string"},"imagePullSecrets":{"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. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.LocalObjectReference"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"initContainers":{"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/","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.Container"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"nodeName":{"description":"NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.","type":"string"},"nodeSelector":{"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/","type":"object","additionalProperties":{"type":"string","default":""},"x-kubernetes-map-type":"atomic"},"os":{"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.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.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 This is a beta field and requires the IdentifyPodOS feature","$ref":"#/definitions/io.k8s.api.core.v1.PodOS"},"overhead":{"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","type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"preemptionPolicy":{"description":"PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset.","type":"string"},"priority":{"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.","type":"integer","format":"int32"},"priorityClassName":{"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.","type":"string"},"readinessGates":{"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","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PodReadinessGate"}},"restartPolicy":{"description":"Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\n\nPossible enum values:\n - `\"Always\"`\n - `\"Never\"`\n - `\"OnFailure\"`","type":"string","enum":["Always","Never","OnFailure"]},"runtimeClassName":{"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","type":"string"},"schedulerName":{"description":"If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.","type":"string"},"securityContext":{"description":"SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.","$ref":"#/definitions/io.k8s.api.core.v1.PodSecurityContext"},"serviceAccount":{"description":"DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.","type":"string"},"serviceAccountName":{"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/","type":"string"},"setHostnameAsFQDN":{"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.","type":"boolean"},"shareProcessNamespace":{"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.","type":"boolean"},"subdomain":{"description":"If specified, the fully qualified Pod hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the pod will not have a domainname at all.","type":"string"},"terminationGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"tolerations":{"description":"If specified, the pod's tolerations.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.Toleration"}},"topologySpreadConstraints":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.TopologySpreadConstraint"},"x-kubernetes-list-map-keys":["topologyKey","whenUnsatisfiable"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"topologyKey","x-kubernetes-patch-strategy":"merge"},"volumes":{"description":"List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.Volume"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge,retainKeys"}}},"io.k8s.api.core.v1.PodTemplateSpec":{"description":"PodTemplateSpec describes the data a pod should have when created from a template","type":"object","properties":{"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PodSpec"}}},"io.k8s.api.core.v1.PortworxVolumeSource":{"description":"PortworxVolumeSource represents a Portworx volume resource.","type":"object","required":["volumeID"],"properties":{"fsType":{"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.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"volumeID":{"description":"volumeID uniquely identifies a Portworx volume","type":"string","default":""}}},"io.k8s.api.core.v1.PreferredSchedulingTerm":{"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).","type":"object","required":["weight","preference"],"properties":{"preference":{"description":"A node selector term, associated with the corresponding weight.","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.NodeSelectorTerm"},"weight":{"description":"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.Probe":{"description":"Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.","type":"object","properties":{"exec":{"description":"Exec specifies the action to take.","$ref":"#/definitions/io.k8s.api.core.v1.ExecAction"},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.","type":"integer","format":"int32"},"grpc":{"description":"GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate.","$ref":"#/definitions/io.k8s.api.core.v1.GRPCAction"},"httpGet":{"description":"HTTPGet specifies the http request to perform.","$ref":"#/definitions/io.k8s.api.core.v1.HTTPGetAction"},"initialDelaySeconds":{"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","type":"integer","format":"int32"},"periodSeconds":{"description":"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.","type":"integer","format":"int32"},"successThreshold":{"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.","type":"integer","format":"int32"},"tcpSocket":{"description":"TCPSocket specifies an action involving a TCP port.","$ref":"#/definitions/io.k8s.api.core.v1.TCPSocketAction"},"terminationGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"timeoutSeconds":{"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","type":"integer","format":"int32"}}},"io.k8s.api.core.v1.ProjectedVolumeSource":{"description":"Represents a projected volume source","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"sources":{"description":"sources is the list of volume projections","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.VolumeProjection"}}}},"io.k8s.api.core.v1.QuobyteVolumeSource":{"description":"Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.","type":"object","required":["registry","volume"],"properties":{"group":{"description":"group to map volume access to Default is no group","type":"string"},"readOnly":{"description":"readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.","type":"boolean"},"registry":{"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","type":"string","default":""},"tenant":{"description":"tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin","type":"string"},"user":{"description":"user to map volume access to Defaults to serivceaccount user","type":"string"},"volume":{"description":"volume is a string that references an already created Quobyte volume by name.","type":"string","default":""}}},"io.k8s.api.core.v1.RBDVolumeSource":{"description":"Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.","type":"object","required":["monitors","image"],"properties":{"fsType":{"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","type":"string"},"image":{"description":"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string","default":""},"keyring":{"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","type":"string"},"monitors":{"description":"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"array","items":{"type":"string","default":""}},"pool":{"description":"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"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","$ref":"#/definitions/io.k8s.api.core.v1.LocalObjectReference"},"user":{"description":"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"}}},"io.k8s.api.core.v1.ResourceFieldSelector":{"description":"ResourceFieldSelector represents container resources (cpu, memory) and their output format","type":"object","required":["resource"],"properties":{"containerName":{"description":"Container name: required for volumes, optional for env vars","type":"string"},"divisor":{"description":"Specifies the output format of the exposed resources, defaults to \"1\"","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"},"resource":{"description":"Required: resource to select","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ResourceRequirements":{"description":"ResourceRequirements describes the compute resource requirements.","type":"object","properties":{"limits":{"description":"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"requests":{"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. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity"}}}},"io.k8s.api.core.v1.SELinuxOptions":{"description":"SELinuxOptions are the labels to be applied to the container","type":"object","properties":{"level":{"description":"Level is SELinux level label that applies to the container.","type":"string"},"role":{"description":"Role is a SELinux role label that applies to the container.","type":"string"},"type":{"description":"Type is a SELinux type label that applies to the container.","type":"string"},"user":{"description":"User is a SELinux user label that applies to the container.","type":"string"}}},"io.k8s.api.core.v1.ScaleIOVolumeSource":{"description":"ScaleIOVolumeSource represents a persistent ScaleIO volume","type":"object","required":["gateway","system","secretRef"],"properties":{"fsType":{"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\".","type":"string"},"gateway":{"description":"gateway is the host address of the ScaleIO API Gateway.","type":"string","default":""},"protectionDomain":{"description":"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.","type":"string"},"readOnly":{"description":"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.","$ref":"#/definitions/io.k8s.api.core.v1.LocalObjectReference"},"sslEnabled":{"description":"sslEnabled Flag enable/disable SSL communication with Gateway, default false","type":"boolean"},"storageMode":{"description":"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.","type":"string"},"storagePool":{"description":"storagePool is the ScaleIO Storage Pool associated with the protection domain.","type":"string"},"system":{"description":"system is the name of the storage system as configured in ScaleIO.","type":"string","default":""},"volumeName":{"description":"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.","type":"string"}}},"io.k8s.api.core.v1.SeccompProfile":{"description":"SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set.","type":"object","required":["type"],"properties":{"localhostProfile":{"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 only be set if type is \"Localhost\".","type":"string"},"type":{"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\nPossible enum values:\n - `\"Localhost\"` indicates a profile defined in a file on the node should be used. The file's location relative to \u003ckubelet-root-dir\u003e/seccomp.\n - `\"RuntimeDefault\"` represents the default container runtime seccomp profile.\n - `\"Unconfined\"` indicates no seccomp profile is applied (A.K.A. unconfined).","type":"string","default":"","enum":["Localhost","RuntimeDefault","Unconfined"]}},"x-kubernetes-unions":[{"discriminator":"type","fields-to-discriminateBy":{"localhostProfile":"LocalhostProfile"}}]},"io.k8s.api.core.v1.SecretEnvSource":{"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.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the Secret must be defined","type":"boolean"}}},"io.k8s.api.core.v1.SecretKeySelector":{"description":"SecretKeySelector selects a key of a Secret.","type":"object","required":["key"],"properties":{"key":{"description":"The key of the secret to select from. Must be a valid secret key.","type":"string","default":""},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the Secret or its key must be defined","type":"boolean"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.SecretProjection":{"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.","type":"object","properties":{"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.KeyToPath"}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional field specify whether the Secret or its key must be defined","type":"boolean"}}},"io.k8s.api.core.v1.SecretVolumeSource":{"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.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.api.core.v1.KeyToPath"}},"optional":{"description":"optional field specify whether the Secret or its keys must be defined","type":"boolean"},"secretName":{"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","type":"string"}}},"io.k8s.api.core.v1.SecurityContext":{"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.","type":"object","properties":{"allowPrivilegeEscalation":{"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.","type":"boolean"},"capabilities":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.Capabilities"},"privileged":{"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.","type":"boolean"},"procMount":{"description":"procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount 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.","type":"string"},"readOnlyRootFilesystem":{"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.","type":"boolean"},"runAsGroup":{"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.","type":"integer","format":"int64"},"runAsNonRoot":{"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.","type":"boolean"},"runAsUser":{"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.","type":"integer","format":"int64"},"seLinuxOptions":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.SELinuxOptions"},"seccompProfile":{"description":"The seccomp options to use by this container. If seccomp options are provided at both the pod \u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.","$ref":"#/definitions/io.k8s.api.core.v1.SeccompProfile"},"windowsOptions":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.WindowsSecurityContextOptions"}}},"io.k8s.api.core.v1.ServiceAccountTokenProjection":{"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).","type":"object","required":["path"],"properties":{"audience":{"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.","type":"string"},"expirationSeconds":{"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.","type":"integer","format":"int64"},"path":{"description":"path is the path relative to the mount point of the file to project the token into.","type":"string","default":""}}},"io.k8s.api.core.v1.StorageOSVolumeSource":{"description":"Represents a StorageOS persistent volume resource.","type":"object","properties":{"fsType":{"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.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.","$ref":"#/definitions/io.k8s.api.core.v1.LocalObjectReference"},"volumeName":{"description":"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.","type":"string"},"volumeNamespace":{"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.","type":"string"}}},"io.k8s.api.core.v1.Sysctl":{"description":"Sysctl defines a kernel parameter to be set","type":"object","required":["name","value"],"properties":{"name":{"description":"Name of a property to set","type":"string","default":""},"value":{"description":"Value of a property to set","type":"string","default":""}}},"io.k8s.api.core.v1.TCPSocketAction":{"description":"TCPSocketAction describes an action based on opening a socket","type":"object","required":["port"],"properties":{"host":{"description":"Optional: Host name to connect to, defaults to the pod IP.","type":"string"},"port":{"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.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString"}}},"io.k8s.api.core.v1.Toleration":{"description":"The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.","type":"object","properties":{"effect":{"description":"Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n\nPossible enum values:\n - `\"NoExecute\"` Evict any already-running pods that do not tolerate the taint. Currently enforced by NodeController.\n - `\"NoSchedule\"` Do not allow new pods to schedule onto the node unless they tolerate the taint, but allow all pods submitted to Kubelet without going through the scheduler to start, and allow all already-running pods to continue running. Enforced by the scheduler.\n - `\"PreferNoSchedule\"` Like TaintEffectNoSchedule, but the scheduler tries not to schedule new pods onto the node, rather than prohibiting new pods from scheduling onto the node entirely. Enforced by the scheduler.","type":"string","enum":["NoExecute","NoSchedule","PreferNoSchedule"]},"key":{"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.","type":"string"},"operator":{"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\nPossible enum values:\n - `\"Equal\"`\n - `\"Exists\"`","type":"string","enum":["Equal","Exists"]},"tolerationSeconds":{"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.","type":"integer","format":"int64"},"value":{"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.","type":"string"}}},"io.k8s.api.core.v1.TopologySpreadConstraint":{"description":"TopologySpreadConstraint specifies how to spread matching pods among the given topology.","type":"object","required":["maxSkew","topologyKey","whenUnsatisfiable"],"properties":{"labelSelector":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"maxSkew":{"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.","type":"integer","format":"int32","default":0},"minDomains":{"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\nThis is an alpha field and requires enabling MinDomainsInPodTopologySpread feature gate.","type":"integer","format":"int32"},"topologyKey":{"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 \u003ckey, value\u003e 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 match the node selector. 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.","type":"string","default":""},"whenUnsatisfiable":{"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\nPossible enum values:\n - `\"DoNotSchedule\"` instructs the scheduler not to schedule the pod when constraints are not satisfied.\n - `\"ScheduleAnyway\"` instructs the scheduler to schedule the pod even if constraints are not satisfied.","type":"string","default":"","enum":["DoNotSchedule","ScheduleAnyway"]}}},"io.k8s.api.core.v1.TypedLocalObjectReference":{"description":"TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.","type":"object","required":["kind","name"],"properties":{"apiGroup":{"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.","type":"string"},"kind":{"description":"Kind is the type of resource being referenced","type":"string","default":""},"name":{"description":"Name is the name of resource being referenced","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.Volume":{"description":"Volume represents a named volume in a pod that may be accessed by any container in the pod.","type":"object","required":["name"],"properties":{"awsElasticBlockStore":{"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","$ref":"#/definitions/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource"},"azureDisk":{"description":"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.","$ref":"#/definitions/io.k8s.api.core.v1.AzureDiskVolumeSource"},"azureFile":{"description":"azureFile represents an Azure File Service mount on the host and bind mount to the pod.","$ref":"#/definitions/io.k8s.api.core.v1.AzureFileVolumeSource"},"cephfs":{"description":"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime","$ref":"#/definitions/io.k8s.api.core.v1.CephFSVolumeSource"},"cinder":{"description":"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","$ref":"#/definitions/io.k8s.api.core.v1.CinderVolumeSource"},"configMap":{"description":"configMap represents a configMap that should populate this volume","$ref":"#/definitions/io.k8s.api.core.v1.ConfigMapVolumeSource"},"csi":{"description":"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).","$ref":"#/definitions/io.k8s.api.core.v1.CSIVolumeSource"},"downwardAPI":{"description":"downwardAPI represents downward API about the pod that should populate this volume","$ref":"#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeSource"},"emptyDir":{"description":"emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir","$ref":"#/definitions/io.k8s.api.core.v1.EmptyDirVolumeSource"},"ephemeral":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.EphemeralVolumeSource"},"fc":{"description":"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.","$ref":"#/definitions/io.k8s.api.core.v1.FCVolumeSource"},"flexVolume":{"description":"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.","$ref":"#/definitions/io.k8s.api.core.v1.FlexVolumeSource"},"flocker":{"description":"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running","$ref":"#/definitions/io.k8s.api.core.v1.FlockerVolumeSource"},"gcePersistentDisk":{"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","$ref":"#/definitions/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource"},"gitRepo":{"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.","$ref":"#/definitions/io.k8s.api.core.v1.GitRepoVolumeSource"},"glusterfs":{"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","$ref":"#/definitions/io.k8s.api.core.v1.GlusterfsVolumeSource"},"hostPath":{"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","$ref":"#/definitions/io.k8s.api.core.v1.HostPathVolumeSource"},"iscsi":{"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","$ref":"#/definitions/io.k8s.api.core.v1.ISCSIVolumeSource"},"name":{"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","type":"string","default":""},"nfs":{"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","$ref":"#/definitions/io.k8s.api.core.v1.NFSVolumeSource"},"persistentVolumeClaim":{"description":"persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims","$ref":"#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource"},"photonPersistentDisk":{"description":"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine","$ref":"#/definitions/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource"},"portworxVolume":{"description":"portworxVolume represents a portworx volume attached and mounted on kubelets host machine","$ref":"#/definitions/io.k8s.api.core.v1.PortworxVolumeSource"},"projected":{"description":"projected items for all in one resources secrets, configmaps, and downward API","$ref":"#/definitions/io.k8s.api.core.v1.ProjectedVolumeSource"},"quobyte":{"description":"quobyte represents a Quobyte mount on the host that shares a pod's lifetime","$ref":"#/definitions/io.k8s.api.core.v1.QuobyteVolumeSource"},"rbd":{"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","$ref":"#/definitions/io.k8s.api.core.v1.RBDVolumeSource"},"scaleIO":{"description":"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.","$ref":"#/definitions/io.k8s.api.core.v1.ScaleIOVolumeSource"},"secret":{"description":"secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret","$ref":"#/definitions/io.k8s.api.core.v1.SecretVolumeSource"},"storageos":{"description":"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.","$ref":"#/definitions/io.k8s.api.core.v1.StorageOSVolumeSource"},"vsphereVolume":{"description":"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine","$ref":"#/definitions/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource"}}},"io.k8s.api.core.v1.VolumeDevice":{"description":"volumeDevice describes a mapping of a raw block device within a container.","type":"object","required":["name","devicePath"],"properties":{"devicePath":{"description":"devicePath is the path inside of the container that the device will be mapped to.","type":"string","default":""},"name":{"description":"name must match the name of a persistentVolumeClaim in the pod","type":"string","default":""}}},"io.k8s.api.core.v1.VolumeMount":{"description":"VolumeMount describes a mounting of a Volume within a container.","type":"object","required":["name","mountPath"],"properties":{"mountPath":{"description":"Path within the container at which the volume should be mounted. Must not contain ':'.","type":"string","default":""},"mountPropagation":{"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.","type":"string"},"name":{"description":"This must match the Name of a Volume.","type":"string","default":""},"readOnly":{"description":"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.","type":"boolean"},"subPath":{"description":"Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).","type":"string"},"subPathExpr":{"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.","type":"string"}}},"io.k8s.api.core.v1.VolumeProjection":{"description":"Projection that may be projected along with other supported volume types","type":"object","properties":{"configMap":{"description":"configMap information about the configMap data to project","$ref":"#/definitions/io.k8s.api.core.v1.ConfigMapProjection"},"downwardAPI":{"description":"downwardAPI information about the downwardAPI data to project","$ref":"#/definitions/io.k8s.api.core.v1.DownwardAPIProjection"},"secret":{"description":"secret information about the secret data to project","$ref":"#/definitions/io.k8s.api.core.v1.SecretProjection"},"serviceAccountToken":{"description":"serviceAccountToken is information about the serviceAccountToken data to project","$ref":"#/definitions/io.k8s.api.core.v1.ServiceAccountTokenProjection"}}},"io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource":{"description":"Represents a vSphere volume resource.","type":"object","required":["volumePath"],"properties":{"fsType":{"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.","type":"string"},"storagePolicyID":{"description":"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.","type":"string"},"storagePolicyName":{"description":"storagePolicyName is the storage Policy Based Management (SPBM) profile name.","type":"string"},"volumePath":{"description":"volumePath is the path that identifies vSphere volume vmdk","type":"string","default":""}}},"io.k8s.api.core.v1.WeightedPodAffinityTerm":{"description":"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)","type":"object","required":["weight","podAffinityTerm"],"properties":{"podAffinityTerm":{"description":"Required. A pod affinity term, associated with the corresponding weight.","default":{},"$ref":"#/definitions/io.k8s.api.core.v1.PodAffinityTerm"},"weight":{"description":"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.WindowsSecurityContextOptions":{"description":"WindowsSecurityContextOptions contain Windows-specific options and credentials.","type":"object","properties":{"gmsaCredentialSpec":{"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.","type":"string"},"gmsaCredentialSpecName":{"description":"GMSACredentialSpecName is the name of the GMSA credential spec to use.","type":"string"},"hostProcess":{"description":"HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. 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.","type":"boolean"},"runAsUserName":{"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.","type":"string"}}},"io.k8s.apimachinery.pkg.api.resource.Quantity":{"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\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\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 a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 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.","type":"string"},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResource":{"description":"APIResource specifies the name of a resource and whether it is namespaced.","type":"object","required":["name","singularName","namespaced","kind","verbs"],"properties":{"categories":{"description":"categories is a list of the grouped resources this resource belongs to (e.g. 'all')","type":"array","items":{"type":"string","default":""}},"group":{"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\".","type":"string"},"kind":{"description":"kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')","type":"string","default":""},"name":{"description":"name is the plural name of the resource.","type":"string","default":""},"namespaced":{"description":"namespaced indicates if a resource is namespaced or not.","type":"boolean","default":false},"shortNames":{"description":"shortNames is a list of suggested short names of the resource.","type":"array","items":{"type":"string","default":""}},"singularName":{"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.","type":"string","default":""},"storageVersionHash":{"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.","type":"string"},"verbs":{"description":"verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)","type":"array","items":{"type":"string","default":""}},"version":{"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)\".","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList":{"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.","type":"object","required":["groupVersion","resources"],"properties":{"apiVersion":{"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","type":"string"},"groupVersion":{"description":"groupVersion is the group and version this APIResourceList is for.","type":"string","default":""},"kind":{"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","type":"string"},"resources":{"description":"resources contains the name of the resources and if they are namespaced.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResource"}}},"x-kubernetes-group-version-kind":[{"group":"","kind":"APIResourceList","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"},"propagationPolicy":{"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.","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta2"},{"group":"batch","kind":"DeleteOptions","version":"v1"},{"group":"batch","kind":"DeleteOptions","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"extensions","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"policy","kind":"DeleteOptions","version":"v1"},{"group":"policy","kind":"DeleteOptions","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector":{"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.","type":"object","properties":{"matchExpressions":{"description":"matchExpressions is a list of label selector requirements. The requirements are ANDed.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement"}},"matchLabels":{"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.","type":"object","additionalProperties":{"type":"string","default":""}}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement":{"description":"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.","type":"object","required":["key","operator"],"properties":{"key":{"description":"key is the label key that the selector applies to.","type":"string","default":"","x-kubernetes-patch-merge-key":"key","x-kubernetes-patch-strategy":"merge"},"operator":{"description":"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.","type":"string","default":""},"values":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"clusterName":{"description":"Deprecated: ClusterName is a legacy field that was always cleared by the system and never used; it will be removed completely in 1.25.\n\nThe name in the go struct is changed to help clients detect accidental use.","type":"string"},"creationTimestamp":{"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","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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 NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"},"reason":{"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.","type":"string"},"status":{"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","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Status","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"},"io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent":{"description":"Event represents a single event to a watched resource.","type":"object","required":["type","object"],"properties":{"object":{"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.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.runtime.RawExtension"},"type":{"type":"string","default":""}},"x-kubernetes-group-version-kind":[{"group":"","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1"},{"group":"apps","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta2"},{"group":"batch","kind":"WatchEvent","version":"v1"},{"group":"batch","kind":"WatchEvent","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"extensions","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"policy","kind":"WatchEvent","version":"v1"},{"group":"policy","kind":"WatchEvent","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.runtime.RawExtension":{"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: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.Object `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// External package: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.RawExtension `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// On the wire, the JSON will look something like this: {\n\t\"kind\":\"MyAPIObject\",\n\t\"apiVersion\":\"v1\",\n\t\"myPlugin\": {\n\t\t\"kind\":\"PluginA\",\n\t\t\"aOption\":\"foo\",\n\t},\n}\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.)","type":"object"},"io.k8s.apimachinery.pkg.util.intstr.IntOrString":{"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.","type":"string","format":"int-or-string"}},"securityDefinitions":{"BearerToken":{"description":"Bearer Token authentication","type":"apiKey","name":"authorization","in":"header"}},"security":[{"BearerToken":[]}]} v3_api.v1.json000066400000000000000000042235301453663023200335120ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/openapiconv/testdata_generated_from_k8s{"openapi":"3.0.0","info":{"title":"Kubernetes","version":"v1.24.0"},"paths":{"/api/v1/":{"get":{"tags":["core_v1"],"description":"get available resources","operationId":"getCoreV1APIResources","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}}}},"401":{"description":"Unauthorized"}}}},"/api/v1/componentstatuses":{"get":{"tags":["core_v1"],"description":"list objects of kind ComponentStatus","operationId":"listCoreV1ComponentStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentStatusList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentStatusList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentStatusList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentStatusList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentStatusList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ComponentStatus"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/componentstatuses/{name}":{"get":{"tags":["core_v1"],"description":"read the specified ComponentStatus","operationId":"readCoreV1ComponentStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentStatus"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentStatus"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentStatus"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ComponentStatus"}},"parameters":[{"name":"name","in":"path","description":"name of the ComponentStatus","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/configmaps":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind ConfigMap","operationId":"listCoreV1ConfigMapForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/endpoints":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Endpoints","operationId":"listCoreV1EndpointsForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/events":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Event","operationId":"listCoreV1EventForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/limitranges":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind LimitRange","operationId":"listCoreV1LimitRangeForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/namespaces":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Namespace","operationId":"listCoreV1Namespace","parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NamespaceList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NamespaceList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NamespaceList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NamespaceList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NamespaceList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"post":{"tags":["core_v1"],"description":"create a Namespace","operationId":"createCoreV1Namespace","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"parameters":[{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/bindings":{"post":{"tags":["core_v1"],"description":"create a Binding","operationId":"createCoreV1NamespacedBinding","requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Binding"}},"parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/configmaps":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind ConfigMap","operationId":"listCoreV1NamespacedConfigMap","parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"post":{"tags":["core_v1"],"description":"create a ConfigMap","operationId":"createCoreV1NamespacedConfigMap","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"delete":{"tags":["core_v1"],"description":"delete collection of ConfigMap","operationId":"deleteCoreV1CollectionNamespacedConfigMap","parameters":[{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/configmaps/{name}":{"get":{"tags":["core_v1"],"description":"read the specified ConfigMap","operationId":"readCoreV1NamespacedConfigMap","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"put":{"tags":["core_v1"],"description":"replace the specified ConfigMap","operationId":"replaceCoreV1NamespacedConfigMap","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"delete":{"tags":["core_v1"],"description":"delete a ConfigMap","operationId":"deleteCoreV1NamespacedConfigMap","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"patch":{"tags":["core_v1"],"description":"partially update the specified ConfigMap","operationId":"patchCoreV1NamespacedConfigMap","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"parameters":[{"name":"name","in":"path","description":"name of the ConfigMap","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/endpoints":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Endpoints","operationId":"listCoreV1NamespacedEndpoints","parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"post":{"tags":["core_v1"],"description":"create Endpoints","operationId":"createCoreV1NamespacedEndpoints","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"delete":{"tags":["core_v1"],"description":"delete collection of Endpoints","operationId":"deleteCoreV1CollectionNamespacedEndpoints","parameters":[{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/endpoints/{name}":{"get":{"tags":["core_v1"],"description":"read the specified Endpoints","operationId":"readCoreV1NamespacedEndpoints","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"put":{"tags":["core_v1"],"description":"replace the specified Endpoints","operationId":"replaceCoreV1NamespacedEndpoints","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"delete":{"tags":["core_v1"],"description":"delete Endpoints","operationId":"deleteCoreV1NamespacedEndpoints","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"patch":{"tags":["core_v1"],"description":"partially update the specified Endpoints","operationId":"patchCoreV1NamespacedEndpoints","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"parameters":[{"name":"name","in":"path","description":"name of the Endpoints","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/events":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Event","operationId":"listCoreV1NamespacedEvent","parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"post":{"tags":["core_v1"],"description":"create an Event","operationId":"createCoreV1NamespacedEvent","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"delete":{"tags":["core_v1"],"description":"delete collection of Event","operationId":"deleteCoreV1CollectionNamespacedEvent","parameters":[{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/events/{name}":{"get":{"tags":["core_v1"],"description":"read the specified Event","operationId":"readCoreV1NamespacedEvent","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"put":{"tags":["core_v1"],"description":"replace the specified Event","operationId":"replaceCoreV1NamespacedEvent","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"delete":{"tags":["core_v1"],"description":"delete an Event","operationId":"deleteCoreV1NamespacedEvent","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"patch":{"tags":["core_v1"],"description":"partially update the specified Event","operationId":"patchCoreV1NamespacedEvent","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"parameters":[{"name":"name","in":"path","description":"name of the Event","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/limitranges":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind LimitRange","operationId":"listCoreV1NamespacedLimitRange","parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"post":{"tags":["core_v1"],"description":"create a LimitRange","operationId":"createCoreV1NamespacedLimitRange","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"delete":{"tags":["core_v1"],"description":"delete collection of LimitRange","operationId":"deleteCoreV1CollectionNamespacedLimitRange","parameters":[{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/limitranges/{name}":{"get":{"tags":["core_v1"],"description":"read the specified LimitRange","operationId":"readCoreV1NamespacedLimitRange","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"put":{"tags":["core_v1"],"description":"replace the specified LimitRange","operationId":"replaceCoreV1NamespacedLimitRange","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"delete":{"tags":["core_v1"],"description":"delete a LimitRange","operationId":"deleteCoreV1NamespacedLimitRange","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"patch":{"tags":["core_v1"],"description":"partially update the specified LimitRange","operationId":"patchCoreV1NamespacedLimitRange","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"parameters":[{"name":"name","in":"path","description":"name of the LimitRange","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/persistentvolumeclaims":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind PersistentVolumeClaim","operationId":"listCoreV1NamespacedPersistentVolumeClaim","parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"post":{"tags":["core_v1"],"description":"create a PersistentVolumeClaim","operationId":"createCoreV1NamespacedPersistentVolumeClaim","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"delete":{"tags":["core_v1"],"description":"delete collection of PersistentVolumeClaim","operationId":"deleteCoreV1CollectionNamespacedPersistentVolumeClaim","parameters":[{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}":{"get":{"tags":["core_v1"],"description":"read the specified PersistentVolumeClaim","operationId":"readCoreV1NamespacedPersistentVolumeClaim","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"put":{"tags":["core_v1"],"description":"replace the specified PersistentVolumeClaim","operationId":"replaceCoreV1NamespacedPersistentVolumeClaim","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"delete":{"tags":["core_v1"],"description":"delete a PersistentVolumeClaim","operationId":"deleteCoreV1NamespacedPersistentVolumeClaim","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"patch":{"tags":["core_v1"],"description":"partially update the specified PersistentVolumeClaim","operationId":"patchCoreV1NamespacedPersistentVolumeClaim","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"parameters":[{"name":"name","in":"path","description":"name of the PersistentVolumeClaim","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status":{"get":{"tags":["core_v1"],"description":"read status of the specified PersistentVolumeClaim","operationId":"readCoreV1NamespacedPersistentVolumeClaimStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"put":{"tags":["core_v1"],"description":"replace status of the specified PersistentVolumeClaim","operationId":"replaceCoreV1NamespacedPersistentVolumeClaimStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"patch":{"tags":["core_v1"],"description":"partially update status of the specified PersistentVolumeClaim","operationId":"patchCoreV1NamespacedPersistentVolumeClaimStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"parameters":[{"name":"name","in":"path","description":"name of the PersistentVolumeClaim","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Pod","operationId":"listCoreV1NamespacedPod","parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"post":{"tags":["core_v1"],"description":"create a Pod","operationId":"createCoreV1NamespacedPod","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"delete":{"tags":["core_v1"],"description":"delete collection of Pod","operationId":"deleteCoreV1CollectionNamespacedPod","parameters":[{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}":{"get":{"tags":["core_v1"],"description":"read the specified Pod","operationId":"readCoreV1NamespacedPod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"put":{"tags":["core_v1"],"description":"replace the specified Pod","operationId":"replaceCoreV1NamespacedPod","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"delete":{"tags":["core_v1"],"description":"delete a Pod","operationId":"deleteCoreV1NamespacedPod","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"patch":{"tags":["core_v1"],"description":"partially update the specified Pod","operationId":"patchCoreV1NamespacedPod","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"parameters":[{"name":"name","in":"path","description":"name of the Pod","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/attach":{"get":{"tags":["core_v1"],"description":"connect GET requests to attach of Pod","operationId":"connectCoreV1GetNamespacedPodAttach","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodAttachOptions"}},"post":{"tags":["core_v1"],"description":"connect POST requests to attach of Pod","operationId":"connectCoreV1PostNamespacedPodAttach","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodAttachOptions"}},"parameters":[{"name":"container","in":"query","description":"The container in which to execute the command. Defaults to only container if there is only one container in the pod.","schema":{"type":"string","uniqueItems":true}},{"name":"name","in":"path","description":"name of the PodAttachOptions","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"stderr","in":"query","description":"Stderr if true indicates that stderr is to be redirected for the attach call. Defaults to true.","schema":{"type":"boolean","uniqueItems":true}},{"name":"stdin","in":"query","description":"Stdin if true, redirects the standard input stream of the pod for this call. Defaults to false.","schema":{"type":"boolean","uniqueItems":true}},{"name":"stdout","in":"query","description":"Stdout if true indicates that stdout is to be redirected for the attach call. Defaults to true.","schema":{"type":"boolean","uniqueItems":true}},{"name":"tty","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/binding":{"post":{"tags":["core_v1"],"description":"create binding of a Pod","operationId":"createCoreV1NamespacedPodBinding","requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Binding"}},"parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Binding","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers":{"get":{"tags":["core_v1"],"description":"read ephemeralcontainers of the specified Pod","operationId":"readCoreV1NamespacedPodEphemeralcontainers","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"put":{"tags":["core_v1"],"description":"replace ephemeralcontainers of the specified Pod","operationId":"replaceCoreV1NamespacedPodEphemeralcontainers","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"patch":{"tags":["core_v1"],"description":"partially update ephemeralcontainers of the specified Pod","operationId":"patchCoreV1NamespacedPodEphemeralcontainers","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"parameters":[{"name":"name","in":"path","description":"name of the Pod","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/eviction":{"post":{"tags":["core_v1"],"description":"create eviction of a Pod","operationId":"createCoreV1NamespacedPodEviction","requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"policy","version":"v1","kind":"Eviction"}},"parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Eviction","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/exec":{"get":{"tags":["core_v1"],"description":"connect GET requests to exec of Pod","operationId":"connectCoreV1GetNamespacedPodExec","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodExecOptions"}},"post":{"tags":["core_v1"],"description":"connect POST requests to exec of Pod","operationId":"connectCoreV1PostNamespacedPodExec","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodExecOptions"}},"parameters":[{"name":"command","in":"query","description":"Command is the remote command to execute. argv array. Not executed within a shell.","schema":{"type":"string","uniqueItems":true}},{"name":"container","in":"query","description":"Container in which to execute the command. Defaults to only container if there is only one container in the pod.","schema":{"type":"string","uniqueItems":true}},{"name":"name","in":"path","description":"name of the PodExecOptions","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"stderr","in":"query","description":"Redirect the standard error stream of the pod for this call.","schema":{"type":"boolean","uniqueItems":true}},{"name":"stdin","in":"query","description":"Redirect the standard input stream of the pod for this call. Defaults to false.","schema":{"type":"boolean","uniqueItems":true}},{"name":"stdout","in":"query","description":"Redirect the standard output stream of the pod for this call.","schema":{"type":"boolean","uniqueItems":true}},{"name":"tty","in":"query","description":"TTY if true indicates that a tty will be allocated for the exec call. Defaults to false.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/log":{"get":{"tags":["core_v1"],"description":"read log of the specified Pod","operationId":"readCoreV1NamespacedPodLog","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}},"application/vnd.kubernetes.protobuf":{"schema":{"type":"string"}},"application/yaml":{"schema":{"type":"string"}},"text/plain":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"parameters":[{"name":"container","in":"query","description":"The container for which to stream logs. Defaults to only container if there is one container in the pod.","schema":{"type":"string","uniqueItems":true}},{"name":"follow","in":"query","description":"Follow the log stream of the pod. Defaults to false.","schema":{"type":"boolean","uniqueItems":true}},{"name":"insecureSkipTLSVerifyBackend","in":"query","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).","schema":{"type":"boolean","uniqueItems":true}},{"name":"limitBytes","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Pod","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"previous","in":"query","description":"Return previous terminated container logs. Defaults to false.","schema":{"type":"boolean","uniqueItems":true}},{"name":"sinceSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"tailLines","in":"query","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","schema":{"type":"integer","uniqueItems":true}},{"name":"timestamps","in":"query","description":"If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line of log output. Defaults to false.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/portforward":{"get":{"tags":["core_v1"],"description":"connect GET requests to portforward of Pod","operationId":"connectCoreV1GetNamespacedPodPortforward","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodPortForwardOptions"}},"post":{"tags":["core_v1"],"description":"connect POST requests to portforward of Pod","operationId":"connectCoreV1PostNamespacedPodPortforward","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodPortForwardOptions"}},"parameters":[{"name":"name","in":"path","description":"name of the PodPortForwardOptions","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"ports","in":"query","description":"List of ports to forward Required when using WebSockets","schema":{"type":"integer","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/proxy":{"get":{"tags":["core_v1"],"description":"connect GET requests to proxy of Pod","operationId":"connectCoreV1GetNamespacedPodProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"put":{"tags":["core_v1"],"description":"connect PUT requests to proxy of Pod","operationId":"connectCoreV1PutNamespacedPodProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"post":{"tags":["core_v1"],"description":"connect POST requests to proxy of Pod","operationId":"connectCoreV1PostNamespacedPodProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"delete":{"tags":["core_v1"],"description":"connect DELETE requests to proxy of Pod","operationId":"connectCoreV1DeleteNamespacedPodProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"options":{"tags":["core_v1"],"description":"connect OPTIONS requests to proxy of Pod","operationId":"connectCoreV1OptionsNamespacedPodProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"head":{"tags":["core_v1"],"description":"connect HEAD requests to proxy of Pod","operationId":"connectCoreV1HeadNamespacedPodProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"patch":{"tags":["core_v1"],"description":"connect PATCH requests to proxy of Pod","operationId":"connectCoreV1PatchNamespacedPodProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"parameters":[{"name":"name","in":"path","description":"name of the PodProxyOptions","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"path","in":"query","description":"Path is the URL path to use for the current proxy request to pod.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}":{"get":{"tags":["core_v1"],"description":"connect GET requests to proxy of Pod","operationId":"connectCoreV1GetNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"put":{"tags":["core_v1"],"description":"connect PUT requests to proxy of Pod","operationId":"connectCoreV1PutNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"post":{"tags":["core_v1"],"description":"connect POST requests to proxy of Pod","operationId":"connectCoreV1PostNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"delete":{"tags":["core_v1"],"description":"connect DELETE requests to proxy of Pod","operationId":"connectCoreV1DeleteNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"options":{"tags":["core_v1"],"description":"connect OPTIONS requests to proxy of Pod","operationId":"connectCoreV1OptionsNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"head":{"tags":["core_v1"],"description":"connect HEAD requests to proxy of Pod","operationId":"connectCoreV1HeadNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"patch":{"tags":["core_v1"],"description":"connect PATCH requests to proxy of Pod","operationId":"connectCoreV1PatchNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodProxyOptions"}},"parameters":[{"name":"name","in":"path","description":"name of the PodProxyOptions","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"path","in":"path","description":"path to the resource","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"path","in":"query","description":"Path is the URL path to use for the current proxy request to pod.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/status":{"get":{"tags":["core_v1"],"description":"read status of the specified Pod","operationId":"readCoreV1NamespacedPodStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"put":{"tags":["core_v1"],"description":"replace status of the specified Pod","operationId":"replaceCoreV1NamespacedPodStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"patch":{"tags":["core_v1"],"description":"partially update status of the specified Pod","operationId":"patchCoreV1NamespacedPodStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"parameters":[{"name":"name","in":"path","description":"name of the Pod","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/podtemplates":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind PodTemplate","operationId":"listCoreV1NamespacedPodTemplate","parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"post":{"tags":["core_v1"],"description":"create a PodTemplate","operationId":"createCoreV1NamespacedPodTemplate","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"delete":{"tags":["core_v1"],"description":"delete collection of PodTemplate","operationId":"deleteCoreV1CollectionNamespacedPodTemplate","parameters":[{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/podtemplates/{name}":{"get":{"tags":["core_v1"],"description":"read the specified PodTemplate","operationId":"readCoreV1NamespacedPodTemplate","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"put":{"tags":["core_v1"],"description":"replace the specified PodTemplate","operationId":"replaceCoreV1NamespacedPodTemplate","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"delete":{"tags":["core_v1"],"description":"delete a PodTemplate","operationId":"deleteCoreV1NamespacedPodTemplate","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"patch":{"tags":["core_v1"],"description":"partially update the specified PodTemplate","operationId":"patchCoreV1NamespacedPodTemplate","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"parameters":[{"name":"name","in":"path","description":"name of the PodTemplate","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/replicationcontrollers":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind ReplicationController","operationId":"listCoreV1NamespacedReplicationController","parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"post":{"tags":["core_v1"],"description":"create a ReplicationController","operationId":"createCoreV1NamespacedReplicationController","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"delete":{"tags":["core_v1"],"description":"delete collection of ReplicationController","operationId":"deleteCoreV1CollectionNamespacedReplicationController","parameters":[{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/replicationcontrollers/{name}":{"get":{"tags":["core_v1"],"description":"read the specified ReplicationController","operationId":"readCoreV1NamespacedReplicationController","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"put":{"tags":["core_v1"],"description":"replace the specified ReplicationController","operationId":"replaceCoreV1NamespacedReplicationController","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"delete":{"tags":["core_v1"],"description":"delete a ReplicationController","operationId":"deleteCoreV1NamespacedReplicationController","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"patch":{"tags":["core_v1"],"description":"partially update the specified ReplicationController","operationId":"patchCoreV1NamespacedReplicationController","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"parameters":[{"name":"name","in":"path","description":"name of the ReplicationController","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/scale":{"get":{"tags":["core_v1"],"description":"read scale of the specified ReplicationController","operationId":"readCoreV1NamespacedReplicationControllerScale","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"autoscaling","version":"v1","kind":"Scale"}},"put":{"tags":["core_v1"],"description":"replace scale of the specified ReplicationController","operationId":"replaceCoreV1NamespacedReplicationControllerScale","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"autoscaling","version":"v1","kind":"Scale"}},"patch":{"tags":["core_v1"],"description":"partially update scale of the specified ReplicationController","operationId":"patchCoreV1NamespacedReplicationControllerScale","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"autoscaling","version":"v1","kind":"Scale"}},"parameters":[{"name":"name","in":"path","description":"name of the Scale","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status":{"get":{"tags":["core_v1"],"description":"read status of the specified ReplicationController","operationId":"readCoreV1NamespacedReplicationControllerStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"put":{"tags":["core_v1"],"description":"replace status of the specified ReplicationController","operationId":"replaceCoreV1NamespacedReplicationControllerStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"patch":{"tags":["core_v1"],"description":"partially update status of the specified ReplicationController","operationId":"patchCoreV1NamespacedReplicationControllerStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"parameters":[{"name":"name","in":"path","description":"name of the ReplicationController","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/resourcequotas":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind ResourceQuota","operationId":"listCoreV1NamespacedResourceQuota","parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"post":{"tags":["core_v1"],"description":"create a ResourceQuota","operationId":"createCoreV1NamespacedResourceQuota","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"delete":{"tags":["core_v1"],"description":"delete collection of ResourceQuota","operationId":"deleteCoreV1CollectionNamespacedResourceQuota","parameters":[{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/resourcequotas/{name}":{"get":{"tags":["core_v1"],"description":"read the specified ResourceQuota","operationId":"readCoreV1NamespacedResourceQuota","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"put":{"tags":["core_v1"],"description":"replace the specified ResourceQuota","operationId":"replaceCoreV1NamespacedResourceQuota","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"delete":{"tags":["core_v1"],"description":"delete a ResourceQuota","operationId":"deleteCoreV1NamespacedResourceQuota","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"patch":{"tags":["core_v1"],"description":"partially update the specified ResourceQuota","operationId":"patchCoreV1NamespacedResourceQuota","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"parameters":[{"name":"name","in":"path","description":"name of the ResourceQuota","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/resourcequotas/{name}/status":{"get":{"tags":["core_v1"],"description":"read status of the specified ResourceQuota","operationId":"readCoreV1NamespacedResourceQuotaStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"put":{"tags":["core_v1"],"description":"replace status of the specified ResourceQuota","operationId":"replaceCoreV1NamespacedResourceQuotaStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"patch":{"tags":["core_v1"],"description":"partially update status of the specified ResourceQuota","operationId":"patchCoreV1NamespacedResourceQuotaStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"parameters":[{"name":"name","in":"path","description":"name of the ResourceQuota","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/secrets":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Secret","operationId":"listCoreV1NamespacedSecret","parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"post":{"tags":["core_v1"],"description":"create a Secret","operationId":"createCoreV1NamespacedSecret","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"delete":{"tags":["core_v1"],"description":"delete collection of Secret","operationId":"deleteCoreV1CollectionNamespacedSecret","parameters":[{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/secrets/{name}":{"get":{"tags":["core_v1"],"description":"read the specified Secret","operationId":"readCoreV1NamespacedSecret","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"put":{"tags":["core_v1"],"description":"replace the specified Secret","operationId":"replaceCoreV1NamespacedSecret","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"delete":{"tags":["core_v1"],"description":"delete a Secret","operationId":"deleteCoreV1NamespacedSecret","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"patch":{"tags":["core_v1"],"description":"partially update the specified Secret","operationId":"patchCoreV1NamespacedSecret","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"parameters":[{"name":"name","in":"path","description":"name of the Secret","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/serviceaccounts":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind ServiceAccount","operationId":"listCoreV1NamespacedServiceAccount","parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"post":{"tags":["core_v1"],"description":"create a ServiceAccount","operationId":"createCoreV1NamespacedServiceAccount","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"delete":{"tags":["core_v1"],"description":"delete collection of ServiceAccount","operationId":"deleteCoreV1CollectionNamespacedServiceAccount","parameters":[{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/serviceaccounts/{name}":{"get":{"tags":["core_v1"],"description":"read the specified ServiceAccount","operationId":"readCoreV1NamespacedServiceAccount","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"put":{"tags":["core_v1"],"description":"replace the specified ServiceAccount","operationId":"replaceCoreV1NamespacedServiceAccount","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"delete":{"tags":["core_v1"],"description":"delete a ServiceAccount","operationId":"deleteCoreV1NamespacedServiceAccount","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"patch":{"tags":["core_v1"],"description":"partially update the specified ServiceAccount","operationId":"patchCoreV1NamespacedServiceAccount","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"parameters":[{"name":"name","in":"path","description":"name of the ServiceAccount","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/serviceaccounts/{name}/token":{"post":{"tags":["core_v1"],"description":"create token of a ServiceAccount","operationId":"createCoreV1NamespacedServiceAccountToken","requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"authentication.k8s.io","version":"v1","kind":"TokenRequest"}},"parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"name","in":"path","description":"name of the TokenRequest","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/services":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Service","operationId":"listCoreV1NamespacedService","parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"post":{"tags":["core_v1"],"description":"create a Service","operationId":"createCoreV1NamespacedService","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"delete":{"tags":["core_v1"],"description":"delete collection of Service","operationId":"deleteCoreV1CollectionNamespacedService","parameters":[{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/services/{name}":{"get":{"tags":["core_v1"],"description":"read the specified Service","operationId":"readCoreV1NamespacedService","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"put":{"tags":["core_v1"],"description":"replace the specified Service","operationId":"replaceCoreV1NamespacedService","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"delete":{"tags":["core_v1"],"description":"delete a Service","operationId":"deleteCoreV1NamespacedService","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"patch":{"tags":["core_v1"],"description":"partially update the specified Service","operationId":"patchCoreV1NamespacedService","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"parameters":[{"name":"name","in":"path","description":"name of the Service","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/services/{name}/proxy":{"get":{"tags":["core_v1"],"description":"connect GET requests to proxy of Service","operationId":"connectCoreV1GetNamespacedServiceProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"put":{"tags":["core_v1"],"description":"connect PUT requests to proxy of Service","operationId":"connectCoreV1PutNamespacedServiceProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"post":{"tags":["core_v1"],"description":"connect POST requests to proxy of Service","operationId":"connectCoreV1PostNamespacedServiceProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"delete":{"tags":["core_v1"],"description":"connect DELETE requests to proxy of Service","operationId":"connectCoreV1DeleteNamespacedServiceProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"options":{"tags":["core_v1"],"description":"connect OPTIONS requests to proxy of Service","operationId":"connectCoreV1OptionsNamespacedServiceProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"head":{"tags":["core_v1"],"description":"connect HEAD requests to proxy of Service","operationId":"connectCoreV1HeadNamespacedServiceProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"patch":{"tags":["core_v1"],"description":"connect PATCH requests to proxy of Service","operationId":"connectCoreV1PatchNamespacedServiceProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"parameters":[{"name":"name","in":"path","description":"name of the ServiceProxyOptions","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"path","in":"query","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.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/services/{name}/proxy/{path}":{"get":{"tags":["core_v1"],"description":"connect GET requests to proxy of Service","operationId":"connectCoreV1GetNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"put":{"tags":["core_v1"],"description":"connect PUT requests to proxy of Service","operationId":"connectCoreV1PutNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"post":{"tags":["core_v1"],"description":"connect POST requests to proxy of Service","operationId":"connectCoreV1PostNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"delete":{"tags":["core_v1"],"description":"connect DELETE requests to proxy of Service","operationId":"connectCoreV1DeleteNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"options":{"tags":["core_v1"],"description":"connect OPTIONS requests to proxy of Service","operationId":"connectCoreV1OptionsNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"head":{"tags":["core_v1"],"description":"connect HEAD requests to proxy of Service","operationId":"connectCoreV1HeadNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"patch":{"tags":["core_v1"],"description":"connect PATCH requests to proxy of Service","operationId":"connectCoreV1PatchNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceProxyOptions"}},"parameters":[{"name":"name","in":"path","description":"name of the ServiceProxyOptions","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"path","in":"path","description":"path to the resource","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"path","in":"query","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.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/services/{name}/status":{"get":{"tags":["core_v1"],"description":"read status of the specified Service","operationId":"readCoreV1NamespacedServiceStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"put":{"tags":["core_v1"],"description":"replace status of the specified Service","operationId":"replaceCoreV1NamespacedServiceStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"patch":{"tags":["core_v1"],"description":"partially update status of the specified Service","operationId":"patchCoreV1NamespacedServiceStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"parameters":[{"name":"name","in":"path","description":"name of the Service","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{name}":{"get":{"tags":["core_v1"],"description":"read the specified Namespace","operationId":"readCoreV1Namespace","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"put":{"tags":["core_v1"],"description":"replace the specified Namespace","operationId":"replaceCoreV1Namespace","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"delete":{"tags":["core_v1"],"description":"delete a Namespace","operationId":"deleteCoreV1Namespace","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"patch":{"tags":["core_v1"],"description":"partially update the specified Namespace","operationId":"patchCoreV1Namespace","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"parameters":[{"name":"name","in":"path","description":"name of the Namespace","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{name}/finalize":{"put":{"tags":["core_v1"],"description":"replace finalize of the specified Namespace","operationId":"replaceCoreV1NamespaceFinalize","requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Namespace","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{name}/status":{"get":{"tags":["core_v1"],"description":"read status of the specified Namespace","operationId":"readCoreV1NamespaceStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"put":{"tags":["core_v1"],"description":"replace status of the specified Namespace","operationId":"replaceCoreV1NamespaceStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"patch":{"tags":["core_v1"],"description":"partially update status of the specified Namespace","operationId":"patchCoreV1NamespaceStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"parameters":[{"name":"name","in":"path","description":"name of the Namespace","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/nodes":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Node","operationId":"listCoreV1Node","parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"post":{"tags":["core_v1"],"description":"create a Node","operationId":"createCoreV1Node","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"delete":{"tags":["core_v1"],"description":"delete collection of Node","operationId":"deleteCoreV1CollectionNode","parameters":[{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"parameters":[{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/nodes/{name}":{"get":{"tags":["core_v1"],"description":"read the specified Node","operationId":"readCoreV1Node","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"put":{"tags":["core_v1"],"description":"replace the specified Node","operationId":"replaceCoreV1Node","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"delete":{"tags":["core_v1"],"description":"delete a Node","operationId":"deleteCoreV1Node","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"patch":{"tags":["core_v1"],"description":"partially update the specified Node","operationId":"patchCoreV1Node","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"parameters":[{"name":"name","in":"path","description":"name of the Node","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/nodes/{name}/proxy":{"get":{"tags":["core_v1"],"description":"connect GET requests to proxy of Node","operationId":"connectCoreV1GetNodeProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"put":{"tags":["core_v1"],"description":"connect PUT requests to proxy of Node","operationId":"connectCoreV1PutNodeProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"post":{"tags":["core_v1"],"description":"connect POST requests to proxy of Node","operationId":"connectCoreV1PostNodeProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"delete":{"tags":["core_v1"],"description":"connect DELETE requests to proxy of Node","operationId":"connectCoreV1DeleteNodeProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"options":{"tags":["core_v1"],"description":"connect OPTIONS requests to proxy of Node","operationId":"connectCoreV1OptionsNodeProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"head":{"tags":["core_v1"],"description":"connect HEAD requests to proxy of Node","operationId":"connectCoreV1HeadNodeProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"patch":{"tags":["core_v1"],"description":"connect PATCH requests to proxy of Node","operationId":"connectCoreV1PatchNodeProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"parameters":[{"name":"name","in":"path","description":"name of the NodeProxyOptions","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"path","in":"query","description":"Path is the URL path to use for the current proxy request to node.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/nodes/{name}/proxy/{path}":{"get":{"tags":["core_v1"],"description":"connect GET requests to proxy of Node","operationId":"connectCoreV1GetNodeProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"put":{"tags":["core_v1"],"description":"connect PUT requests to proxy of Node","operationId":"connectCoreV1PutNodeProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"post":{"tags":["core_v1"],"description":"connect POST requests to proxy of Node","operationId":"connectCoreV1PostNodeProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"delete":{"tags":["core_v1"],"description":"connect DELETE requests to proxy of Node","operationId":"connectCoreV1DeleteNodeProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"options":{"tags":["core_v1"],"description":"connect OPTIONS requests to proxy of Node","operationId":"connectCoreV1OptionsNodeProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"head":{"tags":["core_v1"],"description":"connect HEAD requests to proxy of Node","operationId":"connectCoreV1HeadNodeProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"patch":{"tags":["core_v1"],"description":"connect PATCH requests to proxy of Node","operationId":"connectCoreV1PatchNodeProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"connect","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"NodeProxyOptions"}},"parameters":[{"name":"name","in":"path","description":"name of the NodeProxyOptions","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"path","in":"path","description":"path to the resource","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"path","in":"query","description":"Path is the URL path to use for the current proxy request to node.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/nodes/{name}/status":{"get":{"tags":["core_v1"],"description":"read status of the specified Node","operationId":"readCoreV1NodeStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"put":{"tags":["core_v1"],"description":"replace status of the specified Node","operationId":"replaceCoreV1NodeStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"patch":{"tags":["core_v1"],"description":"partially update status of the specified Node","operationId":"patchCoreV1NodeStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"parameters":[{"name":"name","in":"path","description":"name of the Node","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/persistentvolumeclaims":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind PersistentVolumeClaim","operationId":"listCoreV1PersistentVolumeClaimForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/persistentvolumes":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind PersistentVolume","operationId":"listCoreV1PersistentVolume","parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"post":{"tags":["core_v1"],"description":"create a PersistentVolume","operationId":"createCoreV1PersistentVolume","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"delete":{"tags":["core_v1"],"description":"delete collection of PersistentVolume","operationId":"deleteCoreV1CollectionPersistentVolume","parameters":[{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"parameters":[{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/persistentvolumes/{name}":{"get":{"tags":["core_v1"],"description":"read the specified PersistentVolume","operationId":"readCoreV1PersistentVolume","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"put":{"tags":["core_v1"],"description":"replace the specified PersistentVolume","operationId":"replaceCoreV1PersistentVolume","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"delete":{"tags":["core_v1"],"description":"delete a PersistentVolume","operationId":"deleteCoreV1PersistentVolume","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"patch":{"tags":["core_v1"],"description":"partially update the specified PersistentVolume","operationId":"patchCoreV1PersistentVolume","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"parameters":[{"name":"name","in":"path","description":"name of the PersistentVolume","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/persistentvolumes/{name}/status":{"get":{"tags":["core_v1"],"description":"read status of the specified PersistentVolume","operationId":"readCoreV1PersistentVolumeStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"put":{"tags":["core_v1"],"description":"replace status of the specified PersistentVolume","operationId":"replaceCoreV1PersistentVolumeStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"patch":{"tags":["core_v1"],"description":"partially update status of the specified PersistentVolume","operationId":"patchCoreV1PersistentVolumeStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"parameters":[{"name":"name","in":"path","description":"name of the PersistentVolume","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/pods":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Pod","operationId":"listCoreV1PodForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/podtemplates":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind PodTemplate","operationId":"listCoreV1PodTemplateForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/replicationcontrollers":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind ReplicationController","operationId":"listCoreV1ReplicationControllerForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/resourcequotas":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind ResourceQuota","operationId":"listCoreV1ResourceQuotaForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/secrets":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Secret","operationId":"listCoreV1SecretForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/serviceaccounts":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind ServiceAccount","operationId":"listCoreV1ServiceAccountForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/services":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Service","operationId":"listCoreV1ServiceForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/configmaps":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of ConfigMap. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1ConfigMapListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/endpoints":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Endpoints. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1EndpointsListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/events":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Event. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1EventListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/limitranges":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of LimitRange. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1LimitRangeListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Namespace. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespaceList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/configmaps":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of ConfigMap. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedConfigMapList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/configmaps/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedConfigMap","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ConfigMap"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the ConfigMap","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/endpoints":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Endpoints. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedEndpointsList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/endpoints/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedEndpoints","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Endpoints"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Endpoints","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/events":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Event. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedEventList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/events/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedEvent","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Event"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Event","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/limitranges":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of LimitRange. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedLimitRangeList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/limitranges/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedLimitRange","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"LimitRange"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the LimitRange","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/persistentvolumeclaims":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of PersistentVolumeClaim. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedPersistentVolumeClaimList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/persistentvolumeclaims/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedPersistentVolumeClaim","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the PersistentVolumeClaim","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/pods":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Pod. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedPodList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/pods/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedPod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Pod","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/podtemplates":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of PodTemplate. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedPodTemplateList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/podtemplates/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedPodTemplate","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the PodTemplate","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/replicationcontrollers":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of ReplicationController. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedReplicationControllerList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/replicationcontrollers/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedReplicationController","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the ReplicationController","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/resourcequotas":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of ResourceQuota. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedResourceQuotaList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/resourcequotas/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedResourceQuota","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the ResourceQuota","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/secrets":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Secret. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedSecretList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/secrets/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedSecret","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Secret","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/serviceaccounts":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of ServiceAccount. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedServiceAccountList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/serviceaccounts/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedServiceAccount","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the ServiceAccount","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/services":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Service. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedServiceList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/services/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedService","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Service","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1Namespace","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Namespace"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Namespace","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/nodes":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Node. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NodeList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/nodes/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1Node","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Node"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Node","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/persistentvolumeclaims":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of PersistentVolumeClaim. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1PersistentVolumeClaimListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolumeClaim"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/persistentvolumes":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of PersistentVolume. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1PersistentVolumeList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/persistentvolumes/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1PersistentVolume","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PersistentVolume"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the PersistentVolume","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/pods":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Pod. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1PodListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Pod"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/podtemplates":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of PodTemplate. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1PodTemplateListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"PodTemplate"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/replicationcontrollers":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of ReplicationController. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1ReplicationControllerListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ReplicationController"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/resourcequotas":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of ResourceQuota. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1ResourceQuotaListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ResourceQuota"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/secrets":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Secret. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1SecretListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Secret"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/serviceaccounts":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of ServiceAccount. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1ServiceAccountListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"ServiceAccount"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/services":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Service. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1ServiceListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"","version":"v1","kind":"Service"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]}},"components":{"schemas":{"io.k8s.api.authentication.v1.BoundObjectReference":{"description":"BoundObjectReference is a reference to an object that a token is bound to.","type":"object","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. Valid kinds are 'Pod' and 'Secret'.","type":"string"},"name":{"description":"Name of the referent.","type":"string"},"uid":{"description":"UID of the referent.","type":"string"}}},"io.k8s.api.authentication.v1.TokenRequest":{"description":"TokenRequest requests a token for a given service account.","type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"description":"Spec holds information about the request being evaluated","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequestSpec"}]},"status":{"description":"Status is filled in by the server and indicates whether the token can be authenticated.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequestStatus"}]}},"x-kubernetes-group-version-kind":[{"group":"authentication.k8s.io","kind":"TokenRequest","version":"v1"}]},"io.k8s.api.authentication.v1.TokenRequestSpec":{"description":"TokenRequestSpec contains client provided parameters of a token request.","type":"object","required":["audiences"],"properties":{"audiences":{"description":"Audiences are the intendend audiences of the token. A recipient of a token must identitfy 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.","type":"array","items":{"type":"string","default":""}},"boundObjectRef":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.BoundObjectReference"}]},"expirationSeconds":{"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.","type":"integer","format":"int64"}}},"io.k8s.api.authentication.v1.TokenRequestStatus":{"description":"TokenRequestStatus is the result of a token request.","type":"object","required":["token","expirationTimestamp"],"properties":{"expirationTimestamp":{"description":"ExpirationTimestamp is the time of expiration of the returned token.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"token":{"description":"Token is the opaque bearer token.","type":"string","default":""}}},"io.k8s.api.autoscaling.v1.Scale":{"description":"Scale represents a scaling request for a resource.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"description":"defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.ScaleSpec"}]},"status":{"description":"current status of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. Read-only.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.ScaleStatus"}]}},"x-kubernetes-group-version-kind":[{"group":"autoscaling","kind":"Scale","version":"v1"}]},"io.k8s.api.autoscaling.v1.ScaleSpec":{"description":"ScaleSpec describes the attributes of a scale subresource.","type":"object","properties":{"replicas":{"description":"desired number of instances for the scaled object.","type":"integer","format":"int32"}}},"io.k8s.api.autoscaling.v1.ScaleStatus":{"description":"ScaleStatus represents the current status of a scale subresource.","type":"object","required":["replicas"],"properties":{"replicas":{"description":"actual number of observed instances of the scaled object.","type":"integer","format":"int32","default":0},"selector":{"description":"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: http://kubernetes.io/docs/user-guide/labels#label-selectors","type":"string"}}},"io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource":{"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.","type":"object","required":["volumeID"],"properties":{"fsType":{"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","type":"string"},"partition":{"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).","type":"integer","format":"int32"},"readOnly":{"description":"readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore","type":"boolean"},"volumeID":{"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","type":"string","default":""}}},"io.k8s.api.core.v1.Affinity":{"description":"Affinity is a group of affinity scheduling rules.","type":"object","properties":{"nodeAffinity":{"description":"Describes node affinity scheduling rules for the pod.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeAffinity"}]},"podAffinity":{"description":"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinity"}]},"podAntiAffinity":{"description":"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAntiAffinity"}]}}},"io.k8s.api.core.v1.AttachedVolume":{"description":"AttachedVolume describes a volume attached to a node","type":"object","required":["name","devicePath"],"properties":{"devicePath":{"description":"DevicePath represents the device path where the volume should be available","type":"string","default":""},"name":{"description":"Name of the attached volume","type":"string","default":""}}},"io.k8s.api.core.v1.AzureDiskVolumeSource":{"description":"AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.","type":"object","required":["diskName","diskURI"],"properties":{"cachingMode":{"description":"cachingMode is the Host Caching mode: None, Read Only, Read Write.","type":"string"},"diskName":{"description":"diskName is the Name of the data disk in the blob storage","type":"string","default":""},"diskURI":{"description":"diskURI is the URI of data disk in the blob storage","type":"string","default":""},"fsType":{"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.","type":"string"},"kind":{"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","type":"string"},"readOnly":{"description":"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"}}},"io.k8s.api.core.v1.AzureFilePersistentVolumeSource":{"description":"AzureFile represents an Azure File Service mount on the host and bind mount to the pod.","type":"object","required":["secretName","shareName"],"properties":{"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretName":{"description":"secretName is the name of secret that contains Azure Storage Account Name and Key","type":"string","default":""},"secretNamespace":{"description":"secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod","type":"string"},"shareName":{"description":"shareName is the azure Share Name","type":"string","default":""}}},"io.k8s.api.core.v1.AzureFileVolumeSource":{"description":"AzureFile represents an Azure File Service mount on the host and bind mount to the pod.","type":"object","required":["secretName","shareName"],"properties":{"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretName":{"description":"secretName is the name of secret that contains Azure Storage Account Name and Key","type":"string","default":""},"shareName":{"description":"shareName is the azure share Name","type":"string","default":""}}},"io.k8s.api.core.v1.Binding":{"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.","type":"object","required":["target"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"target":{"description":"The target object that you want to bind to the standard object.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectReference"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Binding","version":"v1"}]},"io.k8s.api.core.v1.CSIPersistentVolumeSource":{"description":"Represents storage that is managed by an external CSI volume driver (Beta feature)","type":"object","required":["driver","volumeHandle"],"properties":{"controllerExpandSecretRef":{"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 is an alpha field and requires enabling ExpandCSIVolumes feature gate. 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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"}]},"controllerPublishSecretRef":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"}]},"driver":{"description":"driver is the name of the driver to use for this volume. Required.","type":"string","default":""},"fsType":{"description":"fsType to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\".","type":"string"},"nodePublishSecretRef":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"}]},"nodeStageSecretRef":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"}]},"readOnly":{"description":"readOnly value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).","type":"boolean"},"volumeAttributes":{"description":"volumeAttributes of the volume to publish.","type":"object","additionalProperties":{"type":"string","default":""}},"volumeHandle":{"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.","type":"string","default":""}}},"io.k8s.api.core.v1.CSIVolumeSource":{"description":"Represents a source location of a volume to mount, managed by an external CSI driver","type":"object","required":["driver"],"properties":{"driver":{"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.","type":"string","default":""},"fsType":{"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.","type":"string"},"nodePublishSecretRef":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}]},"readOnly":{"description":"readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).","type":"boolean"},"volumeAttributes":{"description":"volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.","type":"object","additionalProperties":{"type":"string","default":""}}}},"io.k8s.api.core.v1.Capabilities":{"description":"Adds and removes POSIX capabilities from running containers.","type":"object","properties":{"add":{"description":"Added capabilities","type":"array","items":{"type":"string","default":""}},"drop":{"description":"Removed capabilities","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.CephFSPersistentVolumeSource":{"description":"Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["monitors"],"properties":{"monitors":{"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","type":"array","items":{"type":"string","default":""}},"path":{"description":"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /","type":"string"},"readOnly":{"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","type":"boolean"},"secretFile":{"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","type":"string"},"secretRef":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"}]},"user":{"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","type":"string"}}},"io.k8s.api.core.v1.CephFSVolumeSource":{"description":"Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["monitors"],"properties":{"monitors":{"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","type":"array","items":{"type":"string","default":""}},"path":{"description":"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /","type":"string"},"readOnly":{"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","type":"boolean"},"secretFile":{"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","type":"string"},"secretRef":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}]},"user":{"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","type":"string"}}},"io.k8s.api.core.v1.CinderPersistentVolumeSource":{"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.","type":"object","required":["volumeID"],"properties":{"fsType":{"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","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"description":"secretRef is Optional: points to a secret object containing parameters used to connect to OpenStack.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"}]},"volumeID":{"description":"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","type":"string","default":""}}},"io.k8s.api.core.v1.CinderVolumeSource":{"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.","type":"object","required":["volumeID"],"properties":{"fsType":{"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","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"description":"secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}]},"volumeID":{"description":"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","type":"string","default":""}}},"io.k8s.api.core.v1.ClientIPConfig":{"description":"ClientIPConfig represents the configurations of Client IP based session affinity.","type":"object","properties":{"timeoutSeconds":{"description":"timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be \u003e0 \u0026\u0026 \u003c=86400(for 1 day) if ServiceAffinity == \"ClientIP\". Default value is 10800(for 3 hours).","type":"integer","format":"int32"}}},"io.k8s.api.core.v1.ComponentCondition":{"description":"Information about the condition of a component.","type":"object","required":["type","status"],"properties":{"error":{"description":"Condition error code for a component. For example, a health check error code.","type":"string"},"message":{"description":"Message about the condition for a component. For example, information about a health check.","type":"string"},"status":{"description":"Status of the condition for a component. Valid values for \"Healthy\": \"True\", \"False\", or \"Unknown\".","type":"string","default":""},"type":{"description":"Type of condition for a component. Valid value: \"Healthy\"","type":"string","default":""}}},"io.k8s.api.core.v1.ComponentStatus":{"description":"ComponentStatus (and ComponentStatusList) holds the cluster validation info. Deprecated: This API is deprecated in v1.19+","type":"object","properties":{"apiVersion":{"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","type":"string"},"conditions":{"description":"List of component conditions observed","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentCondition"}]},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ComponentStatus","version":"v1"}]},"io.k8s.api.core.v1.ComponentStatusList":{"description":"Status of all the conditions for the component as a list of ComponentStatus objects. Deprecated: This API is deprecated in v1.19+","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of ComponentStatus objects.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentStatus"}]}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ComponentStatusList","version":"v1"}]},"io.k8s.api.core.v1.ConfigMap":{"description":"ConfigMap holds configuration data for pods to consume.","type":"object","properties":{"apiVersion":{"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","type":"string"},"binaryData":{"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.","type":"object","additionalProperties":{"type":"string","format":"byte"}},"data":{"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.","type":"object","additionalProperties":{"type":"string","default":""}},"immutable":{"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.","type":"boolean"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ConfigMap","version":"v1"}]},"io.k8s.api.core.v1.ConfigMapEnvSource":{"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.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the ConfigMap must be defined","type":"boolean"}}},"io.k8s.api.core.v1.ConfigMapKeySelector":{"description":"Selects a key from a ConfigMap.","type":"object","required":["key"],"properties":{"key":{"description":"The key to select.","type":"string","default":""},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the ConfigMap or its key must be defined","type":"boolean"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ConfigMapList":{"description":"ConfigMapList is a resource containing a list of ConfigMap objects.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"Items is the list of ConfigMaps.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}]}},"kind":{"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","type":"string"},"metadata":{"description":"More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ConfigMapList","version":"v1"}]},"io.k8s.api.core.v1.ConfigMapNodeConfigSource":{"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","type":"object","required":["namespace","name","kubeletConfigKey"],"properties":{"kubeletConfigKey":{"description":"KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.","type":"string","default":""},"name":{"description":"Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.","type":"string","default":""},"namespace":{"description":"Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.","type":"string","default":""},"resourceVersion":{"description":"ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.","type":"string"},"uid":{"description":"UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.","type":"string"}}},"io.k8s.api.core.v1.ConfigMapProjection":{"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.","type":"object","properties":{"items":{"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 '..'.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}]}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional specify whether the ConfigMap or its keys must be defined","type":"boolean"}}},"io.k8s.api.core.v1.ConfigMapVolumeSource":{"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.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"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 '..'.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}]}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional specify whether the ConfigMap or its keys must be defined","type":"boolean"}}},"io.k8s.api.core.v1.Container":{"description":"A single application container that you want to run within a pod.","type":"object","required":["name"],"properties":{"args":{"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","type":"array","items":{"type":"string","default":""}},"command":{"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","type":"array","items":{"type":"string","default":""}},"env":{"description":"List of environment variables to set in the container. Cannot be updated.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvVar"}]},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"envFrom":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvFromSource"}]}},"image":{"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.","type":"string"},"imagePullPolicy":{"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\nPossible enum values:\n - `\"Always\"` means that kubelet always attempts to pull the latest image. Container will fail If the pull fails.\n - `\"IfNotPresent\"` means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails.\n - `\"Never\"` means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present","type":"string","enum":["Always","IfNotPresent","Never"]},"lifecycle":{"description":"Actions that the management system should take in response to container lifecycle events. Cannot be updated.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Lifecycle"}]},"livenessProbe":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"}]},"name":{"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.","type":"string","default":""},"ports":{"description":"List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. 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. Cannot be updated.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerPort"}]},"x-kubernetes-list-map-keys":["containerPort","protocol"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"containerPort","x-kubernetes-patch-strategy":"merge"},"readinessProbe":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"}]},"resources":{"description":"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceRequirements"}]},"securityContext":{"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/","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecurityContext"}]},"startupProbe":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"}]},"stdin":{"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.","type":"boolean"},"stdinOnce":{"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","type":"boolean"},"terminationMessagePath":{"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.","type":"string"},"terminationMessagePolicy":{"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\nPossible enum values:\n - `\"FallbackToLogsOnError\"` will read the most recent contents of the container logs for the container status message when the container exits with an error and the terminationMessagePath has no contents.\n - `\"File\"` is the default behavior and will set the container status message to the contents of the container's terminationMessagePath when the container exits.","type":"string","enum":["FallbackToLogsOnError","File"]},"tty":{"description":"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.","type":"boolean"},"volumeDevices":{"description":"volumeDevices is the list of block devices to be used by the container.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeDevice"}]},"x-kubernetes-patch-merge-key":"devicePath","x-kubernetes-patch-strategy":"merge"},"volumeMounts":{"description":"Pod volumes to mount into the container's filesystem. Cannot be updated.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeMount"}]},"x-kubernetes-patch-merge-key":"mountPath","x-kubernetes-patch-strategy":"merge"},"workingDir":{"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.","type":"string"}}},"io.k8s.api.core.v1.ContainerImage":{"description":"Describe a container image","type":"object","properties":{"names":{"description":"Names by which this image is known. e.g. [\"k8s.gcr.io/hyperkube:v1.0.7\", \"dockerhub.io/google_containers/hyperkube:v1.0.7\"]","type":"array","items":{"type":"string","default":""}},"sizeBytes":{"description":"The size of the image in bytes.","type":"integer","format":"int64"}}},"io.k8s.api.core.v1.ContainerPort":{"description":"ContainerPort represents a network port in a single container.","type":"object","required":["containerPort"],"properties":{"containerPort":{"description":"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \u003c x \u003c 65536.","type":"integer","format":"int32","default":0},"hostIP":{"description":"What host IP to bind the external port to.","type":"string"},"hostPort":{"description":"Number of port to expose on the host. If specified, this must be a valid port number, 0 \u003c x \u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.","type":"integer","format":"int32"},"name":{"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.","type":"string"},"protocol":{"description":"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n\nPossible enum values:\n - `\"SCTP\"` is the SCTP protocol.\n - `\"TCP\"` is the TCP protocol.\n - `\"UDP\"` is the UDP protocol.","type":"string","default":"TCP","enum":["SCTP","TCP","UDP"]}}},"io.k8s.api.core.v1.ContainerState":{"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.","type":"object","properties":{"running":{"description":"Details about a running container","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerStateRunning"}]},"terminated":{"description":"Details about a terminated container","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerStateTerminated"}]},"waiting":{"description":"Details about a waiting container","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerStateWaiting"}]}}},"io.k8s.api.core.v1.ContainerStateRunning":{"description":"ContainerStateRunning is a running state of a container.","type":"object","properties":{"startedAt":{"description":"Time at which the container was last (re-)started","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]}}},"io.k8s.api.core.v1.ContainerStateTerminated":{"description":"ContainerStateTerminated is a terminated state of a container.","type":"object","required":["exitCode"],"properties":{"containerID":{"description":"Container's ID in the format '\u003ctype\u003e://\u003ccontainer_id\u003e'","type":"string"},"exitCode":{"description":"Exit status from the last termination of the container","type":"integer","format":"int32","default":0},"finishedAt":{"description":"Time at which the container last terminated","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"message":{"description":"Message regarding the last termination of the container","type":"string"},"reason":{"description":"(brief) reason from the last termination of the container","type":"string"},"signal":{"description":"Signal from the last termination of the container","type":"integer","format":"int32"},"startedAt":{"description":"Time at which previous execution of the container started","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]}}},"io.k8s.api.core.v1.ContainerStateWaiting":{"description":"ContainerStateWaiting is a waiting state of a container.","type":"object","properties":{"message":{"description":"Message regarding why the container is not yet running.","type":"string"},"reason":{"description":"(brief) reason the container is not yet running.","type":"string"}}},"io.k8s.api.core.v1.ContainerStatus":{"description":"ContainerStatus contains details for the current status of this container.","type":"object","required":["name","ready","restartCount","image","imageID"],"properties":{"containerID":{"description":"Container's ID in the format '\u003ctype\u003e://\u003ccontainer_id\u003e'.","type":"string"},"image":{"description":"The image the container is running. More info: https://kubernetes.io/docs/concepts/containers/images.","type":"string","default":""},"imageID":{"description":"ImageID of the container's image.","type":"string","default":""},"lastState":{"description":"Details about the container's last termination condition.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerState"}]},"name":{"description":"This must be a DNS_LABEL. Each container in a pod must have a unique name. Cannot be updated.","type":"string","default":""},"ready":{"description":"Specifies whether the container has passed its readiness probe.","type":"boolean","default":false},"restartCount":{"description":"The number of times the container has been restarted.","type":"integer","format":"int32","default":0},"started":{"description":"Specifies whether the container has 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. Is always true when no startupProbe is defined.","type":"boolean"},"state":{"description":"Details about the container's current condition.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerState"}]}}},"io.k8s.api.core.v1.DaemonEndpoint":{"description":"DaemonEndpoint contains information about a single Daemon endpoint.","type":"object","required":["Port"],"properties":{"Port":{"description":"Port number of the given endpoint.","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.DownwardAPIProjection":{"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.","type":"object","properties":{"items":{"description":"Items is a list of DownwardAPIVolume file","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeFile"}]}}}},"io.k8s.api.core.v1.DownwardAPIVolumeFile":{"description":"DownwardAPIVolumeFile represents information to create the file containing the pod field","type":"object","required":["path"],"properties":{"fieldRef":{"description":"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectFieldSelector"}]},"mode":{"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.","type":"integer","format":"int32"},"path":{"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 '..'","type":"string","default":""},"resourceFieldRef":{"description":"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceFieldSelector"}]}}},"io.k8s.api.core.v1.DownwardAPIVolumeSource":{"description":"DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"description":"Items is a list of downward API volume file","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeFile"}]}}}},"io.k8s.api.core.v1.EmptyDirVolumeSource":{"description":"Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.","type":"object","properties":{"medium":{"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","type":"string"},"sizeLimit":{"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: http://kubernetes.io/docs/user-guide/volumes#emptydir","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}}},"io.k8s.api.core.v1.EndpointAddress":{"description":"EndpointAddress is a tuple that describes single IP address.","type":"object","required":["ip"],"properties":{"hostname":{"description":"The Hostname of this endpoint","type":"string"},"ip":{"description":"The IP of this endpoint. May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), or link-local multicast ((224.0.0.0/24). IPv6 is also accepted but not fully supported on all platforms. Also, certain kubernetes components, like kube-proxy, are not IPv6 ready.","type":"string","default":""},"nodeName":{"description":"Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.","type":"string"},"targetRef":{"description":"Reference to object providing the endpoint.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectReference"}]}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.EndpointPort":{"description":"EndpointPort is a tuple that describes a single port.","type":"object","required":["port"],"properties":{"appProtocol":{"description":"The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol.","type":"string"},"name":{"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.","type":"string"},"port":{"description":"The port number of the endpoint.","type":"integer","format":"int32","default":0},"protocol":{"description":"The IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP.\n\nPossible enum values:\n - `\"SCTP\"` is the SCTP protocol.\n - `\"TCP\"` is the TCP protocol.\n - `\"UDP\"` is the UDP protocol.","type":"string","enum":["SCTP","TCP","UDP"]}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.EndpointSubset":{"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 Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n }\nThe resulting set of endpoints can be viewed 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 ]","type":"object","properties":{"addresses":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointAddress"}]}},"notReadyAddresses":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointAddress"}]}},"ports":{"description":"Port numbers available on the related IP addresses.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointPort"}]}}}},"io.k8s.api.core.v1.Endpoints":{"description":"Endpoints is a collection of endpoints that implement the actual service. Example:\n Name: \"mysvc\",\n Subsets: [\n {\n Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n },\n {\n Addresses: [{\"ip\": \"10.10.3.3\"}],\n Ports: [{\"name\": \"a\", \"port\": 93}, {\"name\": \"b\", \"port\": 76}]\n },\n ]","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"subsets":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointSubset"}]}}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Endpoints","version":"v1"}]},"io.k8s.api.core.v1.EndpointsList":{"description":"EndpointsList is a list of endpoints.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of endpoints.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}]}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"EndpointsList","version":"v1"}]},"io.k8s.api.core.v1.EnvFromSource":{"description":"EnvFromSource represents the source of a set of ConfigMaps","type":"object","properties":{"configMapRef":{"description":"The ConfigMap to select from","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapEnvSource"}]},"prefix":{"description":"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.","type":"string"},"secretRef":{"description":"The Secret to select from","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretEnvSource"}]}}},"io.k8s.api.core.v1.EnvVar":{"description":"EnvVar represents an environment variable present in a Container.","type":"object","required":["name"],"properties":{"name":{"description":"Name of the environment variable. Must be a C_IDENTIFIER.","type":"string","default":""},"value":{"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 \"\".","type":"string"},"valueFrom":{"description":"Source for the environment variable's value. Cannot be used if value is not empty.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvVarSource"}]}}},"io.k8s.api.core.v1.EnvVarSource":{"description":"EnvVarSource represents a source for the value of an EnvVar.","type":"object","properties":{"configMapKeyRef":{"description":"Selects a key of a ConfigMap.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapKeySelector"}]},"fieldRef":{"description":"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\u003cKEY\u003e']`, `metadata.annotations['\u003cKEY\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectFieldSelector"}]},"resourceFieldRef":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceFieldSelector"}]},"secretKeyRef":{"description":"Selects a key of a secret in the pod's namespace","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretKeySelector"}]}}},"io.k8s.api.core.v1.EphemeralContainer":{"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\nThis is a beta feature available on clusters that haven't disabled the EphemeralContainers feature gate.","type":"object","required":["name"],"properties":{"args":{"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","type":"array","items":{"type":"string","default":""}},"command":{"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","type":"array","items":{"type":"string","default":""}},"env":{"description":"List of environment variables to set in the container. Cannot be updated.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvVar"}]},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"envFrom":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvFromSource"}]}},"image":{"description":"Container image name. More info: https://kubernetes.io/docs/concepts/containers/images","type":"string"},"imagePullPolicy":{"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\nPossible enum values:\n - `\"Always\"` means that kubelet always attempts to pull the latest image. Container will fail If the pull fails.\n - `\"IfNotPresent\"` means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails.\n - `\"Never\"` means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present","type":"string","enum":["Always","IfNotPresent","Never"]},"lifecycle":{"description":"Lifecycle is not allowed for ephemeral containers.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Lifecycle"}]},"livenessProbe":{"description":"Probes are not allowed for ephemeral containers.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"}]},"name":{"description":"Name of the ephemeral container specified as a DNS_LABEL. This name must be unique among all containers, init containers and ephemeral containers.","type":"string","default":""},"ports":{"description":"Ports are not allowed for ephemeral containers.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerPort"}]},"x-kubernetes-list-map-keys":["containerPort","protocol"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"containerPort","x-kubernetes-patch-strategy":"merge"},"readinessProbe":{"description":"Probes are not allowed for ephemeral containers.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"}]},"resources":{"description":"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources already allocated to the pod.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceRequirements"}]},"securityContext":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecurityContext"}]},"startupProbe":{"description":"Probes are not allowed for ephemeral containers.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"}]},"stdin":{"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.","type":"boolean"},"stdinOnce":{"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","type":"boolean"},"targetContainerName":{"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.","type":"string"},"terminationMessagePath":{"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.","type":"string"},"terminationMessagePolicy":{"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\nPossible enum values:\n - `\"FallbackToLogsOnError\"` will read the most recent contents of the container logs for the container status message when the container exits with an error and the terminationMessagePath has no contents.\n - `\"File\"` is the default behavior and will set the container status message to the contents of the container's terminationMessagePath when the container exits.","type":"string","enum":["FallbackToLogsOnError","File"]},"tty":{"description":"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.","type":"boolean"},"volumeDevices":{"description":"volumeDevices is the list of block devices to be used by the container.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeDevice"}]},"x-kubernetes-patch-merge-key":"devicePath","x-kubernetes-patch-strategy":"merge"},"volumeMounts":{"description":"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers. Cannot be updated.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeMount"}]},"x-kubernetes-patch-merge-key":"mountPath","x-kubernetes-patch-strategy":"merge"},"workingDir":{"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.","type":"string"}}},"io.k8s.api.core.v1.EphemeralVolumeSource":{"description":"Represents an ephemeral volume that is handled by a normal storage driver.","type":"object","properties":{"volumeClaimTemplate":{"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 `\u003cpod name\u003e-\u003cvolume name\u003e` where `\u003cvolume name\u003e` 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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimTemplate"}]}}},"io.k8s.api.core.v1.Event":{"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.","type":"object","required":["metadata","involvedObject"],"properties":{"action":{"description":"What action was taken/failed regarding to the Regarding object.","type":"string"},"apiVersion":{"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","type":"string"},"count":{"description":"The number of times this event has occurred.","type":"integer","format":"int32"},"eventTime":{"description":"Time when this Event was first observed.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime"}]},"firstTimestamp":{"description":"The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"involvedObject":{"description":"The object that this event is about.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectReference"}]},"kind":{"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","type":"string"},"lastTimestamp":{"description":"The time at which the most recent occurrence of this event was recorded.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"reason":{"description":"This should be a short, machine understandable string that gives the reason for the transition into the object's current status.","type":"string"},"related":{"description":"Optional secondary object for more complex actions.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectReference"}]},"reportingComponent":{"description":"Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.","type":"string","default":""},"reportingInstance":{"description":"ID of the controller instance, e.g. `kubelet-xyzf`.","type":"string","default":""},"series":{"description":"Data about the Event series this event represents or nil if it's a singleton Event.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventSeries"}]},"source":{"description":"The component reporting this event. Should be a short machine understandable string.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventSource"}]},"type":{"description":"Type of this event (Normal, Warning), new types could be added in the future","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Event","version":"v1"}]},"io.k8s.api.core.v1.EventList":{"description":"EventList is a list of events.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of events","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}]}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"EventList","version":"v1"}]},"io.k8s.api.core.v1.EventSeries":{"description":"EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time.","type":"object","properties":{"count":{"description":"Number of occurrences in this series up to the last heartbeat time","type":"integer","format":"int32"},"lastObservedTime":{"description":"Time of the last occurrence observed","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime"}]}}},"io.k8s.api.core.v1.EventSource":{"description":"EventSource contains information for an event.","type":"object","properties":{"component":{"description":"Component from which the event is generated.","type":"string"},"host":{"description":"Node name on which the event is generated.","type":"string"}}},"io.k8s.api.core.v1.ExecAction":{"description":"ExecAction describes a \"run in container\" action.","type":"object","properties":{"command":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.FCVolumeSource":{"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.","type":"object","properties":{"fsType":{"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.","type":"string"},"lun":{"description":"lun is Optional: FC target lun number","type":"integer","format":"int32"},"readOnly":{"description":"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"targetWWNs":{"description":"targetWWNs is Optional: FC target worldwide names (WWNs)","type":"array","items":{"type":"string","default":""}},"wwids":{"description":"wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.FlexPersistentVolumeSource":{"description":"FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.","type":"object","required":["driver"],"properties":{"driver":{"description":"driver is the name of the driver to use for this volume.","type":"string","default":""},"fsType":{"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.","type":"string"},"options":{"description":"options is Optional: this field holds extra command options if any.","type":"object","additionalProperties":{"type":"string","default":""}},"readOnly":{"description":"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"}]}}},"io.k8s.api.core.v1.FlexVolumeSource":{"description":"FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.","type":"object","required":["driver"],"properties":{"driver":{"description":"driver is the name of the driver to use for this volume.","type":"string","default":""},"fsType":{"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.","type":"string"},"options":{"description":"options is Optional: this field holds extra command options if any.","type":"object","additionalProperties":{"type":"string","default":""}},"readOnly":{"description":"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}]}}},"io.k8s.api.core.v1.FlockerVolumeSource":{"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.","type":"object","properties":{"datasetName":{"description":"datasetName is Name of the dataset stored as metadata -\u003e name on the dataset for Flocker should be considered as deprecated","type":"string"},"datasetUUID":{"description":"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset","type":"string"}}},"io.k8s.api.core.v1.GCEPersistentDiskVolumeSource":{"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.","type":"object","required":["pdName"],"properties":{"fsType":{"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","type":"string"},"partition":{"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","type":"integer","format":"int32"},"pdName":{"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","type":"string","default":""},"readOnly":{"description":"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk","type":"boolean"}}},"io.k8s.api.core.v1.GRPCAction":{"type":"object","required":["port"],"properties":{"port":{"description":"Port number of the gRPC service. Number must be in the range 1 to 65535.","type":"integer","format":"int32","default":0},"service":{"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.","type":"string","default":""}}},"io.k8s.api.core.v1.GitRepoVolumeSource":{"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.","type":"object","required":["repository"],"properties":{"directory":{"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.","type":"string"},"repository":{"description":"repository is the URL","type":"string","default":""},"revision":{"description":"revision is the commit hash for the specified revision.","type":"string"}}},"io.k8s.api.core.v1.GlusterfsPersistentVolumeSource":{"description":"Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["endpoints","path"],"properties":{"endpoints":{"description":"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"endpointsNamespace":{"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","type":"string"},"path":{"description":"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"readOnly":{"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","type":"boolean"}}},"io.k8s.api.core.v1.GlusterfsVolumeSource":{"description":"Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["endpoints","path"],"properties":{"endpoints":{"description":"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"path":{"description":"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"readOnly":{"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","type":"boolean"}}},"io.k8s.api.core.v1.HTTPGetAction":{"description":"HTTPGetAction describes an action based on HTTP Get requests.","type":"object","required":["port"],"properties":{"host":{"description":"Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.","type":"string"},"httpHeaders":{"description":"Custom headers to set in the request. HTTP allows repeated headers.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.HTTPHeader"}]}},"path":{"description":"Path to access on the HTTP server.","type":"string"},"port":{"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.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString"}]},"scheme":{"description":"Scheme to use for connecting to the host. Defaults to HTTP.\n\nPossible enum values:\n - `\"HTTP\"` means that the scheme used will be http://\n - `\"HTTPS\"` means that the scheme used will be https://","type":"string","enum":["HTTP","HTTPS"]}}},"io.k8s.api.core.v1.HTTPHeader":{"description":"HTTPHeader describes a custom header to be used in HTTP probes","type":"object","required":["name","value"],"properties":{"name":{"description":"The header field name","type":"string","default":""},"value":{"description":"The header field value","type":"string","default":""}}},"io.k8s.api.core.v1.HostAlias":{"description":"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.","type":"object","properties":{"hostnames":{"description":"Hostnames for the above IP address.","type":"array","items":{"type":"string","default":""}},"ip":{"description":"IP address of the host file entry.","type":"string"}}},"io.k8s.api.core.v1.HostPathVolumeSource":{"description":"Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.","type":"object","required":["path"],"properties":{"path":{"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","type":"string","default":""},"type":{"description":"type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath","type":"string"}}},"io.k8s.api.core.v1.ISCSIPersistentVolumeSource":{"description":"ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.","type":"object","required":["targetPortal","iqn","lun"],"properties":{"chapAuthDiscovery":{"description":"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication","type":"boolean"},"chapAuthSession":{"description":"chapAuthSession defines whether support iSCSI Session CHAP authentication","type":"boolean"},"fsType":{"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","type":"string"},"initiatorName":{"description":"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \u003ctarget portal\u003e:\u003cvolume name\u003e will be created for the connection.","type":"string"},"iqn":{"description":"iqn is Target iSCSI Qualified Name.","type":"string","default":""},"iscsiInterface":{"description":"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).","type":"string"},"lun":{"description":"lun is iSCSI Target Lun number.","type":"integer","format":"int32","default":0},"portals":{"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).","type":"array","items":{"type":"string","default":""}},"readOnly":{"description":"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.","type":"boolean"},"secretRef":{"description":"secretRef is the CHAP Secret for iSCSI target and initiator authentication","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"}]},"targetPortal":{"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).","type":"string","default":""}}},"io.k8s.api.core.v1.ISCSIVolumeSource":{"description":"Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.","type":"object","required":["targetPortal","iqn","lun"],"properties":{"chapAuthDiscovery":{"description":"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication","type":"boolean"},"chapAuthSession":{"description":"chapAuthSession defines whether support iSCSI Session CHAP authentication","type":"boolean"},"fsType":{"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","type":"string"},"initiatorName":{"description":"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \u003ctarget portal\u003e:\u003cvolume name\u003e will be created for the connection.","type":"string"},"iqn":{"description":"iqn is the target iSCSI Qualified Name.","type":"string","default":""},"iscsiInterface":{"description":"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).","type":"string"},"lun":{"description":"lun represents iSCSI Target Lun number.","type":"integer","format":"int32","default":0},"portals":{"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).","type":"array","items":{"type":"string","default":""}},"readOnly":{"description":"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.","type":"boolean"},"secretRef":{"description":"secretRef is the CHAP Secret for iSCSI target and initiator authentication","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}]},"targetPortal":{"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).","type":"string","default":""}}},"io.k8s.api.core.v1.KeyToPath":{"description":"Maps a string key to a path within a volume.","type":"object","required":["key","path"],"properties":{"key":{"description":"key is the key to project.","type":"string","default":""},"mode":{"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.","type":"integer","format":"int32"},"path":{"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 '..'.","type":"string","default":""}}},"io.k8s.api.core.v1.Lifecycle":{"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.","type":"object","properties":{"postStart":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LifecycleHandler"}]},"preStop":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LifecycleHandler"}]}}},"io.k8s.api.core.v1.LifecycleHandler":{"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.","type":"object","properties":{"exec":{"description":"Exec specifies the action to take.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ExecAction"}]},"httpGet":{"description":"HTTPGet specifies the http request to perform.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.HTTPGetAction"}]},"tcpSocket":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.TCPSocketAction"}]}}},"io.k8s.api.core.v1.LimitRange":{"description":"LimitRange sets resource usage limits for each kind of resource in a Namespace.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"description":"Spec defines the limits enforced. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeSpec"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"LimitRange","version":"v1"}]},"io.k8s.api.core.v1.LimitRangeItem":{"description":"LimitRangeItem defines a min/max usage limit for any resource that matches on kind.","type":"object","required":["type"],"properties":{"default":{"description":"Default resource requirement limit value by resource name if resource limit is omitted.","type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}},"defaultRequest":{"description":"DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.","type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}},"max":{"description":"Max usage constraints on this kind by resource name.","type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}},"maxLimitRequestRatio":{"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.","type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}},"min":{"description":"Min usage constraints on this kind by resource name.","type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}},"type":{"description":"Type of resource that this limit applies to.","type":"string","default":""}}},"io.k8s.api.core.v1.LimitRangeList":{"description":"LimitRangeList is a list of LimitRange items.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"Items is a list of LimitRange objects. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}]}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"LimitRangeList","version":"v1"}]},"io.k8s.api.core.v1.LimitRangeSpec":{"description":"LimitRangeSpec defines a min/max usage limit for resources that match on kind.","type":"object","required":["limits"],"properties":{"limits":{"description":"Limits is the list of LimitRangeItem objects that are enforced.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeItem"}]}}}},"io.k8s.api.core.v1.LoadBalancerIngress":{"description":"LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.","type":"object","properties":{"hostname":{"description":"Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers)","type":"string"},"ip":{"description":"IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)","type":"string"},"ports":{"description":"Ports is a list of records of service ports If used, every port defined in the service should have an entry in it","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PortStatus"}]},"x-kubernetes-list-type":"atomic"}}},"io.k8s.api.core.v1.LoadBalancerStatus":{"description":"LoadBalancerStatus represents the status of a load-balancer.","type":"object","properties":{"ingress":{"description":"Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LoadBalancerIngress"}]}}}},"io.k8s.api.core.v1.LocalObjectReference":{"description":"LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.LocalVolumeSource":{"description":"Local represents directly-attached storage with node affinity (Beta feature)","type":"object","required":["path"],"properties":{"fsType":{"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.","type":"string"},"path":{"description":"path of the full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).","type":"string","default":""}}},"io.k8s.api.core.v1.NFSVolumeSource":{"description":"Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.","type":"object","required":["server","path"],"properties":{"path":{"description":"path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs","type":"string","default":""},"readOnly":{"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","type":"boolean"},"server":{"description":"server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs","type":"string","default":""}}},"io.k8s.api.core.v1.Namespace":{"description":"Namespace provides a scope for Names. Use of multiple namespaces is optional.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NamespaceSpec"}]},"status":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NamespaceStatus"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Namespace","version":"v1"}]},"io.k8s.api.core.v1.NamespaceCondition":{"description":"NamespaceCondition contains details about state of namespace.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"message":{"type":"string"},"reason":{"type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string","default":""},"type":{"description":"Type of namespace controller condition.","type":"string","default":""}}},"io.k8s.api.core.v1.NamespaceList":{"description":"NamespaceList is a list of Namespaces.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"Items is the list of Namespace objects in the list. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}]}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"NamespaceList","version":"v1"}]},"io.k8s.api.core.v1.NamespaceSpec":{"description":"NamespaceSpec describes the attributes on a Namespace.","type":"object","properties":{"finalizers":{"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/","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.NamespaceStatus":{"description":"NamespaceStatus is information about the current status of a Namespace.","type":"object","properties":{"conditions":{"description":"Represents the latest available observations of a namespace's current state.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NamespaceCondition"}]},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"phase":{"description":"Phase is the current lifecycle phase of the namespace. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/\n\nPossible enum values:\n - `\"Active\"` means the namespace is available for use in the system\n - `\"Terminating\"` means the namespace is undergoing graceful termination","type":"string","enum":["Active","Terminating"]}}},"io.k8s.api.core.v1.Node":{"description":"Node is a worker node in Kubernetes. Each node will have a unique identifier in the cache (i.e. in etcd).","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"description":"Spec defines the behavior of a node. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSpec"}]},"status":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeStatus"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Node","version":"v1"}]},"io.k8s.api.core.v1.NodeAddress":{"description":"NodeAddress contains information for the node's address.","type":"object","required":["type","address"],"properties":{"address":{"description":"The node address.","type":"string","default":""},"type":{"description":"Node address type, one of Hostname, ExternalIP or InternalIP.","type":"string","default":""}}},"io.k8s.api.core.v1.NodeAffinity":{"description":"Node affinity is a group of node affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PreferredSchedulingTerm"}]}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelector"}]}}},"io.k8s.api.core.v1.NodeCondition":{"description":"NodeCondition contains condition information for a node.","type":"object","required":["type","status"],"properties":{"lastHeartbeatTime":{"description":"Last time we got an update on a given condition.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"lastTransitionTime":{"description":"Last time the condition transit from one status to another.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"message":{"description":"Human readable message indicating details about last transition.","type":"string"},"reason":{"description":"(brief) reason for the condition's last transition.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string","default":""},"type":{"description":"Type of node condition.","type":"string","default":""}}},"io.k8s.api.core.v1.NodeConfigSource":{"description":"NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil. This API is deprecated since 1.22","type":"object","properties":{"configMap":{"description":"ConfigMap is a reference to a Node's ConfigMap","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapNodeConfigSource"}]}}},"io.k8s.api.core.v1.NodeConfigStatus":{"description":"NodeConfigStatus describes the status of the config assigned by Node.Spec.ConfigSource.","type":"object","properties":{"active":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeConfigSource"}]},"assigned":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeConfigSource"}]},"error":{"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.","type":"string"},"lastKnownGood":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeConfigSource"}]}}},"io.k8s.api.core.v1.NodeDaemonEndpoints":{"description":"NodeDaemonEndpoints lists ports opened by daemons running on the Node.","type":"object","properties":{"kubeletEndpoint":{"description":"Endpoint on which Kubelet is listening.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.DaemonEndpoint"}]}}},"io.k8s.api.core.v1.NodeList":{"description":"NodeList is the whole list of all Nodes which have been registered with master.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of nodes","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}]}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"NodeList","version":"v1"}]},"io.k8s.api.core.v1.NodeSelector":{"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.","type":"object","required":["nodeSelectorTerms"],"properties":{"nodeSelectorTerms":{"description":"Required. A list of node selector terms. The terms are ORed.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorTerm"}]}}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.NodeSelectorRequirement":{"description":"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.","type":"object","required":["key","operator"],"properties":{"key":{"description":"The label key that the selector applies to.","type":"string","default":""},"operator":{"description":"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n\nPossible enum values:\n - `\"DoesNotExist\"`\n - `\"Exists\"`\n - `\"Gt\"`\n - `\"In\"`\n - `\"Lt\"`\n - `\"NotIn\"`","type":"string","default":"","enum":["DoesNotExist","Exists","Gt","In","Lt","NotIn"]},"values":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.NodeSelectorTerm":{"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.","type":"object","properties":{"matchExpressions":{"description":"A list of node selector requirements by node's labels.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorRequirement"}]}},"matchFields":{"description":"A list of node selector requirements by node's fields.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorRequirement"}]}}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.NodeSpec":{"description":"NodeSpec describes the attributes that a node is created with.","type":"object","properties":{"configSource":{"description":"Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed from Kubelets as of 1.24 and will be fully removed in 1.26.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeConfigSource"}]},"externalID":{"description":"Deprecated. Not all kubelets will set this field. Remove field after 1.13. see: https://issues.k8s.io/61966","type":"string"},"podCIDR":{"description":"PodCIDR represents the pod IP range assigned to the node.","type":"string"},"podCIDRs":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"providerID":{"description":"ID of the node assigned by the cloud provider in the format: \u003cProviderName\u003e://\u003cProviderSpecificNodeID\u003e","type":"string"},"taints":{"description":"If specified, the node's taints.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Taint"}]}},"unschedulable":{"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","type":"boolean"}}},"io.k8s.api.core.v1.NodeStatus":{"description":"NodeStatus is information about the current status of a node.","type":"object","properties":{"addresses":{"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 http://pr.k8s.io/79391 for an example.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeAddress"}]},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"allocatable":{"description":"Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity.","type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}},"capacity":{"description":"Capacity represents the total resources of a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity","type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}},"conditions":{"description":"Conditions is an array of current observed node conditions. More info: https://kubernetes.io/docs/concepts/nodes/node/#condition","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeCondition"}]},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"config":{"description":"Status of the config assigned to the node via the dynamic Kubelet config feature.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeConfigStatus"}]},"daemonEndpoints":{"description":"Endpoints of daemons running on the Node.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeDaemonEndpoints"}]},"images":{"description":"List of container images on this node","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerImage"}]}},"nodeInfo":{"description":"Set of ids/uuids to uniquely identify the node. More info: https://kubernetes.io/docs/concepts/nodes/node/#info","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSystemInfo"}]},"phase":{"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\nPossible enum values:\n - `\"Pending\"` means the node has been created/added by the system, but not configured.\n - `\"Running\"` means the node has been configured and has Kubernetes components running.\n - `\"Terminated\"` means the node has been removed from the cluster.","type":"string","enum":["Pending","Running","Terminated"]},"volumesAttached":{"description":"List of volumes that are attached to the node.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.AttachedVolume"}]}},"volumesInUse":{"description":"List of attachable volumes in use (mounted) by the node.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.NodeSystemInfo":{"description":"NodeSystemInfo is a set of ids/uuids to uniquely identify the node.","type":"object","required":["machineID","systemUUID","bootID","kernelVersion","osImage","containerRuntimeVersion","kubeletVersion","kubeProxyVersion","operatingSystem","architecture"],"properties":{"architecture":{"description":"The Architecture reported by the node","type":"string","default":""},"bootID":{"description":"Boot ID reported by the node.","type":"string","default":""},"containerRuntimeVersion":{"description":"ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0).","type":"string","default":""},"kernelVersion":{"description":"Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).","type":"string","default":""},"kubeProxyVersion":{"description":"KubeProxy Version reported by the node.","type":"string","default":""},"kubeletVersion":{"description":"Kubelet Version reported by the node.","type":"string","default":""},"machineID":{"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","type":"string","default":""},"operatingSystem":{"description":"The Operating System reported by the node","type":"string","default":""},"osImage":{"description":"OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).","type":"string","default":""},"systemUUID":{"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","type":"string","default":""}}},"io.k8s.api.core.v1.ObjectFieldSelector":{"description":"ObjectFieldSelector selects an APIVersioned field of an object.","type":"object","required":["fieldPath"],"properties":{"apiVersion":{"description":"Version of the schema the FieldPath is written in terms of, defaults to \"v1\".","type":"string"},"fieldPath":{"description":"Path of the field to select in the specified API version.","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ObjectReference":{"description":"ObjectReference contains enough information to let you inspect or modify the referred object.","type":"object","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"fieldPath":{"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.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"},"resourceVersion":{"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","type":"string"},"uid":{"description":"UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids","type":"string"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.PersistentVolume":{"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","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeSpec"}]},"status":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeStatus"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PersistentVolume","version":"v1"}]},"io.k8s.api.core.v1.PersistentVolumeClaim":{"description":"PersistentVolumeClaim is a user's request for and claim to a persistent volume","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimSpec"}]},"status":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimStatus"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PersistentVolumeClaim","version":"v1"}]},"io.k8s.api.core.v1.PersistentVolumeClaimCondition":{"description":"PersistentVolumeClaimCondition contails details about state of pvc","type":"object","required":["type","status"],"properties":{"lastProbeTime":{"description":"lastProbeTime is the time we probed the condition.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"lastTransitionTime":{"description":"lastTransitionTime is the time the condition transitioned from one status to another.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"message":{"description":"message is the human-readable message indicating details about last transition.","type":"string"},"reason":{"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 \"ResizeStarted\" that means the underlying persistent volume is being resized.","type":"string"},"status":{"type":"string","default":""},"type":{"type":"string","default":""}}},"io.k8s.api.core.v1.PersistentVolumeClaimList":{"description":"PersistentVolumeClaimList is a list of PersistentVolumeClaim items.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"items is a list of persistent volume claims. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}]}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PersistentVolumeClaimList","version":"v1"}]},"io.k8s.api.core.v1.PersistentVolumeClaimSpec":{"description":"PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes","type":"object","properties":{"accessModes":{"description":"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1","type":"array","items":{"type":"string","default":""}},"dataSource":{"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. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.TypedLocalObjectReference"}]},"dataSourceRef":{"description":"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local 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, 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. There are two 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(Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.TypedLocalObjectReference"}]},"resources":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceRequirements"}]},"selector":{"description":"selector is a label query over volumes to consider for binding.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"}]},"storageClassName":{"description":"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1","type":"string"},"volumeMode":{"description":"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.","type":"string"},"volumeName":{"description":"volumeName is the binding reference to the PersistentVolume backing this claim.","type":"string"}}},"io.k8s.api.core.v1.PersistentVolumeClaimStatus":{"description":"PersistentVolumeClaimStatus is the current status of a persistent volume claim.","type":"object","properties":{"accessModes":{"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","type":"array","items":{"type":"string","default":""}},"allocatedResources":{"description":"allocatedResources is the storage resource within AllocatedResources tracks the capacity allocated to a PVC. It 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. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.","type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}},"capacity":{"description":"capacity represents the actual resources of the underlying volume.","type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}},"conditions":{"description":"conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimCondition"}]},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"phase":{"description":"phase represents the current phase of PersistentVolumeClaim.\n\nPossible enum values:\n - `\"Bound\"` used for PersistentVolumeClaims that are bound\n - `\"Lost\"` used for PersistentVolumeClaims that lost their underlying PersistentVolume. The claim was bound to a PersistentVolume and this volume does not exist any longer and all data on it was lost.\n - `\"Pending\"` used for PersistentVolumeClaims that are not yet bound","type":"string","enum":["Bound","Lost","Pending"]},"resizeStatus":{"description":"resizeStatus stores status of resize operation. ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty string by resize controller or kubelet. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.","type":"string"}}},"io.k8s.api.core.v1.PersistentVolumeClaimTemplate":{"description":"PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource.","type":"object","required":["spec"],"properties":{"metadata":{"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.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"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.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimSpec"}]}}},"io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource":{"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).","type":"object","required":["claimName"],"properties":{"claimName":{"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","type":"string","default":""},"readOnly":{"description":"readOnly Will force the ReadOnly setting in VolumeMounts. Default false.","type":"boolean"}}},"io.k8s.api.core.v1.PersistentVolumeList":{"description":"PersistentVolumeList is a list of PersistentVolume items.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"items is a list of persistent volumes. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}]}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PersistentVolumeList","version":"v1"}]},"io.k8s.api.core.v1.PersistentVolumeSpec":{"description":"PersistentVolumeSpec is the specification of a persistent volume.","type":"object","properties":{"accessModes":{"description":"accessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes","type":"array","items":{"type":"string","default":""}},"awsElasticBlockStore":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource"}]},"azureDisk":{"description":"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.AzureDiskVolumeSource"}]},"azureFile":{"description":"azureFile represents an Azure File Service mount on the host and bind mount to the pod.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.AzureFilePersistentVolumeSource"}]},"capacity":{"description":"capacity is the description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity","type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}},"cephfs":{"description":"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.CephFSPersistentVolumeSource"}]},"cinder":{"description":"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.CinderPersistentVolumeSource"}]},"claimRef":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectReference"}]},"csi":{"description":"csi represents storage that is handled by an external CSI driver (Beta feature).","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.CSIPersistentVolumeSource"}]},"fc":{"description":"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.FCVolumeSource"}]},"flexVolume":{"description":"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.FlexPersistentVolumeSource"}]},"flocker":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.FlockerVolumeSource"}]},"gcePersistentDisk":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource"}]},"glusterfs":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.GlusterfsPersistentVolumeSource"}]},"hostPath":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.HostPathVolumeSource"}]},"iscsi":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ISCSIPersistentVolumeSource"}]},"local":{"description":"local represents directly-attached storage with node affinity","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalVolumeSource"}]},"mountOptions":{"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","type":"array","items":{"type":"string","default":""}},"nfs":{"description":"nfs represents an NFS mount on the host. Provisioned by an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NFSVolumeSource"}]},"nodeAffinity":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeNodeAffinity"}]},"persistentVolumeReclaimPolicy":{"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\nPossible enum values:\n - `\"Delete\"` means the volume will be deleted from Kubernetes on release from its claim. The volume plugin must support Deletion.\n - `\"Recycle\"` means the volume will be recycled back into the pool of unbound persistent volumes on release from its claim. The volume plugin must support Recycling.\n - `\"Retain\"` means the volume will be left in its current phase (Released) for manual reclamation by the administrator. The default policy is Retain.","type":"string","enum":["Delete","Recycle","Retain"]},"photonPersistentDisk":{"description":"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource"}]},"portworxVolume":{"description":"portworxVolume represents a portworx volume attached and mounted on kubelets host machine","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PortworxVolumeSource"}]},"quobyte":{"description":"quobyte represents a Quobyte mount on the host that shares a pod's lifetime","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.QuobyteVolumeSource"}]},"rbd":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.RBDPersistentVolumeSource"}]},"scaleIO":{"description":"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ScaleIOPersistentVolumeSource"}]},"storageClassName":{"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.","type":"string"},"storageos":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.StorageOSPersistentVolumeSource"}]},"volumeMode":{"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.","type":"string"},"vsphereVolume":{"description":"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource"}]}}},"io.k8s.api.core.v1.PersistentVolumeStatus":{"description":"PersistentVolumeStatus is the current status of a persistent volume.","type":"object","properties":{"message":{"description":"message is a human-readable message indicating details about why the volume is in this state.","type":"string"},"phase":{"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\nPossible enum values:\n - `\"Available\"` used for PersistentVolumes that are not yet bound Available volumes are held by the binder and matched to PersistentVolumeClaims\n - `\"Bound\"` used for PersistentVolumes that are bound\n - `\"Failed\"` used for PersistentVolumes that failed to be correctly recycled or deleted after being released from a claim\n - `\"Pending\"` used for PersistentVolumes that are not available\n - `\"Released\"` used for PersistentVolumes where the bound PersistentVolumeClaim was deleted released volumes must be recycled before becoming available again this phase is used by the persistent volume claim binder to signal to another process to reclaim the resource","type":"string","enum":["Available","Bound","Failed","Pending","Released"]},"reason":{"description":"reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI.","type":"string"}}},"io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource":{"description":"Represents a Photon Controller persistent disk resource.","type":"object","required":["pdID"],"properties":{"fsType":{"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.","type":"string"},"pdID":{"description":"pdID is the ID that identifies Photon Controller persistent disk","type":"string","default":""}}},"io.k8s.api.core.v1.Pod":{"description":"Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodSpec"}]},"status":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodStatus"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Pod","version":"v1"}]},"io.k8s.api.core.v1.PodAffinity":{"description":"Pod affinity is a group of inter pod affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.WeightedPodAffinityTerm"}]}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm"}]}}}},"io.k8s.api.core.v1.PodAffinityTerm":{"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 \u003ctopologyKey\u003e matches that of any node on which a pod of the set of pods is running","type":"object","required":["topologyKey"],"properties":{"labelSelector":{"description":"A label query over a set of resources, in this case pods.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"}]},"namespaceSelector":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"}]},"namespaces":{"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\".","type":"array","items":{"type":"string","default":""}},"topologyKey":{"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.","type":"string","default":""}}},"io.k8s.api.core.v1.PodAntiAffinity":{"description":"Pod anti affinity is a group of inter pod anti affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.WeightedPodAffinityTerm"}]}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm"}]}}}},"io.k8s.api.core.v1.PodCondition":{"description":"PodCondition contains details for the current condition of this pod.","type":"object","required":["type","status"],"properties":{"lastProbeTime":{"description":"Last time we probed the condition.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"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","type":"string","default":""},"type":{"description":"Type is the type of the condition. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions","type":"string","default":""}}},"io.k8s.api.core.v1.PodDNSConfig":{"description":"PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.","type":"object","properties":{"nameservers":{"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.","type":"array","items":{"type":"string","default":""}},"options":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodDNSConfigOption"}]}},"searches":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.PodDNSConfigOption":{"description":"PodDNSConfigOption defines DNS resolver options of a pod.","type":"object","properties":{"name":{"description":"Required.","type":"string"},"value":{"type":"string"}}},"io.k8s.api.core.v1.PodIP":{"description":"IP address information for entries in the (plural) PodIPs field. Each entry includes:\n IP: An IP address allocated to the pod. Routable at least within the cluster.","type":"object","properties":{"ip":{"description":"ip is an IP address (IPv4 or IPv6) assigned to the pod","type":"string"}}},"io.k8s.api.core.v1.PodList":{"description":"PodList is a list of Pods.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of pods. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}]}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PodList","version":"v1"}]},"io.k8s.api.core.v1.PodOS":{"description":"PodOS defines the OS parameters of a pod.","type":"object","required":["name"],"properties":{"name":{"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","type":"string","default":""}}},"io.k8s.api.core.v1.PodReadinessGate":{"description":"PodReadinessGate contains the reference to a pod condition","type":"object","required":["conditionType"],"properties":{"conditionType":{"description":"ConditionType refers to a condition in the pod's condition list with matching type.","type":"string","default":""}}},"io.k8s.api.core.v1.PodSecurityContext":{"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.","type":"object","properties":{"fsGroup":{"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.","type":"integer","format":"int64"},"fsGroupChangePolicy":{"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.","type":"string"},"runAsGroup":{"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.","type":"integer","format":"int64"},"runAsNonRoot":{"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.","type":"boolean"},"runAsUser":{"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.","type":"integer","format":"int64"},"seLinuxOptions":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SELinuxOptions"}]},"seccompProfile":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SeccompProfile"}]},"supplementalGroups":{"description":"A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container. Note that this field cannot be set when spec.os.name is windows.","type":"array","items":{"type":"integer","format":"int64","default":0}},"sysctls":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Sysctl"}]}},"windowsOptions":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.WindowsSecurityContextOptions"}]}}},"io.k8s.api.core.v1.PodSpec":{"description":"PodSpec is a description of a pod.","type":"object","required":["containers"],"properties":{"activeDeadlineSeconds":{"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.","type":"integer","format":"int64"},"affinity":{"description":"If specified, the pod's scheduling constraints","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Affinity"}]},"automountServiceAccountToken":{"description":"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.","type":"boolean"},"containers":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Container"}]},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"dnsConfig":{"description":"Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodDNSConfig"}]},"dnsPolicy":{"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\nPossible enum values:\n - `\"ClusterFirst\"` indicates that the pod should use cluster DNS first unless hostNetwork is true, if it is available, then fall back on the default (as determined by kubelet) DNS settings.\n - `\"ClusterFirstWithHostNet\"` indicates that the pod should use cluster DNS first, if it is available, then fall back on the default (as determined by kubelet) DNS settings.\n - `\"Default\"` indicates that the pod should use the default (as determined by kubelet) DNS settings.\n - `\"None\"` indicates that the pod should use empty DNS settings. DNS parameters such as nameservers and search paths should be defined via DNSConfig.","type":"string","enum":["ClusterFirst","ClusterFirstWithHostNet","Default","None"]},"enableServiceLinks":{"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.","type":"boolean"},"ephemeralContainers":{"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. This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EphemeralContainer"}]},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"hostAliases":{"description":"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.HostAlias"}]},"x-kubernetes-patch-merge-key":"ip","x-kubernetes-patch-strategy":"merge"},"hostIPC":{"description":"Use the host's ipc namespace. Optional: Default to false.","type":"boolean"},"hostNetwork":{"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.","type":"boolean"},"hostPID":{"description":"Use the host's pid namespace. Optional: Default to false.","type":"boolean"},"hostname":{"description":"Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.","type":"string"},"imagePullSecrets":{"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. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}]},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"initContainers":{"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/","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Container"}]},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"nodeName":{"description":"NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.","type":"string"},"nodeSelector":{"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/","type":"object","additionalProperties":{"type":"string","default":""},"x-kubernetes-map-type":"atomic"},"os":{"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.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.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 This is a beta field and requires the IdentifyPodOS feature","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodOS"}]},"overhead":{"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","type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}},"preemptionPolicy":{"description":"PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset.","type":"string"},"priority":{"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.","type":"integer","format":"int32"},"priorityClassName":{"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.","type":"string"},"readinessGates":{"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","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodReadinessGate"}]}},"restartPolicy":{"description":"Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\n\nPossible enum values:\n - `\"Always\"`\n - `\"Never\"`\n - `\"OnFailure\"`","type":"string","enum":["Always","Never","OnFailure"]},"runtimeClassName":{"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","type":"string"},"schedulerName":{"description":"If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.","type":"string"},"securityContext":{"description":"SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodSecurityContext"}]},"serviceAccount":{"description":"DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.","type":"string"},"serviceAccountName":{"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/","type":"string"},"setHostnameAsFQDN":{"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.","type":"boolean"},"shareProcessNamespace":{"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.","type":"boolean"},"subdomain":{"description":"If specified, the fully qualified Pod hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the pod will not have a domainname at all.","type":"string"},"terminationGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"tolerations":{"description":"If specified, the pod's tolerations.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Toleration"}]}},"topologySpreadConstraints":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.TopologySpreadConstraint"}]},"x-kubernetes-list-map-keys":["topologyKey","whenUnsatisfiable"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"topologyKey","x-kubernetes-patch-strategy":"merge"},"volumes":{"description":"List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Volume"}]},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge,retainKeys"}}},"io.k8s.api.core.v1.PodStatus":{"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.","type":"object","properties":{"conditions":{"description":"Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodCondition"}]},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"containerStatuses":{"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","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerStatus"}]}},"ephemeralContainerStatuses":{"description":"Status for any ephemeral containers that have run in this pod. This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerStatus"}]}},"hostIP":{"description":"IP address of the host to which the pod is assigned. Empty if not yet scheduled.","type":"string"},"initContainerStatuses":{"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","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerStatus"}]}},"message":{"description":"A human readable message indicating details about why the pod is in this condition.","type":"string"},"nominatedNodeName":{"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.","type":"string"},"phase":{"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\nPossible enum values:\n - `\"Failed\"` means that all containers in the pod have terminated, and at least one container has terminated in a failure (exited with a non-zero exit code or was stopped by the system).\n - `\"Pending\"` means the pod has been accepted by the system, but one or more of the containers has not been started. This includes time before being bound to a node, as well as time spent pulling images onto the host.\n - `\"Running\"` means the pod has been bound to a node and all of the containers have been started. At least one container is still running or is in the process of being restarted.\n - `\"Succeeded\"` means that all containers in the pod have voluntarily terminated with a container exit code of 0, and the system is not going to restart any of these containers.\n - `\"Unknown\"` means that 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. Deprecated: It isn't being set since 2015 (74da3b14b0c0f658b3bb8d2def5094686d0e9095)","type":"string","enum":["Failed","Pending","Running","Succeeded","Unknown"]},"podIP":{"description":"IP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated.","type":"string"},"podIPs":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodIP"}]},"x-kubernetes-patch-merge-key":"ip","x-kubernetes-patch-strategy":"merge"},"qosClass":{"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://git.k8s.io/community/contributors/design-proposals/node/resource-qos.md\n\nPossible enum values:\n - `\"BestEffort\"` is the BestEffort qos class.\n - `\"Burstable\"` is the Burstable qos class.\n - `\"Guaranteed\"` is the Guaranteed qos class.","type":"string","enum":["BestEffort","Burstable","Guaranteed"]},"reason":{"description":"A brief CamelCase message indicating details about why the pod is in this state. e.g. 'Evicted'","type":"string"},"startTime":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]}}},"io.k8s.api.core.v1.PodTemplate":{"description":"PodTemplate describes a template for creating copies of a predefined pod.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"template":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateSpec"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PodTemplate","version":"v1"}]},"io.k8s.api.core.v1.PodTemplateList":{"description":"PodTemplateList is a list of PodTemplates.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of pod templates","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}]}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PodTemplateList","version":"v1"}]},"io.k8s.api.core.v1.PodTemplateSpec":{"description":"PodTemplateSpec describes the data a pod should have when created from a template","type":"object","properties":{"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodSpec"}]}}},"io.k8s.api.core.v1.PortStatus":{"type":"object","required":["port","protocol"],"properties":{"error":{"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.","type":"string"},"port":{"description":"Port is the port number of the service port of which status is recorded here","type":"integer","format":"int32","default":0},"protocol":{"description":"Protocol is the protocol of the service port of which status is recorded here The supported values are: \"TCP\", \"UDP\", \"SCTP\"\n\nPossible enum values:\n - `\"SCTP\"` is the SCTP protocol.\n - `\"TCP\"` is the TCP protocol.\n - `\"UDP\"` is the UDP protocol.","type":"string","default":"","enum":["SCTP","TCP","UDP"]}}},"io.k8s.api.core.v1.PortworxVolumeSource":{"description":"PortworxVolumeSource represents a Portworx volume resource.","type":"object","required":["volumeID"],"properties":{"fsType":{"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.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"volumeID":{"description":"volumeID uniquely identifies a Portworx volume","type":"string","default":""}}},"io.k8s.api.core.v1.PreferredSchedulingTerm":{"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).","type":"object","required":["weight","preference"],"properties":{"preference":{"description":"A node selector term, associated with the corresponding weight.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorTerm"}]},"weight":{"description":"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.Probe":{"description":"Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.","type":"object","properties":{"exec":{"description":"Exec specifies the action to take.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ExecAction"}]},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.","type":"integer","format":"int32"},"grpc":{"description":"GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.GRPCAction"}]},"httpGet":{"description":"HTTPGet specifies the http request to perform.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.HTTPGetAction"}]},"initialDelaySeconds":{"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","type":"integer","format":"int32"},"periodSeconds":{"description":"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.","type":"integer","format":"int32"},"successThreshold":{"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.","type":"integer","format":"int32"},"tcpSocket":{"description":"TCPSocket specifies an action involving a TCP port.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.TCPSocketAction"}]},"terminationGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"timeoutSeconds":{"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","type":"integer","format":"int32"}}},"io.k8s.api.core.v1.ProjectedVolumeSource":{"description":"Represents a projected volume source","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"sources":{"description":"sources is the list of volume projections","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeProjection"}]}}}},"io.k8s.api.core.v1.QuobyteVolumeSource":{"description":"Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.","type":"object","required":["registry","volume"],"properties":{"group":{"description":"group to map volume access to Default is no group","type":"string"},"readOnly":{"description":"readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.","type":"boolean"},"registry":{"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","type":"string","default":""},"tenant":{"description":"tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin","type":"string"},"user":{"description":"user to map volume access to Defaults to serivceaccount user","type":"string"},"volume":{"description":"volume is a string that references an already created Quobyte volume by name.","type":"string","default":""}}},"io.k8s.api.core.v1.RBDPersistentVolumeSource":{"description":"Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.","type":"object","required":["monitors","image"],"properties":{"fsType":{"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","type":"string"},"image":{"description":"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string","default":""},"keyring":{"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","type":"string"},"monitors":{"description":"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"array","items":{"type":"string","default":""}},"pool":{"description":"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"}]},"user":{"description":"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"}}},"io.k8s.api.core.v1.RBDVolumeSource":{"description":"Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.","type":"object","required":["monitors","image"],"properties":{"fsType":{"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","type":"string"},"image":{"description":"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string","default":""},"keyring":{"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","type":"string"},"monitors":{"description":"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"array","items":{"type":"string","default":""}},"pool":{"description":"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}]},"user":{"description":"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"}}},"io.k8s.api.core.v1.ReplicationController":{"description":"ReplicationController represents the configuration of a replication controller.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerSpec"}]},"status":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerStatus"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ReplicationController","version":"v1"}]},"io.k8s.api.core.v1.ReplicationControllerCondition":{"description":"ReplicationControllerCondition describes the state of a replication controller at a certain point.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"The last time the condition transitioned from one status to another.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"message":{"description":"A human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The reason for the condition's last transition.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string","default":""},"type":{"description":"Type of replication controller condition.","type":"string","default":""}}},"io.k8s.api.core.v1.ReplicationControllerList":{"description":"ReplicationControllerList is a collection of replication controllers.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of replication controllers. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}]}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ReplicationControllerList","version":"v1"}]},"io.k8s.api.core.v1.ReplicationControllerSpec":{"description":"ReplicationControllerSpec is the specification of a replication controller.","type":"object","properties":{"minReadySeconds":{"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)","type":"integer","format":"int32"},"replicas":{"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","type":"integer","format":"int32"},"selector":{"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","type":"object","additionalProperties":{"type":"string","default":""},"x-kubernetes-map-type":"atomic"},"template":{"description":"Template is the object that describes the pod that will be created if insufficient replicas are detected. This takes precedence over a TemplateRef. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateSpec"}]}}},"io.k8s.api.core.v1.ReplicationControllerStatus":{"description":"ReplicationControllerStatus represents the current status of a replication controller.","type":"object","required":["replicas"],"properties":{"availableReplicas":{"description":"The number of available replicas (ready for at least minReadySeconds) for this replication controller.","type":"integer","format":"int32"},"conditions":{"description":"Represents the latest available observations of a replication controller's current state.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerCondition"}]},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"fullyLabeledReplicas":{"description":"The number of pods that have labels matching the labels of the pod template of the replication controller.","type":"integer","format":"int32"},"observedGeneration":{"description":"ObservedGeneration reflects the generation of the most recently observed replication controller.","type":"integer","format":"int64"},"readyReplicas":{"description":"The number of ready replicas for this replication controller.","type":"integer","format":"int32"},"replicas":{"description":"Replicas is the most recently oberved number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.ResourceFieldSelector":{"description":"ResourceFieldSelector represents container resources (cpu, memory) and their output format","type":"object","required":["resource"],"properties":{"containerName":{"description":"Container name: required for volumes, optional for env vars","type":"string"},"divisor":{"description":"Specifies the output format of the exposed resources, defaults to \"1\"","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]},"resource":{"description":"Required: resource to select","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ResourceQuota":{"description":"ResourceQuota sets aggregate quota restrictions enforced per namespace","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"description":"Spec defines the desired quota. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaSpec"}]},"status":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaStatus"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ResourceQuota","version":"v1"}]},"io.k8s.api.core.v1.ResourceQuotaList":{"description":"ResourceQuotaList is a list of ResourceQuota items.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"Items is a list of ResourceQuota objects. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}]}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ResourceQuotaList","version":"v1"}]},"io.k8s.api.core.v1.ResourceQuotaSpec":{"description":"ResourceQuotaSpec defines the desired hard limits to enforce for Quota.","type":"object","properties":{"hard":{"description":"hard is the set of desired hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/","type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}},"scopeSelector":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ScopeSelector"}]},"scopes":{"description":"A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.ResourceQuotaStatus":{"description":"ResourceQuotaStatus defines the enforced hard limits and observed use.","type":"object","properties":{"hard":{"description":"Hard is the set of enforced hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/","type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}},"used":{"description":"Used is the current observed total usage of the resource in the namespace.","type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}}}},"io.k8s.api.core.v1.ResourceRequirements":{"description":"ResourceRequirements describes the compute resource requirements.","type":"object","properties":{"limits":{"description":"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}},"requests":{"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. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}}}},"io.k8s.api.core.v1.SELinuxOptions":{"description":"SELinuxOptions are the labels to be applied to the container","type":"object","properties":{"level":{"description":"Level is SELinux level label that applies to the container.","type":"string"},"role":{"description":"Role is a SELinux role label that applies to the container.","type":"string"},"type":{"description":"Type is a SELinux type label that applies to the container.","type":"string"},"user":{"description":"User is a SELinux user label that applies to the container.","type":"string"}}},"io.k8s.api.core.v1.ScaleIOPersistentVolumeSource":{"description":"ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume","type":"object","required":["gateway","system","secretRef"],"properties":{"fsType":{"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\"","type":"string"},"gateway":{"description":"gateway is the host address of the ScaleIO API Gateway.","type":"string","default":""},"protectionDomain":{"description":"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"}]},"sslEnabled":{"description":"sslEnabled is the flag to enable/disable SSL communication with Gateway, default false","type":"boolean"},"storageMode":{"description":"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.","type":"string"},"storagePool":{"description":"storagePool is the ScaleIO Storage Pool associated with the protection domain.","type":"string"},"system":{"description":"system is the name of the storage system as configured in ScaleIO.","type":"string","default":""},"volumeName":{"description":"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.","type":"string"}}},"io.k8s.api.core.v1.ScaleIOVolumeSource":{"description":"ScaleIOVolumeSource represents a persistent ScaleIO volume","type":"object","required":["gateway","system","secretRef"],"properties":{"fsType":{"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\".","type":"string"},"gateway":{"description":"gateway is the host address of the ScaleIO API Gateway.","type":"string","default":""},"protectionDomain":{"description":"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.","type":"string"},"readOnly":{"description":"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}]},"sslEnabled":{"description":"sslEnabled Flag enable/disable SSL communication with Gateway, default false","type":"boolean"},"storageMode":{"description":"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.","type":"string"},"storagePool":{"description":"storagePool is the ScaleIO Storage Pool associated with the protection domain.","type":"string"},"system":{"description":"system is the name of the storage system as configured in ScaleIO.","type":"string","default":""},"volumeName":{"description":"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.","type":"string"}}},"io.k8s.api.core.v1.ScopeSelector":{"description":"A scope selector represents the AND of the selectors represented by the scoped-resource selector requirements.","type":"object","properties":{"matchExpressions":{"description":"A list of scope selector requirements by scope of the resources.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ScopedResourceSelectorRequirement"}]}}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ScopedResourceSelectorRequirement":{"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.","type":"object","required":["scopeName","operator"],"properties":{"operator":{"description":"Represents a scope's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist.\n\nPossible enum values:\n - `\"DoesNotExist\"`\n - `\"Exists\"`\n - `\"In\"`\n - `\"NotIn\"`","type":"string","default":"","enum":["DoesNotExist","Exists","In","NotIn"]},"scopeName":{"description":"The name of the scope that the selector applies to.\n\nPossible enum values:\n - `\"BestEffort\"` Match all pod objects that have best effort quality of service\n - `\"CrossNamespacePodAffinity\"` Match all pod objects that have cross-namespace pod (anti)affinity mentioned.\n - `\"NotBestEffort\"` Match all pod objects that do not have best effort quality of service\n - `\"NotTerminating\"` Match all pod objects where spec.activeDeadlineSeconds is nil\n - `\"PriorityClass\"` Match all pod objects that have priority class mentioned\n - `\"Terminating\"` Match all pod objects where spec.activeDeadlineSeconds \u003e=0","type":"string","default":"","enum":["BestEffort","CrossNamespacePodAffinity","NotBestEffort","NotTerminating","PriorityClass","Terminating"]},"values":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.SeccompProfile":{"description":"SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set.","type":"object","required":["type"],"properties":{"localhostProfile":{"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 only be set if type is \"Localhost\".","type":"string"},"type":{"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\nPossible enum values:\n - `\"Localhost\"` indicates a profile defined in a file on the node should be used. The file's location relative to \u003ckubelet-root-dir\u003e/seccomp.\n - `\"RuntimeDefault\"` represents the default container runtime seccomp profile.\n - `\"Unconfined\"` indicates no seccomp profile is applied (A.K.A. unconfined).","type":"string","default":"","enum":["Localhost","RuntimeDefault","Unconfined"]}},"x-kubernetes-unions":[{"discriminator":"type","fields-to-discriminateBy":{"localhostProfile":"LocalhostProfile"}}]},"io.k8s.api.core.v1.Secret":{"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.","type":"object","properties":{"apiVersion":{"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","type":"string"},"data":{"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","type":"object","additionalProperties":{"type":"string","format":"byte"}},"immutable":{"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.","type":"boolean"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"stringData":{"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.","type":"object","additionalProperties":{"type":"string","default":""}},"type":{"description":"Used to facilitate programmatic handling of secret data. More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Secret","version":"v1"}]},"io.k8s.api.core.v1.SecretEnvSource":{"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.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the Secret must be defined","type":"boolean"}}},"io.k8s.api.core.v1.SecretKeySelector":{"description":"SecretKeySelector selects a key of a Secret.","type":"object","required":["key"],"properties":{"key":{"description":"The key of the secret to select from. Must be a valid secret key.","type":"string","default":""},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the Secret or its key must be defined","type":"boolean"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.SecretList":{"description":"SecretList is a list of Secret.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"Items is a list of secret objects. More info: https://kubernetes.io/docs/concepts/configuration/secret","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}]}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"SecretList","version":"v1"}]},"io.k8s.api.core.v1.SecretProjection":{"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.","type":"object","properties":{"items":{"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 '..'.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}]}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional field specify whether the Secret or its key must be defined","type":"boolean"}}},"io.k8s.api.core.v1.SecretReference":{"description":"SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace","type":"object","properties":{"name":{"description":"name is unique within a namespace to reference a secret resource.","type":"string"},"namespace":{"description":"namespace defines the space within which the secret name must be unique.","type":"string"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.SecretVolumeSource":{"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.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"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 '..'.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}]}},"optional":{"description":"optional field specify whether the Secret or its keys must be defined","type":"boolean"},"secretName":{"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","type":"string"}}},"io.k8s.api.core.v1.SecurityContext":{"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.","type":"object","properties":{"allowPrivilegeEscalation":{"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.","type":"boolean"},"capabilities":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Capabilities"}]},"privileged":{"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.","type":"boolean"},"procMount":{"description":"procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount 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.","type":"string"},"readOnlyRootFilesystem":{"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.","type":"boolean"},"runAsGroup":{"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.","type":"integer","format":"int64"},"runAsNonRoot":{"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.","type":"boolean"},"runAsUser":{"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.","type":"integer","format":"int64"},"seLinuxOptions":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SELinuxOptions"}]},"seccompProfile":{"description":"The seccomp options to use by this container. If seccomp options are provided at both the pod \u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SeccompProfile"}]},"windowsOptions":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.WindowsSecurityContextOptions"}]}}},"io.k8s.api.core.v1.Service":{"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.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"description":"Spec defines the behavior of a service. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceSpec"}]},"status":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceStatus"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Service","version":"v1"}]},"io.k8s.api.core.v1.ServiceAccount":{"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","type":"object","properties":{"apiVersion":{"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","type":"string"},"automountServiceAccountToken":{"description":"AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. Can be overridden at the pod level.","type":"boolean"},"imagePullSecrets":{"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","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}]}},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"secrets":{"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","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectReference"}]},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ServiceAccount","version":"v1"}]},"io.k8s.api.core.v1.ServiceAccountList":{"description":"ServiceAccountList is a list of ServiceAccount objects","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of ServiceAccounts. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}]}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ServiceAccountList","version":"v1"}]},"io.k8s.api.core.v1.ServiceAccountTokenProjection":{"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).","type":"object","required":["path"],"properties":{"audience":{"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.","type":"string"},"expirationSeconds":{"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.","type":"integer","format":"int64"},"path":{"description":"path is the path relative to the mount point of the file to project the token into.","type":"string","default":""}}},"io.k8s.api.core.v1.ServiceList":{"description":"ServiceList holds a list of services.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of services","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}]}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ServiceList","version":"v1"}]},"io.k8s.api.core.v1.ServicePort":{"description":"ServicePort contains information on service's port.","type":"object","required":["port"],"properties":{"appProtocol":{"description":"The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol.","type":"string"},"name":{"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.","type":"string"},"nodePort":{"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","type":"integer","format":"int32"},"port":{"description":"The port that will be exposed by this service.","type":"integer","format":"int32","default":0},"protocol":{"description":"The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.\n\nPossible enum values:\n - `\"SCTP\"` is the SCTP protocol.\n - `\"TCP\"` is the TCP protocol.\n - `\"UDP\"` is the UDP protocol.","type":"string","default":"TCP","enum":["SCTP","TCP","UDP"]},"targetPort":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString"}]}}},"io.k8s.api.core.v1.ServiceSpec":{"description":"ServiceSpec describes the attributes that a user creates on a service.","type":"object","properties":{"allocateLoadBalancerNodePorts":{"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.","type":"boolean"},"clusterIP":{"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","type":"string"},"clusterIPs":{"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","type":"array","items":{"type":"string","default":""},"x-kubernetes-list-type":"atomic"},"externalIPs":{"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.","type":"array","items":{"type":"string","default":""}},"externalName":{"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\".","type":"string"},"externalTrafficPolicy":{"description":"externalTrafficPolicy denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. \"Local\" preserves the client source IP and avoids a second hop for LoadBalancer and Nodeport type services, but risks potentially imbalanced traffic spreading. \"Cluster\" obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading.\n\nPossible enum values:\n - `\"Cluster\"` specifies node-global (legacy) behavior.\n - `\"Local\"` specifies node-local endpoints behavior.","type":"string","enum":["Cluster","Local"]},"healthCheckNodePort":{"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).","type":"integer","format":"int32"},"internalTrafficPolicy":{"description":"InternalTrafficPolicy specifies if the cluster internal traffic should be routed to all endpoints or node-local endpoints only. \"Cluster\" routes internal traffic to a Service to all endpoints. \"Local\" routes traffic to node-local endpoints only, traffic is dropped if no node-local endpoints are ready. The default value is \"Cluster\".","type":"string"},"ipFamilies":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-list-type":"atomic"},"ipFamilyPolicy":{"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.","type":"string"},"loadBalancerClass":{"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.","type":"string"},"loadBalancerIP":{"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, and it cannot support dual-stack. As of Kubernetes v1.24, users are encouraged to use implementation-specific annotations when available. This field may be removed in a future API version.","type":"string"},"loadBalancerSourceRanges":{"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/","type":"array","items":{"type":"string","default":""}},"ports":{"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","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServicePort"}]},"x-kubernetes-list-map-keys":["port","protocol"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"port","x-kubernetes-patch-strategy":"merge"},"publishNotReadyAddresses":{"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.","type":"boolean"},"selector":{"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/","type":"object","additionalProperties":{"type":"string","default":""},"x-kubernetes-map-type":"atomic"},"sessionAffinity":{"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\nPossible enum values:\n - `\"ClientIP\"` is the Client IP based.\n - `\"None\"` - no session affinity.","type":"string","enum":["ClientIP","None"]},"sessionAffinityConfig":{"description":"sessionAffinityConfig contains the configurations of session affinity.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SessionAffinityConfig"}]},"type":{"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\nPossible enum values:\n - `\"ClusterIP\"` means a service will only be accessible inside the cluster, via the cluster IP.\n - `\"ExternalName\"` means a service consists of only a reference to an external name that kubedns or equivalent will return as a CNAME record, with no exposing or proxying of any pods involved.\n - `\"LoadBalancer\"` means a service will be exposed via an external load balancer (if the cloud provider supports it), in addition to 'NodePort' type.\n - `\"NodePort\"` means a service will be exposed on one port of every node, in addition to 'ClusterIP' type.","type":"string","enum":["ClusterIP","ExternalName","LoadBalancer","NodePort"]}}},"io.k8s.api.core.v1.ServiceStatus":{"description":"ServiceStatus represents the current status of a service.","type":"object","properties":{"conditions":{"description":"Current service state","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Condition"}]},"x-kubernetes-list-map-keys":["type"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"loadBalancer":{"description":"LoadBalancer contains the current status of the load-balancer, if one is present.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LoadBalancerStatus"}]}}},"io.k8s.api.core.v1.SessionAffinityConfig":{"description":"SessionAffinityConfig represents the configurations of session affinity.","type":"object","properties":{"clientIP":{"description":"clientIP contains the configurations of Client IP based session affinity.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ClientIPConfig"}]}}},"io.k8s.api.core.v1.StorageOSPersistentVolumeSource":{"description":"Represents a StorageOS persistent volume resource.","type":"object","properties":{"fsType":{"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.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectReference"}]},"volumeName":{"description":"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.","type":"string"},"volumeNamespace":{"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.","type":"string"}}},"io.k8s.api.core.v1.StorageOSVolumeSource":{"description":"Represents a StorageOS persistent volume resource.","type":"object","properties":{"fsType":{"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.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}]},"volumeName":{"description":"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.","type":"string"},"volumeNamespace":{"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.","type":"string"}}},"io.k8s.api.core.v1.Sysctl":{"description":"Sysctl defines a kernel parameter to be set","type":"object","required":["name","value"],"properties":{"name":{"description":"Name of a property to set","type":"string","default":""},"value":{"description":"Value of a property to set","type":"string","default":""}}},"io.k8s.api.core.v1.TCPSocketAction":{"description":"TCPSocketAction describes an action based on opening a socket","type":"object","required":["port"],"properties":{"host":{"description":"Optional: Host name to connect to, defaults to the pod IP.","type":"string"},"port":{"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.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString"}]}}},"io.k8s.api.core.v1.Taint":{"description":"The node this Taint is attached to has the \"effect\" on any pod that does not tolerate the Taint.","type":"object","required":["key","effect"],"properties":{"effect":{"description":"Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute.\n\nPossible enum values:\n - `\"NoExecute\"` Evict any already-running pods that do not tolerate the taint. Currently enforced by NodeController.\n - `\"NoSchedule\"` Do not allow new pods to schedule onto the node unless they tolerate the taint, but allow all pods submitted to Kubelet without going through the scheduler to start, and allow all already-running pods to continue running. Enforced by the scheduler.\n - `\"PreferNoSchedule\"` Like TaintEffectNoSchedule, but the scheduler tries not to schedule new pods onto the node, rather than prohibiting new pods from scheduling onto the node entirely. Enforced by the scheduler.","type":"string","default":"","enum":["NoExecute","NoSchedule","PreferNoSchedule"]},"key":{"description":"Required. The taint key to be applied to a node.","type":"string","default":""},"timeAdded":{"description":"TimeAdded represents the time at which the taint was added. It is only written for NoExecute taints.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"value":{"description":"The taint value corresponding to the taint key.","type":"string"}}},"io.k8s.api.core.v1.Toleration":{"description":"The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.","type":"object","properties":{"effect":{"description":"Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n\nPossible enum values:\n - `\"NoExecute\"` Evict any already-running pods that do not tolerate the taint. Currently enforced by NodeController.\n - `\"NoSchedule\"` Do not allow new pods to schedule onto the node unless they tolerate the taint, but allow all pods submitted to Kubelet without going through the scheduler to start, and allow all already-running pods to continue running. Enforced by the scheduler.\n - `\"PreferNoSchedule\"` Like TaintEffectNoSchedule, but the scheduler tries not to schedule new pods onto the node, rather than prohibiting new pods from scheduling onto the node entirely. Enforced by the scheduler.","type":"string","enum":["NoExecute","NoSchedule","PreferNoSchedule"]},"key":{"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.","type":"string"},"operator":{"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\nPossible enum values:\n - `\"Equal\"`\n - `\"Exists\"`","type":"string","enum":["Equal","Exists"]},"tolerationSeconds":{"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.","type":"integer","format":"int64"},"value":{"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.","type":"string"}}},"io.k8s.api.core.v1.TopologySpreadConstraint":{"description":"TopologySpreadConstraint specifies how to spread matching pods among the given topology.","type":"object","required":["maxSkew","topologyKey","whenUnsatisfiable"],"properties":{"labelSelector":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"}]},"maxSkew":{"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.","type":"integer","format":"int32","default":0},"minDomains":{"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\nThis is an alpha field and requires enabling MinDomainsInPodTopologySpread feature gate.","type":"integer","format":"int32"},"topologyKey":{"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 \u003ckey, value\u003e 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 match the node selector. 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.","type":"string","default":""},"whenUnsatisfiable":{"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\nPossible enum values:\n - `\"DoNotSchedule\"` instructs the scheduler not to schedule the pod when constraints are not satisfied.\n - `\"ScheduleAnyway\"` instructs the scheduler to schedule the pod even if constraints are not satisfied.","type":"string","default":"","enum":["DoNotSchedule","ScheduleAnyway"]}}},"io.k8s.api.core.v1.TypedLocalObjectReference":{"description":"TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.","type":"object","required":["kind","name"],"properties":{"apiGroup":{"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.","type":"string"},"kind":{"description":"Kind is the type of resource being referenced","type":"string","default":""},"name":{"description":"Name is the name of resource being referenced","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.Volume":{"description":"Volume represents a named volume in a pod that may be accessed by any container in the pod.","type":"object","required":["name"],"properties":{"awsElasticBlockStore":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource"}]},"azureDisk":{"description":"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.AzureDiskVolumeSource"}]},"azureFile":{"description":"azureFile represents an Azure File Service mount on the host and bind mount to the pod.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.AzureFileVolumeSource"}]},"cephfs":{"description":"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.CephFSVolumeSource"}]},"cinder":{"description":"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.CinderVolumeSource"}]},"configMap":{"description":"configMap represents a configMap that should populate this volume","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapVolumeSource"}]},"csi":{"description":"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.CSIVolumeSource"}]},"downwardAPI":{"description":"downwardAPI represents downward API about the pod that should populate this volume","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeSource"}]},"emptyDir":{"description":"emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EmptyDirVolumeSource"}]},"ephemeral":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EphemeralVolumeSource"}]},"fc":{"description":"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.FCVolumeSource"}]},"flexVolume":{"description":"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.FlexVolumeSource"}]},"flocker":{"description":"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.FlockerVolumeSource"}]},"gcePersistentDisk":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource"}]},"gitRepo":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.GitRepoVolumeSource"}]},"glusterfs":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.GlusterfsVolumeSource"}]},"hostPath":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.HostPathVolumeSource"}]},"iscsi":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ISCSIVolumeSource"}]},"name":{"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","type":"string","default":""},"nfs":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NFSVolumeSource"}]},"persistentVolumeClaim":{"description":"persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource"}]},"photonPersistentDisk":{"description":"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource"}]},"portworxVolume":{"description":"portworxVolume represents a portworx volume attached and mounted on kubelets host machine","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PortworxVolumeSource"}]},"projected":{"description":"projected items for all in one resources secrets, configmaps, and downward API","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ProjectedVolumeSource"}]},"quobyte":{"description":"quobyte represents a Quobyte mount on the host that shares a pod's lifetime","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.QuobyteVolumeSource"}]},"rbd":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.RBDVolumeSource"}]},"scaleIO":{"description":"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ScaleIOVolumeSource"}]},"secret":{"description":"secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretVolumeSource"}]},"storageos":{"description":"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.StorageOSVolumeSource"}]},"vsphereVolume":{"description":"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource"}]}}},"io.k8s.api.core.v1.VolumeDevice":{"description":"volumeDevice describes a mapping of a raw block device within a container.","type":"object","required":["name","devicePath"],"properties":{"devicePath":{"description":"devicePath is the path inside of the container that the device will be mapped to.","type":"string","default":""},"name":{"description":"name must match the name of a persistentVolumeClaim in the pod","type":"string","default":""}}},"io.k8s.api.core.v1.VolumeMount":{"description":"VolumeMount describes a mounting of a Volume within a container.","type":"object","required":["name","mountPath"],"properties":{"mountPath":{"description":"Path within the container at which the volume should be mounted. Must not contain ':'.","type":"string","default":""},"mountPropagation":{"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.","type":"string"},"name":{"description":"This must match the Name of a Volume.","type":"string","default":""},"readOnly":{"description":"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.","type":"boolean"},"subPath":{"description":"Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).","type":"string"},"subPathExpr":{"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.","type":"string"}}},"io.k8s.api.core.v1.VolumeNodeAffinity":{"description":"VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.","type":"object","properties":{"required":{"description":"required specifies hard node constraints that must be met.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelector"}]}}},"io.k8s.api.core.v1.VolumeProjection":{"description":"Projection that may be projected along with other supported volume types","type":"object","properties":{"configMap":{"description":"configMap information about the configMap data to project","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapProjection"}]},"downwardAPI":{"description":"downwardAPI information about the downwardAPI data to project","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIProjection"}]},"secret":{"description":"secret information about the secret data to project","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretProjection"}]},"serviceAccountToken":{"description":"serviceAccountToken is information about the serviceAccountToken data to project","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountTokenProjection"}]}}},"io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource":{"description":"Represents a vSphere volume resource.","type":"object","required":["volumePath"],"properties":{"fsType":{"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.","type":"string"},"storagePolicyID":{"description":"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.","type":"string"},"storagePolicyName":{"description":"storagePolicyName is the storage Policy Based Management (SPBM) profile name.","type":"string"},"volumePath":{"description":"volumePath is the path that identifies vSphere volume vmdk","type":"string","default":""}}},"io.k8s.api.core.v1.WeightedPodAffinityTerm":{"description":"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)","type":"object","required":["weight","podAffinityTerm"],"properties":{"podAffinityTerm":{"description":"Required. A pod affinity term, associated with the corresponding weight.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm"}]},"weight":{"description":"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.WindowsSecurityContextOptions":{"description":"WindowsSecurityContextOptions contain Windows-specific options and credentials.","type":"object","properties":{"gmsaCredentialSpec":{"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.","type":"string"},"gmsaCredentialSpecName":{"description":"GMSACredentialSpecName is the name of the GMSA credential spec to use.","type":"string"},"hostProcess":{"description":"HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. 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.","type":"boolean"},"runAsUserName":{"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.","type":"string"}}},"io.k8s.api.policy.v1.Eviction":{"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/\u003cpod name\u003e/evictions.","type":"object","properties":{"apiVersion":{"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","type":"string"},"deleteOptions":{"description":"DeleteOptions may be provided","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}]},"kind":{"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","type":"string"},"metadata":{"description":"ObjectMeta describes the pod that is being evicted.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"policy","kind":"Eviction","version":"v1"}]},"io.k8s.apimachinery.pkg.api.resource.Quantity":{"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\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\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 a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 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.","type":"string"},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResource":{"description":"APIResource specifies the name of a resource and whether it is namespaced.","type":"object","required":["name","singularName","namespaced","kind","verbs"],"properties":{"categories":{"description":"categories is a list of the grouped resources this resource belongs to (e.g. 'all')","type":"array","items":{"type":"string","default":""}},"group":{"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\".","type":"string"},"kind":{"description":"kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')","type":"string","default":""},"name":{"description":"name is the plural name of the resource.","type":"string","default":""},"namespaced":{"description":"namespaced indicates if a resource is namespaced or not.","type":"boolean","default":false},"shortNames":{"description":"shortNames is a list of suggested short names of the resource.","type":"array","items":{"type":"string","default":""}},"singularName":{"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.","type":"string","default":""},"storageVersionHash":{"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.","type":"string"},"verbs":{"description":"verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)","type":"array","items":{"type":"string","default":""}},"version":{"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)\".","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList":{"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.","type":"object","required":["groupVersion","resources"],"properties":{"apiVersion":{"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","type":"string"},"groupVersion":{"description":"groupVersion is the group and version this APIResourceList is for.","type":"string","default":""},"kind":{"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","type":"string"},"resources":{"description":"resources contains the name of the resources and if they are namespaced.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResource"}]}}},"x-kubernetes-group-version-kind":[{"group":"","kind":"APIResourceList","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.Condition":{"description":"Condition contains details for one aspect of the current state of this API Resource.","type":"object","required":["type","status","lastTransitionTime","reason","message"],"properties":{"lastTransitionTime":{"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.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"message":{"description":"message is a human readable message indicating details about the transition. This may be an empty string.","type":"string","default":""},"observedGeneration":{"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.","type":"integer","format":"int64"},"reason":{"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.","type":"string","default":""},"status":{"description":"status of the condition, one of True, False, Unknown.","type":"string","default":""},"type":{"description":"type of condition in CamelCase or in foo.example.com/CamelCase.","type":"string","default":""}}},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"}]},"propagationPolicy":{"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.","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta2"},{"group":"batch","kind":"DeleteOptions","version":"v1"},{"group":"batch","kind":"DeleteOptions","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"extensions","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"policy","kind":"DeleteOptions","version":"v1"},{"group":"policy","kind":"DeleteOptions","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector":{"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.","type":"object","properties":{"matchExpressions":{"description":"matchExpressions is a list of label selector requirements. The requirements are ANDed.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement"}]}},"matchLabels":{"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.","type":"object","additionalProperties":{"type":"string","default":""}}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement":{"description":"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.","type":"object","required":["key","operator"],"properties":{"key":{"description":"key is the label key that the selector applies to.","type":"string","default":"","x-kubernetes-patch-merge-key":"key","x-kubernetes-patch-strategy":"merge"},"operator":{"description":"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.","type":"string","default":""},"values":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"}]},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]}}},"io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime":{"description":"MicroTime is version of Time with microsecond level precision.","type":"string","format":"date-time"},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"clusterName":{"description":"Deprecated: ClusterName is a legacy field that was always cleared by the system and never used; it will be removed completely in 1.25.\n\nThe name in the go struct is changed to help clients detect accidental use.","type":"string"},"creationTimestamp":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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 NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}]}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"}]},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"}]},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]},"reason":{"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.","type":"string"},"status":{"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","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Status","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}]}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"},"io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent":{"description":"Event represents a single event to a watched resource.","type":"object","required":["type","object"],"properties":{"object":{"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.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.runtime.RawExtension"}]},"type":{"type":"string","default":""}},"x-kubernetes-group-version-kind":[{"group":"","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1"},{"group":"apps","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta2"},{"group":"batch","kind":"WatchEvent","version":"v1"},{"group":"batch","kind":"WatchEvent","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"extensions","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"policy","kind":"WatchEvent","version":"v1"},{"group":"policy","kind":"WatchEvent","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.runtime.RawExtension":{"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: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.Object `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// External package: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.RawExtension `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// On the wire, the JSON will look something like this: {\n\t\"kind\":\"MyAPIObject\",\n\t\"apiVersion\":\"v1\",\n\t\"myPlugin\": {\n\t\t\"kind\":\"PluginA\",\n\t\t\"aOption\":\"foo\",\n\t},\n}\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.)","type":"object"},"io.k8s.apimachinery.pkg.util.intstr.IntOrString":{"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.","type":"string","format":"int-or-string"}},"securitySchemes":{"BearerToken":{"type":"apiKey","description":"Bearer Token authentication","name":"authorization","in":"header"}}}} v3_apiextensions.k8s.io.v1.json000066400000000000000000003521001453663023200367340ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/openapiconv/testdata_generated_from_k8s{"openapi":"3.0.0","info":{"title":"Kubernetes","version":"v1.24.0"},"paths":{"/apis/apiextensions.k8s.io/v1/":{"get":{"tags":["apiextensions_v1"],"description":"get available resources","operationId":"getApiextensionsV1APIResources","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}}}},"401":{"description":"Unauthorized"}}}},"/apis/apiextensions.k8s.io/v1/customresourcedefinitions":{"get":{"tags":["apiextensions_v1"],"description":"list or watch objects of kind CustomResourceDefinition","operationId":"listApiextensionsV1CustomResourceDefinition","parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"post":{"tags":["apiextensions_v1"],"description":"create a CustomResourceDefinition","operationId":"createApiextensionsV1CustomResourceDefinition","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"delete":{"tags":["apiextensions_v1"],"description":"delete collection of CustomResourceDefinition","operationId":"deleteApiextensionsV1CollectionCustomResourceDefinition","parameters":[{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"parameters":[{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}":{"get":{"tags":["apiextensions_v1"],"description":"read the specified CustomResourceDefinition","operationId":"readApiextensionsV1CustomResourceDefinition","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"put":{"tags":["apiextensions_v1"],"description":"replace the specified CustomResourceDefinition","operationId":"replaceApiextensionsV1CustomResourceDefinition","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"delete":{"tags":["apiextensions_v1"],"description":"delete a CustomResourceDefinition","operationId":"deleteApiextensionsV1CustomResourceDefinition","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"patch":{"tags":["apiextensions_v1"],"description":"partially update the specified CustomResourceDefinition","operationId":"patchApiextensionsV1CustomResourceDefinition","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"parameters":[{"name":"name","in":"path","description":"name of the CustomResourceDefinition","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}/status":{"get":{"tags":["apiextensions_v1"],"description":"read status of the specified CustomResourceDefinition","operationId":"readApiextensionsV1CustomResourceDefinitionStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"put":{"tags":["apiextensions_v1"],"description":"replace status of the specified CustomResourceDefinition","operationId":"replaceApiextensionsV1CustomResourceDefinitionStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"patch":{"tags":["apiextensions_v1"],"description":"partially update status of the specified CustomResourceDefinition","operationId":"patchApiextensionsV1CustomResourceDefinitionStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"parameters":[{"name":"name","in":"path","description":"name of the CustomResourceDefinition","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apiextensions.k8s.io/v1/watch/customresourcedefinitions":{"get":{"tags":["apiextensions_v1"],"description":"watch individual changes to a list of CustomResourceDefinition. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchApiextensionsV1CustomResourceDefinitionList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apiextensions.k8s.io/v1/watch/customresourcedefinitions/{name}":{"get":{"tags":["apiextensions_v1"],"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.","operationId":"watchApiextensionsV1CustomResourceDefinition","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"apiextensions.k8s.io","version":"v1","kind":"CustomResourceDefinition"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the CustomResourceDefinition","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]}},"components":{"schemas":{"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition":{"description":"CustomResourceColumnDefinition specifies a column for server side printing.","type":"object","required":["name","type","jsonPath"],"properties":{"description":{"description":"description is a human readable description of this column.","type":"string"},"format":{"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.","type":"string"},"jsonPath":{"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.","type":"string","default":""},"name":{"description":"name is a human readable name for the column.","type":"string","default":""},"priority":{"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.","type":"integer","format":"int32"},"type":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion":{"description":"CustomResourceConversion describes how to convert different versions of a CR.","type":"object","required":["strategy"],"properties":{"strategy":{"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.","type":"string","default":""},"webhook":{"description":"webhook describes how to call the conversion webhook. Required when `strategy` is set to `Webhook`.","allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion"}]}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition":{"description":"CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format \u003c.spec.name\u003e.\u003c.spec.group\u003e.","type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"description":"spec describes how the user wants the resources to appear","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec"}]},"status":{"description":"status indicates the actual state of the CustomResourceDefinition","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus"}]}},"x-kubernetes-group-version-kind":[{"group":"apiextensions.k8s.io","kind":"CustomResourceDefinition","version":"v1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition":{"description":"CustomResourceDefinitionCondition contains details for the current condition of this pod.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"lastTransitionTime last time the condition transitioned from one status to another.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"message":{"description":"message is a human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"reason is a unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"status is the status of the condition. Can be True, False, Unknown.","type":"string","default":""},"type":{"description":"type is the type of the condition. Types include Established, NamesAccepted and Terminating.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList":{"description":"CustomResourceDefinitionList is a list of CustomResourceDefinition objects.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"items list individual CustomResourceDefinition objects","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}]}},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"apiextensions.k8s.io","kind":"CustomResourceDefinitionList","version":"v1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames":{"description":"CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition","type":"object","required":["plural","kind"],"properties":{"categories":{"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`.","type":"array","items":{"type":"string","default":""}},"kind":{"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.","type":"string","default":""},"listKind":{"description":"listKind is the serialized kind of the list for this resource. Defaults to \"`kind`List\".","type":"string"},"plural":{"description":"plural is the plural name of the resource to serve. The custom resources are served under `/apis/\u003cgroup\u003e/\u003cversion\u003e/.../\u003cplural\u003e`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`). Must be all lowercase.","type":"string","default":""},"shortNames":{"description":"shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get \u003cshortname\u003e`. It must be all lowercase.","type":"array","items":{"type":"string","default":""}},"singular":{"description":"singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec":{"description":"CustomResourceDefinitionSpec describes how a user wants their resource to appear","type":"object","required":["group","names","scope","versions"],"properties":{"conversion":{"description":"conversion defines conversion settings for the CRD.","allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion"}]},"group":{"description":"group is the API group of the defined custom resource. The custom resources are served under `/apis/\u003cgroup\u003e/...`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`).","type":"string","default":""},"names":{"description":"names specify the resource and kind names for the custom resource.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"}]},"preserveUnknownFields":{"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/access-kubernetes-api/custom-resources/custom-resource-definitions/#pruning-versus-preserving-unknown-fields for details.","type":"boolean"},"scope":{"description":"scope indicates whether the defined custom resource is cluster- or namespace-scoped. Allowed values are `Cluster` and `Namespaced`.","type":"string","default":""},"versions":{"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 \u003e beta \u003e 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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion"}]}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus":{"description":"CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition","type":"object","properties":{"acceptedNames":{"description":"acceptedNames are the names that are actually being used to serve discovery. They may be different than the names in spec.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"}]},"conditions":{"description":"conditions indicate state for particular aspects of a CustomResourceDefinition","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition"}]},"x-kubernetes-list-map-keys":["type"],"x-kubernetes-list-type":"map"},"storedVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion":{"description":"CustomResourceDefinitionVersion describes a version for CRD.","type":"object","required":["name","served","storage"],"properties":{"additionalPrinterColumns":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition"}]}},"deprecated":{"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.","type":"boolean"},"deprecationWarning":{"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.","type":"string"},"name":{"description":"name is the version name, e.g. “v1â€, “v2beta1â€, etc. The custom resources are served under this version at `/apis/\u003cgroup\u003e/\u003cversion\u003e/...` if `served` is true.","type":"string","default":""},"schema":{"description":"schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource.","allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation"}]},"served":{"description":"served is a flag enabling/disabling this version from being served via REST APIs","type":"boolean","default":false},"storage":{"description":"storage indicates this version should be used when persisting custom resources to storage. There must be exactly one version with storage=true.","type":"boolean","default":false},"subresources":{"description":"subresources specify what subresources this version of the defined custom resource have.","allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources"}]}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale":{"description":"CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.","type":"object","required":["specReplicasPath","statusReplicasPath"],"properties":{"labelSelectorPath":{"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.","type":"string"},"specReplicasPath":{"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.","type":"string","default":""},"statusReplicasPath":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus":{"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","type":"object"},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources":{"description":"CustomResourceSubresources defines the status and scale subresources for CustomResources.","type":"object","properties":{"scale":{"description":"scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.","allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale"}]},"status":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus"}]}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation":{"description":"CustomResourceValidation is a list of validation methods for CustomResources.","type":"object","properties":{"openAPIV3Schema":{"description":"openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.","allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}]}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation":{"description":"ExternalDocumentation allows referencing an external resource for extended documentation.","type":"object","properties":{"description":{"type":"string"},"url":{"type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON":{"description":"JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps":{"description":"JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).","type":"object","properties":{"$ref":{"type":"string"},"$schema":{"type":"string"},"additionalItems":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"additionalProperties":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"allOf":{"type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}]}},"anyOf":{"type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}]}},"default":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"}]},"definitions":{"type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}]}},"dependencies":{"type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray"}]}},"description":{"type":"string"},"enum":{"type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"}]}},"example":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"exclusiveMaximum":{"type":"boolean"},"exclusiveMinimum":{"type":"boolean"},"externalDocs":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation"},"format":{"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.","type":"string"},"id":{"type":"string"},"items":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray"},"maxItems":{"type":"integer","format":"int64"},"maxLength":{"type":"integer","format":"int64"},"maxProperties":{"type":"integer","format":"int64"},"maximum":{"type":"number","format":"double"},"minItems":{"type":"integer","format":"int64"},"minLength":{"type":"integer","format":"int64"},"minProperties":{"type":"integer","format":"int64"},"minimum":{"type":"number","format":"double"},"multipleOf":{"type":"number","format":"double"},"not":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"},"nullable":{"type":"boolean"},"oneOf":{"type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}]}},"pattern":{"type":"string"},"patternProperties":{"type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}]}},"properties":{"type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}]}},"required":{"type":"array","items":{"type":"string","default":""}},"title":{"type":"string"},"type":{"type":"string"},"uniqueItems":{"type":"boolean"},"x-kubernetes-embedded-resource":{"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).","type":"boolean"},"x-kubernetes-int-or-string":{"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","type":"boolean"},"x-kubernetes-list-map-keys":{"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.","type":"array","items":{"type":"string","default":""}},"x-kubernetes-list-type":{"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.","type":"string"},"x-kubernetes-map-type":{"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.","type":"string"},"x-kubernetes-preserve-unknown-fields":{"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.","type":"boolean"},"x-kubernetes-validations":{"description":"x-kubernetes-validations describes a list of validation rules written in the CEL expression language. This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule"}]},"x-kubernetes-list-map-keys":["rule"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"rule","x-kubernetes-patch-strategy":"merge"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray":{"description":"JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool":{"description":"JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray":{"description":"JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference":{"description":"ServiceReference holds a reference to Service.legacy.k8s.io","type":"object","required":["namespace","name"],"properties":{"name":{"description":"name is the name of the service. Required","type":"string","default":""},"namespace":{"description":"namespace is the namespace of the service. Required","type":"string","default":""},"path":{"description":"path is an optional URL path at which the webhook will be contacted.","type":"string"},"port":{"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.","type":"integer","format":"int32"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule":{"description":"ValidationRule describes a validation rule written in the CEL expression language.","type":"object","required":["rule"],"properties":{"message":{"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\"","type":"string"},"rule":{"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 \u003c= 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 \u003c 10\"} - Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value \u003e= 0 \u0026\u0026 value \u003c 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__ \u003e 0\"}\n - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop \u003e 0\"}\n - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d \u003e 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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig":{"description":"WebhookClientConfig contains the information to make a TLS connection with the webhook.","type":"object","properties":{"caBundle":{"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.","type":"string","format":"byte"},"service":{"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`.","allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference"}]},"url":{"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.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion":{"description":"WebhookConversion describes how to call a conversion webhook","type":"object","required":["conversionReviewVersions"],"properties":{"clientConfig":{"description":"clientConfig is the instructions for how to call the webhook if strategy is `Webhook`.","allOf":[{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig"}]},"conversionReviewVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResource":{"description":"APIResource specifies the name of a resource and whether it is namespaced.","type":"object","required":["name","singularName","namespaced","kind","verbs"],"properties":{"categories":{"description":"categories is a list of the grouped resources this resource belongs to (e.g. 'all')","type":"array","items":{"type":"string","default":""}},"group":{"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\".","type":"string"},"kind":{"description":"kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')","type":"string","default":""},"name":{"description":"name is the plural name of the resource.","type":"string","default":""},"namespaced":{"description":"namespaced indicates if a resource is namespaced or not.","type":"boolean","default":false},"shortNames":{"description":"shortNames is a list of suggested short names of the resource.","type":"array","items":{"type":"string","default":""}},"singularName":{"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.","type":"string","default":""},"storageVersionHash":{"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.","type":"string"},"verbs":{"description":"verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)","type":"array","items":{"type":"string","default":""}},"version":{"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)\".","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList":{"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.","type":"object","required":["groupVersion","resources"],"properties":{"apiVersion":{"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","type":"string"},"groupVersion":{"description":"groupVersion is the group and version this APIResourceList is for.","type":"string","default":""},"kind":{"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","type":"string"},"resources":{"description":"resources contains the name of the resources and if they are namespaced.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResource"}]}}},"x-kubernetes-group-version-kind":[{"group":"","kind":"APIResourceList","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"}]},"propagationPolicy":{"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.","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta2"},{"group":"batch","kind":"DeleteOptions","version":"v1"},{"group":"batch","kind":"DeleteOptions","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"extensions","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"policy","kind":"DeleteOptions","version":"v1"},{"group":"policy","kind":"DeleteOptions","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"}]},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"clusterName":{"description":"Deprecated: ClusterName is a legacy field that was always cleared by the system and never used; it will be removed completely in 1.25.\n\nThe name in the go struct is changed to help clients detect accidental use.","type":"string"},"creationTimestamp":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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 NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}]}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"}]},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"}]},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]},"reason":{"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.","type":"string"},"status":{"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","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Status","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}]}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"},"io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent":{"description":"Event represents a single event to a watched resource.","type":"object","required":["type","object"],"properties":{"object":{"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.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.runtime.RawExtension"}]},"type":{"type":"string","default":""}},"x-kubernetes-group-version-kind":[{"group":"","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1"},{"group":"apps","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta2"},{"group":"batch","kind":"WatchEvent","version":"v1"},{"group":"batch","kind":"WatchEvent","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"extensions","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"policy","kind":"WatchEvent","version":"v1"},{"group":"policy","kind":"WatchEvent","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.runtime.RawExtension":{"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: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.Object `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// External package: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.RawExtension `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// On the wire, the JSON will look something like this: {\n\t\"kind\":\"MyAPIObject\",\n\t\"apiVersion\":\"v1\",\n\t\"myPlugin\": {\n\t\t\"kind\":\"PluginA\",\n\t\t\"aOption\":\"foo\",\n\t},\n}\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.)","type":"object"}},"securitySchemes":{"BearerToken":{"type":"apiKey","description":"Bearer Token authentication","name":"authorization","in":"header"}}}} v3_batch.v1.json000066400000000000000000011432431453663023200340210ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/openapiconv/testdata_generated_from_k8s{"openapi":"3.0.0","info":{"title":"Kubernetes","version":"v1.24.0"},"paths":{"/apis/batch/v1/":{"get":{"tags":["batch_v1"],"description":"get available resources","operationId":"getBatchV1APIResources","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}}}},"401":{"description":"Unauthorized"}}}},"/apis/batch/v1/cronjobs":{"get":{"tags":["batch_v1"],"description":"list or watch objects of kind CronJob","operationId":"listBatchV1CronJobForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/batch/v1/jobs":{"get":{"tags":["batch_v1"],"description":"list or watch objects of kind Job","operationId":"listBatchV1JobForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/batch/v1/namespaces/{namespace}/cronjobs":{"get":{"tags":["batch_v1"],"description":"list or watch objects of kind CronJob","operationId":"listBatchV1NamespacedCronJob","parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"post":{"tags":["batch_v1"],"description":"create a CronJob","operationId":"createBatchV1NamespacedCronJob","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"delete":{"tags":["batch_v1"],"description":"delete collection of CronJob","operationId":"deleteBatchV1CollectionNamespacedCronJob","parameters":[{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/batch/v1/namespaces/{namespace}/cronjobs/{name}":{"get":{"tags":["batch_v1"],"description":"read the specified CronJob","operationId":"readBatchV1NamespacedCronJob","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"put":{"tags":["batch_v1"],"description":"replace the specified CronJob","operationId":"replaceBatchV1NamespacedCronJob","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"delete":{"tags":["batch_v1"],"description":"delete a CronJob","operationId":"deleteBatchV1NamespacedCronJob","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"patch":{"tags":["batch_v1"],"description":"partially update the specified CronJob","operationId":"patchBatchV1NamespacedCronJob","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"parameters":[{"name":"name","in":"path","description":"name of the CronJob","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/batch/v1/namespaces/{namespace}/cronjobs/{name}/status":{"get":{"tags":["batch_v1"],"description":"read status of the specified CronJob","operationId":"readBatchV1NamespacedCronJobStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"put":{"tags":["batch_v1"],"description":"replace status of the specified CronJob","operationId":"replaceBatchV1NamespacedCronJobStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"patch":{"tags":["batch_v1"],"description":"partially update status of the specified CronJob","operationId":"patchBatchV1NamespacedCronJobStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"parameters":[{"name":"name","in":"path","description":"name of the CronJob","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/batch/v1/namespaces/{namespace}/jobs":{"get":{"tags":["batch_v1"],"description":"list or watch objects of kind Job","operationId":"listBatchV1NamespacedJob","parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"post":{"tags":["batch_v1"],"description":"create a Job","operationId":"createBatchV1NamespacedJob","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"delete":{"tags":["batch_v1"],"description":"delete collection of Job","operationId":"deleteBatchV1CollectionNamespacedJob","parameters":[{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/batch/v1/namespaces/{namespace}/jobs/{name}":{"get":{"tags":["batch_v1"],"description":"read the specified Job","operationId":"readBatchV1NamespacedJob","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"put":{"tags":["batch_v1"],"description":"replace the specified Job","operationId":"replaceBatchV1NamespacedJob","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"delete":{"tags":["batch_v1"],"description":"delete a Job","operationId":"deleteBatchV1NamespacedJob","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"patch":{"tags":["batch_v1"],"description":"partially update the specified Job","operationId":"patchBatchV1NamespacedJob","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"parameters":[{"name":"name","in":"path","description":"name of the Job","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/batch/v1/namespaces/{namespace}/jobs/{name}/status":{"get":{"tags":["batch_v1"],"description":"read status of the specified Job","operationId":"readBatchV1NamespacedJobStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"put":{"tags":["batch_v1"],"description":"replace status of the specified Job","operationId":"replaceBatchV1NamespacedJobStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"patch":{"tags":["batch_v1"],"description":"partially update status of the specified Job","operationId":"patchBatchV1NamespacedJobStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}],"requestBody":{"content":{"application/apply-patch+yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},"application/strategic-merge-patch+json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"parameters":[{"name":"name","in":"path","description":"name of the Job","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/batch/v1/watch/cronjobs":{"get":{"tags":["batch_v1"],"description":"watch individual changes to a list of CronJob. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchBatchV1CronJobListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/batch/v1/watch/jobs":{"get":{"tags":["batch_v1"],"description":"watch individual changes to a list of Job. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchBatchV1JobListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/batch/v1/watch/namespaces/{namespace}/cronjobs":{"get":{"tags":["batch_v1"],"description":"watch individual changes to a list of CronJob. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchBatchV1NamespacedCronJobList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/batch/v1/watch/namespaces/{namespace}/cronjobs/{name}":{"get":{"tags":["batch_v1"],"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.","operationId":"watchBatchV1NamespacedCronJob","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"CronJob"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the CronJob","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/batch/v1/watch/namespaces/{namespace}/jobs":{"get":{"tags":["batch_v1"],"description":"watch individual changes to a list of Job. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchBatchV1NamespacedJobList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watchlist","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/batch/v1/watch/namespaces/{namespace}/jobs/{name}":{"get":{"tags":["batch_v1"],"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.","operationId":"watchBatchV1NamespacedJob","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"watch","x-kubernetes-group-version-kind":{"group":"batch","version":"v1","kind":"Job"}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Job","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]}},"components":{"schemas":{"io.k8s.api.batch.v1.CronJob":{"description":"CronJob represents the configuration of a single cron job.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobSpec"}]},"status":{"description":"Current status of a cron job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobStatus"}]}},"x-kubernetes-group-version-kind":[{"group":"batch","kind":"CronJob","version":"v1"}]},"io.k8s.api.batch.v1.CronJobList":{"description":"CronJobList is a collection of cron jobs.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"items is the list of CronJobs.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}]}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"batch","kind":"CronJobList","version":"v1"}]},"io.k8s.api.batch.v1.CronJobSpec":{"description":"CronJobSpec describes how the job execution will look like and when it will actually run.","type":"object","required":["schedule","jobTemplate"],"properties":{"concurrencyPolicy":{"description":"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\nPossible enum values:\n - `\"Allow\"` allows CronJobs to run concurrently.\n - `\"Forbid\"` forbids concurrent runs, skipping next run if previous hasn't finished yet.\n - `\"Replace\"` cancels currently running job and replaces it with a new one.","type":"string","enum":["Allow","Forbid","Replace"]},"failedJobsHistoryLimit":{"description":"The number of failed finished jobs to retain. Value must be non-negative integer. Defaults to 1.","type":"integer","format":"int32"},"jobTemplate":{"description":"Specifies the job that will be created when executing a CronJob.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobTemplateSpec"}]},"schedule":{"description":"The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.","type":"string","default":""},"startingDeadlineSeconds":{"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.","type":"integer","format":"int64"},"successfulJobsHistoryLimit":{"description":"The number of successful finished jobs to retain. Value must be non-negative integer. Defaults to 3.","type":"integer","format":"int32"},"suspend":{"description":"This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.","type":"boolean"}}},"io.k8s.api.batch.v1.CronJobStatus":{"description":"CronJobStatus represents the current state of a cron job.","type":"object","properties":{"active":{"description":"A list of pointers to currently running jobs.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectReference"}]},"x-kubernetes-list-type":"atomic"},"lastScheduleTime":{"description":"Information when was the last time the job was successfully scheduled.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"lastSuccessfulTime":{"description":"Information when was the last time the job successfully completed.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]}}},"io.k8s.api.batch.v1.Job":{"description":"Job represents the configuration of a single job.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobSpec"}]},"status":{"description":"Current status of a job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobStatus"}]}},"x-kubernetes-group-version-kind":[{"group":"batch","kind":"Job","version":"v1"}]},"io.k8s.api.batch.v1.JobCondition":{"description":"JobCondition describes current state of a job.","type":"object","required":["type","status"],"properties":{"lastProbeTime":{"description":"Last time the condition was checked.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"lastTransitionTime":{"description":"Last time the condition transit from one status to another.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"message":{"description":"Human readable message indicating details about last transition.","type":"string"},"reason":{"description":"(brief) reason for the condition's last transition.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string","default":""},"type":{"description":"Type of job condition, Complete or Failed.","type":"string","default":""}}},"io.k8s.api.batch.v1.JobList":{"description":"JobList is a collection of jobs.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"items is the list of Jobs.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}]}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"batch","kind":"JobList","version":"v1"}]},"io.k8s.api.batch.v1.JobSpec":{"description":"JobSpec describes how the job execution will look like.","type":"object","required":["template"],"properties":{"activeDeadlineSeconds":{"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.","type":"integer","format":"int64"},"backoffLimit":{"description":"Specifies the number of retries before marking this job failed. Defaults to 6","type":"integer","format":"int32"},"completionMode":{"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.","type":"string"},"completions":{"description":"Specifies the desired number of successfully finished pods the job should be run with. Setting to nil 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/","type":"integer","format":"int32"},"manualSelector":{"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","type":"boolean"},"parallelism":{"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) \u003c .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/","type":"integer","format":"int32"},"selector":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"}]},"suspend":{"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.","type":"boolean"},"template":{"description":"Describes the pod that will be created when executing a job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateSpec"}]},"ttlSecondsAfterFinished":{"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.","type":"integer","format":"int32"}}},"io.k8s.api.batch.v1.JobStatus":{"description":"JobStatus represents the current state of a Job.","type":"object","properties":{"active":{"description":"The number of pending and running pods.","type":"integer","format":"int32"},"completedIndexes":{"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\".","type":"string"},"completionTime":{"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 only set when the job finishes successfully.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"conditions":{"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. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobCondition"}]},"x-kubernetes-list-type":"atomic","x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"failed":{"description":"The number of pods which reached phase Failed.","type":"integer","format":"int32"},"ready":{"description":"The number of pods which have a Ready condition.\n\nThis field is alpha-level. The job controller populates the field when the feature gate JobReadyPods is enabled (disabled by default).","type":"integer","format":"int32"},"startTime":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"succeeded":{"description":"The number of pods which reached phase Succeeded.","type":"integer","format":"int32"},"uncountedTerminatedPods":{"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: (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\nThis field is beta-level. The job controller only makes use of this field when the feature gate JobTrackingWithFinalizers is enabled (enabled by default). Old jobs might not be tracked using this field, in which case the field remains null.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.batch.v1.UncountedTerminatedPods"}]}}},"io.k8s.api.batch.v1.JobTemplateSpec":{"description":"JobTemplateSpec describes the data a Job should have when created from a template","type":"object","properties":{"metadata":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobSpec"}]}}},"io.k8s.api.batch.v1.UncountedTerminatedPods":{"description":"UncountedTerminatedPods holds UIDs of Pods that have terminated but haven't been accounted in Job status counters.","type":"object","properties":{"failed":{"description":"Failed holds UIDs of failed Pods.","type":"array","items":{"type":"string","default":""},"x-kubernetes-list-type":"set"},"succeeded":{"description":"Succeeded holds UIDs of succeeded Pods.","type":"array","items":{"type":"string","default":""},"x-kubernetes-list-type":"set"}}},"io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource":{"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.","type":"object","required":["volumeID"],"properties":{"fsType":{"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","type":"string"},"partition":{"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).","type":"integer","format":"int32"},"readOnly":{"description":"readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore","type":"boolean"},"volumeID":{"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","type":"string","default":""}}},"io.k8s.api.core.v1.Affinity":{"description":"Affinity is a group of affinity scheduling rules.","type":"object","properties":{"nodeAffinity":{"description":"Describes node affinity scheduling rules for the pod.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeAffinity"}]},"podAffinity":{"description":"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinity"}]},"podAntiAffinity":{"description":"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAntiAffinity"}]}}},"io.k8s.api.core.v1.AzureDiskVolumeSource":{"description":"AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.","type":"object","required":["diskName","diskURI"],"properties":{"cachingMode":{"description":"cachingMode is the Host Caching mode: None, Read Only, Read Write.","type":"string"},"diskName":{"description":"diskName is the Name of the data disk in the blob storage","type":"string","default":""},"diskURI":{"description":"diskURI is the URI of data disk in the blob storage","type":"string","default":""},"fsType":{"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.","type":"string"},"kind":{"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","type":"string"},"readOnly":{"description":"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"}}},"io.k8s.api.core.v1.AzureFileVolumeSource":{"description":"AzureFile represents an Azure File Service mount on the host and bind mount to the pod.","type":"object","required":["secretName","shareName"],"properties":{"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretName":{"description":"secretName is the name of secret that contains Azure Storage Account Name and Key","type":"string","default":""},"shareName":{"description":"shareName is the azure share Name","type":"string","default":""}}},"io.k8s.api.core.v1.CSIVolumeSource":{"description":"Represents a source location of a volume to mount, managed by an external CSI driver","type":"object","required":["driver"],"properties":{"driver":{"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.","type":"string","default":""},"fsType":{"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.","type":"string"},"nodePublishSecretRef":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}]},"readOnly":{"description":"readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).","type":"boolean"},"volumeAttributes":{"description":"volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.","type":"object","additionalProperties":{"type":"string","default":""}}}},"io.k8s.api.core.v1.Capabilities":{"description":"Adds and removes POSIX capabilities from running containers.","type":"object","properties":{"add":{"description":"Added capabilities","type":"array","items":{"type":"string","default":""}},"drop":{"description":"Removed capabilities","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.CephFSVolumeSource":{"description":"Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["monitors"],"properties":{"monitors":{"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","type":"array","items":{"type":"string","default":""}},"path":{"description":"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /","type":"string"},"readOnly":{"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","type":"boolean"},"secretFile":{"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","type":"string"},"secretRef":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}]},"user":{"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","type":"string"}}},"io.k8s.api.core.v1.CinderVolumeSource":{"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.","type":"object","required":["volumeID"],"properties":{"fsType":{"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","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"description":"secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}]},"volumeID":{"description":"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","type":"string","default":""}}},"io.k8s.api.core.v1.ConfigMapEnvSource":{"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.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the ConfigMap must be defined","type":"boolean"}}},"io.k8s.api.core.v1.ConfigMapKeySelector":{"description":"Selects a key from a ConfigMap.","type":"object","required":["key"],"properties":{"key":{"description":"The key to select.","type":"string","default":""},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the ConfigMap or its key must be defined","type":"boolean"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ConfigMapProjection":{"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.","type":"object","properties":{"items":{"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 '..'.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}]}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional specify whether the ConfigMap or its keys must be defined","type":"boolean"}}},"io.k8s.api.core.v1.ConfigMapVolumeSource":{"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.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"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 '..'.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}]}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional specify whether the ConfigMap or its keys must be defined","type":"boolean"}}},"io.k8s.api.core.v1.Container":{"description":"A single application container that you want to run within a pod.","type":"object","required":["name"],"properties":{"args":{"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","type":"array","items":{"type":"string","default":""}},"command":{"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","type":"array","items":{"type":"string","default":""}},"env":{"description":"List of environment variables to set in the container. Cannot be updated.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvVar"}]},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"envFrom":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvFromSource"}]}},"image":{"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.","type":"string"},"imagePullPolicy":{"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\nPossible enum values:\n - `\"Always\"` means that kubelet always attempts to pull the latest image. Container will fail If the pull fails.\n - `\"IfNotPresent\"` means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails.\n - `\"Never\"` means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present","type":"string","enum":["Always","IfNotPresent","Never"]},"lifecycle":{"description":"Actions that the management system should take in response to container lifecycle events. Cannot be updated.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Lifecycle"}]},"livenessProbe":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"}]},"name":{"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.","type":"string","default":""},"ports":{"description":"List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. 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. Cannot be updated.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerPort"}]},"x-kubernetes-list-map-keys":["containerPort","protocol"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"containerPort","x-kubernetes-patch-strategy":"merge"},"readinessProbe":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"}]},"resources":{"description":"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceRequirements"}]},"securityContext":{"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/","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecurityContext"}]},"startupProbe":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"}]},"stdin":{"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.","type":"boolean"},"stdinOnce":{"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","type":"boolean"},"terminationMessagePath":{"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.","type":"string"},"terminationMessagePolicy":{"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\nPossible enum values:\n - `\"FallbackToLogsOnError\"` will read the most recent contents of the container logs for the container status message when the container exits with an error and the terminationMessagePath has no contents.\n - `\"File\"` is the default behavior and will set the container status message to the contents of the container's terminationMessagePath when the container exits.","type":"string","enum":["FallbackToLogsOnError","File"]},"tty":{"description":"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.","type":"boolean"},"volumeDevices":{"description":"volumeDevices is the list of block devices to be used by the container.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeDevice"}]},"x-kubernetes-patch-merge-key":"devicePath","x-kubernetes-patch-strategy":"merge"},"volumeMounts":{"description":"Pod volumes to mount into the container's filesystem. Cannot be updated.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeMount"}]},"x-kubernetes-patch-merge-key":"mountPath","x-kubernetes-patch-strategy":"merge"},"workingDir":{"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.","type":"string"}}},"io.k8s.api.core.v1.ContainerPort":{"description":"ContainerPort represents a network port in a single container.","type":"object","required":["containerPort"],"properties":{"containerPort":{"description":"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \u003c x \u003c 65536.","type":"integer","format":"int32","default":0},"hostIP":{"description":"What host IP to bind the external port to.","type":"string"},"hostPort":{"description":"Number of port to expose on the host. If specified, this must be a valid port number, 0 \u003c x \u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.","type":"integer","format":"int32"},"name":{"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.","type":"string"},"protocol":{"description":"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n\nPossible enum values:\n - `\"SCTP\"` is the SCTP protocol.\n - `\"TCP\"` is the TCP protocol.\n - `\"UDP\"` is the UDP protocol.","type":"string","default":"TCP","enum":["SCTP","TCP","UDP"]}}},"io.k8s.api.core.v1.DownwardAPIProjection":{"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.","type":"object","properties":{"items":{"description":"Items is a list of DownwardAPIVolume file","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeFile"}]}}}},"io.k8s.api.core.v1.DownwardAPIVolumeFile":{"description":"DownwardAPIVolumeFile represents information to create the file containing the pod field","type":"object","required":["path"],"properties":{"fieldRef":{"description":"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectFieldSelector"}]},"mode":{"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.","type":"integer","format":"int32"},"path":{"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 '..'","type":"string","default":""},"resourceFieldRef":{"description":"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceFieldSelector"}]}}},"io.k8s.api.core.v1.DownwardAPIVolumeSource":{"description":"DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"description":"Items is a list of downward API volume file","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeFile"}]}}}},"io.k8s.api.core.v1.EmptyDirVolumeSource":{"description":"Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.","type":"object","properties":{"medium":{"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","type":"string"},"sizeLimit":{"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: http://kubernetes.io/docs/user-guide/volumes#emptydir","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}}},"io.k8s.api.core.v1.EnvFromSource":{"description":"EnvFromSource represents the source of a set of ConfigMaps","type":"object","properties":{"configMapRef":{"description":"The ConfigMap to select from","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapEnvSource"}]},"prefix":{"description":"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.","type":"string"},"secretRef":{"description":"The Secret to select from","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretEnvSource"}]}}},"io.k8s.api.core.v1.EnvVar":{"description":"EnvVar represents an environment variable present in a Container.","type":"object","required":["name"],"properties":{"name":{"description":"Name of the environment variable. Must be a C_IDENTIFIER.","type":"string","default":""},"value":{"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 \"\".","type":"string"},"valueFrom":{"description":"Source for the environment variable's value. Cannot be used if value is not empty.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvVarSource"}]}}},"io.k8s.api.core.v1.EnvVarSource":{"description":"EnvVarSource represents a source for the value of an EnvVar.","type":"object","properties":{"configMapKeyRef":{"description":"Selects a key of a ConfigMap.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapKeySelector"}]},"fieldRef":{"description":"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\u003cKEY\u003e']`, `metadata.annotations['\u003cKEY\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectFieldSelector"}]},"resourceFieldRef":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceFieldSelector"}]},"secretKeyRef":{"description":"Selects a key of a secret in the pod's namespace","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretKeySelector"}]}}},"io.k8s.api.core.v1.EphemeralContainer":{"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\nThis is a beta feature available on clusters that haven't disabled the EphemeralContainers feature gate.","type":"object","required":["name"],"properties":{"args":{"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","type":"array","items":{"type":"string","default":""}},"command":{"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","type":"array","items":{"type":"string","default":""}},"env":{"description":"List of environment variables to set in the container. Cannot be updated.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvVar"}]},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"envFrom":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvFromSource"}]}},"image":{"description":"Container image name. More info: https://kubernetes.io/docs/concepts/containers/images","type":"string"},"imagePullPolicy":{"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\nPossible enum values:\n - `\"Always\"` means that kubelet always attempts to pull the latest image. Container will fail If the pull fails.\n - `\"IfNotPresent\"` means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails.\n - `\"Never\"` means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present","type":"string","enum":["Always","IfNotPresent","Never"]},"lifecycle":{"description":"Lifecycle is not allowed for ephemeral containers.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Lifecycle"}]},"livenessProbe":{"description":"Probes are not allowed for ephemeral containers.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"}]},"name":{"description":"Name of the ephemeral container specified as a DNS_LABEL. This name must be unique among all containers, init containers and ephemeral containers.","type":"string","default":""},"ports":{"description":"Ports are not allowed for ephemeral containers.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerPort"}]},"x-kubernetes-list-map-keys":["containerPort","protocol"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"containerPort","x-kubernetes-patch-strategy":"merge"},"readinessProbe":{"description":"Probes are not allowed for ephemeral containers.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"}]},"resources":{"description":"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources already allocated to the pod.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceRequirements"}]},"securityContext":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecurityContext"}]},"startupProbe":{"description":"Probes are not allowed for ephemeral containers.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"}]},"stdin":{"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.","type":"boolean"},"stdinOnce":{"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","type":"boolean"},"targetContainerName":{"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.","type":"string"},"terminationMessagePath":{"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.","type":"string"},"terminationMessagePolicy":{"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\nPossible enum values:\n - `\"FallbackToLogsOnError\"` will read the most recent contents of the container logs for the container status message when the container exits with an error and the terminationMessagePath has no contents.\n - `\"File\"` is the default behavior and will set the container status message to the contents of the container's terminationMessagePath when the container exits.","type":"string","enum":["FallbackToLogsOnError","File"]},"tty":{"description":"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.","type":"boolean"},"volumeDevices":{"description":"volumeDevices is the list of block devices to be used by the container.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeDevice"}]},"x-kubernetes-patch-merge-key":"devicePath","x-kubernetes-patch-strategy":"merge"},"volumeMounts":{"description":"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers. Cannot be updated.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeMount"}]},"x-kubernetes-patch-merge-key":"mountPath","x-kubernetes-patch-strategy":"merge"},"workingDir":{"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.","type":"string"}}},"io.k8s.api.core.v1.EphemeralVolumeSource":{"description":"Represents an ephemeral volume that is handled by a normal storage driver.","type":"object","properties":{"volumeClaimTemplate":{"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 `\u003cpod name\u003e-\u003cvolume name\u003e` where `\u003cvolume name\u003e` 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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimTemplate"}]}}},"io.k8s.api.core.v1.ExecAction":{"description":"ExecAction describes a \"run in container\" action.","type":"object","properties":{"command":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.FCVolumeSource":{"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.","type":"object","properties":{"fsType":{"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.","type":"string"},"lun":{"description":"lun is Optional: FC target lun number","type":"integer","format":"int32"},"readOnly":{"description":"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"targetWWNs":{"description":"targetWWNs is Optional: FC target worldwide names (WWNs)","type":"array","items":{"type":"string","default":""}},"wwids":{"description":"wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.FlexVolumeSource":{"description":"FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.","type":"object","required":["driver"],"properties":{"driver":{"description":"driver is the name of the driver to use for this volume.","type":"string","default":""},"fsType":{"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.","type":"string"},"options":{"description":"options is Optional: this field holds extra command options if any.","type":"object","additionalProperties":{"type":"string","default":""}},"readOnly":{"description":"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}]}}},"io.k8s.api.core.v1.FlockerVolumeSource":{"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.","type":"object","properties":{"datasetName":{"description":"datasetName is Name of the dataset stored as metadata -\u003e name on the dataset for Flocker should be considered as deprecated","type":"string"},"datasetUUID":{"description":"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset","type":"string"}}},"io.k8s.api.core.v1.GCEPersistentDiskVolumeSource":{"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.","type":"object","required":["pdName"],"properties":{"fsType":{"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","type":"string"},"partition":{"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","type":"integer","format":"int32"},"pdName":{"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","type":"string","default":""},"readOnly":{"description":"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk","type":"boolean"}}},"io.k8s.api.core.v1.GRPCAction":{"type":"object","required":["port"],"properties":{"port":{"description":"Port number of the gRPC service. Number must be in the range 1 to 65535.","type":"integer","format":"int32","default":0},"service":{"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.","type":"string","default":""}}},"io.k8s.api.core.v1.GitRepoVolumeSource":{"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.","type":"object","required":["repository"],"properties":{"directory":{"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.","type":"string"},"repository":{"description":"repository is the URL","type":"string","default":""},"revision":{"description":"revision is the commit hash for the specified revision.","type":"string"}}},"io.k8s.api.core.v1.GlusterfsVolumeSource":{"description":"Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["endpoints","path"],"properties":{"endpoints":{"description":"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"path":{"description":"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"readOnly":{"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","type":"boolean"}}},"io.k8s.api.core.v1.HTTPGetAction":{"description":"HTTPGetAction describes an action based on HTTP Get requests.","type":"object","required":["port"],"properties":{"host":{"description":"Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.","type":"string"},"httpHeaders":{"description":"Custom headers to set in the request. HTTP allows repeated headers.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.HTTPHeader"}]}},"path":{"description":"Path to access on the HTTP server.","type":"string"},"port":{"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.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString"}]},"scheme":{"description":"Scheme to use for connecting to the host. Defaults to HTTP.\n\nPossible enum values:\n - `\"HTTP\"` means that the scheme used will be http://\n - `\"HTTPS\"` means that the scheme used will be https://","type":"string","enum":["HTTP","HTTPS"]}}},"io.k8s.api.core.v1.HTTPHeader":{"description":"HTTPHeader describes a custom header to be used in HTTP probes","type":"object","required":["name","value"],"properties":{"name":{"description":"The header field name","type":"string","default":""},"value":{"description":"The header field value","type":"string","default":""}}},"io.k8s.api.core.v1.HostAlias":{"description":"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.","type":"object","properties":{"hostnames":{"description":"Hostnames for the above IP address.","type":"array","items":{"type":"string","default":""}},"ip":{"description":"IP address of the host file entry.","type":"string"}}},"io.k8s.api.core.v1.HostPathVolumeSource":{"description":"Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.","type":"object","required":["path"],"properties":{"path":{"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","type":"string","default":""},"type":{"description":"type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath","type":"string"}}},"io.k8s.api.core.v1.ISCSIVolumeSource":{"description":"Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.","type":"object","required":["targetPortal","iqn","lun"],"properties":{"chapAuthDiscovery":{"description":"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication","type":"boolean"},"chapAuthSession":{"description":"chapAuthSession defines whether support iSCSI Session CHAP authentication","type":"boolean"},"fsType":{"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","type":"string"},"initiatorName":{"description":"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \u003ctarget portal\u003e:\u003cvolume name\u003e will be created for the connection.","type":"string"},"iqn":{"description":"iqn is the target iSCSI Qualified Name.","type":"string","default":""},"iscsiInterface":{"description":"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).","type":"string"},"lun":{"description":"lun represents iSCSI Target Lun number.","type":"integer","format":"int32","default":0},"portals":{"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).","type":"array","items":{"type":"string","default":""}},"readOnly":{"description":"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.","type":"boolean"},"secretRef":{"description":"secretRef is the CHAP Secret for iSCSI target and initiator authentication","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}]},"targetPortal":{"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).","type":"string","default":""}}},"io.k8s.api.core.v1.KeyToPath":{"description":"Maps a string key to a path within a volume.","type":"object","required":["key","path"],"properties":{"key":{"description":"key is the key to project.","type":"string","default":""},"mode":{"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.","type":"integer","format":"int32"},"path":{"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 '..'.","type":"string","default":""}}},"io.k8s.api.core.v1.Lifecycle":{"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.","type":"object","properties":{"postStart":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LifecycleHandler"}]},"preStop":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LifecycleHandler"}]}}},"io.k8s.api.core.v1.LifecycleHandler":{"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.","type":"object","properties":{"exec":{"description":"Exec specifies the action to take.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ExecAction"}]},"httpGet":{"description":"HTTPGet specifies the http request to perform.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.HTTPGetAction"}]},"tcpSocket":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.TCPSocketAction"}]}}},"io.k8s.api.core.v1.LocalObjectReference":{"description":"LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.NFSVolumeSource":{"description":"Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.","type":"object","required":["server","path"],"properties":{"path":{"description":"path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs","type":"string","default":""},"readOnly":{"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","type":"boolean"},"server":{"description":"server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs","type":"string","default":""}}},"io.k8s.api.core.v1.NodeAffinity":{"description":"Node affinity is a group of node affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PreferredSchedulingTerm"}]}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelector"}]}}},"io.k8s.api.core.v1.NodeSelector":{"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.","type":"object","required":["nodeSelectorTerms"],"properties":{"nodeSelectorTerms":{"description":"Required. A list of node selector terms. The terms are ORed.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorTerm"}]}}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.NodeSelectorRequirement":{"description":"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.","type":"object","required":["key","operator"],"properties":{"key":{"description":"The label key that the selector applies to.","type":"string","default":""},"operator":{"description":"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n\nPossible enum values:\n - `\"DoesNotExist\"`\n - `\"Exists\"`\n - `\"Gt\"`\n - `\"In\"`\n - `\"Lt\"`\n - `\"NotIn\"`","type":"string","default":"","enum":["DoesNotExist","Exists","Gt","In","Lt","NotIn"]},"values":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.NodeSelectorTerm":{"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.","type":"object","properties":{"matchExpressions":{"description":"A list of node selector requirements by node's labels.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorRequirement"}]}},"matchFields":{"description":"A list of node selector requirements by node's fields.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorRequirement"}]}}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ObjectFieldSelector":{"description":"ObjectFieldSelector selects an APIVersioned field of an object.","type":"object","required":["fieldPath"],"properties":{"apiVersion":{"description":"Version of the schema the FieldPath is written in terms of, defaults to \"v1\".","type":"string"},"fieldPath":{"description":"Path of the field to select in the specified API version.","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ObjectReference":{"description":"ObjectReference contains enough information to let you inspect or modify the referred object.","type":"object","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"fieldPath":{"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.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"},"resourceVersion":{"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","type":"string"},"uid":{"description":"UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids","type":"string"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.PersistentVolumeClaimSpec":{"description":"PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes","type":"object","properties":{"accessModes":{"description":"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1","type":"array","items":{"type":"string","default":""}},"dataSource":{"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. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.TypedLocalObjectReference"}]},"dataSourceRef":{"description":"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local 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, 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. There are two 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(Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.TypedLocalObjectReference"}]},"resources":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceRequirements"}]},"selector":{"description":"selector is a label query over volumes to consider for binding.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"}]},"storageClassName":{"description":"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1","type":"string"},"volumeMode":{"description":"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.","type":"string"},"volumeName":{"description":"volumeName is the binding reference to the PersistentVolume backing this claim.","type":"string"}}},"io.k8s.api.core.v1.PersistentVolumeClaimTemplate":{"description":"PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource.","type":"object","required":["spec"],"properties":{"metadata":{"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.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"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.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimSpec"}]}}},"io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource":{"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).","type":"object","required":["claimName"],"properties":{"claimName":{"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","type":"string","default":""},"readOnly":{"description":"readOnly Will force the ReadOnly setting in VolumeMounts. Default false.","type":"boolean"}}},"io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource":{"description":"Represents a Photon Controller persistent disk resource.","type":"object","required":["pdID"],"properties":{"fsType":{"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.","type":"string"},"pdID":{"description":"pdID is the ID that identifies Photon Controller persistent disk","type":"string","default":""}}},"io.k8s.api.core.v1.PodAffinity":{"description":"Pod affinity is a group of inter pod affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.WeightedPodAffinityTerm"}]}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm"}]}}}},"io.k8s.api.core.v1.PodAffinityTerm":{"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 \u003ctopologyKey\u003e matches that of any node on which a pod of the set of pods is running","type":"object","required":["topologyKey"],"properties":{"labelSelector":{"description":"A label query over a set of resources, in this case pods.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"}]},"namespaceSelector":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"}]},"namespaces":{"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\".","type":"array","items":{"type":"string","default":""}},"topologyKey":{"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.","type":"string","default":""}}},"io.k8s.api.core.v1.PodAntiAffinity":{"description":"Pod anti affinity is a group of inter pod anti affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.WeightedPodAffinityTerm"}]}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm"}]}}}},"io.k8s.api.core.v1.PodDNSConfig":{"description":"PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.","type":"object","properties":{"nameservers":{"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.","type":"array","items":{"type":"string","default":""}},"options":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodDNSConfigOption"}]}},"searches":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.PodDNSConfigOption":{"description":"PodDNSConfigOption defines DNS resolver options of a pod.","type":"object","properties":{"name":{"description":"Required.","type":"string"},"value":{"type":"string"}}},"io.k8s.api.core.v1.PodOS":{"description":"PodOS defines the OS parameters of a pod.","type":"object","required":["name"],"properties":{"name":{"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","type":"string","default":""}}},"io.k8s.api.core.v1.PodReadinessGate":{"description":"PodReadinessGate contains the reference to a pod condition","type":"object","required":["conditionType"],"properties":{"conditionType":{"description":"ConditionType refers to a condition in the pod's condition list with matching type.","type":"string","default":""}}},"io.k8s.api.core.v1.PodSecurityContext":{"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.","type":"object","properties":{"fsGroup":{"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.","type":"integer","format":"int64"},"fsGroupChangePolicy":{"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.","type":"string"},"runAsGroup":{"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.","type":"integer","format":"int64"},"runAsNonRoot":{"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.","type":"boolean"},"runAsUser":{"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.","type":"integer","format":"int64"},"seLinuxOptions":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SELinuxOptions"}]},"seccompProfile":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SeccompProfile"}]},"supplementalGroups":{"description":"A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container. Note that this field cannot be set when spec.os.name is windows.","type":"array","items":{"type":"integer","format":"int64","default":0}},"sysctls":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Sysctl"}]}},"windowsOptions":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.WindowsSecurityContextOptions"}]}}},"io.k8s.api.core.v1.PodSpec":{"description":"PodSpec is a description of a pod.","type":"object","required":["containers"],"properties":{"activeDeadlineSeconds":{"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.","type":"integer","format":"int64"},"affinity":{"description":"If specified, the pod's scheduling constraints","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Affinity"}]},"automountServiceAccountToken":{"description":"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.","type":"boolean"},"containers":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Container"}]},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"dnsConfig":{"description":"Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodDNSConfig"}]},"dnsPolicy":{"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\nPossible enum values:\n - `\"ClusterFirst\"` indicates that the pod should use cluster DNS first unless hostNetwork is true, if it is available, then fall back on the default (as determined by kubelet) DNS settings.\n - `\"ClusterFirstWithHostNet\"` indicates that the pod should use cluster DNS first, if it is available, then fall back on the default (as determined by kubelet) DNS settings.\n - `\"Default\"` indicates that the pod should use the default (as determined by kubelet) DNS settings.\n - `\"None\"` indicates that the pod should use empty DNS settings. DNS parameters such as nameservers and search paths should be defined via DNSConfig.","type":"string","enum":["ClusterFirst","ClusterFirstWithHostNet","Default","None"]},"enableServiceLinks":{"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.","type":"boolean"},"ephemeralContainers":{"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. This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EphemeralContainer"}]},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"hostAliases":{"description":"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.HostAlias"}]},"x-kubernetes-patch-merge-key":"ip","x-kubernetes-patch-strategy":"merge"},"hostIPC":{"description":"Use the host's ipc namespace. Optional: Default to false.","type":"boolean"},"hostNetwork":{"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.","type":"boolean"},"hostPID":{"description":"Use the host's pid namespace. Optional: Default to false.","type":"boolean"},"hostname":{"description":"Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.","type":"string"},"imagePullSecrets":{"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. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}]},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"initContainers":{"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/","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Container"}]},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"nodeName":{"description":"NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.","type":"string"},"nodeSelector":{"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/","type":"object","additionalProperties":{"type":"string","default":""},"x-kubernetes-map-type":"atomic"},"os":{"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.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.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 This is a beta field and requires the IdentifyPodOS feature","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodOS"}]},"overhead":{"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","type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}},"preemptionPolicy":{"description":"PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset.","type":"string"},"priority":{"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.","type":"integer","format":"int32"},"priorityClassName":{"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.","type":"string"},"readinessGates":{"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","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodReadinessGate"}]}},"restartPolicy":{"description":"Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\n\nPossible enum values:\n - `\"Always\"`\n - `\"Never\"`\n - `\"OnFailure\"`","type":"string","enum":["Always","Never","OnFailure"]},"runtimeClassName":{"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","type":"string"},"schedulerName":{"description":"If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.","type":"string"},"securityContext":{"description":"SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodSecurityContext"}]},"serviceAccount":{"description":"DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.","type":"string"},"serviceAccountName":{"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/","type":"string"},"setHostnameAsFQDN":{"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.","type":"boolean"},"shareProcessNamespace":{"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.","type":"boolean"},"subdomain":{"description":"If specified, the fully qualified Pod hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the pod will not have a domainname at all.","type":"string"},"terminationGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"tolerations":{"description":"If specified, the pod's tolerations.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Toleration"}]}},"topologySpreadConstraints":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.TopologySpreadConstraint"}]},"x-kubernetes-list-map-keys":["topologyKey","whenUnsatisfiable"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"topologyKey","x-kubernetes-patch-strategy":"merge"},"volumes":{"description":"List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Volume"}]},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge,retainKeys"}}},"io.k8s.api.core.v1.PodTemplateSpec":{"description":"PodTemplateSpec describes the data a pod should have when created from a template","type":"object","properties":{"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodSpec"}]}}},"io.k8s.api.core.v1.PortworxVolumeSource":{"description":"PortworxVolumeSource represents a Portworx volume resource.","type":"object","required":["volumeID"],"properties":{"fsType":{"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.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"volumeID":{"description":"volumeID uniquely identifies a Portworx volume","type":"string","default":""}}},"io.k8s.api.core.v1.PreferredSchedulingTerm":{"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).","type":"object","required":["weight","preference"],"properties":{"preference":{"description":"A node selector term, associated with the corresponding weight.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorTerm"}]},"weight":{"description":"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.Probe":{"description":"Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.","type":"object","properties":{"exec":{"description":"Exec specifies the action to take.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ExecAction"}]},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.","type":"integer","format":"int32"},"grpc":{"description":"GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.GRPCAction"}]},"httpGet":{"description":"HTTPGet specifies the http request to perform.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.HTTPGetAction"}]},"initialDelaySeconds":{"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","type":"integer","format":"int32"},"periodSeconds":{"description":"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.","type":"integer","format":"int32"},"successThreshold":{"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.","type":"integer","format":"int32"},"tcpSocket":{"description":"TCPSocket specifies an action involving a TCP port.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.TCPSocketAction"}]},"terminationGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"timeoutSeconds":{"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","type":"integer","format":"int32"}}},"io.k8s.api.core.v1.ProjectedVolumeSource":{"description":"Represents a projected volume source","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"sources":{"description":"sources is the list of volume projections","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeProjection"}]}}}},"io.k8s.api.core.v1.QuobyteVolumeSource":{"description":"Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.","type":"object","required":["registry","volume"],"properties":{"group":{"description":"group to map volume access to Default is no group","type":"string"},"readOnly":{"description":"readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.","type":"boolean"},"registry":{"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","type":"string","default":""},"tenant":{"description":"tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin","type":"string"},"user":{"description":"user to map volume access to Defaults to serivceaccount user","type":"string"},"volume":{"description":"volume is a string that references an already created Quobyte volume by name.","type":"string","default":""}}},"io.k8s.api.core.v1.RBDVolumeSource":{"description":"Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.","type":"object","required":["monitors","image"],"properties":{"fsType":{"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","type":"string"},"image":{"description":"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string","default":""},"keyring":{"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","type":"string"},"monitors":{"description":"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"array","items":{"type":"string","default":""}},"pool":{"description":"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}]},"user":{"description":"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"}}},"io.k8s.api.core.v1.ResourceFieldSelector":{"description":"ResourceFieldSelector represents container resources (cpu, memory) and their output format","type":"object","required":["resource"],"properties":{"containerName":{"description":"Container name: required for volumes, optional for env vars","type":"string"},"divisor":{"description":"Specifies the output format of the exposed resources, defaults to \"1\"","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]},"resource":{"description":"Required: resource to select","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ResourceRequirements":{"description":"ResourceRequirements describes the compute resource requirements.","type":"object","properties":{"limits":{"description":"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}},"requests":{"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. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"object","additionalProperties":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}]}}}},"io.k8s.api.core.v1.SELinuxOptions":{"description":"SELinuxOptions are the labels to be applied to the container","type":"object","properties":{"level":{"description":"Level is SELinux level label that applies to the container.","type":"string"},"role":{"description":"Role is a SELinux role label that applies to the container.","type":"string"},"type":{"description":"Type is a SELinux type label that applies to the container.","type":"string"},"user":{"description":"User is a SELinux user label that applies to the container.","type":"string"}}},"io.k8s.api.core.v1.ScaleIOVolumeSource":{"description":"ScaleIOVolumeSource represents a persistent ScaleIO volume","type":"object","required":["gateway","system","secretRef"],"properties":{"fsType":{"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\".","type":"string"},"gateway":{"description":"gateway is the host address of the ScaleIO API Gateway.","type":"string","default":""},"protectionDomain":{"description":"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.","type":"string"},"readOnly":{"description":"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}]},"sslEnabled":{"description":"sslEnabled Flag enable/disable SSL communication with Gateway, default false","type":"boolean"},"storageMode":{"description":"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.","type":"string"},"storagePool":{"description":"storagePool is the ScaleIO Storage Pool associated with the protection domain.","type":"string"},"system":{"description":"system is the name of the storage system as configured in ScaleIO.","type":"string","default":""},"volumeName":{"description":"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.","type":"string"}}},"io.k8s.api.core.v1.SeccompProfile":{"description":"SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set.","type":"object","required":["type"],"properties":{"localhostProfile":{"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 only be set if type is \"Localhost\".","type":"string"},"type":{"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\nPossible enum values:\n - `\"Localhost\"` indicates a profile defined in a file on the node should be used. The file's location relative to \u003ckubelet-root-dir\u003e/seccomp.\n - `\"RuntimeDefault\"` represents the default container runtime seccomp profile.\n - `\"Unconfined\"` indicates no seccomp profile is applied (A.K.A. unconfined).","type":"string","default":"","enum":["Localhost","RuntimeDefault","Unconfined"]}},"x-kubernetes-unions":[{"discriminator":"type","fields-to-discriminateBy":{"localhostProfile":"LocalhostProfile"}}]},"io.k8s.api.core.v1.SecretEnvSource":{"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.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the Secret must be defined","type":"boolean"}}},"io.k8s.api.core.v1.SecretKeySelector":{"description":"SecretKeySelector selects a key of a Secret.","type":"object","required":["key"],"properties":{"key":{"description":"The key of the secret to select from. Must be a valid secret key.","type":"string","default":""},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the Secret or its key must be defined","type":"boolean"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.SecretProjection":{"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.","type":"object","properties":{"items":{"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 '..'.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}]}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional field specify whether the Secret or its key must be defined","type":"boolean"}}},"io.k8s.api.core.v1.SecretVolumeSource":{"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.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"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 '..'.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}]}},"optional":{"description":"optional field specify whether the Secret or its keys must be defined","type":"boolean"},"secretName":{"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","type":"string"}}},"io.k8s.api.core.v1.SecurityContext":{"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.","type":"object","properties":{"allowPrivilegeEscalation":{"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.","type":"boolean"},"capabilities":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.Capabilities"}]},"privileged":{"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.","type":"boolean"},"procMount":{"description":"procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount 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.","type":"string"},"readOnlyRootFilesystem":{"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.","type":"boolean"},"runAsGroup":{"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.","type":"integer","format":"int64"},"runAsNonRoot":{"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.","type":"boolean"},"runAsUser":{"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.","type":"integer","format":"int64"},"seLinuxOptions":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SELinuxOptions"}]},"seccompProfile":{"description":"The seccomp options to use by this container. If seccomp options are provided at both the pod \u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SeccompProfile"}]},"windowsOptions":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.WindowsSecurityContextOptions"}]}}},"io.k8s.api.core.v1.ServiceAccountTokenProjection":{"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).","type":"object","required":["path"],"properties":{"audience":{"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.","type":"string"},"expirationSeconds":{"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.","type":"integer","format":"int64"},"path":{"description":"path is the path relative to the mount point of the file to project the token into.","type":"string","default":""}}},"io.k8s.api.core.v1.StorageOSVolumeSource":{"description":"Represents a StorageOS persistent volume resource.","type":"object","properties":{"fsType":{"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.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}]},"volumeName":{"description":"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.","type":"string"},"volumeNamespace":{"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.","type":"string"}}},"io.k8s.api.core.v1.Sysctl":{"description":"Sysctl defines a kernel parameter to be set","type":"object","required":["name","value"],"properties":{"name":{"description":"Name of a property to set","type":"string","default":""},"value":{"description":"Value of a property to set","type":"string","default":""}}},"io.k8s.api.core.v1.TCPSocketAction":{"description":"TCPSocketAction describes an action based on opening a socket","type":"object","required":["port"],"properties":{"host":{"description":"Optional: Host name to connect to, defaults to the pod IP.","type":"string"},"port":{"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.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString"}]}}},"io.k8s.api.core.v1.Toleration":{"description":"The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.","type":"object","properties":{"effect":{"description":"Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n\nPossible enum values:\n - `\"NoExecute\"` Evict any already-running pods that do not tolerate the taint. Currently enforced by NodeController.\n - `\"NoSchedule\"` Do not allow new pods to schedule onto the node unless they tolerate the taint, but allow all pods submitted to Kubelet without going through the scheduler to start, and allow all already-running pods to continue running. Enforced by the scheduler.\n - `\"PreferNoSchedule\"` Like TaintEffectNoSchedule, but the scheduler tries not to schedule new pods onto the node, rather than prohibiting new pods from scheduling onto the node entirely. Enforced by the scheduler.","type":"string","enum":["NoExecute","NoSchedule","PreferNoSchedule"]},"key":{"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.","type":"string"},"operator":{"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\nPossible enum values:\n - `\"Equal\"`\n - `\"Exists\"`","type":"string","enum":["Equal","Exists"]},"tolerationSeconds":{"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.","type":"integer","format":"int64"},"value":{"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.","type":"string"}}},"io.k8s.api.core.v1.TopologySpreadConstraint":{"description":"TopologySpreadConstraint specifies how to spread matching pods among the given topology.","type":"object","required":["maxSkew","topologyKey","whenUnsatisfiable"],"properties":{"labelSelector":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"}]},"maxSkew":{"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.","type":"integer","format":"int32","default":0},"minDomains":{"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\nThis is an alpha field and requires enabling MinDomainsInPodTopologySpread feature gate.","type":"integer","format":"int32"},"topologyKey":{"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 \u003ckey, value\u003e 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 match the node selector. 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.","type":"string","default":""},"whenUnsatisfiable":{"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\nPossible enum values:\n - `\"DoNotSchedule\"` instructs the scheduler not to schedule the pod when constraints are not satisfied.\n - `\"ScheduleAnyway\"` instructs the scheduler to schedule the pod even if constraints are not satisfied.","type":"string","default":"","enum":["DoNotSchedule","ScheduleAnyway"]}}},"io.k8s.api.core.v1.TypedLocalObjectReference":{"description":"TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.","type":"object","required":["kind","name"],"properties":{"apiGroup":{"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.","type":"string"},"kind":{"description":"Kind is the type of resource being referenced","type":"string","default":""},"name":{"description":"Name is the name of resource being referenced","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.Volume":{"description":"Volume represents a named volume in a pod that may be accessed by any container in the pod.","type":"object","required":["name"],"properties":{"awsElasticBlockStore":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource"}]},"azureDisk":{"description":"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.AzureDiskVolumeSource"}]},"azureFile":{"description":"azureFile represents an Azure File Service mount on the host and bind mount to the pod.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.AzureFileVolumeSource"}]},"cephfs":{"description":"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.CephFSVolumeSource"}]},"cinder":{"description":"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.CinderVolumeSource"}]},"configMap":{"description":"configMap represents a configMap that should populate this volume","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapVolumeSource"}]},"csi":{"description":"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.CSIVolumeSource"}]},"downwardAPI":{"description":"downwardAPI represents downward API about the pod that should populate this volume","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeSource"}]},"emptyDir":{"description":"emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EmptyDirVolumeSource"}]},"ephemeral":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.EphemeralVolumeSource"}]},"fc":{"description":"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.FCVolumeSource"}]},"flexVolume":{"description":"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.FlexVolumeSource"}]},"flocker":{"description":"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.FlockerVolumeSource"}]},"gcePersistentDisk":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource"}]},"gitRepo":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.GitRepoVolumeSource"}]},"glusterfs":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.GlusterfsVolumeSource"}]},"hostPath":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.HostPathVolumeSource"}]},"iscsi":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ISCSIVolumeSource"}]},"name":{"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","type":"string","default":""},"nfs":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.NFSVolumeSource"}]},"persistentVolumeClaim":{"description":"persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource"}]},"photonPersistentDisk":{"description":"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource"}]},"portworxVolume":{"description":"portworxVolume represents a portworx volume attached and mounted on kubelets host machine","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PortworxVolumeSource"}]},"projected":{"description":"projected items for all in one resources secrets, configmaps, and downward API","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ProjectedVolumeSource"}]},"quobyte":{"description":"quobyte represents a Quobyte mount on the host that shares a pod's lifetime","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.QuobyteVolumeSource"}]},"rbd":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.RBDVolumeSource"}]},"scaleIO":{"description":"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ScaleIOVolumeSource"}]},"secret":{"description":"secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretVolumeSource"}]},"storageos":{"description":"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.StorageOSVolumeSource"}]},"vsphereVolume":{"description":"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource"}]}}},"io.k8s.api.core.v1.VolumeDevice":{"description":"volumeDevice describes a mapping of a raw block device within a container.","type":"object","required":["name","devicePath"],"properties":{"devicePath":{"description":"devicePath is the path inside of the container that the device will be mapped to.","type":"string","default":""},"name":{"description":"name must match the name of a persistentVolumeClaim in the pod","type":"string","default":""}}},"io.k8s.api.core.v1.VolumeMount":{"description":"VolumeMount describes a mounting of a Volume within a container.","type":"object","required":["name","mountPath"],"properties":{"mountPath":{"description":"Path within the container at which the volume should be mounted. Must not contain ':'.","type":"string","default":""},"mountPropagation":{"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.","type":"string"},"name":{"description":"This must match the Name of a Volume.","type":"string","default":""},"readOnly":{"description":"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.","type":"boolean"},"subPath":{"description":"Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).","type":"string"},"subPathExpr":{"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.","type":"string"}}},"io.k8s.api.core.v1.VolumeProjection":{"description":"Projection that may be projected along with other supported volume types","type":"object","properties":{"configMap":{"description":"configMap information about the configMap data to project","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapProjection"}]},"downwardAPI":{"description":"downwardAPI information about the downwardAPI data to project","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIProjection"}]},"secret":{"description":"secret information about the secret data to project","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretProjection"}]},"serviceAccountToken":{"description":"serviceAccountToken is information about the serviceAccountToken data to project","allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountTokenProjection"}]}}},"io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource":{"description":"Represents a vSphere volume resource.","type":"object","required":["volumePath"],"properties":{"fsType":{"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.","type":"string"},"storagePolicyID":{"description":"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.","type":"string"},"storagePolicyName":{"description":"storagePolicyName is the storage Policy Based Management (SPBM) profile name.","type":"string"},"volumePath":{"description":"volumePath is the path that identifies vSphere volume vmdk","type":"string","default":""}}},"io.k8s.api.core.v1.WeightedPodAffinityTerm":{"description":"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)","type":"object","required":["weight","podAffinityTerm"],"properties":{"podAffinityTerm":{"description":"Required. A pod affinity term, associated with the corresponding weight.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm"}]},"weight":{"description":"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.WindowsSecurityContextOptions":{"description":"WindowsSecurityContextOptions contain Windows-specific options and credentials.","type":"object","properties":{"gmsaCredentialSpec":{"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.","type":"string"},"gmsaCredentialSpecName":{"description":"GMSACredentialSpecName is the name of the GMSA credential spec to use.","type":"string"},"hostProcess":{"description":"HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. 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.","type":"boolean"},"runAsUserName":{"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.","type":"string"}}},"io.k8s.apimachinery.pkg.api.resource.Quantity":{"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\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\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 a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 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.","type":"string"},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResource":{"description":"APIResource specifies the name of a resource and whether it is namespaced.","type":"object","required":["name","singularName","namespaced","kind","verbs"],"properties":{"categories":{"description":"categories is a list of the grouped resources this resource belongs to (e.g. 'all')","type":"array","items":{"type":"string","default":""}},"group":{"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\".","type":"string"},"kind":{"description":"kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')","type":"string","default":""},"name":{"description":"name is the plural name of the resource.","type":"string","default":""},"namespaced":{"description":"namespaced indicates if a resource is namespaced or not.","type":"boolean","default":false},"shortNames":{"description":"shortNames is a list of suggested short names of the resource.","type":"array","items":{"type":"string","default":""}},"singularName":{"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.","type":"string","default":""},"storageVersionHash":{"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.","type":"string"},"verbs":{"description":"verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)","type":"array","items":{"type":"string","default":""}},"version":{"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)\".","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList":{"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.","type":"object","required":["groupVersion","resources"],"properties":{"apiVersion":{"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","type":"string"},"groupVersion":{"description":"groupVersion is the group and version this APIResourceList is for.","type":"string","default":""},"kind":{"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","type":"string"},"resources":{"description":"resources contains the name of the resources and if they are namespaced.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResource"}]}}},"x-kubernetes-group-version-kind":[{"group":"","kind":"APIResourceList","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"}]},"propagationPolicy":{"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.","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta2"},{"group":"batch","kind":"DeleteOptions","version":"v1"},{"group":"batch","kind":"DeleteOptions","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"extensions","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"policy","kind":"DeleteOptions","version":"v1"},{"group":"policy","kind":"DeleteOptions","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector":{"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.","type":"object","properties":{"matchExpressions":{"description":"matchExpressions is a list of label selector requirements. The requirements are ANDed.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement"}]}},"matchLabels":{"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.","type":"object","additionalProperties":{"type":"string","default":""}}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement":{"description":"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.","type":"object","required":["key","operator"],"properties":{"key":{"description":"key is the label key that the selector applies to.","type":"string","default":"","x-kubernetes-patch-merge-key":"key","x-kubernetes-patch-strategy":"merge"},"operator":{"description":"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.","type":"string","default":""},"values":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"}]},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"clusterName":{"description":"Deprecated: ClusterName is a legacy field that was always cleared by the system and never used; it will be removed completely in 1.25.\n\nThe name in the go struct is changed to help clients detect accidental use.","type":"string"},"creationTimestamp":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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 NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}]}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"}]},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"}]},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]},"reason":{"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.","type":"string"},"status":{"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","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Status","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}]}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"},"io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent":{"description":"Event represents a single event to a watched resource.","type":"object","required":["type","object"],"properties":{"object":{"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.","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.runtime.RawExtension"}]},"type":{"type":"string","default":""}},"x-kubernetes-group-version-kind":[{"group":"","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1"},{"group":"apps","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta2"},{"group":"batch","kind":"WatchEvent","version":"v1"},{"group":"batch","kind":"WatchEvent","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"extensions","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"policy","kind":"WatchEvent","version":"v1"},{"group":"policy","kind":"WatchEvent","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.runtime.RawExtension":{"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: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.Object `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// External package: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.RawExtension `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// On the wire, the JSON will look something like this: {\n\t\"kind\":\"MyAPIObject\",\n\t\"apiVersion\":\"v1\",\n\t\"myPlugin\": {\n\t\t\"kind\":\"PluginA\",\n\t\t\"aOption\":\"foo\",\n\t},\n}\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.)","type":"object"},"io.k8s.apimachinery.pkg.util.intstr.IntOrString":{"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.","type":"string","format":"int-or-string"}},"securitySchemes":{"BearerToken":{"type":"apiKey","description":"Bearer Token authentication","name":"authorization","in":"header"}}}} golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/000077500000000000000000000000001453663023200233255ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/openapi.go000066400000000000000000000164001453663023200253100ustar00rootroot00000000000000/* Copyright 2022 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package schemaconv import ( "errors" "path" "strings" "k8s.io/kube-openapi/pkg/validation/spec" "sigs.k8s.io/structured-merge-diff/v4/schema" ) // ToSchemaFromOpenAPI converts a directory of OpenAPI schemas to an smd Schema. // - models: a map from definition name to OpenAPI V3 structural schema for each definition. // Key in map is used to resolve references in the schema. // - preserveUnknownFields: flag indicating whether unknown fields in all schemas should be preserved. // - returns: nil and an error if there is a parse error, or if schema does not satisfy a // required structural schema invariant for conversion. If no error, returns // a new smd schema. // // Schema should be validated as structural before using with this function, or // there may be information lost. func ToSchemaFromOpenAPI(models map[string]*spec.Schema, preserveUnknownFields bool) (*schema.Schema, error) { c := convert{ preserveUnknownFields: preserveUnknownFields, output: &schema.Schema{}, } for name, spec := range models { // Skip/Ignore top-level references if len(spec.Ref.String()) > 0 { continue } var a schema.Atom // Hard-coded schemas for now as proto_models implementation functions. // https://github.com/kubernetes/kube-openapi/issues/364 if name == quantityResource { a = schema.Atom{ Scalar: untypedDef.Atom.Scalar, } } else if name == rawExtensionResource { a = untypedDef.Atom } else { c2 := c.push(name, &a) c2.visitSpec(spec) c.pop(c2) } c.insertTypeDef(name, a) } if len(c.errorMessages) > 0 { return nil, errors.New(strings.Join(c.errorMessages, "\n")) } c.addCommonTypes() return c.output, nil } func (c *convert) visitSpec(m *spec.Schema) { // Check if this schema opts its descendants into preserve-unknown-fields if p, ok := m.Extensions["x-kubernetes-preserve-unknown-fields"]; ok && p == true { c.preserveUnknownFields = true } a := c.top() *a = c.parseSchema(m) } func (c *convert) parseSchema(m *spec.Schema) schema.Atom { // k8s-generated OpenAPI specs have historically used only one value for // type and starting with OpenAPIV3 it is only allowed to be // a single string. typ := "" if len(m.Type) > 0 { typ = m.Type[0] } // Structural Schemas produced by kubernetes follow very specific rules which // we can use to infer the SMD type: switch typ { case "": // According to Swagger docs: // https://swagger.io/docs/specification/data-models/data-types/#any // // If no type is specified, it is equivalent to accepting any type. return schema.Atom{ Scalar: ptr(schema.Scalar("untyped")), List: c.parseList(m), Map: c.parseObject(m), } case "object": return schema.Atom{ Map: c.parseObject(m), } case "array": return schema.Atom{ List: c.parseList(m), } case "integer", "boolean", "number", "string": return convertPrimitive(typ, m.Format) default: c.reportError("unrecognized type: '%v'", typ) return schema.Atom{ Scalar: ptr(schema.Scalar("untyped")), } } } func (c *convert) makeOpenAPIRef(specSchema *spec.Schema) schema.TypeRef { refString := specSchema.Ref.String() // Special-case handling for $ref stored inside a single-element allOf if len(refString) == 0 && len(specSchema.AllOf) == 1 && len(specSchema.AllOf[0].Ref.String()) > 0 { refString = specSchema.AllOf[0].Ref.String() } if _, n := path.Split(refString); len(n) > 0 { //!TODO: Refactor the field ElementRelationship override // we can generate the types with overrides ahead of time rather than // requiring the hacky runtime support // (could just create a normalized key struct containing all customizations // to deduplicate) mapRelationship, err := getMapElementRelationship(specSchema.Extensions) if err != nil { c.reportError(err.Error()) } if len(mapRelationship) > 0 { return schema.TypeRef{ NamedType: &n, ElementRelationship: &mapRelationship, } } return schema.TypeRef{ NamedType: &n, } } var inlined schema.Atom // compute the type inline c2 := c.push("inlined in "+c.currentName, &inlined) c2.preserveUnknownFields = c.preserveUnknownFields c2.visitSpec(specSchema) c.pop(c2) return schema.TypeRef{ Inlined: inlined, } } func (c *convert) parseObject(s *spec.Schema) *schema.Map { var fields []schema.StructField for name, member := range s.Properties { fields = append(fields, schema.StructField{ Name: name, Type: c.makeOpenAPIRef(&member), Default: member.Default, }) } // AdditionalProperties informs the schema of any "unknown" keys // Unknown keys are enforced by the ElementType field. elementType := func() schema.TypeRef { if s.AdditionalProperties == nil { // According to openAPI spec, an object without properties and without // additionalProperties is assumed to be a free-form object. if c.preserveUnknownFields || len(s.Properties) == 0 { return schema.TypeRef{ NamedType: &deducedName, } } // If properties are specified, do not implicitly allow unknown // fields return schema.TypeRef{} } else if s.AdditionalProperties.Schema != nil { // Unknown fields use the referred schema return c.makeOpenAPIRef(s.AdditionalProperties.Schema) } else if s.AdditionalProperties.Allows { // A boolean instead of a schema was provided. Deduce the // type from the value provided at runtime. return schema.TypeRef{ NamedType: &deducedName, } } else { // Additional Properties are explicitly disallowed by the user. // Ensure element type is empty. return schema.TypeRef{} } }() relationship, err := getMapElementRelationship(s.Extensions) if err != nil { c.reportError(err.Error()) } return &schema.Map{ Fields: fields, ElementRelationship: relationship, ElementType: elementType, } } func (c *convert) parseList(s *spec.Schema) *schema.List { relationship, mapKeys, err := getListElementRelationship(s.Extensions) if err != nil { c.reportError(err.Error()) } elementType := func() schema.TypeRef { if s.Items != nil { if s.Items.Schema == nil || s.Items.Len() != 1 { c.reportError("structural schema arrays must have exactly one member subtype") return schema.TypeRef{ NamedType: &deducedName, } } subSchema := s.Items.Schema if subSchema == nil { subSchema = &s.Items.Schemas[0] } return c.makeOpenAPIRef(subSchema) } else if len(s.Type) > 0 && len(s.Type[0]) > 0 { c.reportError("`items` must be specified on arrays") } // A list with no items specified is treated as "untyped". return schema.TypeRef{ NamedType: &untypedName, } }() return &schema.List{ ElementRelationship: relationship, Keys: mapKeys, ElementType: elementType, } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/openapi_test.go000066400000000000000000000273141453663023200263550ustar00rootroot00000000000000/* Copyright 2022 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package schemaconv_test import ( "encoding/json" "os" "reflect" "sort" "strings" "testing" openapi_v2 "github.com/google/gnostic-models/openapiv2" "github.com/stretchr/testify/require" "k8s.io/kube-openapi/pkg/schemaconv" "k8s.io/kube-openapi/pkg/spec3" "k8s.io/kube-openapi/pkg/util/proto" "k8s.io/kube-openapi/pkg/validation/spec" "sigs.k8s.io/structured-merge-diff/v4/schema" ) var swaggerJSONPath = "testdata/swagger.json" var testCRDPath = "testdata/crds" var deducedName string = "__untyped_deduced_" var untypedName string = "__untyped_atomic_" const ( quantityResource = "io.k8s.apimachinery.pkg.api.resource.Quantity" rawExtensionResource = "io.k8s.apimachinery.pkg.runtime.RawExtension" ) func toPtrMap[T comparable, V any](m map[T]V) map[T]*V { if m == nil { return nil } res := map[T]*V{} for k, v := range m { vCopy := v res[k] = &vCopy } return res } func normalizeTypeRef(tr *schema.TypeRef) { var untypedScalar schema.Scalar = "untyped" // Deduplicate deducedDef if tr.Inlined.Equals(&schema.Atom{ Scalar: &untypedScalar, List: &schema.List{ ElementType: schema.TypeRef{ NamedType: &untypedName, }, ElementRelationship: schema.Atomic, }, Map: &schema.Map{ ElementType: schema.TypeRef{ NamedType: &deducedName, }, ElementRelationship: schema.Separable, }, }) { *tr = schema.TypeRef{ NamedType: &deducedName, } } else if tr.NamedType != nil && *tr.NamedType == rawExtensionResource { // In old conversion all references to rawExtension were // replaced with untyped. In new implementation we preserve // the references and instead change the raw extension type // to untyped. // For normalization, just convert rawextension references // to "untyped" *tr = schema.TypeRef{ NamedType: &untypedName, } } else { normalizeType(&tr.Inlined) } } // There are minor differences in new API that are semantically equivalent: // 1. old openapi would replace refs to RawExtensoin with "untyped" and leave // RawExtension with a non-referenced/nonworking definition. New implemenatation // makes RawExtensoin "untyped", and leaves references to RawExtension. // 2. old openapi would include "separable" relationship with // arbitrary/deduced maps where the new implementation leaves it unset // if it is unset by the user. func normalizeType(typ *schema.Atom) { if typ.List != nil { if typ.List.ElementType.Inlined != (schema.Atom{}) { typ.List = &*typ.List normalizeTypeRef(&typ.List.ElementType) } } if typ.Map != nil { typ.Map = &*typ.Map fields := make([]schema.StructField, 0) copy(typ.Fields, fields) typ.Fields = fields for i, f := range typ.Fields { // Known Difference: Old conversion parses "{}" as empty map[any]any. // New conversion parses it as empty map[string]any if reflect.DeepEqual(f.Default, map[any]any{}) { f.Default = map[string]any{} } normalizeTypeRef(&f.Type) typ.Fields[i] = f } sort.SliceStable(typ.Fields, func(i, j int) bool { return strings.Compare(typ.Fields[i].Name, typ.Fields[j].Name) < 0 }) // Current unions implementation is busted and not supported in new // format. Do not include in comparison typ.Unions = nil if typ.Map.ElementType.NamedType != nil { if len(typ.Map.ElementRelationship) == 0 && typ.Scalar != nil && typ.List != nil && *typ.Map.ElementType.NamedType == deducedName { // In old implementation arbitrary/deduced map would always also // include "separable". // New implementation has some code paths that dont follow that // (separable is default) so always attaach separable to deduced. typ.Map.ElementRelationship = schema.Separable } } normalizeTypeRef(&typ.Map.ElementType) } } // Can't directly proto models conversion to direct conversion due to subtle, // expected differences between the two conversion methods. // i.e. toProtoModels preserves sort order of fields. Direct conversion does not // (due to spec.Schema using map for fields vs gnostic's slice) func normalizeTypes(types []schema.TypeDef) map[string]schema.TypeDef { res := map[string]schema.TypeDef{} for _, typ := range types { if _, exists := res[typ.Name]; !exists { normalizeType(&typ.Atom) res[typ.Name] = typ } } // Old conversion would leave broken raw-extension definition, and just replace // references to it with an inlined __untyped_atomic_ // The new conversion leaves references to rawextension in place, and instead // fixes the definition of RawExtension. // // This bit of code reverts the new conversion's fix, and puts in place the old // broken raw extension definition. res["io.k8s.apimachinery.pkg.runtime.RawExtension"] = schema.TypeDef{ Name: "io.k8s.apimachinery.pkg.runtime.RawExtension", Atom: schema.Atom{ Map: &schema.Map{ ElementType: schema.TypeRef{ NamedType: &deducedName, }, }, }, } // v3 CRDs do not contain these orphaned, unnecessary definitions but v2 does //!TODO: either bring v3 to parity, or just remove these from v2 samples ignoreList := []string{ "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig", "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion", "io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions", "io.k8s.apimachinery.pkg.apis.meta.v1.Patch", "io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions", "io.k8s.apimachinery.pkg.apis.meta.v1.Status", "io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause", "io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails", } for _, k := range ignoreList { delete(res, k) } return res } func TestCRDOpenAPIConversion(t *testing.T) { files, err := os.ReadDir("testdata/crds/openapiv2") require.NoError(t, err) for _, entry := range files { t.Run(entry.Name(), func(t *testing.T) { t.Parallel() openAPIV2Contents, err := os.ReadFile("testdata/crds/openapiv2/" + entry.Name()) require.NoError(t, err) openAPIV3Contents, err := os.ReadFile("testdata/crds/openapiv3/" + entry.Name()) require.NoError(t, err) var v3 spec3.OpenAPI err = json.Unmarshal(openAPIV3Contents, &v3) require.NoError(t, err) v2Types, err := specToSchemaViaProtoModels(openAPIV2Contents) require.NoError(t, err) v3Types, err := schemaconv.ToSchemaFromOpenAPI(v3.Components.Schemas, false) require.NoError(t, err) require.Equal(t, normalizeTypes(v2Types.Types), normalizeTypes(v3Types.Types)) }) } } // Using all models defined in swagger.json // Convert to SMD using two methods: // 1. Spec -> SMD // 2. Spec -> JSON -> gnostic -> SMD // // Compare YAML forms. We have some allowed differences... func TestOpenAPIImplementation(t *testing.T) { swaggerJSON, err := os.ReadFile(swaggerJSONPath) require.NoError(t, err) protoModels, err := specToSchemaViaProtoModels(swaggerJSON) require.NoError(t, err) var swag spec.Swagger err = json.Unmarshal(swaggerJSON, &swag) require.NoError(t, err) newConversionTypes, err := schemaconv.ToSchemaFromOpenAPI(toPtrMap(swag.Definitions), false) require.NoError(t, err) require.Equal(t, normalizeTypes(protoModels.Types), normalizeTypes(newConversionTypes.Types)) } func specToSchemaViaProtoModels(input []byte) (*schema.Schema, error) { document, err := openapi_v2.ParseDocument(input) if err != nil { return nil, err } models, err := proto.NewOpenAPIData(document) if err != nil { return nil, err } newSchema, err := schemaconv.ToSchema(models) if err != nil { return nil, err } return newSchema, nil } func BenchmarkOpenAPIConversion(b *testing.B) { swaggerJSON, err := os.ReadFile(swaggerJSONPath) require.NoError(b, err) doc := spec.Swagger{} require.NoError(b, doc.UnmarshalJSON(swaggerJSON)) // Beginning the benchmark from spec.Schema, since that is the format // stored by the kube-apiserver b.Run("spec.Schema->schema.Schema", func(b *testing.B) { b.ReportAllocs() for i := 0; i < b.N; i++ { _, err := schemaconv.ToSchemaFromOpenAPI(toPtrMap(doc.Definitions), false) require.NoError(b, err) } }) b.Run("spec.Schema->json->gnostic_v2->proto.Models->schema.Schema", func(b *testing.B) { b.ReportAllocs() for i := 0; i < b.N; i++ { jsonText, err := doc.MarshalJSON() require.NoError(b, err) _, err = specToSchemaViaProtoModels(jsonText) require.NoError(b, err) } }) } func BenchmarkOpenAPICRDConversion(b *testing.B) { files, err := os.ReadDir("testdata/crds/openapiv2") require.NoError(b, err) for _, entry := range files { b.Run(entry.Name(), func(b *testing.B) { openAPIV2Contents, err := os.ReadFile("testdata/crds/openapiv2/" + entry.Name()) require.NoError(b, err) openAPIV3Contents, err := os.ReadFile("testdata/crds/openapiv3/" + entry.Name()) require.NoError(b, err) var v2 spec.Swagger var v3 spec3.OpenAPI err = json.Unmarshal(openAPIV2Contents, &v2) require.NoError(b, err) err = json.Unmarshal(openAPIV3Contents, &v3) require.NoError(b, err) // Beginning the benchmark from spec.Schema, since that is the format // stored by the kube-apiserver b.Run("spec.Schema->schema.Schema", func(b *testing.B) { b.ReportAllocs() for i := 0; i < b.N; i++ { _, err := schemaconv.ToSchemaFromOpenAPI(v3.Components.Schemas, false) require.NoError(b, err) } }) b.Run("spec.Schema->json->gnostic_v2->proto.Models->schema.Schema", func(b *testing.B) { b.ReportAllocs() for i := 0; i < b.N; i++ { jsonText, err := v2.MarshalJSON() require.NoError(b, err) _, err = specToSchemaViaProtoModels(jsonText) require.NoError(b, err) } }) }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/proto_models.go000066400000000000000000000110351453663023200263620ustar00rootroot00000000000000/* Copyright 2022 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package schemaconv import ( "errors" "path" "strings" "k8s.io/kube-openapi/pkg/util/proto" "sigs.k8s.io/structured-merge-diff/v4/schema" ) // ToSchema converts openapi definitions into a schema suitable for structured // merge (i.e. kubectl apply v2). func ToSchema(models proto.Models) (*schema.Schema, error) { return ToSchemaWithPreserveUnknownFields(models, false) } // ToSchemaWithPreserveUnknownFields converts openapi definitions into a schema suitable for structured // merge (i.e. kubectl apply v2), it will preserve unknown fields if specified. func ToSchemaWithPreserveUnknownFields(models proto.Models, preserveUnknownFields bool) (*schema.Schema, error) { c := convert{ preserveUnknownFields: preserveUnknownFields, output: &schema.Schema{}, } for _, name := range models.ListModels() { model := models.LookupModel(name) var a schema.Atom c2 := c.push(name, &a) model.Accept(c2) c.pop(c2) c.insertTypeDef(name, a) } if len(c.errorMessages) > 0 { return nil, errors.New(strings.Join(c.errorMessages, "\n")) } c.addCommonTypes() return c.output, nil } func (c *convert) makeRef(model proto.Schema, preserveUnknownFields bool) schema.TypeRef { var tr schema.TypeRef if r, ok := model.(*proto.Ref); ok { if r.Reference() == "io.k8s.apimachinery.pkg.runtime.RawExtension" { return schema.TypeRef{ NamedType: &untypedName, } } // reference a named type _, n := path.Split(r.Reference()) tr.NamedType = &n mapRelationship, err := getMapElementRelationship(model.GetExtensions()) if err != nil { c.reportError(err.Error()) } // empty string means unset. if len(mapRelationship) > 0 { tr.ElementRelationship = &mapRelationship } } else { // compute the type inline c2 := c.push("inlined in "+c.currentName, &tr.Inlined) c2.preserveUnknownFields = preserveUnknownFields model.Accept(c2) c.pop(c2) if tr == (schema.TypeRef{}) { // emit warning? tr.NamedType = &untypedName } } return tr } func (c *convert) VisitKind(k *proto.Kind) { preserveUnknownFields := c.preserveUnknownFields if p, ok := k.GetExtensions()["x-kubernetes-preserve-unknown-fields"]; ok && p == true { preserveUnknownFields = true } a := c.top() a.Map = &schema.Map{} for _, name := range k.FieldOrder { member := k.Fields[name] tr := c.makeRef(member, preserveUnknownFields) a.Map.Fields = append(a.Map.Fields, schema.StructField{ Name: name, Type: tr, Default: member.GetDefault(), }) } unions, err := makeUnions(k.GetExtensions()) if err != nil { c.reportError(err.Error()) return } // TODO: We should check that the fields and discriminator // specified in the union are actual fields in the struct. a.Map.Unions = unions if preserveUnknownFields { a.Map.ElementType = schema.TypeRef{ NamedType: &deducedName, } } a.Map.ElementRelationship, err = getMapElementRelationship(k.GetExtensions()) if err != nil { c.reportError(err.Error()) } } func (c *convert) VisitArray(a *proto.Array) { relationship, mapKeys, err := getListElementRelationship(a.GetExtensions()) if err != nil { c.reportError(err.Error()) } atom := c.top() atom.List = &schema.List{ ElementType: c.makeRef(a.SubType, c.preserveUnknownFields), ElementRelationship: relationship, Keys: mapKeys, } } func (c *convert) VisitMap(m *proto.Map) { relationship, err := getMapElementRelationship(m.GetExtensions()) if err != nil { c.reportError(err.Error()) } a := c.top() a.Map = &schema.Map{ ElementType: c.makeRef(m.SubType, c.preserveUnknownFields), ElementRelationship: relationship, } } func (c *convert) VisitPrimitive(p *proto.Primitive) { a := c.top() if c.currentName == quantityResource { a.Scalar = ptr(schema.Scalar("untyped")) } else { *a = convertPrimitive(p.Type, p.Format) } } func (c *convert) VisitArbitrary(a *proto.Arbitrary) { *c.top() = deducedDef.Atom } func (c *convert) VisitReference(proto.Reference) { // Do nothing, we handle references specially } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/smd.go000066400000000000000000000213401453663023200244370ustar00rootroot00000000000000/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package schemaconv import ( "fmt" "sort" "sigs.k8s.io/structured-merge-diff/v4/schema" ) const ( quantityResource = "io.k8s.apimachinery.pkg.api.resource.Quantity" rawExtensionResource = "io.k8s.apimachinery.pkg.runtime.RawExtension" ) type convert struct { preserveUnknownFields bool output *schema.Schema currentName string current *schema.Atom errorMessages []string } func (c *convert) push(name string, a *schema.Atom) *convert { return &convert{ preserveUnknownFields: c.preserveUnknownFields, output: c.output, currentName: name, current: a, } } func (c *convert) top() *schema.Atom { return c.current } func (c *convert) pop(c2 *convert) { c.errorMessages = append(c.errorMessages, c2.errorMessages...) } func (c *convert) reportError(format string, args ...interface{}) { c.errorMessages = append(c.errorMessages, c.currentName+": "+fmt.Sprintf(format, args...), ) } func (c *convert) insertTypeDef(name string, atom schema.Atom) { def := schema.TypeDef{ Name: name, Atom: atom, } if def.Atom == (schema.Atom{}) { // This could happen if there were a top-level reference. return } c.output.Types = append(c.output.Types, def) } func (c *convert) addCommonTypes() { c.output.Types = append(c.output.Types, untypedDef) c.output.Types = append(c.output.Types, deducedDef) } var untypedName string = "__untyped_atomic_" var untypedDef schema.TypeDef = schema.TypeDef{ Name: untypedName, Atom: schema.Atom{ Scalar: ptr(schema.Scalar("untyped")), List: &schema.List{ ElementType: schema.TypeRef{ NamedType: &untypedName, }, ElementRelationship: schema.Atomic, }, Map: &schema.Map{ ElementType: schema.TypeRef{ NamedType: &untypedName, }, ElementRelationship: schema.Atomic, }, }, } var deducedName string = "__untyped_deduced_" var deducedDef schema.TypeDef = schema.TypeDef{ Name: deducedName, Atom: schema.Atom{ Scalar: ptr(schema.Scalar("untyped")), List: &schema.List{ ElementType: schema.TypeRef{ NamedType: &untypedName, }, ElementRelationship: schema.Atomic, }, Map: &schema.Map{ ElementType: schema.TypeRef{ NamedType: &deducedName, }, ElementRelationship: schema.Separable, }, }, } func makeUnions(extensions map[string]interface{}) ([]schema.Union, error) { schemaUnions := []schema.Union{} if iunions, ok := extensions["x-kubernetes-unions"]; ok { unions, ok := iunions.([]interface{}) if !ok { return nil, fmt.Errorf(`"x-kubernetes-unions" should be a list, got %#v`, unions) } for _, iunion := range unions { union, ok := iunion.(map[interface{}]interface{}) if !ok { return nil, fmt.Errorf(`"x-kubernetes-unions" items should be a map of string to unions, got %#v`, iunion) } unionMap := map[string]interface{}{} for k, v := range union { key, ok := k.(string) if !ok { return nil, fmt.Errorf(`"x-kubernetes-unions" has non-string key: %#v`, k) } unionMap[key] = v } schemaUnion, err := makeUnion(unionMap) if err != nil { return nil, err } schemaUnions = append(schemaUnions, schemaUnion) } } // Make sure we have no overlap between unions fs := map[string]struct{}{} for _, u := range schemaUnions { if u.Discriminator != nil { if _, ok := fs[*u.Discriminator]; ok { return nil, fmt.Errorf("%v field appears multiple times in unions", *u.Discriminator) } fs[*u.Discriminator] = struct{}{} } for _, f := range u.Fields { if _, ok := fs[f.FieldName]; ok { return nil, fmt.Errorf("%v field appears multiple times in unions", f.FieldName) } fs[f.FieldName] = struct{}{} } } return schemaUnions, nil } func makeUnion(extensions map[string]interface{}) (schema.Union, error) { union := schema.Union{ Fields: []schema.UnionField{}, } if idiscriminator, ok := extensions["discriminator"]; ok { discriminator, ok := idiscriminator.(string) if !ok { return schema.Union{}, fmt.Errorf(`"discriminator" must be a string, got: %#v`, idiscriminator) } union.Discriminator = &discriminator } if ifields, ok := extensions["fields-to-discriminateBy"]; ok { fields, ok := ifields.(map[interface{}]interface{}) if !ok { return schema.Union{}, fmt.Errorf(`"fields-to-discriminateBy" must be a map[string]string, got: %#v`, ifields) } // Needs sorted keys by field. keys := []string{} for ifield := range fields { field, ok := ifield.(string) if !ok { return schema.Union{}, fmt.Errorf(`"fields-to-discriminateBy": field must be a string, got: %#v`, ifield) } keys = append(keys, field) } sort.Strings(keys) reverseMap := map[string]struct{}{} for _, field := range keys { value := fields[field] discriminated, ok := value.(string) if !ok { return schema.Union{}, fmt.Errorf(`"fields-to-discriminateBy"/%v: value must be a string, got: %#v`, field, value) } union.Fields = append(union.Fields, schema.UnionField{ FieldName: field, DiscriminatorValue: discriminated, }) // Check that we don't have the same discriminateBy multiple times. if _, ok := reverseMap[discriminated]; ok { return schema.Union{}, fmt.Errorf("Multiple fields have the same discriminated name: %v", discriminated) } reverseMap[discriminated] = struct{}{} } } return union, nil } func toStringSlice(o interface{}) (out []string, ok bool) { switch t := o.(type) { case []interface{}: for _, v := range t { switch vt := v.(type) { case string: out = append(out, vt) } } return out, true case []string: return t, true } return nil, false } func ptr(s schema.Scalar) *schema.Scalar { return &s } // Basic conversion functions to convert OpenAPI schema definitions to // SMD Schema atoms func convertPrimitive(typ string, format string) (a schema.Atom) { switch typ { case "integer": a.Scalar = ptr(schema.Numeric) case "number": a.Scalar = ptr(schema.Numeric) case "string": switch format { case "": a.Scalar = ptr(schema.String) case "byte": // byte really means []byte and is encoded as a string. a.Scalar = ptr(schema.String) case "int-or-string": a.Scalar = ptr(schema.Scalar("untyped")) case "date-time": a.Scalar = ptr(schema.Scalar("untyped")) default: a.Scalar = ptr(schema.Scalar("untyped")) } case "boolean": a.Scalar = ptr(schema.Boolean) default: a.Scalar = ptr(schema.Scalar("untyped")) } return a } func getListElementRelationship(ext map[string]any) (schema.ElementRelationship, []string, error) { if val, ok := ext["x-kubernetes-list-type"]; ok { switch val { case "atomic": return schema.Atomic, nil, nil case "set": return schema.Associative, nil, nil case "map": keys, ok := ext["x-kubernetes-list-map-keys"] if !ok { return schema.Associative, nil, fmt.Errorf("missing map keys") } keyNames, ok := toStringSlice(keys) if !ok { return schema.Associative, nil, fmt.Errorf("uninterpreted map keys: %#v", keys) } return schema.Associative, keyNames, nil default: return schema.Atomic, nil, fmt.Errorf("unknown list type %v", val) } } else if val, ok := ext["x-kubernetes-patch-strategy"]; ok { switch val { case "merge", "merge,retainKeys": if key, ok := ext["x-kubernetes-patch-merge-key"]; ok { keyName, ok := key.(string) if !ok { return schema.Associative, nil, fmt.Errorf("uninterpreted merge key: %#v", key) } return schema.Associative, []string{keyName}, nil } // It's not an error for x-kubernetes-patch-merge-key to be absent, // it means it's a set return schema.Associative, nil, nil case "retainKeys": return schema.Atomic, nil, nil default: return schema.Atomic, nil, fmt.Errorf("unknown patch strategy %v", val) } } // Treat as atomic by default return schema.Atomic, nil, nil } // Returns map element relationship if specified, or empty string if unspecified func getMapElementRelationship(ext map[string]any) (schema.ElementRelationship, error) { val, ok := ext["x-kubernetes-map-type"] if !ok { // unset Map element relationship return "", nil } switch val { case "atomic": return schema.Atomic, nil case "granular": return schema.Separable, nil default: return "", fmt.Errorf("unknown map type %v", val) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/smd_test.go000066400000000000000000000113031453663023200254740ustar00rootroot00000000000000/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package schemaconv import ( "os" "path/filepath" "testing" "github.com/google/go-cmp/cmp" yaml "gopkg.in/yaml.v2" "k8s.io/kube-openapi/pkg/util/proto" prototesting "k8s.io/kube-openapi/pkg/util/proto/testing" ) func TestToSchema(t *testing.T) { tests := []struct { name string openAPIFilename string expectedSchemaFilename string }{ { name: "kubernetes", openAPIFilename: "swagger.json", expectedSchemaFilename: "new-schema.yaml", }, { name: "atomics", openAPIFilename: "atomic-types.json", expectedSchemaFilename: "atomic-types.yaml", }, { name: "defaults", openAPIFilename: "defaults.json", expectedSchemaFilename: "defaults.yaml", }, { name: "preserve-unknown", openAPIFilename: "preserve-unknown.json", expectedSchemaFilename: "preserve-unknown.yaml", }, } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { openAPIPath := filepath.Join("testdata", tc.openAPIFilename) expectedNewSchemaPath := filepath.Join("testdata", tc.expectedSchemaFilename) testToSchema(t, openAPIPath, expectedNewSchemaPath) }) } } func testToSchema(t *testing.T, openAPIPath, expectedNewSchemaPath string) { fakeSchema := prototesting.Fake{Path: openAPIPath} s, err := fakeSchema.OpenAPISchema() if err != nil { t.Fatalf("failed to get schema for %s: %v", openAPIPath, err) } models, err := proto.NewOpenAPIData(s) if err != nil { t.Fatal(err) } ns, err := ToSchema(models) if err != nil { t.Fatal(err) } got, err := yaml.Marshal(ns) if err != nil { t.Fatal(err) } expect, err := os.ReadFile(expectedNewSchemaPath) if err != nil { t.Fatalf("Unable to read golden data file %q: %v", expectedNewSchemaPath, err) } if string(expect) != string(got) { t.Errorf("Computed schema did not match %q.", expectedNewSchemaPath) t.Logf("To recompute this file, run:\n\tgo run ./cmd/openapi2smd/openapi2smd.go < %q > %q", filepath.Join("pkg", "schemaconv", openAPIPath), filepath.Join("pkg", "schemaconv", expectedNewSchemaPath), ) t.Log("You can then use `git diff` to see the changes.") t.Error(cmp.Diff(string(expect), string(got))) } } func TestFieldLevelAnnotation(t *testing.T) { openAPIPath := filepath.Join("testdata", "field-level-annotation.json") fakeSchema := prototesting.Fake{Path: openAPIPath} s, err := fakeSchema.OpenAPISchema() if err != nil { t.Fatalf("failed to get schema for %s: %v", openAPIPath, err) } models, err := proto.NewOpenAPIData(s) if err != nil { t.Fatal(err) } ns, err := ToSchema(models) if err != nil { t.Fatal(err) } _ = ns // Test to make sure that MapElementRelationship is populated correctly // after being converted from proto type endpointAddress, ok := ns.FindNamedType("io.k8s.api.core.v1.EndpointAddress") if !ok { t.Fatalf("expected to find EndpointAddress") } targetRef, ok := endpointAddress.FindField("targetRef") if !ok { t.Fatalf("expected to find EndpointAddress field 'targetRef'") } if targetRef.Type.ElementRelationship == nil { t.Fatalf("expected targetRef MapElementRelationship to be atomic") } // Test to make sure that schema.Resolve overrides the ElementRelationship // when asked to resolve a reference resolved, ok := ns.Resolve(targetRef.Type) if !ok { t.Fatalf("failed to resolve targetRef type") } if resolved.Map == nil { t.Fatalf("expected to resolve to a Map") } if resolved.Map.ElementRelationship != *targetRef.Type.ElementRelationship { t.Fatalf("resolved element relationship not converted") } // Make sure our test is actually testing something by ensuring the original // relationship is different from what we are changing it to. targetRefWithoutRelationship := targetRef targetRefWithoutRelationship.Type.ElementRelationship = nil originalResolved, ok := ns.Resolve(targetRefWithoutRelationship.Type) if !ok { t.Fatalf("failed to resolve targetRef type") } if originalResolved.Map.ElementRelationship == *targetRef.Type.ElementRelationship { t.Fatalf("expected original element relationship to differ from field-level override for test") } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/000077500000000000000000000000001453663023200251365ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/atomic-types.json000066400000000000000000000011231453663023200304440ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "title": "Atomic Types", "version": "v1.0.0" }, "paths": { }, "definitions": { "io.k8s.testcase.AtomicMapField": { "description": "", "properties": { "atomicField": { "description": "", "type": "object", "additionalProperties": { "type": "string" }, "x-kubernetes-map-type": "atomic" } } }, "io.k8s.testcase.DeclaredAtomicMap": { "description": "", "properties": { }, "x-kubernetes-map-type": "atomic" } } }golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/atomic-types.yaml000066400000000000000000000013461453663023200304440ustar00rootroot00000000000000types: - name: io.k8s.testcase.AtomicMapField map: fields: - name: atomicField type: map: elementType: scalar: string elementRelationship: atomic - name: io.k8s.testcase.DeclaredAtomicMap map: elementRelationship: atomic - name: __untyped_atomic_ scalar: untyped list: elementType: namedType: __untyped_atomic_ elementRelationship: atomic map: elementType: namedType: __untyped_atomic_ elementRelationship: atomic - name: __untyped_deduced_ scalar: untyped list: elementType: namedType: __untyped_atomic_ elementRelationship: atomic map: elementType: namedType: __untyped_deduced_ elementRelationship: separable golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/000077500000000000000000000000001453663023200260715ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv2/000077500000000000000000000000001453663023200277745ustar00rootroot00000000000000accesscontextmanager_v1beta1_accesscontextmanagerserviceperimeter.json000066400000000000000000003764001453663023200461250ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv2{"swagger":"2.0","info":{"title":"Kubernetes","version":"v1.27.0"},"paths":{"/apis/accesscontextmanager.cnrm.cloud.google.com/v1beta1/accesscontextmanagerserviceperimeters":{"get":{"description":"list objects of kind AccessContextManagerServicePerimeter","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["accesscontextmanagerCnrmCloudGoogleCom_v1beta1"],"operationId":"listAccesscontextmanagerCnrmCloudGoogleComV1beta1AccessContextManagerServicePerimeterForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeterList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"accesscontextmanager.cnrm.cloud.google.com","version":"v1beta1","kind":"AccessContextManagerServicePerimeter"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/apis/accesscontextmanager.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/accesscontextmanagerserviceperimeters":{"get":{"description":"list objects of kind AccessContextManagerServicePerimeter","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["accesscontextmanagerCnrmCloudGoogleCom_v1beta1"],"operationId":"listAccesscontextmanagerCnrmCloudGoogleComV1beta1NamespacedAccessContextManagerServicePerimeter","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeterList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"accesscontextmanager.cnrm.cloud.google.com","version":"v1beta1","kind":"AccessContextManagerServicePerimeter"}},"post":{"description":"create an AccessContextManagerServicePerimeter","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["accesscontextmanagerCnrmCloudGoogleCom_v1beta1"],"operationId":"createAccesscontextmanagerCnrmCloudGoogleComV1beta1NamespacedAccessContextManagerServicePerimeter","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeter"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeter"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeter"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeter"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"accesscontextmanager.cnrm.cloud.google.com","version":"v1beta1","kind":"AccessContextManagerServicePerimeter"}},"delete":{"description":"delete collection of AccessContextManagerServicePerimeter","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["accesscontextmanagerCnrmCloudGoogleCom_v1beta1"],"operationId":"deleteAccesscontextmanagerCnrmCloudGoogleComV1beta1CollectionNamespacedAccessContextManagerServicePerimeter","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"accesscontextmanager.cnrm.cloud.google.com","version":"v1beta1","kind":"AccessContextManagerServicePerimeter"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/accesscontextmanager.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/accesscontextmanagerserviceperimeters/{name}":{"get":{"description":"read the specified AccessContextManagerServicePerimeter","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["accesscontextmanagerCnrmCloudGoogleCom_v1beta1"],"operationId":"readAccesscontextmanagerCnrmCloudGoogleComV1beta1NamespacedAccessContextManagerServicePerimeter","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeter"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"accesscontextmanager.cnrm.cloud.google.com","version":"v1beta1","kind":"AccessContextManagerServicePerimeter"}},"put":{"description":"replace the specified AccessContextManagerServicePerimeter","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["accesscontextmanagerCnrmCloudGoogleCom_v1beta1"],"operationId":"replaceAccesscontextmanagerCnrmCloudGoogleComV1beta1NamespacedAccessContextManagerServicePerimeter","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeter"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeter"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeter"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"accesscontextmanager.cnrm.cloud.google.com","version":"v1beta1","kind":"AccessContextManagerServicePerimeter"}},"delete":{"description":"delete an AccessContextManagerServicePerimeter","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["accesscontextmanagerCnrmCloudGoogleCom_v1beta1"],"operationId":"deleteAccesscontextmanagerCnrmCloudGoogleComV1beta1NamespacedAccessContextManagerServicePerimeter","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"accesscontextmanager.cnrm.cloud.google.com","version":"v1beta1","kind":"AccessContextManagerServicePerimeter"}},"patch":{"description":"partially update the specified AccessContextManagerServicePerimeter","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["accesscontextmanagerCnrmCloudGoogleCom_v1beta1"],"operationId":"patchAccesscontextmanagerCnrmCloudGoogleComV1beta1NamespacedAccessContextManagerServicePerimeter","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeter"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"accesscontextmanager.cnrm.cloud.google.com","version":"v1beta1","kind":"AccessContextManagerServicePerimeter"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the AccessContextManagerServicePerimeter","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/accesscontextmanager.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/accesscontextmanagerserviceperimeters/{name}/status":{"get":{"description":"read status of the specified AccessContextManagerServicePerimeter","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["accesscontextmanagerCnrmCloudGoogleCom_v1beta1"],"operationId":"readAccesscontextmanagerCnrmCloudGoogleComV1beta1NamespacedAccessContextManagerServicePerimeterStatus","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeter"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"accesscontextmanager.cnrm.cloud.google.com","version":"v1beta1","kind":"AccessContextManagerServicePerimeter"}},"put":{"description":"replace status of the specified AccessContextManagerServicePerimeter","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["accesscontextmanagerCnrmCloudGoogleCom_v1beta1"],"operationId":"replaceAccesscontextmanagerCnrmCloudGoogleComV1beta1NamespacedAccessContextManagerServicePerimeterStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeter"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeter"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeter"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"accesscontextmanager.cnrm.cloud.google.com","version":"v1beta1","kind":"AccessContextManagerServicePerimeter"}},"patch":{"description":"partially update status of the specified AccessContextManagerServicePerimeter","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["accesscontextmanagerCnrmCloudGoogleCom_v1beta1"],"operationId":"patchAccesscontextmanagerCnrmCloudGoogleComV1beta1NamespacedAccessContextManagerServicePerimeterStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeter"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"accesscontextmanager.cnrm.cloud.google.com","version":"v1beta1","kind":"AccessContextManagerServicePerimeter"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the AccessContextManagerServicePerimeter","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]}},"definitions":{"com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeter":{"type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"type":"object","properties":{"accessPolicyRef":{"description":"The AccessContextManagerAccessPolicy this\nAccessContextManagerServicePerimeter lives in.","type":"object","properties":{"external":{"description":"Allowed value: string of the format `accessPolicies/{{value}}`, where {{value}} is the `name` field of an `AccessContextManagerAccessPolicy` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"description":{"description":"Description of the ServicePerimeter and its use. Does not affect\nbehavior.","type":"string"},"perimeterType":{"description":"Immutable. Specifies the type of the Perimeter. There are two types: regular and\nbridge. Regular Service Perimeter contains resources, access levels,\nand restricted services. Every resource can be in at most\nONE regular Service Perimeter.\n\nIn addition to being in a regular service perimeter, a resource can also\nbe in zero or more perimeter bridges. A perimeter bridge only contains\nresources. Cross project operations are permitted if all effected\nresources share some perimeter (whether bridge or regular). Perimeter\nBridge does not contain access levels or services: those are governed\nentirely by the regular perimeter that resource is in.\n\nPerimeter Bridges are typically useful when building more complex\ntopologies with many independent perimeters that need to share some data\nwith a common perimeter, but should not be able to share data among\nthemselves. Default value: \"PERIMETER_TYPE_REGULAR\" Possible values: [\"PERIMETER_TYPE_REGULAR\", \"PERIMETER_TYPE_BRIDGE\"].","type":"string"},"resourceID":{"description":"Immutable. Optional. The name of the resource. Used for creation and acquisition. When unset, the value of `metadata.name` is used as the default.","type":"string"},"spec":{"description":"Proposed (or dry run) ServicePerimeter configuration.\nThis configuration allows to specify and test ServicePerimeter configuration\nwithout enforcing actual access restrictions. Only allowed to be set when\nthe 'useExplicitDryRunSpec' flag is set.","type":"object","properties":{"accessLevels":{"type":"array","items":{"description":"(Optional) A list of AccessLevel resource names that allow resources within\nthe ServicePerimeter to be accessed from the internet. AccessLevels listed\nmust be in the same policy as this ServicePerimeter.\nReferencing a nonexistent AccessLevel is a syntax error. If no\nAccessLevel names are listed, resources within the perimeter can\nonly be accessed via GCP calls with request origins within the\nperimeter. For Service Perimeter Bridge, must be empty.","type":"object","properties":{"external":{"description":"Allowed value: string of the format `{{parent}}/accessLevels/{{value}}`, where {{value}} is the `name` field of an `AccessContextManagerAccessLevel` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}},"egressPolicies":{"description":"List of EgressPolicies to apply to the perimeter. A perimeter may \nhave multiple EgressPolicies, each of which is evaluated separately.\nAccess is granted if any EgressPolicy grants it. Must be empty for \na perimeter bridge.","type":"array","items":{"type":"object","properties":{"egressFrom":{"description":"Defines conditions on the source of a request causing this 'EgressPolicy' to apply.","type":"object","properties":{"identities":{"type":"array","items":{"description":"(Optional) A list of identities that are allowed access through this\nEgressPolicy. Should be in the format of email address. The email\naddress should represent individual user or service account only.","type":"object","properties":{"serviceAccountRef":{"type":"object","properties":{"external":{"description":"Allowed value: string of the format `serviceAccount:{{value}}`, where {{value}} is the `email` field of an `IAMServiceAccount` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"user":{"type":"string"}}}},"identityType":{"description":"Specifies the type of identities that are allowed access to outside the \nperimeter. If left unspecified, then members of 'identities' field will \nbe allowed access. Possible values: [\"IDENTITY_TYPE_UNSPECIFIED\", \"ANY_IDENTITY\", \"ANY_USER_ACCOUNT\", \"ANY_SERVICE_ACCOUNT\"].","type":"string"}}},"egressTo":{"description":"Defines the conditions on the 'ApiOperation' and destination resources that \ncause this 'EgressPolicy' to apply.","type":"object","properties":{"externalResources":{"description":"A list of external resources that are allowed to be accessed. A request\nmatches if it contains an external resource in this list (Example:\ns3://bucket/path). Currently '*' is not allowed.","type":"array","items":{"type":"string"}},"operations":{"description":"A list of 'ApiOperations' that this egress rule applies to. A request matches \nif it contains an operation/service in this list.","type":"array","items":{"type":"object","properties":{"methodSelectors":{"description":"API methods or permissions to allow. Method or permission must belong \nto the service specified by 'serviceName' field. A single MethodSelector \nentry with '*' specified for the 'method' field will allow all methods \nAND permissions for the service specified in 'serviceName'.","type":"array","items":{"type":"object","properties":{"method":{"description":"Value for 'method' should be a valid method name for the corresponding \n'serviceName' in 'ApiOperation'. If '*' used as value for method, \nthen ALL methods and permissions are allowed.","type":"string"},"permission":{"description":"Value for permission should be a valid Cloud IAM permission for the \ncorresponding 'serviceName' in 'ApiOperation'.","type":"string"}}}},"serviceName":{"description":"The name of the API whose methods or permissions the 'IngressPolicy' or \n'EgressPolicy' want to allow. A single 'ApiOperation' with serviceName \nfield set to '*' will allow all methods AND permissions for all services.","type":"string"}}}},"resources":{"type":"array","items":{"description":"(Optional) A list of resources, currently only projects in the form\n\"projects/{project_number}\". A request\nmatches if it contains a resource in this list.","type":"object","properties":{"projectRef":{"type":"object","properties":{"external":{"description":"Allowed value: string of the format `projects/{{value}}`, where {{value}} is the `number` field of a `Project` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}}}}}}},"ingressPolicies":{"description":"List of 'IngressPolicies' to apply to the perimeter. A perimeter may\nhave multiple 'IngressPolicies', each of which is evaluated\nseparately. Access is granted if any 'Ingress Policy' grants it.\nMust be empty for a perimeter bridge.","type":"array","items":{"type":"object","properties":{"ingressFrom":{"description":"Defines the conditions on the source of a request causing this 'IngressPolicy'\nto apply.","type":"object","properties":{"identities":{"type":"array","items":{"description":"(Optional) A list of identities that are allowed access through this\ningress policy. Should be in the format of email address. The email\naddress should represent individual user or service account only.","type":"object","properties":{"serviceAccountRef":{"type":"object","properties":{"external":{"description":"Allowed value: string of the format `serviceAccount:{{value}}`, where {{value}} is the `email` field of an `IAMServiceAccount` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"user":{"type":"string"}}}},"identityType":{"description":"Specifies the type of identities that are allowed access from outside the \nperimeter. If left unspecified, then members of 'identities' field will be \nallowed access. Possible values: [\"IDENTITY_TYPE_UNSPECIFIED\", \"ANY_IDENTITY\", \"ANY_USER_ACCOUNT\", \"ANY_SERVICE_ACCOUNT\"].","type":"string"},"sources":{"description":"Sources that this 'IngressPolicy' authorizes access from.","type":"array","items":{"type":"object","properties":{"accessLevelRef":{"description":"An AccessLevel resource name that allow resources within the\nServicePerimeters to be accessed from the internet. AccessLevels\nlisted must be in the same policy as this ServicePerimeter.\nReferencing a nonexistent AccessLevel will cause an error. If no\nAccessLevel names are listed, resources within the perimeter can\nonly be accessed via Google Cloud calls with request origins within\nthe perimeter.","type":"object","properties":{"external":{"description":"Allowed value: string of the format `{{parent}}/accessLevels/{{value}}`, where {{value}} is the `name` field of an `AccessContextManagerAccessLevel` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"projectRef":{"description":"(Optional) A Google Cloud resource that is allowed to ingress the\nperimeter. Requests from these resources will be allowed to access\nperimeter data. Currently only projects are allowed. Format\n\"projects/{project_number}\" The project may be in any Google Cloud\norganization, not just the organization that the perimeter is defined in.","type":"object","properties":{"external":{"description":"Allowed value: string of the format `projects/{{value}}`, where {{value}} is the `number` field of a `Project` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}}}},"ingressTo":{"description":"Defines the conditions on the 'ApiOperation' and request destination that cause\nthis 'IngressPolicy' to apply.","type":"object","properties":{"operations":{"description":"A list of 'ApiOperations' the sources specified in corresponding 'IngressFrom' \nare allowed to perform in this 'ServicePerimeter'.","type":"array","items":{"type":"object","properties":{"methodSelectors":{"description":"API methods or permissions to allow. Method or permission must belong to \nthe service specified by serviceName field. A single 'MethodSelector' entry \nwith '*' specified for the method field will allow all methods AND \npermissions for the service specified in 'serviceName'.","type":"array","items":{"type":"object","properties":{"method":{"description":"Value for method should be a valid method name for the corresponding \nserviceName in 'ApiOperation'. If '*' used as value for 'method', then \nALL methods and permissions are allowed.","type":"string"},"permission":{"description":"Value for permission should be a valid Cloud IAM permission for the \ncorresponding 'serviceName' in 'ApiOperation'.","type":"string"}}}},"serviceName":{"description":"The name of the API whose methods or permissions the 'IngressPolicy' or \n'EgressPolicy' want to allow. A single 'ApiOperation' with 'serviceName' \nfield set to '*' will allow all methods AND permissions for all services.","type":"string"}}}},"resources":{"type":"array","items":{"description":"A list of resources, currently only projects in the form\n\"projects/{project_number}\", protected by this ServicePerimeter\nthat are allowed to be accessed by sources defined in the\ncorresponding IngressFrom. A request matches if it contains a\nresource in this list.","type":"object","properties":{"projectRef":{"type":"object","properties":{"external":{"description":"Allowed value: string of the format `projects/{{value}}`, where {{value}} is the `number` field of a `Project` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}}}}}}},"resources":{"type":"array","items":{"description":"(Optional) A list of GCP resources that are inside of the service perimeter.\nCurrently only projects are allowed.","type":"object","properties":{"projectRef":{"type":"object","properties":{"external":{"description":"Allowed value: string of the format `projects/{{value}}`, where {{value}} is the `number` field of a `Project` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}},"restrictedServices":{"description":"GCP services that are subject to the Service Perimeter\nrestrictions. Must contain a list of services. For example, if\n'storage.googleapis.com' is specified, access to the storage\nbuckets inside the perimeter must meet the perimeter's access\nrestrictions.","type":"array","items":{"type":"string"}},"vpcAccessibleServices":{"description":"Specifies how APIs are allowed to communicate within the Service\nPerimeter.","type":"object","properties":{"allowedServices":{"description":"The list of APIs usable within the Service Perimeter.\nMust be empty unless 'enableRestriction' is True.","type":"array","items":{"type":"string"}},"enableRestriction":{"description":"Whether to restrict API calls within the Service Perimeter to the\nlist of APIs specified in 'allowedServices'.","type":"boolean"}}}}},"status":{"description":"ServicePerimeter configuration. Specifies sets of resources,\nrestricted services and access levels that determine\nperimeter content and boundaries.","type":"object","properties":{"accessLevels":{"type":"array","items":{"description":"(Optional) A list of AccessLevel resource names that allow resources within\nthe ServicePerimeter to be accessed from the internet. AccessLevels listed\nmust be in the same policy as this ServicePerimeter.\nReferencing a nonexistent AccessLevel is a syntax error. If no\nAccessLevel names are listed, resources within the perimeter can\nonly be accessed via GCP calls with request origins within the\nperimeter. For Service Perimeter Bridge, must be empty.","type":"object","properties":{"external":{"description":"Allowed value: string of the format `{{parent}}/accessLevels/{{value}}`, where {{value}} is the `name` field of an `AccessContextManagerAccessLevel` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}},"egressPolicies":{"description":"List of EgressPolicies to apply to the perimeter. A perimeter may \nhave multiple EgressPolicies, each of which is evaluated separately.\nAccess is granted if any EgressPolicy grants it. Must be empty for \na perimeter bridge.","type":"array","items":{"type":"object","properties":{"egressFrom":{"description":"Defines conditions on the source of a request causing this 'EgressPolicy' to apply.","type":"object","properties":{"identities":{"type":"array","items":{"description":"(Optional) A list of identities that are allowed access through this\nEgressPolicy. Should be in the format of email address. The email\naddress should represent individual user or service account only.","type":"object","properties":{"serviceAccountRef":{"type":"object","properties":{"external":{"description":"Allowed value: string of the format `serviceAccount:{{value}}`, where {{value}} is the `email` field of an `IAMServiceAccount` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"user":{"type":"string"}}}},"identityType":{"description":"Specifies the type of identities that are allowed access to outside the \nperimeter. If left unspecified, then members of 'identities' field will \nbe allowed access. Possible values: [\"IDENTITY_TYPE_UNSPECIFIED\", \"ANY_IDENTITY\", \"ANY_USER_ACCOUNT\", \"ANY_SERVICE_ACCOUNT\"].","type":"string"}}},"egressTo":{"description":"Defines the conditions on the 'ApiOperation' and destination resources that \ncause this 'EgressPolicy' to apply.","type":"object","properties":{"externalResources":{"description":"A list of external resources that are allowed to be accessed. A request\nmatches if it contains an external resource in this list (Example:\ns3://bucket/path). Currently '*' is not allowed.","type":"array","items":{"type":"string"}},"operations":{"description":"A list of 'ApiOperations' that this egress rule applies to. A request matches \nif it contains an operation/service in this list.","type":"array","items":{"type":"object","properties":{"methodSelectors":{"description":"API methods or permissions to allow. Method or permission must belong \nto the service specified by 'serviceName' field. A single MethodSelector \nentry with '*' specified for the 'method' field will allow all methods \nAND permissions for the service specified in 'serviceName'.","type":"array","items":{"type":"object","properties":{"method":{"description":"Value for 'method' should be a valid method name for the corresponding \n'serviceName' in 'ApiOperation'. If '*' used as value for method, \nthen ALL methods and permissions are allowed.","type":"string"},"permission":{"description":"Value for permission should be a valid Cloud IAM permission for the \ncorresponding 'serviceName' in 'ApiOperation'.","type":"string"}}}},"serviceName":{"description":"The name of the API whose methods or permissions the 'IngressPolicy' or \n'EgressPolicy' want to allow. A single 'ApiOperation' with serviceName \nfield set to '*' will allow all methods AND permissions for all services.","type":"string"}}}},"resources":{"type":"array","items":{"description":"(Optional) A list of resources, currently only projects in the form\n\"projects/{project_number}\". A request\nmatches if it contains a resource in this list.","type":"object","properties":{"projectRef":{"type":"object","properties":{"external":{"description":"Allowed value: string of the format `projects/{{value}}`, where {{value}} is the `number` field of a `Project` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}}}}}}},"ingressPolicies":{"description":"List of 'IngressPolicies' to apply to the perimeter. A perimeter may\nhave multiple 'IngressPolicies', each of which is evaluated\nseparately. Access is granted if any 'Ingress Policy' grants it.\nMust be empty for a perimeter bridge.","type":"array","items":{"type":"object","properties":{"ingressFrom":{"description":"Defines the conditions on the source of a request causing this 'IngressPolicy'\nto apply.","type":"object","properties":{"identities":{"type":"array","items":{"description":"(Optional) A list of identities that are allowed access through this\nEgressPolicy. Should be in the format of email address. The email\naddress should represent individual user or service account only.","type":"object","properties":{"serviceAccountRef":{"type":"object","properties":{"external":{"description":"Allowed value: string of the format `serviceAccount:{{value}}`, where {{value}} is the `email` field of an `IAMServiceAccount` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"user":{"type":"string"}}}},"identityType":{"description":"Specifies the type of identities that are allowed access from outside the \nperimeter. If left unspecified, then members of 'identities' field will be \nallowed access. Possible values: [\"IDENTITY_TYPE_UNSPECIFIED\", \"ANY_IDENTITY\", \"ANY_USER_ACCOUNT\", \"ANY_SERVICE_ACCOUNT\"].","type":"string"},"sources":{"description":"Sources that this 'IngressPolicy' authorizes access from.","type":"array","items":{"type":"object","properties":{"accessLevelRef":{"description":"An AccessLevel resource name that allow resources within the\nServicePerimeters to be accessed from the internet. AccessLevels\nlisted must be in the same policy as this ServicePerimeter.\nReferencing a nonexistent AccessLevel will cause an error. If no\nAccessLevel names are listed, resources within the perimeter can\nonly be accessed via Google Cloud calls with request origins within\nthe perimeter.","type":"object","properties":{"external":{"description":"Allowed value: string of the format `{{parent}}/accessLevels/{{value}}`, where {{value}} is the `name` field of an `AccessContextManagerAccessLevel` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"projectRef":{"description":"(Optional) A Google Cloud resource that is allowed to ingress the\nperimeter. Requests from these resources will be allowed to access\nperimeter data. Currently only projects are allowed. Format\n\"projects/{project_number}\" The project may be in any Google Cloud\norganization, not just the organization that the perimeter is defined in.","type":"object","properties":{"external":{"description":"Allowed value: string of the format `projects/{{value}}`, where {{value}} is the `number` field of a `Project` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}}}},"ingressTo":{"description":"Defines the conditions on the 'ApiOperation' and request destination that cause\nthis 'IngressPolicy' to apply.","type":"object","properties":{"operations":{"description":"A list of 'ApiOperations' the sources specified in corresponding 'IngressFrom' \nare allowed to perform in this 'ServicePerimeter'.","type":"array","items":{"type":"object","properties":{"methodSelectors":{"description":"API methods or permissions to allow. Method or permission must belong to \nthe service specified by serviceName field. A single 'MethodSelector' entry \nwith '*' specified for the method field will allow all methods AND \npermissions for the service specified in 'serviceName'.","type":"array","items":{"type":"object","properties":{"method":{"description":"Value for method should be a valid method name for the corresponding \nserviceName in 'ApiOperation'. If '*' used as value for 'method', then \nALL methods and permissions are allowed.","type":"string"},"permission":{"description":"Value for permission should be a valid Cloud IAM permission for the \ncorresponding 'serviceName' in 'ApiOperation'.","type":"string"}}}},"serviceName":{"description":"The name of the API whose methods or permissions the 'IngressPolicy' or \n'EgressPolicy' want to allow. A single 'ApiOperation' with 'serviceName' \nfield set to '*' will allow all methods AND permissions for all services.","type":"string"}}}},"resources":{"type":"array","items":{"description":"A list of resources, currently only projects in the form\n\"projects/{project_number}\", protected by this ServicePerimeter\nthat are allowed to be accessed by sources defined in the\ncorresponding IngressFrom. A request matches if it contains a\nresource in this list.","type":"object","properties":{"projectRef":{"type":"object","properties":{"external":{"description":"Allowed value: string of the format `projects/{{value}}`, where {{value}} is the `number` field of a `Project` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}}}}}}},"resources":{"type":"array","items":{"description":"(Optional) A list of GCP resources that are inside of the service perimeter.\nCurrently only projects are allowed.","type":"object","properties":{"projectRef":{"type":"object","properties":{"external":{"description":"Allowed value: string of the format `projects/{{value}}`, where {{value}} is the `number` field of a `Project` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}},"restrictedServices":{"description":"GCP services that are subject to the Service Perimeter\nrestrictions. Must contain a list of services. For example, if\n'storage.googleapis.com' is specified, access to the storage\nbuckets inside the perimeter must meet the perimeter's access\nrestrictions.","type":"array","items":{"type":"string"}},"vpcAccessibleServices":{"description":"Specifies how APIs are allowed to communicate within the Service\nPerimeter.","type":"object","properties":{"allowedServices":{"description":"The list of APIs usable within the Service Perimeter.\nMust be empty unless 'enableRestriction' is True.","type":"array","items":{"type":"string"}},"enableRestriction":{"description":"Whether to restrict API calls within the Service Perimeter to the\nlist of APIs specified in 'allowedServices'.","type":"boolean"}}}}},"title":{"description":"Human readable title. Must be unique within the Policy.","type":"string"},"useExplicitDryRunSpec":{"description":"Use explicit dry run spec flag. Ordinarily, a dry-run spec implicitly exists\nfor all Service Perimeters, and that spec is identical to the status for those\nService Perimeters. When this flag is set, it inhibits the generation of the\nimplicit spec, thereby allowing the user to explicitly provide a\nconfiguration (\"spec\") to use in a dry-run version of the Service Perimeter.\nThis allows the user to test changes to the enforced config (\"status\") without\nactually enforcing them. This testing is done through analyzing the differences\nbetween currently enforced and suggested restrictions. useExplicitDryRunSpec must\nbet set to True if any of the fields in the spec are set to non-default values.","type":"boolean"}}},"status":{"type":"object","properties":{"conditions":{"description":"Conditions represent the latest available observation of the resource's current state.","type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","type":"string"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"Status is the status of the condition. Can be True, False, Unknown.","type":"string"},"type":{"description":"Type is the type of the condition.","type":"string"}}}},"createTime":{"description":"Time the AccessPolicy was created in UTC.","type":"string"},"observedGeneration":{"description":"ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.","type":"integer"},"updateTime":{"description":"Time the AccessPolicy was updated in UTC.","type":"string"}}}},"x-kubernetes-group-version-kind":[{"group":"accesscontextmanager.cnrm.cloud.google.com","kind":"AccessContextManagerServicePerimeter","version":"v1beta1"}]},"com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeterList":{"description":"AccessContextManagerServicePerimeterList is a list of AccessContextManagerServicePerimeter","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of accesscontextmanagerserviceperimeters. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"$ref":"#/definitions/com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeter"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"accesscontextmanager.cnrm.cloud.google.com","kind":"AccessContextManagerServicePerimeterList","version":"v1beta1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition":{"description":"CustomResourceColumnDefinition specifies a column for server side printing.","type":"object","required":["name","type","jsonPath"],"properties":{"description":{"description":"description is a human readable description of this column.","type":"string"},"format":{"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.","type":"string"},"jsonPath":{"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.","type":"string","default":""},"name":{"description":"name is a human readable name for the column.","type":"string","default":""},"priority":{"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.","type":"integer","format":"int32"},"type":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion":{"description":"CustomResourceConversion describes how to convert different versions of a CR.","type":"object","required":["strategy"],"properties":{"strategy":{"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.","type":"string","default":""},"webhook":{"description":"webhook describes how to call the conversion webhook. Required when `strategy` is set to `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition":{"description":"CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format \u003c.spec.name\u003e.\u003c.spec.group\u003e.","type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"spec describes how the user wants the resources to appear","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec"},"status":{"description":"status indicates the actual state of the CustomResourceDefinition","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus"}},"x-kubernetes-group-version-kind":[{"group":"apiextensions.k8s.io","kind":"CustomResourceDefinition","version":"v1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition":{"description":"CustomResourceDefinitionCondition contains details for the current condition of this pod.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"lastTransitionTime last time the condition transitioned from one status to another.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"message is a human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"reason is a unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"status is the status of the condition. Can be True, False, Unknown.","type":"string","default":""},"type":{"description":"type is the type of the condition. Types include Established, NamesAccepted and Terminating.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames":{"description":"CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition","type":"object","required":["plural","kind"],"properties":{"categories":{"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`.","type":"array","items":{"type":"string","default":""}},"kind":{"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.","type":"string","default":""},"listKind":{"description":"listKind is the serialized kind of the list for this resource. Defaults to \"`kind`List\".","type":"string"},"plural":{"description":"plural is the plural name of the resource to serve. The custom resources are served under `/apis/\u003cgroup\u003e/\u003cversion\u003e/.../\u003cplural\u003e`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`). Must be all lowercase.","type":"string","default":""},"shortNames":{"description":"shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get \u003cshortname\u003e`. It must be all lowercase.","type":"array","items":{"type":"string","default":""}},"singular":{"description":"singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec":{"description":"CustomResourceDefinitionSpec describes how a user wants their resource to appear","type":"object","required":["group","names","scope","versions"],"properties":{"conversion":{"description":"conversion defines conversion settings for the CRD.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion"},"group":{"description":"group is the API group of the defined custom resource. The custom resources are served under `/apis/\u003cgroup\u003e/...`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`).","type":"string","default":""},"names":{"description":"names specify the resource and kind names for the custom resource.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"preserveUnknownFields":{"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.","type":"boolean"},"scope":{"description":"scope indicates whether the defined custom resource is cluster- or namespace-scoped. Allowed values are `Cluster` and `Namespaced`.","type":"string","default":""},"versions":{"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 \u003e beta \u003e 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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion"}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus":{"description":"CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition","type":"object","properties":{"acceptedNames":{"description":"acceptedNames are the names that are actually being used to serve discovery. They may be different than the names in spec.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"conditions":{"description":"conditions indicate state for particular aspects of a CustomResourceDefinition","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition"},"x-kubernetes-list-map-keys":["type"],"x-kubernetes-list-type":"map"},"storedVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion":{"description":"CustomResourceDefinitionVersion describes a version for CRD.","type":"object","required":["name","served","storage"],"properties":{"additionalPrinterColumns":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition"}},"deprecated":{"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.","type":"boolean"},"deprecationWarning":{"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.","type":"string"},"name":{"description":"name is the version name, e.g. “v1â€, “v2beta1â€, etc. The custom resources are served under this version at `/apis/\u003cgroup\u003e/\u003cversion\u003e/...` if `served` is true.","type":"string","default":""},"schema":{"description":"schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation"},"served":{"description":"served is a flag enabling/disabling this version from being served via REST APIs","type":"boolean","default":false},"storage":{"description":"storage indicates this version should be used when persisting custom resources to storage. There must be exactly one version with storage=true.","type":"boolean","default":false},"subresources":{"description":"subresources specify what subresources this version of the defined custom resource have.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale":{"description":"CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.","type":"object","required":["specReplicasPath","statusReplicasPath"],"properties":{"labelSelectorPath":{"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.","type":"string"},"specReplicasPath":{"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.","type":"string","default":""},"statusReplicasPath":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus":{"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","type":"object"},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources":{"description":"CustomResourceSubresources defines the status and scale subresources for CustomResources.","type":"object","properties":{"scale":{"description":"scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale"},"status":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation":{"description":"CustomResourceValidation is a list of validation methods for CustomResources.","type":"object","properties":{"openAPIV3Schema":{"description":"openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation":{"description":"ExternalDocumentation allows referencing an external resource for extended documentation.","type":"object","properties":{"description":{"type":"string"},"url":{"type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON":{"description":"JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps":{"description":"JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).","type":"object","properties":{"$ref":{"type":"string"},"$schema":{"type":"string"},"additionalItems":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"additionalProperties":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"allOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"anyOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"default":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"definitions":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"dependencies":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray"}},"description":{"type":"string"},"enum":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"}},"example":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"exclusiveMaximum":{"type":"boolean"},"exclusiveMinimum":{"type":"boolean"},"externalDocs":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation"},"format":{"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.","type":"string"},"id":{"type":"string"},"items":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray"},"maxItems":{"type":"integer","format":"int64"},"maxLength":{"type":"integer","format":"int64"},"maxProperties":{"type":"integer","format":"int64"},"maximum":{"type":"number","format":"double"},"minItems":{"type":"integer","format":"int64"},"minLength":{"type":"integer","format":"int64"},"minProperties":{"type":"integer","format":"int64"},"minimum":{"type":"number","format":"double"},"multipleOf":{"type":"number","format":"double"},"not":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"},"nullable":{"type":"boolean"},"oneOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"pattern":{"type":"string"},"patternProperties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"properties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"required":{"type":"array","items":{"type":"string","default":""}},"title":{"type":"string"},"type":{"type":"string"},"uniqueItems":{"type":"boolean"},"x-kubernetes-embedded-resource":{"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).","type":"boolean"},"x-kubernetes-int-or-string":{"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","type":"boolean"},"x-kubernetes-list-map-keys":{"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.","type":"array","items":{"type":"string","default":""}},"x-kubernetes-list-type":{"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.","type":"string"},"x-kubernetes-map-type":{"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.","type":"string"},"x-kubernetes-preserve-unknown-fields":{"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.","type":"boolean"},"x-kubernetes-validations":{"description":"x-kubernetes-validations describes a list of validation rules written in the CEL expression language. This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule"},"x-kubernetes-list-map-keys":["rule"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"rule","x-kubernetes-patch-strategy":"merge"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray":{"description":"JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool":{"description":"JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray":{"description":"JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference":{"description":"ServiceReference holds a reference to Service.legacy.k8s.io","type":"object","required":["namespace","name"],"properties":{"name":{"description":"name is the name of the service. Required","type":"string","default":""},"namespace":{"description":"namespace is the namespace of the service. Required","type":"string","default":""},"path":{"description":"path is an optional URL path at which the webhook will be contacted.","type":"string"},"port":{"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.","type":"integer","format":"int32"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule":{"description":"ValidationRule describes a validation rule written in the CEL expression language.","type":"object","required":["rule"],"properties":{"message":{"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\"","type":"string"},"rule":{"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 \u003c= 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 \u003c 10\"} - Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value \u003e= 0 \u0026\u0026 value \u003c 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__ \u003e 0\"}\n - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop \u003e 0\"}\n - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d \u003e 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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig":{"description":"WebhookClientConfig contains the information to make a TLS connection with the webhook.","type":"object","properties":{"caBundle":{"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.","type":"string","format":"byte"},"service":{"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`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference"},"url":{"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.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion":{"description":"WebhookConversion describes how to call a conversion webhook","type":"object","required":["conversionReviewVersions"],"properties":{"clientConfig":{"description":"clientConfig is the instructions for how to call the webhook if strategy is `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig"},"conversionReviewVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"},"propagationPolicy":{"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.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"creationTimestamp":{"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","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"},"reason":{"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.","type":"string"},"status":{"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","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"}},"securityDefinitions":{"BearerToken":{"description":"Bearer Token authentication","type":"apiKey","name":"authorization","in":"header"}},"security":[{"BearerToken":[]}]}container_v1beta1_containercluster.json000066400000000000000000004271111453663023200375670ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv2{"swagger":"2.0","info":{"title":"Kubernetes","version":"v1.27.0"},"paths":{"/apis/container.cnrm.cloud.google.com/v1beta1/containerclusters":{"get":{"description":"list objects of kind ContainerCluster","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["containerCnrmCloudGoogleCom_v1beta1"],"operationId":"listContainerCnrmCloudGoogleComV1beta1ContainerClusterForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.container.v1beta1.ContainerClusterList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"container.cnrm.cloud.google.com","version":"v1beta1","kind":"ContainerCluster"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/apis/container.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/containerclusters":{"get":{"description":"list objects of kind ContainerCluster","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["containerCnrmCloudGoogleCom_v1beta1"],"operationId":"listContainerCnrmCloudGoogleComV1beta1NamespacedContainerCluster","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.container.v1beta1.ContainerClusterList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"container.cnrm.cloud.google.com","version":"v1beta1","kind":"ContainerCluster"}},"post":{"description":"create a ContainerCluster","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["containerCnrmCloudGoogleCom_v1beta1"],"operationId":"createContainerCnrmCloudGoogleComV1beta1NamespacedContainerCluster","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.container.v1beta1.ContainerCluster"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.container.v1beta1.ContainerCluster"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.container.v1beta1.ContainerCluster"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.container.v1beta1.ContainerCluster"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"container.cnrm.cloud.google.com","version":"v1beta1","kind":"ContainerCluster"}},"delete":{"description":"delete collection of ContainerCluster","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["containerCnrmCloudGoogleCom_v1beta1"],"operationId":"deleteContainerCnrmCloudGoogleComV1beta1CollectionNamespacedContainerCluster","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"container.cnrm.cloud.google.com","version":"v1beta1","kind":"ContainerCluster"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/container.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/containerclusters/{name}":{"get":{"description":"read the specified ContainerCluster","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["containerCnrmCloudGoogleCom_v1beta1"],"operationId":"readContainerCnrmCloudGoogleComV1beta1NamespacedContainerCluster","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.container.v1beta1.ContainerCluster"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"container.cnrm.cloud.google.com","version":"v1beta1","kind":"ContainerCluster"}},"put":{"description":"replace the specified ContainerCluster","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["containerCnrmCloudGoogleCom_v1beta1"],"operationId":"replaceContainerCnrmCloudGoogleComV1beta1NamespacedContainerCluster","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.container.v1beta1.ContainerCluster"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.container.v1beta1.ContainerCluster"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.container.v1beta1.ContainerCluster"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"container.cnrm.cloud.google.com","version":"v1beta1","kind":"ContainerCluster"}},"delete":{"description":"delete a ContainerCluster","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["containerCnrmCloudGoogleCom_v1beta1"],"operationId":"deleteContainerCnrmCloudGoogleComV1beta1NamespacedContainerCluster","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"container.cnrm.cloud.google.com","version":"v1beta1","kind":"ContainerCluster"}},"patch":{"description":"partially update the specified ContainerCluster","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["containerCnrmCloudGoogleCom_v1beta1"],"operationId":"patchContainerCnrmCloudGoogleComV1beta1NamespacedContainerCluster","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.container.v1beta1.ContainerCluster"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"container.cnrm.cloud.google.com","version":"v1beta1","kind":"ContainerCluster"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the ContainerCluster","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/container.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/containerclusters/{name}/status":{"get":{"description":"read status of the specified ContainerCluster","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["containerCnrmCloudGoogleCom_v1beta1"],"operationId":"readContainerCnrmCloudGoogleComV1beta1NamespacedContainerClusterStatus","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.container.v1beta1.ContainerCluster"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"container.cnrm.cloud.google.com","version":"v1beta1","kind":"ContainerCluster"}},"put":{"description":"replace status of the specified ContainerCluster","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["containerCnrmCloudGoogleCom_v1beta1"],"operationId":"replaceContainerCnrmCloudGoogleComV1beta1NamespacedContainerClusterStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.container.v1beta1.ContainerCluster"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.container.v1beta1.ContainerCluster"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.container.v1beta1.ContainerCluster"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"container.cnrm.cloud.google.com","version":"v1beta1","kind":"ContainerCluster"}},"patch":{"description":"partially update status of the specified ContainerCluster","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["containerCnrmCloudGoogleCom_v1beta1"],"operationId":"patchContainerCnrmCloudGoogleComV1beta1NamespacedContainerClusterStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.container.v1beta1.ContainerCluster"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"container.cnrm.cloud.google.com","version":"v1beta1","kind":"ContainerCluster"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the ContainerCluster","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]}},"definitions":{"com.google.cloud.cnrm.container.v1beta1.ContainerCluster":{"type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"type":"object","properties":{"addonsConfig":{"description":"The configuration for addons supported by GKE.","type":"object","properties":{"cloudrunConfig":{"description":"The status of the CloudRun addon. It is disabled by default. Set disabled = false to enable.","type":"object","properties":{"disabled":{"type":"boolean"},"loadBalancerType":{"type":"string"}}},"configConnectorConfig":{"description":"The of the Config Connector addon.","type":"object","properties":{"enabled":{"type":"boolean"}}},"dnsCacheConfig":{"description":"The status of the NodeLocal DNSCache addon. It is disabled by default. Set enabled = true to enable.","type":"object","properties":{"enabled":{"type":"boolean"}}},"gcePersistentDiskCsiDriverConfig":{"description":"Whether this cluster should enable the Google Compute Engine Persistent Disk Container Storage Interface (CSI) Driver. Defaults to enabled; set disabled = true to disable.","type":"object","properties":{"enabled":{"type":"boolean"}}},"gcpFilestoreCsiDriverConfig":{"description":"The status of the Filestore CSI driver addon, which allows the usage of filestore instance as volumes. Defaults to disabled; set enabled = true to enable.","type":"object","properties":{"enabled":{"type":"boolean"}}},"gkeBackupAgentConfig":{"description":"The status of the Backup for GKE Agent addon. It is disabled by default. Set enabled = true to enable.","type":"object","properties":{"enabled":{"type":"boolean"}}},"horizontalPodAutoscaling":{"description":"The status of the Horizontal Pod Autoscaling addon, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods. It ensures that a Heapster pod is running in the cluster, which is also used by the Cloud Monitoring service. It is enabled by default; set disabled = true to disable.","type":"object","properties":{"disabled":{"type":"boolean"}}},"httpLoadBalancing":{"description":"The status of the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster. It is enabled by default; set disabled = true to disable.","type":"object","properties":{"disabled":{"type":"boolean"}}},"istioConfig":{"description":"The status of the Istio addon.","type":"object","properties":{"auth":{"description":"The authentication type between services in Istio. Available options include AUTH_MUTUAL_TLS.","type":"string"},"disabled":{"description":"The status of the Istio addon, which makes it easy to set up Istio for services in a cluster. It is disabled by default. Set disabled = false to enable.","type":"boolean"}}},"kalmConfig":{"description":"Configuration for the KALM addon, which manages the lifecycle of k8s. It is disabled by default; Set enabled = true to enable.","type":"object","properties":{"enabled":{"type":"boolean"}}},"networkPolicyConfig":{"description":"Whether we should enable the network policy addon for the master. This must be enabled in order to enable network policy for the nodes. To enable this, you must also define a network_policy block, otherwise nothing will happen. It can only be disabled if the nodes already do not have network policies enabled. Defaults to disabled; set disabled = false to enable.","type":"object","properties":{"disabled":{"type":"boolean"}}}}},"authenticatorGroupsConfig":{"description":"Configuration for the Google Groups for GKE feature.","type":"object","properties":{"securityGroup":{"description":"The name of the RBAC security group for use with Google security groups in Kubernetes RBAC. Group name must be in format gke-security-groups@yourdomain.com.","type":"string"}}},"binaryAuthorization":{"description":"Configuration options for the Binary Authorization feature.","type":"object","properties":{"enabled":{"description":"DEPRECATED. Deprecated in favor of evaluation_mode. Enable Binary Authorization for this cluster.","type":"boolean"},"evaluationMode":{"description":"Mode of operation for Binary Authorization policy evaluation.","type":"string"}}},"clusterAutoscaling":{"description":"Per-cluster configuration of Node Auto-Provisioning with Cluster Autoscaler to automatically adjust the size of the cluster and create/delete node pools based on the current needs of the cluster's workload. See the guide to using Node Auto-Provisioning for more details.","type":"object","properties":{"autoProvisioningDefaults":{"description":"Contains defaults for a node pool created by NAP.","type":"object","properties":{"bootDiskKMSKeyRef":{"description":"Immutable. The Customer Managed Encryption Key used to encrypt the\nboot disk attached to each node in the node pool.","type":"object","properties":{"external":{"description":"Allowed value: The `selfLink` field of a `KMSCryptoKey` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"diskSize":{"description":"Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB.","type":"integer"},"imageType":{"description":"The default image type used by NAP once a new node pool is being created.","type":"string"},"management":{"description":"NodeManagement configuration for this NodePool.","type":"object","properties":{"autoRepair":{"description":"Specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered.","type":"boolean"},"autoUpgrade":{"description":"Specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes.","type":"boolean"},"upgradeOptions":{"description":"Specifies the Auto Upgrade knobs for the node pool.","type":"array","items":{"type":"object","properties":{"autoUpgradeStartTime":{"description":"This field is set when upgrades are about to commence with the approximate start time for the upgrades, in RFC3339 text format.","type":"string"},"description":{"description":"This field is set when upgrades are about to commence with the description of the upgrade.","type":"string"}}}}}},"minCpuPlatform":{"description":"Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as Intel Haswell.","type":"string"},"oauthScopes":{"description":"Scopes that are used by NAP when creating node pools.","type":"array","items":{"type":"string"}},"serviceAccountRef":{"type":"object","properties":{"external":{"description":"Allowed value: The `email` field of an `IAMServiceAccount` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"shieldedInstanceConfig":{"description":"Shielded Instance options.","type":"object","properties":{"enableIntegrityMonitoring":{"description":"Defines whether the instance has integrity monitoring enabled.","type":"boolean"},"enableSecureBoot":{"description":"Defines whether the instance has Secure Boot enabled.","type":"boolean"}}},"upgradeSettings":{"description":"Specifies the upgrade settings for NAP created node pools.","type":"object","properties":{"blueGreenSettings":{"description":"Settings for blue-green upgrade strategy.","type":"object","properties":{"nodePoolSoakDuration":{"description":"Time needed after draining entire blue pool. After this period, blue pool will be cleaned up.\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA duration in seconds with up to nine fractional digits, ending with 's'. Example: \"3.5s\".","type":"string"},"standardRolloutPolicy":{"description":"Standard policy for the blue-green upgrade.","type":"object","properties":{"batchNodeCount":{"description":"Number of blue nodes to drain in a batch.","type":"integer"},"batchPercentage":{"description":"Percentage of the bool pool nodes to drain in a batch. The range of this field should be (0.0, 1.0].","type":"number"},"batchSoakDuration":{"description":"Soak time after each batch gets drained.\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA duration in seconds with up to nine fractional digits, ending with 's'. Example: \"3.5s\".","type":"string"}}}}},"maxSurge":{"description":"The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process.","type":"integer"},"maxUnavailable":{"description":"The maximum number of nodes that can be simultaneously unavailable during the upgrade process.","type":"integer"},"strategy":{"description":"Update strategy of the node pool.","type":"string"}}}}},"autoscalingProfile":{"description":"Configuration options for the Autoscaling profile feature, which lets you choose whether the cluster autoscaler should optimize for resource utilization or resource availability when deciding to remove nodes from a cluster. Can be BALANCED or OPTIMIZE_UTILIZATION. Defaults to BALANCED.","type":"string"},"enabled":{"description":"Whether node auto-provisioning is enabled. Resource limits for cpu and memory must be defined to enable node auto-provisioning.","type":"boolean"},"resourceLimits":{"description":"Global constraints for machine resources in the cluster. Configuring the cpu and memory types is required if node auto-provisioning is enabled. These limits will apply to node pool autoscaling in addition to node auto-provisioning.","type":"array","items":{"type":"object","properties":{"maximum":{"description":"Maximum amount of the resource in the cluster.","type":"integer"},"minimum":{"description":"Minimum amount of the resource in the cluster.","type":"integer"},"resourceType":{"description":"The type of the resource. For example, cpu and memory. See the guide to using Node Auto-Provisioning for a list of types.","type":"string"}}}}}},"clusterIpv4Cidr":{"description":"Immutable. The IP address range of the Kubernetes pods in this cluster in CIDR notation (e.g. 10.96.0.0/14). Leave blank to have one automatically chosen or specify a /14 block in 10.0.0.0/8. This field will only work for routes-based clusters, where ip_allocation_policy is not defined.","type":"string"},"clusterTelemetry":{"description":"Telemetry integration for the cluster.","type":"object","properties":{"type":{"description":"Type of the integration.","type":"string"}}},"confidentialNodes":{"description":"Immutable. Configuration for the confidential nodes feature, which makes nodes run on confidential VMs. Warning: This configuration can't be changed (or added/removed) after cluster creation without deleting and recreating the entire cluster.","type":"object","properties":{"enabled":{"description":"Immutable. Whether Confidential Nodes feature is enabled for all nodes in this cluster.","type":"boolean"}}},"costManagementConfig":{"description":"Cost management configuration for the cluster.","type":"object","properties":{"enabled":{"description":"Whether to enable GKE cost allocation. When you enable GKE cost allocation, the cluster name and namespace of your GKE workloads appear in the labels field of the billing export to BigQuery. Defaults to false.","type":"boolean"}}},"databaseEncryption":{"description":"Application-layer Secrets Encryption settings. The object format is {state = string, key_name = string}. Valid values of state are: \"ENCRYPTED\"; \"DECRYPTED\". key_name is the name of a CloudKMS key.","type":"object","properties":{"keyName":{"description":"The key to use to encrypt/decrypt secrets.","type":"string"},"state":{"description":"ENCRYPTED or DECRYPTED.","type":"string"}}},"datapathProvider":{"description":"Immutable. The desired datapath provider for this cluster. By default, uses the IPTables-based kube-proxy implementation.","type":"string"},"defaultMaxPodsPerNode":{"description":"Immutable. The default maximum number of pods per node in this cluster. This doesn't work on \"routes-based\" clusters, clusters that don't have IP Aliasing enabled.","type":"integer"},"defaultSnatStatus":{"description":"Whether the cluster disables default in-node sNAT rules. In-node sNAT rules will be disabled when defaultSnatStatus is disabled.","type":"object","properties":{"disabled":{"description":"When disabled is set to false, default IP masquerade rules will be applied to the nodes to prevent sNAT on cluster internal traffic.","type":"boolean"}}},"description":{"description":"Immutable. Description of the cluster.","type":"string"},"dnsConfig":{"description":"Immutable. Configuration for Cloud DNS for Kubernetes Engine.","type":"object","properties":{"clusterDns":{"description":"Which in-cluster DNS provider should be used.","type":"string"},"clusterDnsDomain":{"description":"The suffix used for all cluster service records.","type":"string"},"clusterDnsScope":{"description":"The scope of access to cluster DNS records.","type":"string"}}},"enableAutopilot":{"description":"Immutable. Enable Autopilot for this cluster.","type":"boolean"},"enableBinaryAuthorization":{"description":"DEPRECATED. Deprecated in favor of binary_authorization. Enable Binary Authorization for this cluster. If enabled, all container images will be validated by Google Binary Authorization.","type":"boolean"},"enableIntranodeVisibility":{"description":"Whether Intra-node visibility is enabled for this cluster. This makes same node pod to pod traffic visible for VPC network.","type":"boolean"},"enableKubernetesAlpha":{"description":"Immutable. Whether to enable Kubernetes Alpha features for this cluster. Note that when this option is enabled, the cluster cannot be upgraded and will be automatically deleted after 30 days.","type":"boolean"},"enableL4IlbSubsetting":{"description":"Whether L4ILB Subsetting is enabled for this cluster.","type":"boolean"},"enableLegacyAbac":{"description":"Whether the ABAC authorizer is enabled for this cluster. When enabled, identities in the system, including service accounts, nodes, and controllers, will have statically granted permissions beyond those provided by the RBAC configuration or IAM. Defaults to false.","type":"boolean"},"enableShieldedNodes":{"description":"Enable Shielded Nodes features on all nodes in this cluster. Defaults to true.","type":"boolean"},"enableTpu":{"description":"Immutable. Whether to enable Cloud TPU resources in this cluster.","type":"boolean"},"gatewayApiConfig":{"description":"Configuration for GKE Gateway API controller.","type":"object","properties":{"channel":{"description":"The Gateway API release channel to use for Gateway API.","type":"string"}}},"identityServiceConfig":{"description":"Configuration for Identity Service which allows customers to use external identity providers with the K8S API.","type":"object","properties":{"enabled":{"description":"Whether to enable the Identity Service component.","type":"boolean"}}},"initialNodeCount":{"description":"Immutable. The number of nodes to create in this cluster's default node pool. In regional or multi-zonal clusters, this is the number of nodes per zone. Must be set if node_pool is not set. If you're using google_container_node_pool objects with no default node pool, you'll need to set this to a value of at least 1, alongside setting remove_default_node_pool to true.","type":"integer"},"ipAllocationPolicy":{"description":"Immutable. Configuration of cluster IP allocation for VPC-native clusters. Adding this block enables IP aliasing, making the cluster VPC-native instead of routes-based.","type":"object","properties":{"clusterIpv4CidrBlock":{"description":"Immutable. The IP address range for the cluster pod IPs. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. /14) to have a range chosen with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use.","type":"string"},"clusterSecondaryRangeName":{"description":"Immutable. The name of the existing secondary range in the cluster's subnetwork to use for pod IP addresses. Alternatively, cluster_ipv4_cidr_block can be used to automatically create a GKE-managed one.","type":"string"},"servicesIpv4CidrBlock":{"description":"Immutable. The IP address range of the services IPs in this cluster. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. /14) to have a range chosen with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use.","type":"string"},"servicesSecondaryRangeName":{"description":"Immutable. The name of the existing secondary range in the cluster's subnetwork to use for service ClusterIPs. Alternatively, services_ipv4_cidr_block can be used to automatically create a GKE-managed one.","type":"string"}}},"location":{"description":"Immutable. The location (region or zone) in which the cluster master will be created, as well as the default node location. If you specify a zone (such as us-central1-a), the cluster will be a zonal cluster with a single cluster master. If you specify a region (such as us-west1), the cluster will be a regional cluster with multiple masters spread across zones in the region, and with default node locations in those zones as well.","type":"string"},"loggingConfig":{"description":"Logging configuration for the cluster.","type":"object","properties":{"enableComponents":{"description":"GKE components exposing logs. Valid values include SYSTEM_COMPONENTS, APISERVER, CONTROLLER_MANAGER, SCHEDULER, and WORKLOADS.","type":"array","items":{"type":"string"}}}},"loggingService":{"description":"The logging service that the cluster should write logs to. Available options include logging.googleapis.com(Legacy Stackdriver), logging.googleapis.com/kubernetes(Stackdriver Kubernetes Engine Logging), and none. Defaults to logging.googleapis.com/kubernetes.","type":"string"},"maintenancePolicy":{"description":"The maintenance policy to use for the cluster.","type":"object","properties":{"dailyMaintenanceWindow":{"description":"Time window specified for daily maintenance operations. Specify start_time in RFC3339 format \"HH:MMâ€, where HH : [00-23] and MM : [00-59] GMT.","type":"object","properties":{"duration":{"type":"string"},"startTime":{"type":"string"}}},"maintenanceExclusion":{"description":"Exceptions to maintenance window. Non-emergency maintenance should not occur in these windows.","type":"array","items":{"type":"object","properties":{"endTime":{"type":"string"},"exclusionName":{"type":"string"},"exclusionOptions":{"description":"Maintenance exclusion related options.","type":"object","properties":{"scope":{"description":"The scope of automatic upgrades to restrict in the exclusion window.","type":"string"}}},"startTime":{"type":"string"}}}},"recurringWindow":{"description":"Time window for recurring maintenance operations.","type":"object","properties":{"endTime":{"type":"string"},"recurrence":{"type":"string"},"startTime":{"type":"string"}}}}},"masterAuth":{"description":"DEPRECATED. Basic authentication was removed for GKE cluster versions \u003e= 1.19. The authentication information for accessing the Kubernetes master. Some values in this block are only returned by the API if your service account has permission to get credentials for your GKE cluster. If you see an unexpected diff unsetting your client cert, ensure you have the container.clusters.getCredentials permission.","type":"object","properties":{"clientCertificate":{"description":"Base64 encoded public certificate used by clients to authenticate to the cluster endpoint.","type":"string"},"clientCertificateConfig":{"description":"Immutable. Whether client certificate authorization is enabled for this cluster.","type":"object","properties":{"issueClientCertificate":{"description":"Immutable. Whether client certificate authorization is enabled for this cluster.","type":"boolean"}}},"clientKey":{"description":"Base64 encoded private key used by clients to authenticate to the cluster endpoint.","type":"string"},"clusterCaCertificate":{"description":"Base64 encoded public certificate that is the root of trust for the cluster.","type":"string"},"password":{"description":"The password to use for HTTP basic authentication when accessing the Kubernetes master endpoint.","type":"object","properties":{"value":{"description":"Value of the field. Cannot be used if 'valueFrom' is specified.","type":"string"},"valueFrom":{"description":"Source for the field's value. Cannot be used if 'value' is specified.","type":"object","properties":{"secretKeyRef":{"description":"Reference to a value with the given key in the given Secret in the resource's namespace.","type":"object","properties":{"key":{"description":"Key that identifies the value to be extracted.","type":"string"},"name":{"description":"Name of the Secret to extract a value from.","type":"string"}}}}}}},"username":{"description":"The username to use for HTTP basic authentication when accessing the Kubernetes master endpoint. If not present basic auth will be disabled.","type":"string"}}},"masterAuthorizedNetworksConfig":{"description":"The desired configuration options for master authorized networks. Omit the nested cidr_blocks attribute to disallow external access (except the cluster node IPs, which GKE automatically whitelists).","type":"object","properties":{"cidrBlocks":{"description":"External networks that can access the Kubernetes cluster master through HTTPS.","type":"array","items":{"type":"object","properties":{"cidrBlock":{"description":"External network that can access Kubernetes master through HTTPS. Must be specified in CIDR notation.","type":"string"},"displayName":{"description":"Field for users to identify CIDR blocks.","type":"string"}}}},"gcpPublicCidrsAccessEnabled":{"description":"Whether master is accessbile via Google Compute Engine Public IP addresses.","type":"boolean"}}},"meshCertificates":{"description":"If set, and enable_certificates=true, the GKE Workload Identity Certificates controller and node agent will be deployed in the cluster.","type":"object","properties":{"enableCertificates":{"description":"When enabled the GKE Workload Identity Certificates controller and node agent will be deployed in the cluster.","type":"boolean"}}},"minMasterVersion":{"description":"The minimum version of the master. GKE will auto-update the master to new versions, so this does not guarantee the current master version--use the read-only master_version field to obtain that. If unset, the cluster's version will be set by GKE to the version of the most recent official release (which is not necessarily the latest version).","type":"string"},"monitoringConfig":{"description":"Monitoring configuration for the cluster.","type":"object","properties":{"enableComponents":{"description":"GKE components exposing metrics. Valid values include SYSTEM_COMPONENTS, APISERVER, CONTROLLER_MANAGER, SCHEDULER, and WORKLOADS.","type":"array","items":{"type":"string"}},"managedPrometheus":{"description":"Configuration for Google Cloud Managed Services for Prometheus.","type":"object","properties":{"enabled":{"description":"Whether or not the managed collection is enabled.","type":"boolean"}}}}},"monitoringService":{"description":"The monitoring service that the cluster should write metrics to. Automatically send metrics from pods in the cluster to the Google Cloud Monitoring API. VM metrics will be collected by Google Compute Engine regardless of this setting Available options include monitoring.googleapis.com(Legacy Stackdriver), monitoring.googleapis.com/kubernetes(Stackdriver Kubernetes Engine Monitoring), and none. Defaults to monitoring.googleapis.com/kubernetes.","type":"string"},"networkPolicy":{"description":"Configuration options for the NetworkPolicy feature.","type":"object","properties":{"enabled":{"description":"Whether network policy is enabled on the cluster.","type":"boolean"},"provider":{"description":"The selected network policy provider. Defaults to PROVIDER_UNSPECIFIED.","type":"string"}}},"networkRef":{"type":"object","properties":{"external":{"description":"Allowed value: The `selfLink` field of a `ComputeNetwork` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"networkingMode":{"description":"Immutable. Determines whether alias IPs or routes will be used for pod IPs in the cluster.","type":"string"},"nodeConfig":{"description":"Immutable. The configuration of the nodepool.","type":"object","properties":{"bootDiskKMSCryptoKeyRef":{"type":"object","properties":{"external":{"description":"Allowed value: The `selfLink` field of a `KMSCryptoKey` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"diskSizeGb":{"description":"Immutable. Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB.","type":"integer"},"diskType":{"description":"Immutable. Type of the disk attached to each node. Such as pd-standard, pd-balanced or pd-ssd.","type":"string"},"ephemeralStorageConfig":{"description":"Immutable. Parameters for the ephemeral storage filesystem.","type":"object","properties":{"localSsdCount":{"description":"Immutable. Number of local SSDs to use to back ephemeral storage. Uses NVMe interfaces. Each local SSD is 375 GB in size.","type":"integer"}}},"gcfsConfig":{"description":"Immutable. GCFS configuration for this node.","type":"object","properties":{"enabled":{"description":"Immutable. Whether or not GCFS is enabled.","type":"boolean"}}},"guestAccelerator":{"description":"Immutable. List of the type and count of accelerator cards attached to the instance.","type":"array","items":{"type":"object","properties":{"count":{"description":"Immutable. The number of the accelerator cards exposed to an instance.","type":"integer"},"gpuPartitionSize":{"description":"Immutable. Size of partitions to create on the GPU. Valid values are described in the NVIDIA mig user guide (https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning).","type":"string"},"gpuSharingConfig":{"description":"Immutable. Configuration for GPU sharing.","type":"object","properties":{"gpuSharingStrategy":{"description":"Immutable. The type of GPU sharing strategy to enable on the GPU node. Possible values are described in the API package (https://pkg.go.dev/google.golang.org/api/container/v1#GPUSharingConfig).","type":"string"},"maxSharedClientsPerGpu":{"description":"Immutable. The maximum number of containers that can share a GPU.","type":"integer"}}},"type":{"description":"Immutable. The accelerator type resource name.","type":"string"}}}},"gvnic":{"description":"Immutable. Enable or disable gvnic in the node pool.","type":"object","properties":{"enabled":{"description":"Immutable. Whether or not gvnic is enabled.","type":"boolean"}}},"imageType":{"description":"The image type to use for this node. Note that for a given image type, the latest version of it will be used.","type":"string"},"kubeletConfig":{"description":"Node kubelet configs.","type":"object","properties":{"cpuCfsQuota":{"description":"Enable CPU CFS quota enforcement for containers that specify CPU limits.","type":"boolean"},"cpuCfsQuotaPeriod":{"description":"Set the CPU CFS quota period value 'cpu.cfs_period_us'.","type":"string"},"cpuManagerPolicy":{"description":"Control the CPU management policy on the node.","type":"string"}}},"labels":{"description":"Immutable. The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node.","type":"object","additionalProperties":{"type":"string"}},"linuxNodeConfig":{"description":"Parameters that can be configured on Linux nodes.","type":"object","properties":{"sysctls":{"description":"The Linux kernel parameters to be applied to the nodes and all pods running on the nodes.","type":"object","additionalProperties":{"type":"string"}}}},"localSsdCount":{"description":"Immutable. The number of local SSD disks to be attached to the node.","type":"integer"},"loggingVariant":{"description":"Type of logging agent that is used as the default value for node pools in the cluster. Valid values include DEFAULT and MAX_THROUGHPUT.","type":"string"},"machineType":{"description":"Immutable. The name of a Google Compute Engine machine type.","type":"string"},"metadata":{"description":"Immutable. The metadata key/value pairs assigned to instances in the cluster.","type":"object","additionalProperties":{"type":"string"}},"minCpuPlatform":{"description":"Immutable. Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform.","type":"string"},"nodeGroupRef":{"description":"Immutable. Setting this field will assign instances\nof this pool to run on the specified node group. This is useful\nfor running workloads on sole tenant nodes.","type":"object","properties":{"external":{"description":"Allowed value: The `name` field of a `ComputeNodeGroup` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"oauthScopes":{"description":"Immutable. The set of Google API scopes to be made available on all of the node VMs.","type":"array","items":{"type":"string"}},"preemptible":{"description":"Immutable. Whether the nodes are created as preemptible VM instances.","type":"boolean"},"reservationAffinity":{"description":"Immutable. The reservation affinity configuration for the node pool.","type":"object","properties":{"consumeReservationType":{"description":"Immutable. Corresponds to the type of reservation consumption.","type":"string"},"key":{"description":"Immutable. The label key of a reservation resource.","type":"string"},"values":{"description":"Immutable. The label values of the reservation resource.","type":"array","items":{"type":"string"}}}},"resourceLabels":{"description":"The GCE resource labels (a map of key/value pairs) to be applied to the node pool.","type":"object","additionalProperties":{"type":"string"}},"sandboxConfig":{"description":"Immutable. Sandbox configuration for this node.","type":"object","properties":{"sandboxType":{"description":"Type of the sandbox to use for the node (e.g. 'gvisor').","type":"string"}}},"serviceAccountRef":{"type":"object","properties":{"external":{"description":"Allowed value: The `email` field of an `IAMServiceAccount` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"shieldedInstanceConfig":{"description":"Immutable. Shielded Instance options.","type":"object","properties":{"enableIntegrityMonitoring":{"description":"Immutable. Defines whether the instance has integrity monitoring enabled.","type":"boolean"},"enableSecureBoot":{"description":"Immutable. Defines whether the instance has Secure Boot enabled.","type":"boolean"}}},"spot":{"description":"Immutable. Whether the nodes are created as spot VM instances.","type":"boolean"},"tags":{"description":"The list of instance tags applied to all nodes.","type":"array","items":{"type":"string"}},"taint":{"description":"Immutable. List of Kubernetes taints to be applied to each node.","type":"array","items":{"type":"object","properties":{"effect":{"description":"Immutable. Effect for taint.","type":"string"},"key":{"description":"Immutable. Key for taint.","type":"string"},"value":{"description":"Immutable. Value for taint.","type":"string"}}}},"workloadMetadataConfig":{"description":"Immutable. The workload metadata configuration for this node.","type":"object","properties":{"mode":{"description":"Mode is the configuration for how to expose metadata to workloads running on the node.","type":"string"},"nodeMetadata":{"description":"DEPRECATED. Deprecated in favor of mode. NodeMetadata is the configuration for how to expose metadata to the workloads running on the node.","type":"string"}}}}},"nodeLocations":{"description":"The list of zones in which the cluster's nodes are located. Nodes must be in the region of their regional cluster or in the same region as their cluster's zone for zonal clusters. If this is specified for a zonal cluster, omit the cluster's zone.","type":"array","items":{"type":"string"}},"nodePoolAutoConfig":{"description":"Node pool configs that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters.","type":"object","properties":{"networkTags":{"description":"Collection of Compute Engine network tags that can be applied to a node's underlying VM instance.","type":"object","properties":{"tags":{"description":"List of network tags applied to auto-provisioned node pools.","type":"array","items":{"type":"string"}}}}}},"nodePoolDefaults":{"description":"The default nodel pool settings for the entire cluster.","type":"object","properties":{"nodeConfigDefaults":{"description":"Subset of NodeConfig message that has defaults.","type":"object","properties":{"gcfsConfig":{"description":"GCFS configuration for this node.","type":"object","properties":{"enabled":{"description":"Whether or not GCFS is enabled.","type":"boolean"}}},"loggingVariant":{"description":"Type of logging agent that is used as the default value for node pools in the cluster. Valid values include DEFAULT and MAX_THROUGHPUT.","type":"string"}}}}},"nodeVersion":{"type":"string"},"notificationConfig":{"description":"The notification config for sending cluster upgrade notifications.","type":"object","properties":{"pubsub":{"description":"Notification config for Cloud Pub/Sub.","type":"object","properties":{"enabled":{"description":"Whether or not the notification config is enabled.","type":"boolean"},"filter":{"description":"Allows filtering to one or more specific event types. If event types are present, those and only those event types will be transmitted to the cluster. Other types will be skipped. If no filter is specified, or no event types are present, all event types will be sent.","type":"object","properties":{"eventType":{"description":"Can be used to filter what notifications are sent. Valid values include include UPGRADE_AVAILABLE_EVENT, UPGRADE_EVENT and SECURITY_BULLETIN_EVENT.","type":"array","items":{"type":"string"}}}},"topicRef":{"description":"The PubSubTopic to send the notification to.","type":"object","properties":{"external":{"description":"Allowed value: string of the format `projects/{{project}}/topics/{{value}}`, where {{value}} is the `name` field of a `PubSubTopic` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}}},"podSecurityPolicyConfig":{"description":"Configuration for the PodSecurityPolicy feature.","type":"object","properties":{"enabled":{"description":"Enable the PodSecurityPolicy controller for this cluster. If enabled, pods must be valid under a PodSecurityPolicy to be created.","type":"boolean"}}},"privateClusterConfig":{"description":"Configuration for private clusters, clusters with private nodes.","type":"object","properties":{"enablePrivateEndpoint":{"description":"When true, the cluster's private endpoint is used as the cluster endpoint and access through the public endpoint is disabled. When false, either endpoint can be used. This field only applies to private clusters, when enable_private_nodes is true.","type":"boolean"},"enablePrivateNodes":{"description":"Immutable. Enables the private cluster feature, creating a private endpoint on the cluster. In a private cluster, nodes only have RFC 1918 private addresses and communicate with the master's private endpoint via private networking.","type":"boolean"},"masterGlobalAccessConfig":{"description":"Controls cluster master global access settings.","type":"object","properties":{"enabled":{"description":"Whether the cluster master is accessible globally or not.","type":"boolean"}}},"masterIpv4CidrBlock":{"description":"Immutable. The IP range in CIDR notation to use for the hosted master network. This range will be used for assigning private IP addresses to the cluster master(s) and the ILB VIP. This range must not overlap with any other ranges in use within the cluster's network, and it must be a /28 subnet. See Private Cluster Limitations for more details. This field only applies to private clusters, when enable_private_nodes is true.","type":"string"},"peeringName":{"description":"The name of the peering between this cluster and the Google owned VPC.","type":"string"},"privateEndpoint":{"description":"The internal IP address of this cluster's master endpoint.","type":"string"},"privateEndpointSubnetworkRef":{"description":"Immutable. Subnetwork in cluster's network where master's endpoint\nwill be provisioned.","type":"object","properties":{"external":{"description":"Allowed value: The `selfLink` field of a `ComputeSubnetwork` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"publicEndpoint":{"description":"The external IP address of this cluster's master endpoint.","type":"string"}}},"privateIpv6GoogleAccess":{"description":"The desired state of IPv6 connectivity to Google Services. By default, no private IPv6 access to or from Google Services (all access will be via IPv4).","type":"string"},"releaseChannel":{"description":"Configuration options for the Release channel feature, which provide more control over automatic upgrades of your GKE clusters. Note that removing this field from your config will not unenroll it. Instead, use the \"UNSPECIFIED\" channel.","type":"object","properties":{"channel":{"description":"The selected release channel. Accepted values are:\n* UNSPECIFIED: Not set.\n* RAPID: Weekly upgrade cadence; Early testers and developers who requires new features.\n* REGULAR: Multiple per month upgrade cadence; Production users who need features not yet offered in the Stable channel.\n* STABLE: Every few months upgrade cadence; Production users who need stability above all else, and for whom frequent upgrades are too risky.","type":"string"}}},"resourceID":{"description":"Immutable. Optional. The name of the resource. Used for creation and acquisition. When unset, the value of `metadata.name` is used as the default.","type":"string"},"resourceUsageExportConfig":{"description":"Configuration for the ResourceUsageExportConfig feature.","type":"object","properties":{"bigqueryDestination":{"description":"Parameters for using BigQuery as the destination of resource usage export.","type":"object","properties":{"datasetId":{"description":"The ID of a BigQuery Dataset.","type":"string"}}},"enableNetworkEgressMetering":{"description":"Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created in the cluster to meter network egress traffic.","type":"boolean"},"enableResourceConsumptionMetering":{"description":"Whether to enable resource consumption metering on this cluster. When enabled, a table will be created in the resource export BigQuery dataset to store resource consumption data. The resulting table can be joined with the resource usage table or with BigQuery billing export. Defaults to true.","type":"boolean"}}},"serviceExternalIpsConfig":{"description":"If set, and enabled=true, services with external ips field will not be blocked.","type":"object","properties":{"enabled":{"description":"When enabled, services with exterenal ips specified will be allowed.","type":"boolean"}}},"subnetworkRef":{"type":"object","properties":{"external":{"description":"Allowed value: The `selfLink` field of a `ComputeSubnetwork` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"verticalPodAutoscaling":{"description":"Vertical Pod Autoscaling automatically adjusts the resources of pods controlled by it.","type":"object","properties":{"enabled":{"description":"Enables vertical pod autoscaling.","type":"boolean"}}},"workloadIdentityConfig":{"description":"Configuration for the use of Kubernetes Service Accounts in GCP IAM policies.","type":"object","properties":{"identityNamespace":{"description":"DEPRECATED. This field will be removed in a future major release as it has been deprecated in the API. Use `workloadPool` instead; `workloadPool` field will supersede this field.\nEnables workload identity.","type":"string"},"workloadPool":{"description":"The workload pool to attach all Kubernetes service accounts to.","type":"string"}}}}},"status":{"type":"object","properties":{"conditions":{"description":"Conditions represent the latest available observation of the resource's current state.","type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","type":"string"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"Status is the status of the condition. Can be True, False, Unknown.","type":"string"},"type":{"description":"Type is the type of the condition.","type":"string"}}}},"endpoint":{"description":"The IP address of this cluster's Kubernetes master.","type":"string"},"labelFingerprint":{"description":"The fingerprint of the set of labels for this cluster.","type":"string"},"masterVersion":{"description":"The current version of the master in the cluster. This may be different than the min_master_version set in the config if the master has been updated by GKE.","type":"string"},"observedGeneration":{"description":"ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.","type":"integer"},"operation":{"type":"string"},"selfLink":{"description":"Server-defined URL for the resource.","type":"string"},"servicesIpv4Cidr":{"description":"The IP address range of the Kubernetes services in this cluster, in CIDR notation (e.g. 1.2.3.4/29). Service addresses are typically put in the last /16 from the container CIDR.","type":"string"},"tpuIpv4CidrBlock":{"description":"The IP address range of the Cloud TPUs in this cluster, in CIDR notation (e.g. 1.2.3.4/29).","type":"string"}}}},"x-kubernetes-group-version-kind":[{"group":"container.cnrm.cloud.google.com","kind":"ContainerCluster","version":"v1beta1"}]},"com.google.cloud.cnrm.container.v1beta1.ContainerClusterList":{"description":"ContainerClusterList is a list of ContainerCluster","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of containerclusters. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"$ref":"#/definitions/com.google.cloud.cnrm.container.v1beta1.ContainerCluster"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"container.cnrm.cloud.google.com","kind":"ContainerClusterList","version":"v1beta1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition":{"description":"CustomResourceColumnDefinition specifies a column for server side printing.","type":"object","required":["name","type","jsonPath"],"properties":{"description":{"description":"description is a human readable description of this column.","type":"string"},"format":{"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.","type":"string"},"jsonPath":{"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.","type":"string","default":""},"name":{"description":"name is a human readable name for the column.","type":"string","default":""},"priority":{"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.","type":"integer","format":"int32"},"type":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion":{"description":"CustomResourceConversion describes how to convert different versions of a CR.","type":"object","required":["strategy"],"properties":{"strategy":{"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.","type":"string","default":""},"webhook":{"description":"webhook describes how to call the conversion webhook. Required when `strategy` is set to `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition":{"description":"CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format \u003c.spec.name\u003e.\u003c.spec.group\u003e.","type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"spec describes how the user wants the resources to appear","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec"},"status":{"description":"status indicates the actual state of the CustomResourceDefinition","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus"}},"x-kubernetes-group-version-kind":[{"group":"apiextensions.k8s.io","kind":"CustomResourceDefinition","version":"v1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition":{"description":"CustomResourceDefinitionCondition contains details for the current condition of this pod.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"lastTransitionTime last time the condition transitioned from one status to another.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"message is a human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"reason is a unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"status is the status of the condition. Can be True, False, Unknown.","type":"string","default":""},"type":{"description":"type is the type of the condition. Types include Established, NamesAccepted and Terminating.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames":{"description":"CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition","type":"object","required":["plural","kind"],"properties":{"categories":{"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`.","type":"array","items":{"type":"string","default":""}},"kind":{"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.","type":"string","default":""},"listKind":{"description":"listKind is the serialized kind of the list for this resource. Defaults to \"`kind`List\".","type":"string"},"plural":{"description":"plural is the plural name of the resource to serve. The custom resources are served under `/apis/\u003cgroup\u003e/\u003cversion\u003e/.../\u003cplural\u003e`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`). Must be all lowercase.","type":"string","default":""},"shortNames":{"description":"shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get \u003cshortname\u003e`. It must be all lowercase.","type":"array","items":{"type":"string","default":""}},"singular":{"description":"singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec":{"description":"CustomResourceDefinitionSpec describes how a user wants their resource to appear","type":"object","required":["group","names","scope","versions"],"properties":{"conversion":{"description":"conversion defines conversion settings for the CRD.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion"},"group":{"description":"group is the API group of the defined custom resource. The custom resources are served under `/apis/\u003cgroup\u003e/...`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`).","type":"string","default":""},"names":{"description":"names specify the resource and kind names for the custom resource.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"preserveUnknownFields":{"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.","type":"boolean"},"scope":{"description":"scope indicates whether the defined custom resource is cluster- or namespace-scoped. Allowed values are `Cluster` and `Namespaced`.","type":"string","default":""},"versions":{"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 \u003e beta \u003e 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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion"}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus":{"description":"CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition","type":"object","properties":{"acceptedNames":{"description":"acceptedNames are the names that are actually being used to serve discovery. They may be different than the names in spec.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"conditions":{"description":"conditions indicate state for particular aspects of a CustomResourceDefinition","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition"},"x-kubernetes-list-map-keys":["type"],"x-kubernetes-list-type":"map"},"storedVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion":{"description":"CustomResourceDefinitionVersion describes a version for CRD.","type":"object","required":["name","served","storage"],"properties":{"additionalPrinterColumns":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition"}},"deprecated":{"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.","type":"boolean"},"deprecationWarning":{"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.","type":"string"},"name":{"description":"name is the version name, e.g. “v1â€, “v2beta1â€, etc. The custom resources are served under this version at `/apis/\u003cgroup\u003e/\u003cversion\u003e/...` if `served` is true.","type":"string","default":""},"schema":{"description":"schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation"},"served":{"description":"served is a flag enabling/disabling this version from being served via REST APIs","type":"boolean","default":false},"storage":{"description":"storage indicates this version should be used when persisting custom resources to storage. There must be exactly one version with storage=true.","type":"boolean","default":false},"subresources":{"description":"subresources specify what subresources this version of the defined custom resource have.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale":{"description":"CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.","type":"object","required":["specReplicasPath","statusReplicasPath"],"properties":{"labelSelectorPath":{"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.","type":"string"},"specReplicasPath":{"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.","type":"string","default":""},"statusReplicasPath":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus":{"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","type":"object"},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources":{"description":"CustomResourceSubresources defines the status and scale subresources for CustomResources.","type":"object","properties":{"scale":{"description":"scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale"},"status":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation":{"description":"CustomResourceValidation is a list of validation methods for CustomResources.","type":"object","properties":{"openAPIV3Schema":{"description":"openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation":{"description":"ExternalDocumentation allows referencing an external resource for extended documentation.","type":"object","properties":{"description":{"type":"string"},"url":{"type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON":{"description":"JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps":{"description":"JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).","type":"object","properties":{"$ref":{"type":"string"},"$schema":{"type":"string"},"additionalItems":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"additionalProperties":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"allOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"anyOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"default":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"definitions":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"dependencies":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray"}},"description":{"type":"string"},"enum":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"}},"example":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"exclusiveMaximum":{"type":"boolean"},"exclusiveMinimum":{"type":"boolean"},"externalDocs":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation"},"format":{"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.","type":"string"},"id":{"type":"string"},"items":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray"},"maxItems":{"type":"integer","format":"int64"},"maxLength":{"type":"integer","format":"int64"},"maxProperties":{"type":"integer","format":"int64"},"maximum":{"type":"number","format":"double"},"minItems":{"type":"integer","format":"int64"},"minLength":{"type":"integer","format":"int64"},"minProperties":{"type":"integer","format":"int64"},"minimum":{"type":"number","format":"double"},"multipleOf":{"type":"number","format":"double"},"not":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"},"nullable":{"type":"boolean"},"oneOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"pattern":{"type":"string"},"patternProperties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"properties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"required":{"type":"array","items":{"type":"string","default":""}},"title":{"type":"string"},"type":{"type":"string"},"uniqueItems":{"type":"boolean"},"x-kubernetes-embedded-resource":{"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).","type":"boolean"},"x-kubernetes-int-or-string":{"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","type":"boolean"},"x-kubernetes-list-map-keys":{"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.","type":"array","items":{"type":"string","default":""}},"x-kubernetes-list-type":{"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.","type":"string"},"x-kubernetes-map-type":{"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.","type":"string"},"x-kubernetes-preserve-unknown-fields":{"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.","type":"boolean"},"x-kubernetes-validations":{"description":"x-kubernetes-validations describes a list of validation rules written in the CEL expression language. This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule"},"x-kubernetes-list-map-keys":["rule"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"rule","x-kubernetes-patch-strategy":"merge"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray":{"description":"JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool":{"description":"JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray":{"description":"JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference":{"description":"ServiceReference holds a reference to Service.legacy.k8s.io","type":"object","required":["namespace","name"],"properties":{"name":{"description":"name is the name of the service. Required","type":"string","default":""},"namespace":{"description":"namespace is the namespace of the service. Required","type":"string","default":""},"path":{"description":"path is an optional URL path at which the webhook will be contacted.","type":"string"},"port":{"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.","type":"integer","format":"int32"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule":{"description":"ValidationRule describes a validation rule written in the CEL expression language.","type":"object","required":["rule"],"properties":{"message":{"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\"","type":"string"},"rule":{"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 \u003c= 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 \u003c 10\"} - Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value \u003e= 0 \u0026\u0026 value \u003c 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__ \u003e 0\"}\n - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop \u003e 0\"}\n - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d \u003e 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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig":{"description":"WebhookClientConfig contains the information to make a TLS connection with the webhook.","type":"object","properties":{"caBundle":{"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.","type":"string","format":"byte"},"service":{"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`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference"},"url":{"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.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion":{"description":"WebhookConversion describes how to call a conversion webhook","type":"object","required":["conversionReviewVersions"],"properties":{"clientConfig":{"description":"clientConfig is the instructions for how to call the webhook if strategy is `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig"},"conversionReviewVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"},"propagationPolicy":{"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.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"creationTimestamp":{"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","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"},"reason":{"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.","type":"string"},"status":{"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","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"}},"securityDefinitions":{"BearerToken":{"description":"Bearer Token authentication","type":"apiKey","name":"authorization","in":"header"}},"security":[{"BearerToken":[]}]}dataproc_v1beta1_dataprocworkflowtemplate.json000066400000000000000000004771451453663023200411560ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv2{"swagger":"2.0","info":{"title":"Kubernetes","version":"v1.27.0"},"paths":{"/apis/dataproc.cnrm.cloud.google.com/v1beta1/dataprocworkflowtemplates":{"get":{"description":"list objects of kind DataprocWorkflowTemplate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dataprocCnrmCloudGoogleCom_v1beta1"],"operationId":"listDataprocCnrmCloudGoogleComV1beta1DataprocWorkflowTemplateForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplateList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"dataproc.cnrm.cloud.google.com","version":"v1beta1","kind":"DataprocWorkflowTemplate"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/apis/dataproc.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/dataprocworkflowtemplates":{"get":{"description":"list objects of kind DataprocWorkflowTemplate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dataprocCnrmCloudGoogleCom_v1beta1"],"operationId":"listDataprocCnrmCloudGoogleComV1beta1NamespacedDataprocWorkflowTemplate","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplateList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"dataproc.cnrm.cloud.google.com","version":"v1beta1","kind":"DataprocWorkflowTemplate"}},"post":{"description":"create a DataprocWorkflowTemplate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dataprocCnrmCloudGoogleCom_v1beta1"],"operationId":"createDataprocCnrmCloudGoogleComV1beta1NamespacedDataprocWorkflowTemplate","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplate"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplate"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplate"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"dataproc.cnrm.cloud.google.com","version":"v1beta1","kind":"DataprocWorkflowTemplate"}},"delete":{"description":"delete collection of DataprocWorkflowTemplate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dataprocCnrmCloudGoogleCom_v1beta1"],"operationId":"deleteDataprocCnrmCloudGoogleComV1beta1CollectionNamespacedDataprocWorkflowTemplate","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"dataproc.cnrm.cloud.google.com","version":"v1beta1","kind":"DataprocWorkflowTemplate"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/dataproc.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/dataprocworkflowtemplates/{name}":{"get":{"description":"read the specified DataprocWorkflowTemplate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dataprocCnrmCloudGoogleCom_v1beta1"],"operationId":"readDataprocCnrmCloudGoogleComV1beta1NamespacedDataprocWorkflowTemplate","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"dataproc.cnrm.cloud.google.com","version":"v1beta1","kind":"DataprocWorkflowTemplate"}},"put":{"description":"replace the specified DataprocWorkflowTemplate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dataprocCnrmCloudGoogleCom_v1beta1"],"operationId":"replaceDataprocCnrmCloudGoogleComV1beta1NamespacedDataprocWorkflowTemplate","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplate"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplate"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"dataproc.cnrm.cloud.google.com","version":"v1beta1","kind":"DataprocWorkflowTemplate"}},"delete":{"description":"delete a DataprocWorkflowTemplate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dataprocCnrmCloudGoogleCom_v1beta1"],"operationId":"deleteDataprocCnrmCloudGoogleComV1beta1NamespacedDataprocWorkflowTemplate","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"dataproc.cnrm.cloud.google.com","version":"v1beta1","kind":"DataprocWorkflowTemplate"}},"patch":{"description":"partially update the specified DataprocWorkflowTemplate","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dataprocCnrmCloudGoogleCom_v1beta1"],"operationId":"patchDataprocCnrmCloudGoogleComV1beta1NamespacedDataprocWorkflowTemplate","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"dataproc.cnrm.cloud.google.com","version":"v1beta1","kind":"DataprocWorkflowTemplate"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the DataprocWorkflowTemplate","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/dataproc.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/dataprocworkflowtemplates/{name}/status":{"get":{"description":"read status of the specified DataprocWorkflowTemplate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dataprocCnrmCloudGoogleCom_v1beta1"],"operationId":"readDataprocCnrmCloudGoogleComV1beta1NamespacedDataprocWorkflowTemplateStatus","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"dataproc.cnrm.cloud.google.com","version":"v1beta1","kind":"DataprocWorkflowTemplate"}},"put":{"description":"replace status of the specified DataprocWorkflowTemplate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dataprocCnrmCloudGoogleCom_v1beta1"],"operationId":"replaceDataprocCnrmCloudGoogleComV1beta1NamespacedDataprocWorkflowTemplateStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplate"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplate"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"dataproc.cnrm.cloud.google.com","version":"v1beta1","kind":"DataprocWorkflowTemplate"}},"patch":{"description":"partially update status of the specified DataprocWorkflowTemplate","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dataprocCnrmCloudGoogleCom_v1beta1"],"operationId":"patchDataprocCnrmCloudGoogleComV1beta1NamespacedDataprocWorkflowTemplateStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"dataproc.cnrm.cloud.google.com","version":"v1beta1","kind":"DataprocWorkflowTemplate"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the DataprocWorkflowTemplate","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]}},"definitions":{"com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplate":{"type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"type":"object","properties":{"dagTimeout":{"description":"Immutable. Optional. Timeout duration for the DAG of jobs, expressed in seconds (see [JSON representation of duration](https://developers.google.com/protocol-buffers/docs/proto3#json)). The timeout duration must be from 10 minutes (\"600s\") to 24 hours (\"86400s\"). The timer begins when the first job is submitted. If the workflow is running at the end of the timeout period, any remaining jobs are cancelled, the workflow is ended, and if the workflow was running on a [managed cluster](/dataproc/docs/concepts/workflows/using-workflows#configuring_or_selecting_a_cluster), the cluster is deleted.","type":"string"},"jobs":{"description":"Immutable. Required. The Directed Acyclic Graph of Jobs to submit.","type":"array","items":{"type":"object","properties":{"hadoopJob":{"description":"Immutable. Optional. Job is a Hadoop job.","type":"object","properties":{"archiveUris":{"description":"Immutable. Optional. HCFS URIs of archives to be extracted in the working directory of Hadoop drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, or .zip.","type":"array","items":{"type":"string"}},"args":{"description":"Immutable. Optional. The arguments to pass to the driver. Do not include arguments, such as `-libjars` or `-Dfoo=bar`, that can be set as job properties, since a collision may occur that causes an incorrect job submission.","type":"array","items":{"type":"string"}},"fileUris":{"description":"Immutable. Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied to the working directory of Hadoop drivers and distributed tasks. Useful for naively parallel tasks.","type":"array","items":{"type":"string"}},"jarFileUris":{"description":"Immutable. Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.","type":"array","items":{"type":"string"}},"loggingConfig":{"description":"Immutable. Optional. The runtime log config for job execution.","type":"object","properties":{"driverLogLevels":{"description":"Immutable. The per-package log levels for the driver. This may include \"root\" package name to configure rootLogger. Examples: 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'","type":"object","additionalProperties":{"type":"string"}}}},"mainClass":{"description":"Immutable. The name of the driver's main class. The jar file containing the class must be in the default CLASSPATH or specified in `jar_file_uris`.","type":"string"},"mainJarFileUri":{"description":"Immutable. The HCFS URI of the jar file containing the main class. Examples: 'gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar' 'hdfs:/tmp/test-samples/custom-wordcount.jar' 'file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar'","type":"string"},"properties":{"description":"Immutable. Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.","type":"object","additionalProperties":{"type":"string"}}}},"hiveJob":{"description":"Immutable. Optional. Job is a Hive job.","type":"object","properties":{"continueOnFailure":{"description":"Immutable. Optional. Whether to continue executing queries if a query fails. The default value is `false`. Setting to `true` can be useful when executing independent parallel queries.","type":"boolean"},"jarFileUris":{"description":"Immutable. Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and UDFs.","type":"array","items":{"type":"string"}},"properties":{"description":"Immutable. Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/hive/conf/hive-site.xml, and classes in user code.","type":"object","additionalProperties":{"type":"string"}},"queryFileUri":{"description":"Immutable. The HCFS URI of the script that contains Hive queries.","type":"string"},"queryList":{"description":"Immutable. A list of queries.","type":"object","properties":{"queries":{"description":"Immutable. Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: \"hiveJob\": { \"queryList\": { \"queries\": [ \"query1\", \"query2\", \"query3;query4\", ] } }","type":"array","items":{"type":"string"}}}},"scriptVariables":{"description":"Immutable. Optional. Mapping of query variable names to values (equivalent to the Hive command: `SET name=\"value\";`).","type":"object","additionalProperties":{"type":"string"}}}},"labels":{"description":"Immutable. Optional. The labels to associate with this job. Label keys must be between 1 and 63 characters long, and must conform to the following regular expression: p{Ll}p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following regular expression: [p{Ll}p{Lo}p{N}_-]{0,63} No more than 32 labels can be associated with a given job.","type":"object","additionalProperties":{"type":"string"}},"pigJob":{"description":"Immutable. Optional. Job is a Pig job.","type":"object","properties":{"continueOnFailure":{"description":"Immutable. Optional. Whether to continue executing queries if a query fails. The default value is `false`. Setting to `true` can be useful when executing independent parallel queries.","type":"boolean"},"jarFileUris":{"description":"Immutable. Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.","type":"array","items":{"type":"string"}},"loggingConfig":{"description":"Immutable. Optional. The runtime log config for job execution.","type":"object","properties":{"driverLogLevels":{"description":"Immutable. The per-package log levels for the driver. This may include \"root\" package name to configure rootLogger. Examples: 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'","type":"object","additionalProperties":{"type":"string"}}}},"properties":{"description":"Immutable. Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and classes in user code.","type":"object","additionalProperties":{"type":"string"}},"queryFileUri":{"description":"Immutable. The HCFS URI of the script that contains the Pig queries.","type":"string"},"queryList":{"description":"Immutable. A list of queries.","type":"object","properties":{"queries":{"description":"Immutable. Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: \"hiveJob\": { \"queryList\": { \"queries\": [ \"query1\", \"query2\", \"query3;query4\", ] } }","type":"array","items":{"type":"string"}}}},"scriptVariables":{"description":"Immutable. Optional. Mapping of query variable names to values (equivalent to the Pig command: `name=[value]`).","type":"object","additionalProperties":{"type":"string"}}}},"prerequisiteStepIds":{"description":"Immutable. Optional. The optional list of prerequisite job step_ids. If not specified, the job will start at the beginning of workflow.","type":"array","items":{"type":"string"}},"prestoJob":{"description":"Immutable. Optional. Job is a Presto job.","type":"object","properties":{"clientTags":{"description":"Immutable. Optional. Presto client tags to attach to this query","type":"array","items":{"type":"string"}},"continueOnFailure":{"description":"Immutable. Optional. Whether to continue executing queries if a query fails. The default value is `false`. Setting to `true` can be useful when executing independent parallel queries.","type":"boolean"},"loggingConfig":{"description":"Immutable. Optional. The runtime log config for job execution.","type":"object","properties":{"driverLogLevels":{"description":"Immutable. The per-package log levels for the driver. This may include \"root\" package name to configure rootLogger. Examples: 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'","type":"object","additionalProperties":{"type":"string"}}}},"outputFormat":{"description":"Immutable. Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats","type":"string"},"properties":{"description":"Immutable. Optional. A mapping of property names to values. Used to set Presto [session properties](https://prestodb.io/docs/current/sql/set-session.html) Equivalent to using the --session flag in the Presto CLI","type":"object","additionalProperties":{"type":"string"}},"queryFileUri":{"description":"Immutable. The HCFS URI of the script that contains SQL queries.","type":"string"},"queryList":{"description":"Immutable. A list of queries.","type":"object","properties":{"queries":{"description":"Immutable. Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: \"hiveJob\": { \"queryList\": { \"queries\": [ \"query1\", \"query2\", \"query3;query4\", ] } }","type":"array","items":{"type":"string"}}}}}},"pysparkJob":{"description":"Immutable. Optional. Job is a PySpark job.","type":"object","properties":{"archiveUris":{"description":"Immutable. Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.","type":"array","items":{"type":"string"}},"args":{"description":"Immutable. Optional. The arguments to pass to the driver. Do not include arguments, such as `--conf`, that can be set as job properties, since a collision may occur that causes an incorrect job submission.","type":"array","items":{"type":"string"}},"fileUris":{"description":"Immutable. Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.","type":"array","items":{"type":"string"}},"jarFileUris":{"description":"Immutable. Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.","type":"array","items":{"type":"string"}},"loggingConfig":{"description":"Immutable. Optional. The runtime log config for job execution.","type":"object","properties":{"driverLogLevels":{"description":"Immutable. The per-package log levels for the driver. This may include \"root\" package name to configure rootLogger. Examples: 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'","type":"object","additionalProperties":{"type":"string"}}}},"mainPythonFileUri":{"description":"Immutable. Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file.","type":"string"},"properties":{"description":"Immutable. Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.","type":"object","additionalProperties":{"type":"string"}},"pythonFileUris":{"description":"Immutable. Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.","type":"array","items":{"type":"string"}}}},"scheduling":{"description":"Immutable. Optional. Job scheduling configuration.","type":"object","properties":{"maxFailuresPerHour":{"description":"Immutable. Optional. Maximum number of times per hour a driver may be restarted as a result of driver exiting with non-zero code before job is reported failed. A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window. Maximum value is 10.","type":"integer"},"maxFailuresTotal":{"description":"Immutable. Optional. Maximum number of times in total a driver may be restarted as a result of driver exiting with non-zero code before job is reported failed. Maximum value is 240.","type":"integer"}}},"sparkJob":{"description":"Immutable. Optional. Job is a Spark job.","type":"object","properties":{"archiveUris":{"description":"Immutable. Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.","type":"array","items":{"type":"string"}},"args":{"description":"Immutable. Optional. The arguments to pass to the driver. Do not include arguments, such as `--conf`, that can be set as job properties, since a collision may occur that causes an incorrect job submission.","type":"array","items":{"type":"string"}},"fileUris":{"description":"Immutable. Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.","type":"array","items":{"type":"string"}},"jarFileUris":{"description":"Immutable. Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.","type":"array","items":{"type":"string"}},"loggingConfig":{"description":"Immutable. Optional. The runtime log config for job execution.","type":"object","properties":{"driverLogLevels":{"description":"Immutable. The per-package log levels for the driver. This may include \"root\" package name to configure rootLogger. Examples: 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'","type":"object","additionalProperties":{"type":"string"}}}},"mainClass":{"description":"Immutable. The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in `jar_file_uris`.","type":"string"},"mainJarFileUri":{"description":"Immutable. The HCFS URI of the jar file that contains the main class.","type":"string"},"properties":{"description":"Immutable. Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.","type":"object","additionalProperties":{"type":"string"}}}},"sparkRJob":{"description":"Immutable. Optional. Job is a SparkR job.","type":"object","properties":{"archiveUris":{"description":"Immutable. Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.","type":"array","items":{"type":"string"}},"args":{"description":"Immutable. Optional. The arguments to pass to the driver. Do not include arguments, such as `--conf`, that can be set as job properties, since a collision may occur that causes an incorrect job submission.","type":"array","items":{"type":"string"}},"fileUris":{"description":"Immutable. Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.","type":"array","items":{"type":"string"}},"loggingConfig":{"description":"Immutable. Optional. The runtime log config for job execution.","type":"object","properties":{"driverLogLevels":{"description":"Immutable. The per-package log levels for the driver. This may include \"root\" package name to configure rootLogger. Examples: 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'","type":"object","additionalProperties":{"type":"string"}}}},"mainRFileUri":{"description":"Immutable. Required. The HCFS URI of the main R file to use as the driver. Must be a .R file.","type":"string"},"properties":{"description":"Immutable. Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.","type":"object","additionalProperties":{"type":"string"}}}},"sparkSqlJob":{"description":"Immutable. Optional. Job is a SparkSql job.","type":"object","properties":{"jarFileUris":{"description":"Immutable. Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.","type":"array","items":{"type":"string"}},"loggingConfig":{"description":"Immutable. Optional. The runtime log config for job execution.","type":"object","properties":{"driverLogLevels":{"description":"Immutable. The per-package log levels for the driver. This may include \"root\" package name to configure rootLogger. Examples: 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'","type":"object","additionalProperties":{"type":"string"}}}},"properties":{"description":"Immutable. Optional. A mapping of property names to values, used to configure Spark SQL's SparkConf. Properties that conflict with values set by the Dataproc API may be overwritten.","type":"object","additionalProperties":{"type":"string"}},"queryFileUri":{"description":"Immutable. The HCFS URI of the script that contains SQL queries.","type":"string"},"queryList":{"description":"Immutable. A list of queries.","type":"object","properties":{"queries":{"description":"Immutable. Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: \"hiveJob\": { \"queryList\": { \"queries\": [ \"query1\", \"query2\", \"query3;query4\", ] } }","type":"array","items":{"type":"string"}}}},"scriptVariables":{"description":"Immutable. Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET `name=\"value\";`).","type":"object","additionalProperties":{"type":"string"}}}},"stepId":{"description":"Immutable. Required. The step id. The id must be unique among all jobs within the template. The step id is used as prefix for job id, as job `goog-dataproc-workflow-step-id` label, and in prerequisiteStepIds field from other steps. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between 3 and 50 characters.","type":"string"}}}},"location":{"description":"Immutable. The location for the resource","type":"string"},"parameters":{"description":"Immutable. Optional. Template parameters whose values are substituted into the template. Values for parameters must be provided when the template is instantiated.","type":"array","items":{"type":"object","properties":{"description":{"description":"Immutable. Optional. Brief description of the parameter. Must not exceed 1024 characters.","type":"string"},"fields":{"description":"Immutable. Required. Paths to all fields that the parameter replaces. A field is allowed to appear in at most one parameter's list of field paths. A field path is similar in syntax to a google.protobuf.FieldMask. For example, a field path that references the zone field of a workflow template's cluster selector would be specified as `placement.clusterSelector.zone`. Also, field paths can reference fields using the following syntax: * Values in maps can be referenced by key: * labels['key'] * placement.clusterSelector.clusterLabels['key'] * placement.managedCluster.labels['key'] * placement.clusterSelector.clusterLabels['key'] * jobs['step-id'].labels['key'] * Jobs in the jobs list can be referenced by step-id: * jobs['step-id'].hadoopJob.mainJarFileUri * jobs['step-id'].hiveJob.queryFileUri * jobs['step-id'].pySparkJob.mainPythonFileUri * jobs['step-id'].hadoopJob.jarFileUris[0] * jobs['step-id'].hadoopJob.archiveUris[0] * jobs['step-id'].hadoopJob.fileUris[0] * jobs['step-id'].pySparkJob.pythonFileUris[0] * Items in repeated fields can be referenced by a zero-based index: * jobs['step-id'].sparkJob.args[0] * Other examples: * jobs['step-id'].hadoopJob.properties['key'] * jobs['step-id'].hadoopJob.args[0] * jobs['step-id'].hiveJob.scriptVariables['key'] * jobs['step-id'].hadoopJob.mainJarFileUri * placement.clusterSelector.zone It may not be possible to parameterize maps and repeated fields in their entirety since only individual map values and individual items in repeated fields can be referenced. For example, the following field paths are invalid: - placement.clusterSelector.clusterLabels - jobs['step-id'].sparkJob.args","type":"array","items":{"type":"string"}},"name":{"description":"Immutable. Required. Parameter name. The parameter name is used as the key, and paired with the parameter value, which are passed to the template when the template is instantiated. The name must contain only capital letters (A-Z), numbers (0-9), and underscores (_), and must not start with a number. The maximum length is 40 characters.","type":"string"},"validation":{"description":"Immutable. Optional. Validation rules to be applied to this parameter's value.","type":"object","properties":{"regex":{"description":"Immutable. Validation based on regular expressions.","type":"object","properties":{"regexes":{"description":"Immutable. Required. RE2 regular expressions used to validate the parameter's value. The value must match the regex in its entirety (substring matches are not sufficient).","type":"array","items":{"type":"string"}}}},"values":{"description":"Immutable. Validation based on a list of allowed values.","type":"object","properties":{"values":{"description":"Immutable. Required. List of allowed values for the parameter.","type":"array","items":{"type":"string"}}}}}}}}},"placement":{"description":"Immutable. Required. WorkflowTemplate scheduling information.","type":"object","properties":{"clusterSelector":{"description":"Immutable. Optional. A selector that chooses target cluster for jobs based on metadata. The selector is evaluated at the time each job is submitted.","type":"object","properties":{"clusterLabels":{"description":"Immutable. Required. The cluster labels. Cluster must have all labels to match.","type":"object","additionalProperties":{"type":"string"}},"zone":{"description":"Immutable. Optional. The zone where workflow process executes. This parameter does not affect the selection of the cluster. If unspecified, the zone of the first cluster matching the selector is used.","type":"string"}}},"managedCluster":{"description":"Immutable. A cluster that is managed by the workflow.","type":"object","properties":{"clusterName":{"description":"Immutable. Required. The cluster name prefix. A unique cluster name will be formed by appending a random suffix. The name must contain only lower-case letters (a-z), numbers (0-9), and hyphens (-). Must begin with a letter. Cannot begin or end with hyphen. Must consist of between 2 and 35 characters.","type":"string"},"config":{"description":"Immutable. Required. The cluster configuration.","type":"object","properties":{"autoscalingConfig":{"description":"Immutable. Optional. Autoscaling config for the policy associated with the cluster. Cluster does not autoscale if this field is unset.","type":"object","properties":{"policyRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"Optional. The autoscaling policy used by the cluster. Only resource names including projectid and location (region) are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id]` * `projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id]` Note that the policy must be in the same project and Dataproc region.\n\nAllowed value: The Google Cloud resource name of a `DataprocAutoscalingPolicy` resource (format: `projects/{{project}}/locations/{{location}}/autoscalingPolicies/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}},"encryptionConfig":{"description":"Immutable. Optional. Encryption settings for the cluster.","type":"object","properties":{"gcePdKmsKeyRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"Optional. The Cloud KMS key name to use for PD disk encryption for all instances in the cluster.\n\nAllowed value: The `selfLink` field of a `KMSCryptoKey` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}},"endpointConfig":{"description":"Immutable. Optional. Port/endpoint configuration for this cluster","type":"object","properties":{"enableHttpPortAccess":{"description":"Immutable. Optional. If true, enable http access to specific ports on the cluster from external sources. Defaults to false.","type":"boolean"}}},"gceClusterConfig":{"description":"Immutable. Optional. The shared Compute Engine config settings for all instances in a cluster.","type":"object","properties":{"internalIPOnly":{"description":"Immutable. Optional. If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This `internal_ip_only` restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.","type":"boolean"},"metadata":{"description":"Immutable. The Compute Engine metadata entries to add to all instances (see [Project and instance metadata](https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)).","type":"object","additionalProperties":{"type":"string"}},"networkRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"Optional. The Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither `network_uri` nor `subnetwork_uri` is specified, the \"default\" network of the project is used, if it exists. Cannot be a \"Custom Subnet Network\" (see [Using Subnetworks](https://cloud.google.com/compute/docs/subnetworks) for more information). A full URL, partial URI, or short name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default` * `projects/[project_id]/regions/global/default` * `default`\n\nAllowed value: The `selfLink` field of a `ComputeNetwork` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"nodeGroupAffinity":{"description":"Immutable. Optional. Node Group Affinity for sole-tenant clusters.","type":"object","properties":{"nodeGroupRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"Required. The URI of a sole-tenant [node group resource](https://cloud.google.com/compute/docs/reference/rest/v1/nodeGroups) that the cluster will be created on. A full URL, partial URI, or node group name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-central1-a/nodeGroups/node-group-1` * `projects/[project_id]/zones/us-central1-a/nodeGroups/node-group-1` * `node-group-1`\n\nAllowed value: The `selfLink` field of a `ComputeNodeGroup` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}},"privateIPv6GoogleAccess":{"description":"Immutable. Optional. The type of IPv6 access for a cluster. Possible values: PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED, INHERIT_FROM_SUBNETWORK, OUTBOUND, BIDIRECTIONAL","type":"string"},"reservationAffinity":{"description":"Immutable. Optional. Reservation Affinity for consuming Zonal reservation.","type":"object","properties":{"consumeReservationType":{"description":"Immutable. Optional. Type of reservation to consume Possible values: TYPE_UNSPECIFIED, NO_RESERVATION, ANY_RESERVATION, SPECIFIC_RESERVATION","type":"string"},"key":{"description":"Immutable. Optional. Corresponds to the label key of reservation resource.","type":"string"},"values":{"description":"Immutable. Optional. Corresponds to the label values of reservation resource.","type":"array","items":{"type":"string"}}}},"serviceAccountRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"Optional. The [Dataproc service account](https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/service-accounts#service_accounts_in_dataproc) (also see [VM Data Plane identity](https://cloud.google.com/dataproc/docs/concepts/iam/dataproc-principals#vm_service_account_data_plane_identity)) used by Dataproc cluster VM instances to access Google Cloud Platform services. If not specified, the [Compute Engine default service account](https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used.\n\nAllowed value: The `email` field of an `IAMServiceAccount` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"serviceAccountScopes":{"description":"Immutable. Optional. The URIs of service account scopes to be included in Compute Engine instances. The following base set of scopes is always included: * https://www.googleapis.com/auth/cloud.useraccounts.readonly * https://www.googleapis.com/auth/devstorage.read_write * https://www.googleapis.com/auth/logging.write If no scopes are specified, the following defaults are also provided: * https://www.googleapis.com/auth/bigquery * https://www.googleapis.com/auth/bigtable.admin.table * https://www.googleapis.com/auth/bigtable.data * https://www.googleapis.com/auth/devstorage.full_control","type":"array","items":{"type":"string"}},"shieldedInstanceConfig":{"description":"Immutable. Optional. Shielded Instance Config for clusters using Compute Engine Shielded VMs.","type":"object","properties":{"enableIntegrityMonitoring":{"description":"Immutable. Optional. Defines whether instances have integrity monitoring enabled. Integrity monitoring compares the most recent boot measurements to the integrity policy baseline and returns a pair of pass/fail results depending on whether they match or not.","type":"boolean"},"enableSecureBoot":{"description":"Immutable. Optional. Defines whether the instances have Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails.","type":"boolean"},"enableVtpm":{"description":"Immutable. Optional. Defines whether the instance have the vTPM enabled. Virtual Trusted Platform Module protects objects like keys, certificates and enables Measured Boot by performing the measurements needed to create a known good boot baseline, called the integrity policy baseline.","type":"boolean"}}},"subnetworkRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"Optional. The Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri. A full URL, partial URI, or short name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/subnetworks/sub0` * `projects/[project_id]/regions/us-east1/subnetworks/sub0` * `sub0`\n\nAllowed value: The `selfLink` field of a `ComputeSubnetwork` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"tags":{"description":"Immutable. The Compute Engine tags to add to all instances (see [Tagging instances](https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).","type":"array","items":{"type":"string"}},"zone":{"description":"Immutable. Optional. The zone where the Compute Engine cluster will be located. On a create request, it is required in the \"global\" region. If omitted in a non-global Dataproc region, the service will pick a zone in the corresponding Compute Engine region. On a get request, zone will always be present. A full URL, partial URI, or short name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone]` * `projects/[project_id]/zones/[zone]` * `us-central1-f`","type":"string"}}},"initializationActions":{"description":"Immutable. Optional. Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node's `role` metadata to run an executable on a master or worker node, as shown below using `curl` (you can also use `wget`): ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/attributes/dataproc-role) if [[ \"${ROLE}\" == 'Master' ]]; then ... master specific actions ... else ... worker specific actions ... fi","type":"array","items":{"type":"object","properties":{"executableFile":{"description":"Immutable. Required. Cloud Storage URI of executable file.","type":"string"},"executionTimeout":{"description":"Immutable. Optional. Amount of time executable has to complete. Default is 10 minutes (see JSON representation of [Duration](https://developers.google.com/protocol-buffers/docs/proto3#json)). Cluster creation fails with an explanatory error message (the name of the executable that caused the error and the exceeded timeout period) if the executable is not completed at end of the timeout period.","type":"string"}}}},"lifecycleConfig":{"description":"Immutable. Optional. Lifecycle setting for the cluster.","type":"object","properties":{"autoDeleteTime":{"description":"Immutable. Optional. The time when cluster will be auto-deleted (see JSON representation of [Timestamp](https://developers.google.com/protocol-buffers/docs/proto3#json)).","type":"string"},"autoDeleteTtl":{"description":"Immutable. Optional. The lifetime duration of cluster. The cluster will be auto-deleted at the end of this period. Minimum value is 10 minutes; maximum value is 14 days (see JSON representation of [Duration](https://developers.google.com/protocol-buffers/docs/proto3#json)).","type":"string"},"idleDeleteTtl":{"description":"Immutable. Optional. The duration to keep the cluster alive while idling (when no jobs are running). Passing this threshold will cause the cluster to be deleted. Minimum value is 5 minutes; maximum value is 14 days (see JSON representation of [Duration](https://developers.google.com/protocol-buffers/docs/proto3#json)).","type":"string"}}},"masterConfig":{"description":"Immutable. Optional. The Compute Engine config settings for the master instance in a cluster.","type":"object","properties":{"accelerators":{"description":"Immutable. Optional. The Compute Engine accelerator configuration for these instances.","type":"array","items":{"type":"object","properties":{"acceleratorCount":{"description":"Immutable. The number of the accelerator cards of this type exposed to this instance.","type":"integer"},"acceleratorType":{"description":"Immutable. Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See [Compute Engine AcceleratorTypes](https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes). Examples: * `https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80` * `projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80` * `nvidia-tesla-k80` **Auto Zone Exception**: If you are using the Dataproc [Auto Zone Placement](https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, `nvidia-tesla-k80`.","type":"string"}}}},"diskConfig":{"description":"Immutable. Optional. Disk option config settings.","type":"object","properties":{"bootDiskSizeGb":{"description":"Immutable. Optional. Size in GB of the boot disk (default is 500GB).","type":"integer"},"bootDiskType":{"description":"Immutable. Optional. Type of the boot disk (default is \"pd-standard\"). Valid values: \"pd-balanced\" (Persistent Disk Balanced Solid State Drive), \"pd-ssd\" (Persistent Disk Solid State Drive), or \"pd-standard\" (Persistent Disk Hard Disk Drive). See [Disk types](https://cloud.google.com/compute/docs/disks#disk-types).","type":"string"},"numLocalSsds":{"description":"Immutable. Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.","type":"integer"}}},"imageRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"Optional. The Compute Engine image resource used for cluster instances. The URI can represent an image or image family. Image examples: * `https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id]` * `projects/[project_id]/global/images/[image-id]` * `image-id` Image family examples. Dataproc will use the most recent image from the family: * `https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name]` * `projects/[project_id]/global/images/family/[custom-image-family-name]` If the URI is unspecified, it will be inferred from `SoftwareConfig.image_version` or the system default.\n\nAllowed value: The `selfLink` field of a `ComputeImage` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"machineType":{"description":"Immutable. Optional. The Compute Engine machine type used for cluster instances. A full URL, partial URI, or short name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2` * `projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2` * `n1-standard-2` **Auto Zone Exception**: If you are using the Dataproc [Auto Zone Placement](https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, `n1-standard-2`.","type":"string"},"minCpuPlatform":{"description":"Immutable. Optional. Specifies the minimum cpu platform for the Instance Group. See [Dataproc -\u003e Minimum CPU Platform](https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu).","type":"string"},"numInstances":{"description":"Immutable. Optional. The number of VM instances in the instance group. For [HA cluster](/dataproc/docs/concepts/configuring-clusters/high-availability) [master_config](#FIELDS.master_config) groups, **must be set to 3**. For standard cluster [master_config](#FIELDS.master_config) groups, **must be set to 1**.","type":"integer"},"preemptibility":{"description":"Immutable. Optional. Specifies the preemptibility of the instance group. The default value for master and worker groups is `NON_PREEMPTIBLE`. This default cannot be changed. The default value for secondary instances is `PREEMPTIBLE`. Possible values: PREEMPTIBILITY_UNSPECIFIED, NON_PREEMPTIBLE, PREEMPTIBLE","type":"string"}}},"secondaryWorkerConfig":{"description":"Immutable. Optional. The Compute Engine config settings for additional worker instances in a cluster.","type":"object","properties":{"accelerators":{"description":"Immutable. Optional. The Compute Engine accelerator configuration for these instances.","type":"array","items":{"type":"object","properties":{"acceleratorCount":{"description":"Immutable. The number of the accelerator cards of this type exposed to this instance.","type":"integer"},"acceleratorType":{"description":"Immutable. Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See [Compute Engine AcceleratorTypes](https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes). Examples: * `https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80` * `projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80` * `nvidia-tesla-k80` **Auto Zone Exception**: If you are using the Dataproc [Auto Zone Placement](https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, `nvidia-tesla-k80`.","type":"string"}}}},"diskConfig":{"description":"Immutable. Optional. Disk option config settings.","type":"object","properties":{"bootDiskSizeGb":{"description":"Immutable. Optional. Size in GB of the boot disk (default is 500GB).","type":"integer"},"bootDiskType":{"description":"Immutable. Optional. Type of the boot disk (default is \"pd-standard\"). Valid values: \"pd-balanced\" (Persistent Disk Balanced Solid State Drive), \"pd-ssd\" (Persistent Disk Solid State Drive), or \"pd-standard\" (Persistent Disk Hard Disk Drive). See [Disk types](https://cloud.google.com/compute/docs/disks#disk-types).","type":"string"},"numLocalSsds":{"description":"Immutable. Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.","type":"integer"}}},"imageRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"Optional. The Compute Engine image resource used for cluster instances. The URI can represent an image or image family. Image examples: * `https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id]` * `projects/[project_id]/global/images/[image-id]` * `image-id` Image family examples. Dataproc will use the most recent image from the family: * `https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name]` * `projects/[project_id]/global/images/family/[custom-image-family-name]` If the URI is unspecified, it will be inferred from `SoftwareConfig.image_version` or the system default.\n\nAllowed value: The `selfLink` field of a `ComputeImage` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"machineType":{"description":"Immutable. Optional. The Compute Engine machine type used for cluster instances. A full URL, partial URI, or short name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2` * `projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2` * `n1-standard-2` **Auto Zone Exception**: If you are using the Dataproc [Auto Zone Placement](https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, `n1-standard-2`.","type":"string"},"minCpuPlatform":{"description":"Immutable. Optional. Specifies the minimum cpu platform for the Instance Group. See [Dataproc -\u003e Minimum CPU Platform](https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu).","type":"string"},"numInstances":{"description":"Immutable. Optional. The number of VM instances in the instance group. For [HA cluster](/dataproc/docs/concepts/configuring-clusters/high-availability) [master_config](#FIELDS.master_config) groups, **must be set to 3**. For standard cluster [master_config](#FIELDS.master_config) groups, **must be set to 1**.","type":"integer"},"preemptibility":{"description":"Immutable. Optional. Specifies the preemptibility of the instance group. The default value for master and worker groups is `NON_PREEMPTIBLE`. This default cannot be changed. The default value for secondary instances is `PREEMPTIBLE`. Possible values: PREEMPTIBILITY_UNSPECIFIED, NON_PREEMPTIBLE, PREEMPTIBLE","type":"string"}}},"securityConfig":{"description":"Immutable. Optional. Security settings for the cluster.","type":"object","properties":{"kerberosConfig":{"description":"Immutable. Optional. Kerberos related configuration.","type":"object","properties":{"crossRealmTrustAdminServer":{"description":"Immutable. Optional. The admin server (IP or hostname) for the remote trusted realm in a cross realm trust relationship.","type":"string"},"crossRealmTrustKdc":{"description":"Immutable. Optional. The KDC (IP or hostname) for the remote trusted realm in a cross realm trust relationship.","type":"string"},"crossRealmTrustRealm":{"description":"Immutable. Optional. The remote realm the Dataproc on-cluster KDC will trust, should the user enable cross realm trust.","type":"string"},"crossRealmTrustSharedPassword":{"description":"Immutable. Optional. The Cloud Storage URI of a KMS encrypted file containing the shared password between the on-cluster Kerberos realm and the remote trusted realm, in a cross realm trust relationship.","type":"string"},"enableKerberos":{"description":"Immutable. Optional. Flag to indicate whether to Kerberize the cluster (default: false). Set this field to true to enable Kerberos on a cluster.","type":"boolean"},"kdcDbKey":{"description":"Immutable. Optional. The Cloud Storage URI of a KMS encrypted file containing the master key of the KDC database.","type":"string"},"keyPassword":{"description":"Immutable. Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided key. For the self-signed certificate, this password is generated by Dataproc.","type":"string"},"keystore":{"description":"Immutable. Optional. The Cloud Storage URI of the keystore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate.","type":"string"},"keystorePassword":{"description":"Immutable. Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided keystore. For the self-signed certificate, this password is generated by Dataproc.","type":"string"},"kmsKeyRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"Optional. The uri of the KMS key used to encrypt various sensitive files.\n\nAllowed value: The `selfLink` field of a `KMSCryptoKey` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"realm":{"description":"Immutable. Optional. The name of the on-cluster Kerberos realm. If not specified, the uppercased domain of hostnames will be the realm.","type":"string"},"rootPrincipalPassword":{"description":"Immutable. Optional. The Cloud Storage URI of a KMS encrypted file containing the root principal password.","type":"string"},"tgtLifetimeHours":{"description":"Immutable. Optional. The lifetime of the ticket granting ticket, in hours. If not specified, or user specifies 0, then default value 10 will be used.","type":"integer"},"truststore":{"description":"Immutable. Optional. The Cloud Storage URI of the truststore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate.","type":"string"},"truststorePassword":{"description":"Immutable. Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided truststore. For the self-signed certificate, this password is generated by Dataproc.","type":"string"}}}}},"softwareConfig":{"description":"Immutable. Optional. The config settings for software inside the cluster.","type":"object","properties":{"imageVersion":{"description":"Immutable. Optional. The version of software inside the cluster. It must be one of the supported [Dataproc Versions](https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#supported_dataproc_versions), such as \"1.2\" (including a subminor version, such as \"1.2.29\"), or the [\"preview\" version](https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#other_versions). If unspecified, it defaults to the latest Debian version.","type":"string"},"optionalComponents":{"description":"Immutable. Optional. The set of components to activate on the cluster.","type":"array","items":{"type":"string"}},"properties":{"description":"Immutable. Optional. The properties to set on daemon config files. Property keys are specified in `prefix:property` format, for example `core:hadoop.tmp.dir`. The following are supported prefixes and their mappings: * capacity-scheduler: `capacity-scheduler.xml` * core: `core-site.xml` * distcp: `distcp-default.xml` * hdfs: `hdfs-site.xml` * hive: `hive-site.xml` * mapred: `mapred-site.xml` * pig: `pig.properties` * spark: `spark-defaults.conf` * yarn: `yarn-site.xml` For more information, see [Cluster properties](https://cloud.google.com/dataproc/docs/concepts/cluster-properties).","type":"object","additionalProperties":{"type":"string"}}}},"stagingBucketRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"Optional. A Cloud Storage bucket used to stage job dependencies, config files, and job driver console output. If you do not specify a staging bucket, Cloud Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket (see [Dataproc staging bucket](https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/staging-bucket)). **This field requires a Cloud Storage bucket name, not a URI to a Cloud Storage bucket.**\n\nAllowed value: The Google Cloud resource name of a `StorageBucket` resource (format: `{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"tempBucketRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"Optional. A Cloud Storage bucket used to store ephemeral cluster and jobs data, such as Spark and MapReduce history files. If you do not specify a temp bucket, Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster's temp bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket. The default bucket has a TTL of 90 days, but you can use any TTL (or none) if you specify a bucket. **This field requires a Cloud Storage bucket name, not a URI to a Cloud Storage bucket.**\n\nAllowed value: The Google Cloud resource name of a `StorageBucket` resource (format: `{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"workerConfig":{"description":"Immutable. Optional. The Compute Engine config settings for worker instances in a cluster.","type":"object","properties":{"accelerators":{"description":"Immutable. Optional. The Compute Engine accelerator configuration for these instances.","type":"array","items":{"type":"object","properties":{"acceleratorCount":{"description":"Immutable. The number of the accelerator cards of this type exposed to this instance.","type":"integer"},"acceleratorType":{"description":"Immutable. Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See [Compute Engine AcceleratorTypes](https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes). Examples: * `https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80` * `projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80` * `nvidia-tesla-k80` **Auto Zone Exception**: If you are using the Dataproc [Auto Zone Placement](https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, `nvidia-tesla-k80`.","type":"string"}}}},"diskConfig":{"description":"Immutable. Optional. Disk option config settings.","type":"object","properties":{"bootDiskSizeGb":{"description":"Immutable. Optional. Size in GB of the boot disk (default is 500GB).","type":"integer"},"bootDiskType":{"description":"Immutable. Optional. Type of the boot disk (default is \"pd-standard\"). Valid values: \"pd-balanced\" (Persistent Disk Balanced Solid State Drive), \"pd-ssd\" (Persistent Disk Solid State Drive), or \"pd-standard\" (Persistent Disk Hard Disk Drive). See [Disk types](https://cloud.google.com/compute/docs/disks#disk-types).","type":"string"},"numLocalSsds":{"description":"Immutable. Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.","type":"integer"}}},"imageRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"Optional. The Compute Engine image resource used for cluster instances. The URI can represent an image or image family. Image examples: * `https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id]` * `projects/[project_id]/global/images/[image-id]` * `image-id` Image family examples. Dataproc will use the most recent image from the family: * `https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name]` * `projects/[project_id]/global/images/family/[custom-image-family-name]` If the URI is unspecified, it will be inferred from `SoftwareConfig.image_version` or the system default.\n\nAllowed value: The `selfLink` field of a `ComputeImage` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"machineType":{"description":"Immutable. Optional. The Compute Engine machine type used for cluster instances. A full URL, partial URI, or short name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2` * `projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2` * `n1-standard-2` **Auto Zone Exception**: If you are using the Dataproc [Auto Zone Placement](https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, `n1-standard-2`.","type":"string"},"minCpuPlatform":{"description":"Immutable. Optional. Specifies the minimum cpu platform for the Instance Group. See [Dataproc -\u003e Minimum CPU Platform](https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu).","type":"string"},"numInstances":{"description":"Immutable. Optional. The number of VM instances in the instance group. For [HA cluster](/dataproc/docs/concepts/configuring-clusters/high-availability) [master_config](#FIELDS.master_config) groups, **must be set to 3**. For standard cluster [master_config](#FIELDS.master_config) groups, **must be set to 1**.","type":"integer"},"preemptibility":{"description":"Immutable. Optional. Specifies the preemptibility of the instance group. The default value for master and worker groups is `NON_PREEMPTIBLE`. This default cannot be changed. The default value for secondary instances is `PREEMPTIBLE`. Possible values: PREEMPTIBILITY_UNSPECIFIED, NON_PREEMPTIBLE, PREEMPTIBLE","type":"string"}}}}},"labels":{"description":"Immutable. Optional. The labels to associate with this cluster. Label keys must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: p{Ll}p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: [p{Ll}p{Lo}p{N}_-]{0,63} No more than 32 labels can be associated with a given cluster.","type":"object","additionalProperties":{"type":"string"}}}}}},"projectRef":{"description":"Immutable. The Project that this resource belongs to.","type":"object","properties":{"external":{"description":"The project for the resource\n\nAllowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"resourceID":{"description":"Immutable. Optional. The name of the resource. Used for creation and acquisition. When unset, the value of `metadata.name` is used as the default.","type":"string"}}},"status":{"type":"object","properties":{"conditions":{"description":"Conditions represent the latest available observation of the resource's current state.","type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","type":"string"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"Status is the status of the condition. Can be True, False, Unknown.","type":"string"},"type":{"description":"Type is the type of the condition.","type":"string"}}}},"createTime":{"description":"Output only. The time template was created.","type":"string"},"observedGeneration":{"description":"ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.","type":"integer"},"placement":{"type":"object","properties":{"managedCluster":{"type":"object","properties":{"config":{"type":"object","properties":{"endpointConfig":{"type":"object","properties":{"httpPorts":{"description":"Output only. The map of port descriptions to URLs. Will only be populated if enable_http_port_access is true.","type":"object","additionalProperties":{"type":"string"}}}},"lifecycleConfig":{"type":"object","properties":{"idleStartTime":{"description":"Output only. The time when cluster became idle (most recent job finished) and became eligible for deletion due to idleness (see JSON representation of [Timestamp](https://developers.google.com/protocol-buffers/docs/proto3#json)).","type":"string"}}},"masterConfig":{"type":"object","properties":{"instanceNames":{"description":"Output only. The list of instance names. Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group.","type":"array","items":{"type":"string"}},"isPreemptible":{"description":"Output only. Specifies that this instance group contains preemptible instances.","type":"boolean"},"managedGroupConfig":{"description":"Output only. The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.","type":"object","properties":{"instanceGroupManagerName":{"description":"Output only. The name of the Instance Group Manager for this group.","type":"string"},"instanceTemplateName":{"description":"Output only. The name of the Instance Template used for the Managed Instance Group.","type":"string"}}}}},"secondaryWorkerConfig":{"type":"object","properties":{"instanceNames":{"description":"Output only. The list of instance names. Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group.","type":"array","items":{"type":"string"}},"isPreemptible":{"description":"Output only. Specifies that this instance group contains preemptible instances.","type":"boolean"},"managedGroupConfig":{"description":"Output only. The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.","type":"object","properties":{"instanceGroupManagerName":{"description":"Output only. The name of the Instance Group Manager for this group.","type":"string"},"instanceTemplateName":{"description":"Output only. The name of the Instance Template used for the Managed Instance Group.","type":"string"}}}}},"workerConfig":{"type":"object","properties":{"instanceNames":{"description":"Output only. The list of instance names. Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group.","type":"array","items":{"type":"string"}},"isPreemptible":{"description":"Output only. Specifies that this instance group contains preemptible instances.","type":"boolean"},"managedGroupConfig":{"description":"Output only. The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.","type":"object","properties":{"instanceGroupManagerName":{"description":"Output only. The name of the Instance Group Manager for this group.","type":"string"},"instanceTemplateName":{"description":"Output only. The name of the Instance Template used for the Managed Instance Group.","type":"string"}}}}}}}}}}},"updateTime":{"description":"Output only. The time template was last updated.","type":"string"},"version":{"description":"Output only. The current version of this workflow template.","type":"integer"}}}},"x-kubernetes-group-version-kind":[{"group":"dataproc.cnrm.cloud.google.com","kind":"DataprocWorkflowTemplate","version":"v1beta1"}]},"com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplateList":{"description":"DataprocWorkflowTemplateList is a list of DataprocWorkflowTemplate","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of dataprocworkflowtemplates. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"$ref":"#/definitions/com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplate"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"dataproc.cnrm.cloud.google.com","kind":"DataprocWorkflowTemplateList","version":"v1beta1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition":{"description":"CustomResourceColumnDefinition specifies a column for server side printing.","type":"object","required":["name","type","jsonPath"],"properties":{"description":{"description":"description is a human readable description of this column.","type":"string"},"format":{"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.","type":"string"},"jsonPath":{"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.","type":"string","default":""},"name":{"description":"name is a human readable name for the column.","type":"string","default":""},"priority":{"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.","type":"integer","format":"int32"},"type":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion":{"description":"CustomResourceConversion describes how to convert different versions of a CR.","type":"object","required":["strategy"],"properties":{"strategy":{"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.","type":"string","default":""},"webhook":{"description":"webhook describes how to call the conversion webhook. Required when `strategy` is set to `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition":{"description":"CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format \u003c.spec.name\u003e.\u003c.spec.group\u003e.","type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"spec describes how the user wants the resources to appear","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec"},"status":{"description":"status indicates the actual state of the CustomResourceDefinition","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus"}},"x-kubernetes-group-version-kind":[{"group":"apiextensions.k8s.io","kind":"CustomResourceDefinition","version":"v1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition":{"description":"CustomResourceDefinitionCondition contains details for the current condition of this pod.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"lastTransitionTime last time the condition transitioned from one status to another.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"message is a human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"reason is a unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"status is the status of the condition. Can be True, False, Unknown.","type":"string","default":""},"type":{"description":"type is the type of the condition. Types include Established, NamesAccepted and Terminating.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames":{"description":"CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition","type":"object","required":["plural","kind"],"properties":{"categories":{"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`.","type":"array","items":{"type":"string","default":""}},"kind":{"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.","type":"string","default":""},"listKind":{"description":"listKind is the serialized kind of the list for this resource. Defaults to \"`kind`List\".","type":"string"},"plural":{"description":"plural is the plural name of the resource to serve. The custom resources are served under `/apis/\u003cgroup\u003e/\u003cversion\u003e/.../\u003cplural\u003e`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`). Must be all lowercase.","type":"string","default":""},"shortNames":{"description":"shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get \u003cshortname\u003e`. It must be all lowercase.","type":"array","items":{"type":"string","default":""}},"singular":{"description":"singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec":{"description":"CustomResourceDefinitionSpec describes how a user wants their resource to appear","type":"object","required":["group","names","scope","versions"],"properties":{"conversion":{"description":"conversion defines conversion settings for the CRD.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion"},"group":{"description":"group is the API group of the defined custom resource. The custom resources are served under `/apis/\u003cgroup\u003e/...`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`).","type":"string","default":""},"names":{"description":"names specify the resource and kind names for the custom resource.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"preserveUnknownFields":{"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.","type":"boolean"},"scope":{"description":"scope indicates whether the defined custom resource is cluster- or namespace-scoped. Allowed values are `Cluster` and `Namespaced`.","type":"string","default":""},"versions":{"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 \u003e beta \u003e 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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion"}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus":{"description":"CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition","type":"object","properties":{"acceptedNames":{"description":"acceptedNames are the names that are actually being used to serve discovery. They may be different than the names in spec.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"conditions":{"description":"conditions indicate state for particular aspects of a CustomResourceDefinition","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition"},"x-kubernetes-list-map-keys":["type"],"x-kubernetes-list-type":"map"},"storedVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion":{"description":"CustomResourceDefinitionVersion describes a version for CRD.","type":"object","required":["name","served","storage"],"properties":{"additionalPrinterColumns":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition"}},"deprecated":{"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.","type":"boolean"},"deprecationWarning":{"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.","type":"string"},"name":{"description":"name is the version name, e.g. “v1â€, “v2beta1â€, etc. The custom resources are served under this version at `/apis/\u003cgroup\u003e/\u003cversion\u003e/...` if `served` is true.","type":"string","default":""},"schema":{"description":"schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation"},"served":{"description":"served is a flag enabling/disabling this version from being served via REST APIs","type":"boolean","default":false},"storage":{"description":"storage indicates this version should be used when persisting custom resources to storage. There must be exactly one version with storage=true.","type":"boolean","default":false},"subresources":{"description":"subresources specify what subresources this version of the defined custom resource have.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale":{"description":"CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.","type":"object","required":["specReplicasPath","statusReplicasPath"],"properties":{"labelSelectorPath":{"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.","type":"string"},"specReplicasPath":{"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.","type":"string","default":""},"statusReplicasPath":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus":{"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","type":"object"},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources":{"description":"CustomResourceSubresources defines the status and scale subresources for CustomResources.","type":"object","properties":{"scale":{"description":"scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale"},"status":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation":{"description":"CustomResourceValidation is a list of validation methods for CustomResources.","type":"object","properties":{"openAPIV3Schema":{"description":"openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation":{"description":"ExternalDocumentation allows referencing an external resource for extended documentation.","type":"object","properties":{"description":{"type":"string"},"url":{"type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON":{"description":"JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps":{"description":"JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).","type":"object","properties":{"$ref":{"type":"string"},"$schema":{"type":"string"},"additionalItems":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"additionalProperties":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"allOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"anyOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"default":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"definitions":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"dependencies":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray"}},"description":{"type":"string"},"enum":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"}},"example":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"exclusiveMaximum":{"type":"boolean"},"exclusiveMinimum":{"type":"boolean"},"externalDocs":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation"},"format":{"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.","type":"string"},"id":{"type":"string"},"items":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray"},"maxItems":{"type":"integer","format":"int64"},"maxLength":{"type":"integer","format":"int64"},"maxProperties":{"type":"integer","format":"int64"},"maximum":{"type":"number","format":"double"},"minItems":{"type":"integer","format":"int64"},"minLength":{"type":"integer","format":"int64"},"minProperties":{"type":"integer","format":"int64"},"minimum":{"type":"number","format":"double"},"multipleOf":{"type":"number","format":"double"},"not":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"},"nullable":{"type":"boolean"},"oneOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"pattern":{"type":"string"},"patternProperties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"properties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"required":{"type":"array","items":{"type":"string","default":""}},"title":{"type":"string"},"type":{"type":"string"},"uniqueItems":{"type":"boolean"},"x-kubernetes-embedded-resource":{"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).","type":"boolean"},"x-kubernetes-int-or-string":{"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","type":"boolean"},"x-kubernetes-list-map-keys":{"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.","type":"array","items":{"type":"string","default":""}},"x-kubernetes-list-type":{"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.","type":"string"},"x-kubernetes-map-type":{"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.","type":"string"},"x-kubernetes-preserve-unknown-fields":{"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.","type":"boolean"},"x-kubernetes-validations":{"description":"x-kubernetes-validations describes a list of validation rules written in the CEL expression language. This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule"},"x-kubernetes-list-map-keys":["rule"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"rule","x-kubernetes-patch-strategy":"merge"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray":{"description":"JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool":{"description":"JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray":{"description":"JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference":{"description":"ServiceReference holds a reference to Service.legacy.k8s.io","type":"object","required":["namespace","name"],"properties":{"name":{"description":"name is the name of the service. Required","type":"string","default":""},"namespace":{"description":"namespace is the namespace of the service. Required","type":"string","default":""},"path":{"description":"path is an optional URL path at which the webhook will be contacted.","type":"string"},"port":{"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.","type":"integer","format":"int32"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule":{"description":"ValidationRule describes a validation rule written in the CEL expression language.","type":"object","required":["rule"],"properties":{"message":{"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\"","type":"string"},"rule":{"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 \u003c= 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 \u003c 10\"} - Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value \u003e= 0 \u0026\u0026 value \u003c 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__ \u003e 0\"}\n - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop \u003e 0\"}\n - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d \u003e 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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig":{"description":"WebhookClientConfig contains the information to make a TLS connection with the webhook.","type":"object","properties":{"caBundle":{"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.","type":"string","format":"byte"},"service":{"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`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference"},"url":{"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.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion":{"description":"WebhookConversion describes how to call a conversion webhook","type":"object","required":["conversionReviewVersions"],"properties":{"clientConfig":{"description":"clientConfig is the instructions for how to call the webhook if strategy is `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig"},"conversionReviewVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"},"propagationPolicy":{"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.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"creationTimestamp":{"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","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"},"reason":{"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.","type":"string"},"status":{"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","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"}},"securityDefinitions":{"BearerToken":{"description":"Bearer Token authentication","type":"apiKey","name":"authorization","in":"header"}},"security":[{"BearerToken":[]}]}dlp_v1beta1_dlpdeidentifytemplate.json000066400000000000000000005723441453663023200373710ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv2{"swagger":"2.0","info":{"title":"Kubernetes","version":"v1.27.0"},"paths":{"/apis/dlp.cnrm.cloud.google.com/v1beta1/dlpdeidentifytemplates":{"get":{"description":"list objects of kind DLPDeidentifyTemplate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dlpCnrmCloudGoogleCom_v1beta1"],"operationId":"listDlpCnrmCloudGoogleComV1beta1DLPDeidentifyTemplateForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplateList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"dlp.cnrm.cloud.google.com","version":"v1beta1","kind":"DLPDeidentifyTemplate"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/apis/dlp.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/dlpdeidentifytemplates":{"get":{"description":"list objects of kind DLPDeidentifyTemplate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dlpCnrmCloudGoogleCom_v1beta1"],"operationId":"listDlpCnrmCloudGoogleComV1beta1NamespacedDLPDeidentifyTemplate","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplateList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"dlp.cnrm.cloud.google.com","version":"v1beta1","kind":"DLPDeidentifyTemplate"}},"post":{"description":"create a DLPDeidentifyTemplate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dlpCnrmCloudGoogleCom_v1beta1"],"operationId":"createDlpCnrmCloudGoogleComV1beta1NamespacedDLPDeidentifyTemplate","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplate"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplate"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplate"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"dlp.cnrm.cloud.google.com","version":"v1beta1","kind":"DLPDeidentifyTemplate"}},"delete":{"description":"delete collection of DLPDeidentifyTemplate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dlpCnrmCloudGoogleCom_v1beta1"],"operationId":"deleteDlpCnrmCloudGoogleComV1beta1CollectionNamespacedDLPDeidentifyTemplate","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"dlp.cnrm.cloud.google.com","version":"v1beta1","kind":"DLPDeidentifyTemplate"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/dlp.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/dlpdeidentifytemplates/{name}":{"get":{"description":"read the specified DLPDeidentifyTemplate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dlpCnrmCloudGoogleCom_v1beta1"],"operationId":"readDlpCnrmCloudGoogleComV1beta1NamespacedDLPDeidentifyTemplate","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"dlp.cnrm.cloud.google.com","version":"v1beta1","kind":"DLPDeidentifyTemplate"}},"put":{"description":"replace the specified DLPDeidentifyTemplate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dlpCnrmCloudGoogleCom_v1beta1"],"operationId":"replaceDlpCnrmCloudGoogleComV1beta1NamespacedDLPDeidentifyTemplate","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplate"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplate"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"dlp.cnrm.cloud.google.com","version":"v1beta1","kind":"DLPDeidentifyTemplate"}},"delete":{"description":"delete a DLPDeidentifyTemplate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dlpCnrmCloudGoogleCom_v1beta1"],"operationId":"deleteDlpCnrmCloudGoogleComV1beta1NamespacedDLPDeidentifyTemplate","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"dlp.cnrm.cloud.google.com","version":"v1beta1","kind":"DLPDeidentifyTemplate"}},"patch":{"description":"partially update the specified DLPDeidentifyTemplate","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dlpCnrmCloudGoogleCom_v1beta1"],"operationId":"patchDlpCnrmCloudGoogleComV1beta1NamespacedDLPDeidentifyTemplate","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"dlp.cnrm.cloud.google.com","version":"v1beta1","kind":"DLPDeidentifyTemplate"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the DLPDeidentifyTemplate","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/dlp.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/dlpdeidentifytemplates/{name}/status":{"get":{"description":"read status of the specified DLPDeidentifyTemplate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dlpCnrmCloudGoogleCom_v1beta1"],"operationId":"readDlpCnrmCloudGoogleComV1beta1NamespacedDLPDeidentifyTemplateStatus","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"dlp.cnrm.cloud.google.com","version":"v1beta1","kind":"DLPDeidentifyTemplate"}},"put":{"description":"replace status of the specified DLPDeidentifyTemplate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dlpCnrmCloudGoogleCom_v1beta1"],"operationId":"replaceDlpCnrmCloudGoogleComV1beta1NamespacedDLPDeidentifyTemplateStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplate"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplate"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"dlp.cnrm.cloud.google.com","version":"v1beta1","kind":"DLPDeidentifyTemplate"}},"patch":{"description":"partially update status of the specified DLPDeidentifyTemplate","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["dlpCnrmCloudGoogleCom_v1beta1"],"operationId":"patchDlpCnrmCloudGoogleComV1beta1NamespacedDLPDeidentifyTemplateStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"dlp.cnrm.cloud.google.com","version":"v1beta1","kind":"DLPDeidentifyTemplate"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the DLPDeidentifyTemplate","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]}},"definitions":{"com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplate":{"type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"type":"object","properties":{"deidentifyConfig":{"description":"The core content of the template.","type":"object","properties":{"infoTypeTransformations":{"description":"Treat the dataset as free-form text and apply the same free text transformation everywhere.","type":"object","properties":{"transformations":{"description":"Required. Transformation for each infoType. Cannot specify more than one for a given infoType.","type":"array","items":{"type":"object","properties":{"infoTypes":{"description":"InfoTypes to apply the transformation to. An empty list will cause this transformation to apply to all findings that correspond to infoTypes that were requested in `InspectConfig`.","type":"array","items":{"type":"object","properties":{"name":{"description":"Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/dlp/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$-_]{1,64}`.","type":"string"}}}},"primitiveTransformation":{"description":"Required. Primitive transformation to apply to the infoType.","type":"object","properties":{"bucketingConfig":{"description":"Bucketing","type":"object","properties":{"buckets":{"description":"Set of buckets. Ranges must be non-overlapping.","type":"array","items":{"type":"object","properties":{"max":{"description":"Upper bound of the range, exclusive; type must match min.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}},"min":{"description":"Lower bound of the range, inclusive. Type should be the same as max if used.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}},"replacementValue":{"description":"Required. Replacement value for this bucket.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}}}}}}},"characterMaskConfig":{"description":"Mask","type":"object","properties":{"charactersToIgnore":{"description":"When masking a string, items in this list will be skipped when replacing characters. For example, if the input string is `555-555-5555` and you instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP returns `***-**5-5555`.","type":"array","items":{"type":"object","properties":{"charactersToSkip":{"description":"Characters to not transform when masking.","type":"string"},"commonCharactersToIgnore":{"description":"Common characters to not transform when masking. Useful to avoid removing punctuation. Possible values: COMMON_CHARS_TO_IGNORE_UNSPECIFIED, NUMERIC, ALPHA_UPPER_CASE, ALPHA_LOWER_CASE, PUNCTUATION, WHITESPACE","type":"string"}}}},"maskingCharacter":{"description":"Character to use to mask the sensitive values—for example, `*` for an alphabetic string such as a name, or `0` for a numeric string such as ZIP code or credit card number. This string must have a length of 1. If not supplied, this value defaults to `*` for strings, and `0` for digits.","type":"string"},"numberToMask":{"description":"Number of characters to mask. If not set, all matching chars will be masked. Skipped characters do not count towards this tally.","type":"integer"},"reverseOrder":{"description":"Mask characters in reverse order. For example, if `masking_character` is `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the input string `1234-5678-9012-3456` is masked as `00000000000000-3456`. If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order` is `true`, then the string `12345` is masked as `12***`.","type":"boolean"}}},"cryptoDeterministicConfig":{"description":"Deterministic Crypto","type":"object","properties":{"context":{"description":"A context may be used for higher security and maintaining referential integrity such that the same identifier in two different contexts will be given a distinct surrogate. The context is appended to plaintext value being encrypted. On decryption the provided context is validated against the value used during encryption. If a context was provided during encryption, same context must be provided during decryption as well. If the context is not set, plaintext would be used as is for encryption. If the context is set but: 1. there is no record present when transforming a given value or 2. the field is not present when transforming a given value, plaintext would be used as is for encryption. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and non-structured `ContentItem`s.","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"cryptoKey":{"description":"The key used by the encryption function. For deterministic encryption using AES-SIV, the provided key is internally expanded to 64 bytes prior to use.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","properties":{"cryptoKeyRef":{"type":"object","properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}},"surrogateInfoType":{"description":"The custom info type to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom info type followed by the number of characters comprising the surrogate. The following scheme defines the format: {info type name}({surrogate character count}):{surrogate} For example, if the name of custom info type is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom info type 'Surrogate'. This facilitates reversal of the surrogate when it occurs in free text. Note: For record transformations where the entire cell in a table is being transformed, surrogates are not mandatory. Surrogates are used to denote the location of the token and are necessary for re-identification in free form text. In order for inspection to work properly, the name of this info type must not occur naturally anywhere in your data; otherwise, inspection may either - reverse a surrogate that does not correspond to an actual identifier - be unable to parse the surrogate and result in an error Therefore, choose your custom info type name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: â§MY_TOKEN_TYPE.","type":"object","properties":{"name":{"description":"Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/dlp/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$-_]{1,64}`.","type":"string"}}}}},"cryptoHashConfig":{"description":"Crypto","type":"object","properties":{"cryptoKey":{"description":"The key used by the hash function.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","properties":{"cryptoKeyRef":{"type":"object","properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}}}},"cryptoReplaceFfxFpeConfig":{"description":"Ffx-Fpe","type":"object","properties":{"commonAlphabet":{"description":"Common alphabets. Possible values: FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED, NUMERIC, HEXADECIMAL, UPPER_CASE_ALPHA_NUMERIC, ALPHA_NUMERIC","type":"string"},"context":{"description":"The 'tweak', a context may be used for higher security since the same identifier in two different contexts won't be given the same surrogate. If the context is not set, a default tweak will be used. If the context is set but: 1. there is no record present when transforming a given value or 1. the field is not present when transforming a given value, a default tweak will be used. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and non-structured `ContentItem`s. Currently, the referenced field may be of value type integer or string. The tweak is constructed as a sequence of bytes in big endian byte order such that: - a 64 bit integer is encoded followed by a single byte of value 1 - a string is encoded in UTF-8 format followed by a single byte of value 2","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"cryptoKey":{"description":"Required. The key used by the encryption algorithm.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","properties":{"cryptoKeyRef":{"type":"object","properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}},"customAlphabet":{"description":"This is supported by mapping these to the alphanumeric characters that the FFX mode natively supports. This happens before/after encryption/decryption. Each character listed must appear only once. Number of characters must be in the range [2, 95]. This must be encoded as ASCII. The order of characters does not matter. The full list of allowed characters is: ``0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ~`!@#$%^\u0026*()_-+={[}]|:;\"'\u003c,\u003e.?/``","type":"string"},"radix":{"description":"The native way to select the alphabet. Must be in the range [2, 95].","type":"integer"},"surrogateInfoType":{"description":"The custom infoType to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom infoType followed by the number of characters comprising the surrogate. The following scheme defines the format: info_type_name(surrogate_character_count):surrogate For example, if the name of custom infoType is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom infoType [`SurrogateType`](https://cloud.google.com/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype). This facilitates reversal of the surrogate when it occurs in free text. In order for inspection to work properly, the name of this infoType must not occur naturally anywhere in your data; otherwise, inspection may find a surrogate that does not correspond to an actual identifier. Therefore, choose your custom infoType name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: â§MY_TOKEN_TYPE","type":"object","properties":{"name":{"description":"Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/dlp/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$-_]{1,64}`.","type":"string"}}}}},"dateShiftConfig":{"description":"Date Shift","type":"object","properties":{"context":{"description":"Points to the field that contains the context, for example, an entity id. If set, must also set cryptoKey. If set, shift will be consistent for the given context.","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"cryptoKey":{"description":"Causes the shift to be computed based on this key and the context. This results in the same shift for the same context and crypto_key. If set, must also set context. Can only be applied to table items.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","properties":{"cryptoKeyRef":{"type":"object","properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}},"lowerBoundDays":{"description":"Required. For example, -5 means shift date to at most 5 days back in the past.","type":"integer"},"upperBoundDays":{"description":"Required. Range of shift in days. Actual shift will be selected at random within this range (inclusive ends). Negative means shift to earlier in time. Must not be more than 365250 days (1000 years) each direction. For example, 3 means shift date to at most 3 days into the future.","type":"integer"}}},"fixedSizeBucketingConfig":{"description":"Fixed size bucketing","type":"object","properties":{"bucketSize":{"description":"Required. Size of each bucket (except for minimum and maximum buckets). So if `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60, 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.","type":"number"},"lowerBound":{"description":"Required. Lower bound value of buckets. All values less than `lower_bound` are grouped together into a single bucket; for example if `lower_bound` = 10, then all values less than 10 are replaced with the value \"-10\".","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}},"upperBound":{"description":"Required. Upper bound value of buckets. All values greater than upper_bound are grouped together into a single bucket; for example if `upper_bound` = 89, then all values greater than 89 are replaced with the value \"89+\".","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}}}},"redactConfig":{"description":"Redact","type":"object","x-kubernetes-preserve-unknown-fields":true},"replaceConfig":{"description":"Replace with a specified value.","type":"object","properties":{"newValue":{"description":"Value to replace it with.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}}}},"replaceWithInfoTypeConfig":{"description":"Replace with infotype","type":"object","x-kubernetes-preserve-unknown-fields":true},"timePartConfig":{"description":"Time extraction","type":"object","properties":{"partToExtract":{"description":"The part of the time to keep. Possible values: TIME_PART_UNSPECIFIED, YEAR, MONTH, DAY_OF_MONTH, DAY_OF_WEEK, WEEK_OF_YEAR, HOUR_OF_DAY","type":"string"}}}}}}}}}},"recordTransformations":{"description":"Treat the dataset as structured. Transformations can be applied to specific locations within structured datasets, such as transforming a column within a table.","type":"object","properties":{"fieldTransformations":{"description":"Transform the record by applying various field transformations.","type":"array","items":{"type":"object","properties":{"condition":{"description":"Only apply the transformation if the condition evaluates to true for the given `RecordCondition`. The conditions are allowed to reference fields that are not used in the actual transformation. Example Use Cases: - Apply a different bucket transformation to an age column if the zip code column for the same record is within a specific range. - Redact a field if the date of birth field is greater than 85.","type":"object","properties":{"expressions":{"description":"An expression.","type":"object","properties":{"conditions":{"description":"Conditions to apply to the expression.","type":"object","properties":{"conditions":{"description":"A collection of conditions.","type":"array","items":{"type":"object","properties":{"field":{"description":"Required. Field within the record this condition is evaluated against.","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"operator":{"description":"Required. Operator used to compare the field or infoType to the value. Possible values: LOGICAL_OPERATOR_UNSPECIFIED, AND","type":"string"},"value":{"description":"Value to compare against. [Mandatory, except for `EXISTS` tests.]","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}}}}}}},"logicalOperator":{"description":"The operator to apply to the result of conditions. Default and currently only supported value is `AND`. Possible values: LOGICAL_OPERATOR_UNSPECIFIED, AND","type":"string"}}}}},"fields":{"description":"Required. Input field(s) to apply the transformation to. When you have columns that reference their position within a list, omit the index from the FieldId. FieldId name matching ignores the index. For example, instead of \"contact.nums[0].type\", use \"contact.nums.type\".","type":"array","items":{"type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}}},"infoTypeTransformations":{"description":"Treat the contents of the field as free text, and selectively transform content that matches an `InfoType`.","type":"object","properties":{"transformations":{"description":"Required. Transformation for each infoType. Cannot specify more than one for a given infoType.","type":"array","items":{"type":"object","properties":{"infoTypes":{"description":"InfoTypes to apply the transformation to. An empty list will cause this transformation to apply to all findings that correspond to infoTypes that were requested in `InspectConfig`.","type":"array","items":{"type":"object","properties":{"name":{"description":"Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/dlp/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$-_]{1,64}`.","type":"string"}}}},"primitiveTransformation":{"description":"Required. Primitive transformation to apply to the infoType.","type":"object","properties":{"bucketingConfig":{"description":"Bucketing","type":"object","properties":{"buckets":{"description":"Set of buckets. Ranges must be non-overlapping.","type":"array","items":{"type":"object","properties":{"max":{"description":"Upper bound of the range, exclusive; type must match min.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}},"min":{"description":"Lower bound of the range, inclusive. Type should be the same as max if used.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}},"replacementValue":{"description":"Required. Replacement value for this bucket.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}}}}}}},"characterMaskConfig":{"description":"Mask","type":"object","properties":{"charactersToIgnore":{"description":"When masking a string, items in this list will be skipped when replacing characters. For example, if the input string is `555-555-5555` and you instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP returns `***-**5-5555`.","type":"array","items":{"type":"object","properties":{"charactersToSkip":{"description":"Characters to not transform when masking.","type":"string"},"commonCharactersToIgnore":{"description":"Common characters to not transform when masking. Useful to avoid removing punctuation. Possible values: COMMON_CHARS_TO_IGNORE_UNSPECIFIED, NUMERIC, ALPHA_UPPER_CASE, ALPHA_LOWER_CASE, PUNCTUATION, WHITESPACE","type":"string"}}}},"maskingCharacter":{"description":"Character to use to mask the sensitive values—for example, `*` for an alphabetic string such as a name, or `0` for a numeric string such as ZIP code or credit card number. This string must have a length of 1. If not supplied, this value defaults to `*` for strings, and `0` for digits.","type":"string"},"numberToMask":{"description":"Number of characters to mask. If not set, all matching chars will be masked. Skipped characters do not count towards this tally.","type":"integer"},"reverseOrder":{"description":"Mask characters in reverse order. For example, if `masking_character` is `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the input string `1234-5678-9012-3456` is masked as `00000000000000-3456`. If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order` is `true`, then the string `12345` is masked as `12***`.","type":"boolean"}}},"cryptoDeterministicConfig":{"description":"Deterministic Crypto","type":"object","properties":{"context":{"description":"A context may be used for higher security and maintaining referential integrity such that the same identifier in two different contexts will be given a distinct surrogate. The context is appended to plaintext value being encrypted. On decryption the provided context is validated against the value used during encryption. If a context was provided during encryption, same context must be provided during decryption as well. If the context is not set, plaintext would be used as is for encryption. If the context is set but: 1. there is no record present when transforming a given value or 2. the field is not present when transforming a given value, plaintext would be used as is for encryption. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and non-structured `ContentItem`s.","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"cryptoKey":{"description":"The key used by the encryption function. For deterministic encryption using AES-SIV, the provided key is internally expanded to 64 bytes prior to use.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","properties":{"cryptoKeyRef":{"type":"object","properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}},"surrogateInfoType":{"description":"The custom info type to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom info type followed by the number of characters comprising the surrogate. The following scheme defines the format: {info type name}({surrogate character count}):{surrogate} For example, if the name of custom info type is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom info type 'Surrogate'. This facilitates reversal of the surrogate when it occurs in free text. Note: For record transformations where the entire cell in a table is being transformed, surrogates are not mandatory. Surrogates are used to denote the location of the token and are necessary for re-identification in free form text. In order for inspection to work properly, the name of this info type must not occur naturally anywhere in your data; otherwise, inspection may either - reverse a surrogate that does not correspond to an actual identifier - be unable to parse the surrogate and result in an error Therefore, choose your custom info type name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: â§MY_TOKEN_TYPE.","type":"object","properties":{"name":{"description":"Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/dlp/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$-_]{1,64}`.","type":"string"}}}}},"cryptoHashConfig":{"description":"Crypto","type":"object","properties":{"cryptoKey":{"description":"The key used by the hash function.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","properties":{"cryptoKeyRef":{"type":"object","properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}}}},"cryptoReplaceFfxFpeConfig":{"description":"Ffx-Fpe","type":"object","properties":{"commonAlphabet":{"description":"Common alphabets. Possible values: FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED, NUMERIC, HEXADECIMAL, UPPER_CASE_ALPHA_NUMERIC, ALPHA_NUMERIC","type":"string"},"context":{"description":"The 'tweak', a context may be used for higher security since the same identifier in two different contexts won't be given the same surrogate. If the context is not set, a default tweak will be used. If the context is set but: 1. there is no record present when transforming a given value or 1. the field is not present when transforming a given value, a default tweak will be used. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and non-structured `ContentItem`s. Currently, the referenced field may be of value type integer or string. The tweak is constructed as a sequence of bytes in big endian byte order such that: - a 64 bit integer is encoded followed by a single byte of value 1 - a string is encoded in UTF-8 format followed by a single byte of value 2","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"cryptoKey":{"description":"Required. The key used by the encryption algorithm.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","properties":{"cryptoKeyRef":{"type":"object","properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}},"customAlphabet":{"description":"This is supported by mapping these to the alphanumeric characters that the FFX mode natively supports. This happens before/after encryption/decryption. Each character listed must appear only once. Number of characters must be in the range [2, 95]. This must be encoded as ASCII. The order of characters does not matter. The full list of allowed characters is: ``0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ~`!@#$%^\u0026*()_-+={[}]|:;\"'\u003c,\u003e.?/``","type":"string"},"radix":{"description":"The native way to select the alphabet. Must be in the range [2, 95].","type":"integer"},"surrogateInfoType":{"description":"The custom infoType to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom infoType followed by the number of characters comprising the surrogate. The following scheme defines the format: info_type_name(surrogate_character_count):surrogate For example, if the name of custom infoType is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom infoType [`SurrogateType`](https://cloud.google.com/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype). This facilitates reversal of the surrogate when it occurs in free text. In order for inspection to work properly, the name of this infoType must not occur naturally anywhere in your data; otherwise, inspection may find a surrogate that does not correspond to an actual identifier. Therefore, choose your custom infoType name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: â§MY_TOKEN_TYPE","type":"object","properties":{"name":{"description":"Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/dlp/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$-_]{1,64}`.","type":"string"}}}}},"dateShiftConfig":{"description":"Date Shift","type":"object","properties":{"context":{"description":"Points to the field that contains the context, for example, an entity id. If set, must also set cryptoKey. If set, shift will be consistent for the given context.","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"cryptoKey":{"description":"Causes the shift to be computed based on this key and the context. This results in the same shift for the same context and crypto_key. If set, must also set context. Can only be applied to table items.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","properties":{"cryptoKeyRef":{"type":"object","properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}},"lowerBoundDays":{"description":"Required. For example, -5 means shift date to at most 5 days back in the past.","type":"integer"},"upperBoundDays":{"description":"Required. Range of shift in days. Actual shift will be selected at random within this range (inclusive ends). Negative means shift to earlier in time. Must not be more than 365250 days (1000 years) each direction. For example, 3 means shift date to at most 3 days into the future.","type":"integer"}}},"fixedSizeBucketingConfig":{"description":"Fixed size bucketing","type":"object","properties":{"bucketSize":{"description":"Required. Size of each bucket (except for minimum and maximum buckets). So if `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60, 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.","type":"number"},"lowerBound":{"description":"Required. Lower bound value of buckets. All values less than `lower_bound` are grouped together into a single bucket; for example if `lower_bound` = 10, then all values less than 10 are replaced with the value \"-10\".","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}},"upperBound":{"description":"Required. Upper bound value of buckets. All values greater than upper_bound are grouped together into a single bucket; for example if `upper_bound` = 89, then all values greater than 89 are replaced with the value \"89+\".","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}}}},"redactConfig":{"description":"Redact","type":"object","x-kubernetes-preserve-unknown-fields":true},"replaceConfig":{"description":"Replace with a specified value.","type":"object","properties":{"newValue":{"description":"Value to replace it with.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}}}},"replaceWithInfoTypeConfig":{"description":"Replace with infotype","type":"object","x-kubernetes-preserve-unknown-fields":true},"timePartConfig":{"description":"Time extraction","type":"object","properties":{"partToExtract":{"description":"The part of the time to keep. Possible values: TIME_PART_UNSPECIFIED, YEAR, MONTH, DAY_OF_MONTH, DAY_OF_WEEK, WEEK_OF_YEAR, HOUR_OF_DAY","type":"string"}}}}}}}}}},"primitiveTransformation":{"description":"Apply the transformation to the entire field.","type":"object","properties":{"bucketingConfig":{"description":"Bucketing","type":"object","properties":{"buckets":{"description":"Set of buckets. Ranges must be non-overlapping.","type":"array","items":{"type":"object","properties":{"max":{"description":"Upper bound of the range, exclusive; type must match min.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}},"min":{"description":"Lower bound of the range, inclusive. Type should be the same as max if used.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}},"replacementValue":{"description":"Required. Replacement value for this bucket.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}}}}}}},"characterMaskConfig":{"description":"Mask","type":"object","properties":{"charactersToIgnore":{"description":"When masking a string, items in this list will be skipped when replacing characters. For example, if the input string is `555-555-5555` and you instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP returns `***-**5-5555`.","type":"array","items":{"type":"object","properties":{"charactersToSkip":{"description":"Characters to not transform when masking.","type":"string"},"commonCharactersToIgnore":{"description":"Common characters to not transform when masking. Useful to avoid removing punctuation. Possible values: COMMON_CHARS_TO_IGNORE_UNSPECIFIED, NUMERIC, ALPHA_UPPER_CASE, ALPHA_LOWER_CASE, PUNCTUATION, WHITESPACE","type":"string"}}}},"maskingCharacter":{"description":"Character to use to mask the sensitive values—for example, `*` for an alphabetic string such as a name, or `0` for a numeric string such as ZIP code or credit card number. This string must have a length of 1. If not supplied, this value defaults to `*` for strings, and `0` for digits.","type":"string"},"numberToMask":{"description":"Number of characters to mask. If not set, all matching chars will be masked. Skipped characters do not count towards this tally.","type":"integer"},"reverseOrder":{"description":"Mask characters in reverse order. For example, if `masking_character` is `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the input string `1234-5678-9012-3456` is masked as `00000000000000-3456`. If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order` is `true`, then the string `12345` is masked as `12***`.","type":"boolean"}}},"cryptoDeterministicConfig":{"description":"Deterministic Crypto","type":"object","properties":{"context":{"description":"A context may be used for higher security and maintaining referential integrity such that the same identifier in two different contexts will be given a distinct surrogate. The context is appended to plaintext value being encrypted. On decryption the provided context is validated against the value used during encryption. If a context was provided during encryption, same context must be provided during decryption as well. If the context is not set, plaintext would be used as is for encryption. If the context is set but: 1. there is no record present when transforming a given value or 2. the field is not present when transforming a given value, plaintext would be used as is for encryption. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and non-structured `ContentItem`s.","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"cryptoKey":{"description":"The key used by the encryption function. For deterministic encryption using AES-SIV, the provided key is internally expanded to 64 bytes prior to use.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","properties":{"cryptoKeyRef":{"type":"object","properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}},"surrogateInfoType":{"description":"The custom info type to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom info type followed by the number of characters comprising the surrogate. The following scheme defines the format: {info type name}({surrogate character count}):{surrogate} For example, if the name of custom info type is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom info type 'Surrogate'. This facilitates reversal of the surrogate when it occurs in free text. Note: For record transformations where the entire cell in a table is being transformed, surrogates are not mandatory. Surrogates are used to denote the location of the token and are necessary for re-identification in free form text. In order for inspection to work properly, the name of this info type must not occur naturally anywhere in your data; otherwise, inspection may either - reverse a surrogate that does not correspond to an actual identifier - be unable to parse the surrogate and result in an error Therefore, choose your custom info type name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: â§MY_TOKEN_TYPE.","type":"object","properties":{"name":{"description":"Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/dlp/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$-_]{1,64}`.","type":"string"}}}}},"cryptoHashConfig":{"description":"Crypto","type":"object","properties":{"cryptoKey":{"description":"The key used by the hash function.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","properties":{"cryptoKeyRef":{"type":"object","properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}}}},"cryptoReplaceFfxFpeConfig":{"description":"Ffx-Fpe","type":"object","properties":{"commonAlphabet":{"description":"Common alphabets. Possible values: FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED, NUMERIC, HEXADECIMAL, UPPER_CASE_ALPHA_NUMERIC, ALPHA_NUMERIC","type":"string"},"context":{"description":"The 'tweak', a context may be used for higher security since the same identifier in two different contexts won't be given the same surrogate. If the context is not set, a default tweak will be used. If the context is set but: 1. there is no record present when transforming a given value or 1. the field is not present when transforming a given value, a default tweak will be used. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and non-structured `ContentItem`s. Currently, the referenced field may be of value type integer or string. The tweak is constructed as a sequence of bytes in big endian byte order such that: - a 64 bit integer is encoded followed by a single byte of value 1 - a string is encoded in UTF-8 format followed by a single byte of value 2","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"cryptoKey":{"description":"Required. The key used by the encryption algorithm.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","properties":{"cryptoKeyRef":{"type":"object","properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}},"customAlphabet":{"description":"This is supported by mapping these to the alphanumeric characters that the FFX mode natively supports. This happens before/after encryption/decryption. Each character listed must appear only once. Number of characters must be in the range [2, 95]. This must be encoded as ASCII. The order of characters does not matter. The full list of allowed characters is: ``0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ~`!@#$%^\u0026*()_-+={[}]|:;\"'\u003c,\u003e.?/``","type":"string"},"radix":{"description":"The native way to select the alphabet. Must be in the range [2, 95].","type":"integer"},"surrogateInfoType":{"description":"The custom infoType to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom infoType followed by the number of characters comprising the surrogate. The following scheme defines the format: info_type_name(surrogate_character_count):surrogate For example, if the name of custom infoType is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom infoType [`SurrogateType`](https://cloud.google.com/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype). This facilitates reversal of the surrogate when it occurs in free text. In order for inspection to work properly, the name of this infoType must not occur naturally anywhere in your data; otherwise, inspection may find a surrogate that does not correspond to an actual identifier. Therefore, choose your custom infoType name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: â§MY_TOKEN_TYPE","type":"object","properties":{"name":{"description":"Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/dlp/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$-_]{1,64}`.","type":"string"}}}}},"dateShiftConfig":{"description":"Date Shift","type":"object","properties":{"context":{"description":"Points to the field that contains the context, for example, an entity id. If set, must also set cryptoKey. If set, shift will be consistent for the given context.","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"cryptoKey":{"description":"Causes the shift to be computed based on this key and the context. This results in the same shift for the same context and crypto_key. If set, must also set context. Can only be applied to table items.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","properties":{"cryptoKeyRef":{"type":"object","properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}},"lowerBoundDays":{"description":"Required. For example, -5 means shift date to at most 5 days back in the past.","type":"integer"},"upperBoundDays":{"description":"Required. Range of shift in days. Actual shift will be selected at random within this range (inclusive ends). Negative means shift to earlier in time. Must not be more than 365250 days (1000 years) each direction. For example, 3 means shift date to at most 3 days into the future.","type":"integer"}}},"fixedSizeBucketingConfig":{"description":"Fixed size bucketing","type":"object","properties":{"bucketSize":{"description":"Required. Size of each bucket (except for minimum and maximum buckets). So if `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60, 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.","type":"number"},"lowerBound":{"description":"Required. Lower bound value of buckets. All values less than `lower_bound` are grouped together into a single bucket; for example if `lower_bound` = 10, then all values less than 10 are replaced with the value \"-10\".","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}},"upperBound":{"description":"Required. Upper bound value of buckets. All values greater than upper_bound are grouped together into a single bucket; for example if `upper_bound` = 89, then all values greater than 89 are replaced with the value \"89+\".","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}}}},"redactConfig":{"description":"Redact","type":"object","x-kubernetes-preserve-unknown-fields":true},"replaceConfig":{"description":"Replace with a specified value.","type":"object","properties":{"newValue":{"description":"Value to replace it with.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}}}},"replaceWithInfoTypeConfig":{"description":"Replace with infotype","type":"object","x-kubernetes-preserve-unknown-fields":true},"timePartConfig":{"description":"Time extraction","type":"object","properties":{"partToExtract":{"description":"The part of the time to keep. Possible values: TIME_PART_UNSPECIFIED, YEAR, MONTH, DAY_OF_MONTH, DAY_OF_WEEK, WEEK_OF_YEAR, HOUR_OF_DAY","type":"string"}}}}}}}},"recordSuppressions":{"description":"Configuration defining which records get suppressed entirely. Records that match any suppression rule are omitted from the output.","type":"array","items":{"type":"object","properties":{"condition":{"description":"A condition that when it evaluates to true will result in the record being evaluated to be suppressed from the transformed content.","type":"object","properties":{"expressions":{"description":"An expression.","type":"object","properties":{"conditions":{"description":"Conditions to apply to the expression.","type":"object","properties":{"conditions":{"description":"A collection of conditions.","type":"array","items":{"type":"object","properties":{"field":{"description":"Required. Field within the record this condition is evaluated against.","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"operator":{"description":"Required. Operator used to compare the field or infoType to the value. Possible values: LOGICAL_OPERATOR_UNSPECIFIED, AND","type":"string"},"value":{"description":"Value to compare against. [Mandatory, except for `EXISTS` tests.]","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number"},"integerValue":{"description":"integer","type":"integer"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer"}}},"timestampValue":{"description":"timestamp","type":"string"}}}}}}}},"logicalOperator":{"description":"The operator to apply to the result of conditions. Default and currently only supported value is `AND`. Possible values: LOGICAL_OPERATOR_UNSPECIFIED, AND","type":"string"}}}}}}}}}},"transformationErrorHandling":{"description":"Mode for handling transformation errors. If left unspecified, the default mode is `TransformationErrorHandling.ThrowError`.","type":"object","properties":{"leaveUntransformed":{"description":"Ignore errors","type":"object","x-kubernetes-preserve-unknown-fields":true},"throwError":{"description":"Throw an error","type":"object","x-kubernetes-preserve-unknown-fields":true}}}}},"description":{"description":"Short description (max 256 chars).","type":"string"},"displayName":{"description":"Display name (max 256 chars).","type":"string"},"location":{"description":"Immutable. The location of the resource","type":"string"},"organizationRef":{"description":"Immutable. The Organization that this resource belongs to. Only one of [organizationRef, projectRef] may be specified.","type":"object","properties":{"external":{"description":"Allowed value: The Google Cloud resource name of a Google Cloud Organization (format: `organizations/{{name}}`).","type":"string"},"name":{"description":"[WARNING] Organization not yet supported in Config Connector, use 'external' field to reference existing resources.\nName of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"projectRef":{"description":"Immutable. The Project that this resource belongs to. Only one of [organizationRef, projectRef] may be specified.","type":"object","properties":{"external":{"description":"Allowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"resourceID":{"description":"Immutable. Optional. The service-generated name of the resource. Used for acquisition only. Leave unset to create a new resource.","type":"string"}}},"status":{"type":"object","properties":{"conditions":{"description":"Conditions represent the latest available observation of the resource's current state.","type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","type":"string"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"Status is the status of the condition. Can be True, False, Unknown.","type":"string"},"type":{"description":"Type is the type of the condition.","type":"string"}}}},"createTime":{"description":"Output only. The creation timestamp of an inspectTemplate.","type":"string"},"locationId":{"description":"Output only. The geographic location where this resource is stored.","type":"string"},"observedGeneration":{"description":"ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.","type":"integer"},"updateTime":{"description":"Output only. The last update timestamp of an inspectTemplate.","type":"string"}}}},"x-kubernetes-group-version-kind":[{"group":"dlp.cnrm.cloud.google.com","kind":"DLPDeidentifyTemplate","version":"v1beta1"}]},"com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplateList":{"description":"DLPDeidentifyTemplateList is a list of DLPDeidentifyTemplate","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of dlpdeidentifytemplates. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"$ref":"#/definitions/com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplate"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"dlp.cnrm.cloud.google.com","kind":"DLPDeidentifyTemplateList","version":"v1beta1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition":{"description":"CustomResourceColumnDefinition specifies a column for server side printing.","type":"object","required":["name","type","jsonPath"],"properties":{"description":{"description":"description is a human readable description of this column.","type":"string"},"format":{"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.","type":"string"},"jsonPath":{"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.","type":"string","default":""},"name":{"description":"name is a human readable name for the column.","type":"string","default":""},"priority":{"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.","type":"integer","format":"int32"},"type":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion":{"description":"CustomResourceConversion describes how to convert different versions of a CR.","type":"object","required":["strategy"],"properties":{"strategy":{"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.","type":"string","default":""},"webhook":{"description":"webhook describes how to call the conversion webhook. Required when `strategy` is set to `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition":{"description":"CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format \u003c.spec.name\u003e.\u003c.spec.group\u003e.","type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"spec describes how the user wants the resources to appear","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec"},"status":{"description":"status indicates the actual state of the CustomResourceDefinition","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus"}},"x-kubernetes-group-version-kind":[{"group":"apiextensions.k8s.io","kind":"CustomResourceDefinition","version":"v1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition":{"description":"CustomResourceDefinitionCondition contains details for the current condition of this pod.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"lastTransitionTime last time the condition transitioned from one status to another.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"message is a human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"reason is a unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"status is the status of the condition. Can be True, False, Unknown.","type":"string","default":""},"type":{"description":"type is the type of the condition. Types include Established, NamesAccepted and Terminating.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames":{"description":"CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition","type":"object","required":["plural","kind"],"properties":{"categories":{"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`.","type":"array","items":{"type":"string","default":""}},"kind":{"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.","type":"string","default":""},"listKind":{"description":"listKind is the serialized kind of the list for this resource. Defaults to \"`kind`List\".","type":"string"},"plural":{"description":"plural is the plural name of the resource to serve. The custom resources are served under `/apis/\u003cgroup\u003e/\u003cversion\u003e/.../\u003cplural\u003e`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`). Must be all lowercase.","type":"string","default":""},"shortNames":{"description":"shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get \u003cshortname\u003e`. It must be all lowercase.","type":"array","items":{"type":"string","default":""}},"singular":{"description":"singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec":{"description":"CustomResourceDefinitionSpec describes how a user wants their resource to appear","type":"object","required":["group","names","scope","versions"],"properties":{"conversion":{"description":"conversion defines conversion settings for the CRD.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion"},"group":{"description":"group is the API group of the defined custom resource. The custom resources are served under `/apis/\u003cgroup\u003e/...`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`).","type":"string","default":""},"names":{"description":"names specify the resource and kind names for the custom resource.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"preserveUnknownFields":{"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.","type":"boolean"},"scope":{"description":"scope indicates whether the defined custom resource is cluster- or namespace-scoped. Allowed values are `Cluster` and `Namespaced`.","type":"string","default":""},"versions":{"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 \u003e beta \u003e 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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion"}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus":{"description":"CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition","type":"object","properties":{"acceptedNames":{"description":"acceptedNames are the names that are actually being used to serve discovery. They may be different than the names in spec.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"conditions":{"description":"conditions indicate state for particular aspects of a CustomResourceDefinition","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition"},"x-kubernetes-list-map-keys":["type"],"x-kubernetes-list-type":"map"},"storedVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion":{"description":"CustomResourceDefinitionVersion describes a version for CRD.","type":"object","required":["name","served","storage"],"properties":{"additionalPrinterColumns":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition"}},"deprecated":{"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.","type":"boolean"},"deprecationWarning":{"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.","type":"string"},"name":{"description":"name is the version name, e.g. “v1â€, “v2beta1â€, etc. The custom resources are served under this version at `/apis/\u003cgroup\u003e/\u003cversion\u003e/...` if `served` is true.","type":"string","default":""},"schema":{"description":"schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation"},"served":{"description":"served is a flag enabling/disabling this version from being served via REST APIs","type":"boolean","default":false},"storage":{"description":"storage indicates this version should be used when persisting custom resources to storage. There must be exactly one version with storage=true.","type":"boolean","default":false},"subresources":{"description":"subresources specify what subresources this version of the defined custom resource have.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale":{"description":"CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.","type":"object","required":["specReplicasPath","statusReplicasPath"],"properties":{"labelSelectorPath":{"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.","type":"string"},"specReplicasPath":{"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.","type":"string","default":""},"statusReplicasPath":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus":{"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","type":"object"},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources":{"description":"CustomResourceSubresources defines the status and scale subresources for CustomResources.","type":"object","properties":{"scale":{"description":"scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale"},"status":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation":{"description":"CustomResourceValidation is a list of validation methods for CustomResources.","type":"object","properties":{"openAPIV3Schema":{"description":"openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation":{"description":"ExternalDocumentation allows referencing an external resource for extended documentation.","type":"object","properties":{"description":{"type":"string"},"url":{"type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON":{"description":"JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps":{"description":"JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).","type":"object","properties":{"$ref":{"type":"string"},"$schema":{"type":"string"},"additionalItems":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"additionalProperties":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"allOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"anyOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"default":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"definitions":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"dependencies":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray"}},"description":{"type":"string"},"enum":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"}},"example":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"exclusiveMaximum":{"type":"boolean"},"exclusiveMinimum":{"type":"boolean"},"externalDocs":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation"},"format":{"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.","type":"string"},"id":{"type":"string"},"items":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray"},"maxItems":{"type":"integer","format":"int64"},"maxLength":{"type":"integer","format":"int64"},"maxProperties":{"type":"integer","format":"int64"},"maximum":{"type":"number","format":"double"},"minItems":{"type":"integer","format":"int64"},"minLength":{"type":"integer","format":"int64"},"minProperties":{"type":"integer","format":"int64"},"minimum":{"type":"number","format":"double"},"multipleOf":{"type":"number","format":"double"},"not":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"},"nullable":{"type":"boolean"},"oneOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"pattern":{"type":"string"},"patternProperties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"properties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"required":{"type":"array","items":{"type":"string","default":""}},"title":{"type":"string"},"type":{"type":"string"},"uniqueItems":{"type":"boolean"},"x-kubernetes-embedded-resource":{"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).","type":"boolean"},"x-kubernetes-int-or-string":{"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","type":"boolean"},"x-kubernetes-list-map-keys":{"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.","type":"array","items":{"type":"string","default":""}},"x-kubernetes-list-type":{"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.","type":"string"},"x-kubernetes-map-type":{"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.","type":"string"},"x-kubernetes-preserve-unknown-fields":{"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.","type":"boolean"},"x-kubernetes-validations":{"description":"x-kubernetes-validations describes a list of validation rules written in the CEL expression language. This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule"},"x-kubernetes-list-map-keys":["rule"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"rule","x-kubernetes-patch-strategy":"merge"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray":{"description":"JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool":{"description":"JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray":{"description":"JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference":{"description":"ServiceReference holds a reference to Service.legacy.k8s.io","type":"object","required":["namespace","name"],"properties":{"name":{"description":"name is the name of the service. Required","type":"string","default":""},"namespace":{"description":"namespace is the namespace of the service. Required","type":"string","default":""},"path":{"description":"path is an optional URL path at which the webhook will be contacted.","type":"string"},"port":{"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.","type":"integer","format":"int32"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule":{"description":"ValidationRule describes a validation rule written in the CEL expression language.","type":"object","required":["rule"],"properties":{"message":{"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\"","type":"string"},"rule":{"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 \u003c= 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 \u003c 10\"} - Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value \u003e= 0 \u0026\u0026 value \u003c 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__ \u003e 0\"}\n - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop \u003e 0\"}\n - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d \u003e 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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig":{"description":"WebhookClientConfig contains the information to make a TLS connection with the webhook.","type":"object","properties":{"caBundle":{"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.","type":"string","format":"byte"},"service":{"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`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference"},"url":{"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.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion":{"description":"WebhookConversion describes how to call a conversion webhook","type":"object","required":["conversionReviewVersions"],"properties":{"clientConfig":{"description":"clientConfig is the instructions for how to call the webhook if strategy is `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig"},"conversionReviewVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"},"propagationPolicy":{"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.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"creationTimestamp":{"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","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"},"reason":{"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.","type":"string"},"status":{"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","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"}},"securityDefinitions":{"BearerToken":{"description":"Bearer Token authentication","type":"apiKey","name":"authorization","in":"header"}},"security":[{"BearerToken":[]}]}monitoring_v1beta1_monitoringalertpolicy.json000066400000000000000000003610451453663023200410460ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv2{"swagger":"2.0","info":{"title":"Kubernetes","version":"v1.27.0"},"paths":{"/apis/monitoring.cnrm.cloud.google.com/v1beta1/monitoringalertpolicies":{"get":{"description":"list objects of kind MonitoringAlertPolicy","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"listMonitoringCnrmCloudGoogleComV1beta1MonitoringAlertPolicyForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicyList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringAlertPolicy"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/apis/monitoring.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/monitoringalertpolicies":{"get":{"description":"list objects of kind MonitoringAlertPolicy","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"listMonitoringCnrmCloudGoogleComV1beta1NamespacedMonitoringAlertPolicy","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicyList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringAlertPolicy"}},"post":{"description":"create a MonitoringAlertPolicy","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"createMonitoringCnrmCloudGoogleComV1beta1NamespacedMonitoringAlertPolicy","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicy"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicy"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicy"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicy"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringAlertPolicy"}},"delete":{"description":"delete collection of MonitoringAlertPolicy","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"deleteMonitoringCnrmCloudGoogleComV1beta1CollectionNamespacedMonitoringAlertPolicy","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringAlertPolicy"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/monitoring.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/monitoringalertpolicies/{name}":{"get":{"description":"read the specified MonitoringAlertPolicy","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"readMonitoringCnrmCloudGoogleComV1beta1NamespacedMonitoringAlertPolicy","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicy"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringAlertPolicy"}},"put":{"description":"replace the specified MonitoringAlertPolicy","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"replaceMonitoringCnrmCloudGoogleComV1beta1NamespacedMonitoringAlertPolicy","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicy"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicy"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicy"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringAlertPolicy"}},"delete":{"description":"delete a MonitoringAlertPolicy","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"deleteMonitoringCnrmCloudGoogleComV1beta1NamespacedMonitoringAlertPolicy","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringAlertPolicy"}},"patch":{"description":"partially update the specified MonitoringAlertPolicy","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"patchMonitoringCnrmCloudGoogleComV1beta1NamespacedMonitoringAlertPolicy","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicy"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringAlertPolicy"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the MonitoringAlertPolicy","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/monitoring.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/monitoringalertpolicies/{name}/status":{"get":{"description":"read status of the specified MonitoringAlertPolicy","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"readMonitoringCnrmCloudGoogleComV1beta1NamespacedMonitoringAlertPolicyStatus","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicy"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringAlertPolicy"}},"put":{"description":"replace status of the specified MonitoringAlertPolicy","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"replaceMonitoringCnrmCloudGoogleComV1beta1NamespacedMonitoringAlertPolicyStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicy"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicy"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicy"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringAlertPolicy"}},"patch":{"description":"partially update status of the specified MonitoringAlertPolicy","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"patchMonitoringCnrmCloudGoogleComV1beta1NamespacedMonitoringAlertPolicyStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicy"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringAlertPolicy"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the MonitoringAlertPolicy","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]}},"definitions":{"com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicy":{"type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"type":"object","properties":{"alertStrategy":{"description":"Control over how this alert policy's notification channels are notified.","type":"object","properties":{"autoClose":{"description":"If an alert policy that was active has no data for this long, any open incidents will close.","type":"string"},"notificationRateLimit":{"description":"Required for alert policies with a LogMatch condition.\nThis limit is not implemented for alert policies that are not log-based.","type":"object","properties":{"period":{"description":"Not more than one notification per period.","type":"string"}}}}},"combiner":{"description":"How to combine the results of multiple conditions to\ndetermine if an incident should be opened. Possible values: [\"AND\", \"OR\", \"AND_WITH_MATCHING_RESOURCE\"].","type":"string"},"conditions":{"description":"A list of conditions for the policy. The conditions are combined by\nAND or OR according to the combiner field. If the combined conditions\nevaluate to true, then an incident is created. A policy can have from\none to six conditions.","type":"array","items":{"type":"object","properties":{"conditionAbsent":{"description":"A condition that checks that a time series\ncontinues to receive new data points.","type":"object","properties":{"aggregations":{"description":"Specifies the alignment of data points in\nindividual time series as well as how to\ncombine the retrieved time series together\n(such as when aggregating multiple streams\non each resource to a single stream for each\nresource or when aggregating streams across\nall members of a group of resources).\nMultiple aggregations are applied in the\norder specified.","type":"array","items":{"type":"object","properties":{"alignmentPeriod":{"description":"The alignment period for per-time\nseries alignment. If present,\nalignmentPeriod must be at least\n60 seconds. After per-time series\nalignment, each time series will\ncontain data points only on the\nperiod boundaries. If\nperSeriesAligner is not specified\nor equals ALIGN_NONE, then this\nfield is ignored. If\nperSeriesAligner is specified and\ndoes not equal ALIGN_NONE, then\nthis field must be defined;\notherwise an error is returned.","type":"string"},"crossSeriesReducer":{"description":"The approach to be used to combine\ntime series. Not all reducer\nfunctions may be applied to all\ntime series, depending on the\nmetric type and the value type of\nthe original time series.\nReduction may change the metric\ntype of value type of the time\nseries.Time series data must be\naligned in order to perform cross-\ntime series reduction. If\ncrossSeriesReducer is specified,\nthen perSeriesAligner must be\nspecified and not equal ALIGN_NONE\nand alignmentPeriod must be\nspecified; otherwise, an error is\nreturned. Possible values: [\"REDUCE_NONE\", \"REDUCE_MEAN\", \"REDUCE_MIN\", \"REDUCE_MAX\", \"REDUCE_SUM\", \"REDUCE_STDDEV\", \"REDUCE_COUNT\", \"REDUCE_COUNT_TRUE\", \"REDUCE_COUNT_FALSE\", \"REDUCE_FRACTION_TRUE\", \"REDUCE_PERCENTILE_99\", \"REDUCE_PERCENTILE_95\", \"REDUCE_PERCENTILE_50\", \"REDUCE_PERCENTILE_05\"].","type":"string"},"groupByFields":{"description":"The set of fields to preserve when\ncrossSeriesReducer is specified.\nThe groupByFields determine how\nthe time series are partitioned\ninto subsets prior to applying the\naggregation function. Each subset\ncontains time series that have the\nsame value for each of the\ngrouping fields. Each individual\ntime series is a member of exactly\none subset. The crossSeriesReducer\nis applied to each subset of time\nseries. It is not possible to\nreduce across different resource\ntypes, so this field implicitly\ncontains resource.type. Fields not\nspecified in groupByFields are\naggregated away. If groupByFields\nis not specified and all the time\nseries have the same resource\ntype, then the time series are\naggregated into a single output\ntime series. If crossSeriesReducer\nis not defined, this field is\nignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"The approach to be used to align\nindividual time series. Not all\nalignment functions may be applied\nto all time series, depending on\nthe metric type and value type of\nthe original time series.\nAlignment may change the metric\ntype or the value type of the time\nseries.Time series data must be\naligned in order to perform cross-\ntime series reduction. If\ncrossSeriesReducer is specified,\nthen perSeriesAligner must be\nspecified and not equal ALIGN_NONE\nand alignmentPeriod must be\nspecified; otherwise, an error is\nreturned. Possible values: [\"ALIGN_NONE\", \"ALIGN_DELTA\", \"ALIGN_RATE\", \"ALIGN_INTERPOLATE\", \"ALIGN_NEXT_OLDER\", \"ALIGN_MIN\", \"ALIGN_MAX\", \"ALIGN_MEAN\", \"ALIGN_COUNT\", \"ALIGN_SUM\", \"ALIGN_STDDEV\", \"ALIGN_COUNT_TRUE\", \"ALIGN_COUNT_FALSE\", \"ALIGN_FRACTION_TRUE\", \"ALIGN_PERCENTILE_99\", \"ALIGN_PERCENTILE_95\", \"ALIGN_PERCENTILE_50\", \"ALIGN_PERCENTILE_05\", \"ALIGN_PERCENT_CHANGE\"].","type":"string"}}}},"duration":{"description":"The amount of time that a time series must\nfail to report new data to be considered\nfailing. Currently, only values that are a\nmultiple of a minute--e.g. 60s, 120s, or 300s\n--are supported.","type":"string"},"filter":{"description":"A filter that identifies which time series\nshould be compared with the threshold.The\nfilter is similar to the one that is\nspecified in the\nMetricService.ListTimeSeries request (that\ncall is useful to verify the time series\nthat will be retrieved / processed) and must\nspecify the metric type and optionally may\ncontain restrictions on resource type,\nresource labels, and metric labels. This\nfield may not exceed 2048 Unicode characters\nin length.","type":"string"},"trigger":{"description":"The number/percent of time series for which\nthe comparison must hold in order for the\ncondition to trigger. If unspecified, then\nthe condition will trigger if the comparison\nis true for any of the time series that have\nbeen identified by filter and aggregations.","type":"object","properties":{"count":{"description":"The absolute number of time series\nthat must fail the predicate for the\ncondition to be triggered.","type":"integer"},"percent":{"description":"The percentage of time series that\nmust fail the predicate for the\ncondition to be triggered.","type":"number"}}}}},"conditionMatchedLog":{"description":"A condition that checks for log messages matching given constraints.\nIf set, no other conditions can be present.","type":"object","properties":{"filter":{"description":"A logs-based filter.","type":"string"},"labelExtractors":{"description":"A map from a label key to an extractor expression, which is used to\nextract the value for this label key. Each entry in this map is\na specification for how data should be extracted from log entries that\nmatch filter. Each combination of extracted values is treated as\na separate rule for the purposes of triggering notifications.\nLabel keys and corresponding values can be used in notifications\ngenerated by this condition.","type":"object","additionalProperties":{"type":"string"}}}},"conditionMonitoringQueryLanguage":{"description":"A Monitoring Query Language query that outputs a boolean stream.","type":"object","properties":{"duration":{"description":"The amount of time that a time series must\nviolate the threshold to be considered\nfailing. Currently, only values that are a\nmultiple of a minute--e.g., 0, 60, 120, or\n300 seconds--are supported. If an invalid\nvalue is given, an error will be returned.\nWhen choosing a duration, it is useful to\nkeep in mind the frequency of the underlying\ntime series data (which may also be affected\nby any alignments specified in the\naggregations field); a good duration is long\nenough so that a single outlier does not\ngenerate spurious alerts, but short enough\nthat unhealthy states are detected and\nalerted on quickly.","type":"string"},"evaluationMissingData":{"description":"A condition control that determines how\nmetric-threshold conditions are evaluated when\ndata stops arriving. Possible values: [\"EVALUATION_MISSING_DATA_INACTIVE\", \"EVALUATION_MISSING_DATA_ACTIVE\", \"EVALUATION_MISSING_DATA_NO_OP\"].","type":"string"},"query":{"description":"Monitoring Query Language query that outputs a boolean stream.","type":"string"},"trigger":{"description":"The number/percent of time series for which\nthe comparison must hold in order for the\ncondition to trigger. If unspecified, then\nthe condition will trigger if the comparison\nis true for any of the time series that have\nbeen identified by filter and aggregations,\nor by the ratio, if denominator_filter and\ndenominator_aggregations are specified.","type":"object","properties":{"count":{"description":"The absolute number of time series\nthat must fail the predicate for the\ncondition to be triggered.","type":"integer"},"percent":{"description":"The percentage of time series that\nmust fail the predicate for the\ncondition to be triggered.","type":"number"}}}}},"conditionThreshold":{"description":"A condition that compares a time series against a\nthreshold.","type":"object","properties":{"aggregations":{"description":"Specifies the alignment of data points in\nindividual time series as well as how to\ncombine the retrieved time series together\n(such as when aggregating multiple streams\non each resource to a single stream for each\nresource or when aggregating streams across\nall members of a group of resources).\nMultiple aggregations are applied in the\norder specified.This field is similar to the\none in the MetricService.ListTimeSeries\nrequest. It is advisable to use the\nListTimeSeries method when debugging this\nfield.","type":"array","items":{"type":"object","properties":{"alignmentPeriod":{"description":"The alignment period for per-time\nseries alignment. If present,\nalignmentPeriod must be at least\n60 seconds. After per-time series\nalignment, each time series will\ncontain data points only on the\nperiod boundaries. If\nperSeriesAligner is not specified\nor equals ALIGN_NONE, then this\nfield is ignored. If\nperSeriesAligner is specified and\ndoes not equal ALIGN_NONE, then\nthis field must be defined;\notherwise an error is returned.","type":"string"},"crossSeriesReducer":{"description":"The approach to be used to combine\ntime series. Not all reducer\nfunctions may be applied to all\ntime series, depending on the\nmetric type and the value type of\nthe original time series.\nReduction may change the metric\ntype of value type of the time\nseries.Time series data must be\naligned in order to perform cross-\ntime series reduction. If\ncrossSeriesReducer is specified,\nthen perSeriesAligner must be\nspecified and not equal ALIGN_NONE\nand alignmentPeriod must be\nspecified; otherwise, an error is\nreturned. Possible values: [\"REDUCE_NONE\", \"REDUCE_MEAN\", \"REDUCE_MIN\", \"REDUCE_MAX\", \"REDUCE_SUM\", \"REDUCE_STDDEV\", \"REDUCE_COUNT\", \"REDUCE_COUNT_TRUE\", \"REDUCE_COUNT_FALSE\", \"REDUCE_FRACTION_TRUE\", \"REDUCE_PERCENTILE_99\", \"REDUCE_PERCENTILE_95\", \"REDUCE_PERCENTILE_50\", \"REDUCE_PERCENTILE_05\"].","type":"string"},"groupByFields":{"description":"The set of fields to preserve when\ncrossSeriesReducer is specified.\nThe groupByFields determine how\nthe time series are partitioned\ninto subsets prior to applying the\naggregation function. Each subset\ncontains time series that have the\nsame value for each of the\ngrouping fields. Each individual\ntime series is a member of exactly\none subset. The crossSeriesReducer\nis applied to each subset of time\nseries. It is not possible to\nreduce across different resource\ntypes, so this field implicitly\ncontains resource.type. Fields not\nspecified in groupByFields are\naggregated away. If groupByFields\nis not specified and all the time\nseries have the same resource\ntype, then the time series are\naggregated into a single output\ntime series. If crossSeriesReducer\nis not defined, this field is\nignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"The approach to be used to align\nindividual time series. Not all\nalignment functions may be applied\nto all time series, depending on\nthe metric type and value type of\nthe original time series.\nAlignment may change the metric\ntype or the value type of the time\nseries.Time series data must be\naligned in order to perform cross-\ntime series reduction. If\ncrossSeriesReducer is specified,\nthen perSeriesAligner must be\nspecified and not equal ALIGN_NONE\nand alignmentPeriod must be\nspecified; otherwise, an error is\nreturned. Possible values: [\"ALIGN_NONE\", \"ALIGN_DELTA\", \"ALIGN_RATE\", \"ALIGN_INTERPOLATE\", \"ALIGN_NEXT_OLDER\", \"ALIGN_MIN\", \"ALIGN_MAX\", \"ALIGN_MEAN\", \"ALIGN_COUNT\", \"ALIGN_SUM\", \"ALIGN_STDDEV\", \"ALIGN_COUNT_TRUE\", \"ALIGN_COUNT_FALSE\", \"ALIGN_FRACTION_TRUE\", \"ALIGN_PERCENTILE_99\", \"ALIGN_PERCENTILE_95\", \"ALIGN_PERCENTILE_50\", \"ALIGN_PERCENTILE_05\", \"ALIGN_PERCENT_CHANGE\"].","type":"string"}}}},"comparison":{"description":"The comparison to apply between the time\nseries (indicated by filter and aggregation)\nand the threshold (indicated by\nthreshold_value). The comparison is applied\non each time series, with the time series on\nthe left-hand side and the threshold on the\nright-hand side. Only COMPARISON_LT and\nCOMPARISON_GT are supported currently. Possible values: [\"COMPARISON_GT\", \"COMPARISON_GE\", \"COMPARISON_LT\", \"COMPARISON_LE\", \"COMPARISON_EQ\", \"COMPARISON_NE\"].","type":"string"},"denominatorAggregations":{"description":"Specifies the alignment of data points in\nindividual time series selected by\ndenominatorFilter as well as how to combine\nthe retrieved time series together (such as\nwhen aggregating multiple streams on each\nresource to a single stream for each\nresource or when aggregating streams across\nall members of a group of resources).When\ncomputing ratios, the aggregations and\ndenominator_aggregations fields must use the\nsame alignment period and produce time\nseries that have the same periodicity and\nlabels.This field is similar to the one in\nthe MetricService.ListTimeSeries request. It\nis advisable to use the ListTimeSeries\nmethod when debugging this field.","type":"array","items":{"type":"object","properties":{"alignmentPeriod":{"description":"The alignment period for per-time\nseries alignment. If present,\nalignmentPeriod must be at least\n60 seconds. After per-time series\nalignment, each time series will\ncontain data points only on the\nperiod boundaries. If\nperSeriesAligner is not specified\nor equals ALIGN_NONE, then this\nfield is ignored. If\nperSeriesAligner is specified and\ndoes not equal ALIGN_NONE, then\nthis field must be defined;\notherwise an error is returned.","type":"string"},"crossSeriesReducer":{"description":"The approach to be used to combine\ntime series. Not all reducer\nfunctions may be applied to all\ntime series, depending on the\nmetric type and the value type of\nthe original time series.\nReduction may change the metric\ntype of value type of the time\nseries.Time series data must be\naligned in order to perform cross-\ntime series reduction. If\ncrossSeriesReducer is specified,\nthen perSeriesAligner must be\nspecified and not equal ALIGN_NONE\nand alignmentPeriod must be\nspecified; otherwise, an error is\nreturned. Possible values: [\"REDUCE_NONE\", \"REDUCE_MEAN\", \"REDUCE_MIN\", \"REDUCE_MAX\", \"REDUCE_SUM\", \"REDUCE_STDDEV\", \"REDUCE_COUNT\", \"REDUCE_COUNT_TRUE\", \"REDUCE_COUNT_FALSE\", \"REDUCE_FRACTION_TRUE\", \"REDUCE_PERCENTILE_99\", \"REDUCE_PERCENTILE_95\", \"REDUCE_PERCENTILE_50\", \"REDUCE_PERCENTILE_05\"].","type":"string"},"groupByFields":{"description":"The set of fields to preserve when\ncrossSeriesReducer is specified.\nThe groupByFields determine how\nthe time series are partitioned\ninto subsets prior to applying the\naggregation function. Each subset\ncontains time series that have the\nsame value for each of the\ngrouping fields. Each individual\ntime series is a member of exactly\none subset. The crossSeriesReducer\nis applied to each subset of time\nseries. It is not possible to\nreduce across different resource\ntypes, so this field implicitly\ncontains resource.type. Fields not\nspecified in groupByFields are\naggregated away. If groupByFields\nis not specified and all the time\nseries have the same resource\ntype, then the time series are\naggregated into a single output\ntime series. If crossSeriesReducer\nis not defined, this field is\nignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"The approach to be used to align\nindividual time series. Not all\nalignment functions may be applied\nto all time series, depending on\nthe metric type and value type of\nthe original time series.\nAlignment may change the metric\ntype or the value type of the time\nseries.Time series data must be\naligned in order to perform cross-\ntime series reduction. If\ncrossSeriesReducer is specified,\nthen perSeriesAligner must be\nspecified and not equal ALIGN_NONE\nand alignmentPeriod must be\nspecified; otherwise, an error is\nreturned. Possible values: [\"ALIGN_NONE\", \"ALIGN_DELTA\", \"ALIGN_RATE\", \"ALIGN_INTERPOLATE\", \"ALIGN_NEXT_OLDER\", \"ALIGN_MIN\", \"ALIGN_MAX\", \"ALIGN_MEAN\", \"ALIGN_COUNT\", \"ALIGN_SUM\", \"ALIGN_STDDEV\", \"ALIGN_COUNT_TRUE\", \"ALIGN_COUNT_FALSE\", \"ALIGN_FRACTION_TRUE\", \"ALIGN_PERCENTILE_99\", \"ALIGN_PERCENTILE_95\", \"ALIGN_PERCENTILE_50\", \"ALIGN_PERCENTILE_05\", \"ALIGN_PERCENT_CHANGE\"].","type":"string"}}}},"denominatorFilter":{"description":"A filter that identifies a time series that\nshould be used as the denominator of a ratio\nthat will be compared with the threshold. If\na denominator_filter is specified, the time\nseries specified by the filter field will be\nused as the numerator.The filter is similar\nto the one that is specified in the\nMetricService.ListTimeSeries request (that\ncall is useful to verify the time series\nthat will be retrieved / processed) and must\nspecify the metric type and optionally may\ncontain restrictions on resource type,\nresource labels, and metric labels. This\nfield may not exceed 2048 Unicode characters\nin length.","type":"string"},"duration":{"description":"The amount of time that a time series must\nviolate the threshold to be considered\nfailing. Currently, only values that are a\nmultiple of a minute--e.g., 0, 60, 120, or\n300 seconds--are supported. If an invalid\nvalue is given, an error will be returned.\nWhen choosing a duration, it is useful to\nkeep in mind the frequency of the underlying\ntime series data (which may also be affected\nby any alignments specified in the\naggregations field); a good duration is long\nenough so that a single outlier does not\ngenerate spurious alerts, but short enough\nthat unhealthy states are detected and\nalerted on quickly.","type":"string"},"evaluationMissingData":{"description":"A condition control that determines how\nmetric-threshold conditions are evaluated when\ndata stops arriving. Possible values: [\"EVALUATION_MISSING_DATA_INACTIVE\", \"EVALUATION_MISSING_DATA_ACTIVE\", \"EVALUATION_MISSING_DATA_NO_OP\"].","type":"string"},"filter":{"description":"A filter that identifies which time series\nshould be compared with the threshold.The\nfilter is similar to the one that is\nspecified in the\nMetricService.ListTimeSeries request (that\ncall is useful to verify the time series\nthat will be retrieved / processed) and must\nspecify the metric type and optionally may\ncontain restrictions on resource type,\nresource labels, and metric labels. This\nfield may not exceed 2048 Unicode characters\nin length.","type":"string"},"thresholdValue":{"description":"A value against which to compare the time\nseries.","type":"number"},"trigger":{"description":"The number/percent of time series for which\nthe comparison must hold in order for the\ncondition to trigger. If unspecified, then\nthe condition will trigger if the comparison\nis true for any of the time series that have\nbeen identified by filter and aggregations,\nor by the ratio, if denominator_filter and\ndenominator_aggregations are specified.","type":"object","properties":{"count":{"description":"The absolute number of time series\nthat must fail the predicate for the\ncondition to be triggered.","type":"integer"},"percent":{"description":"The percentage of time series that\nmust fail the predicate for the\ncondition to be triggered.","type":"number"}}}}},"displayName":{"description":"A short name or phrase used to identify the\ncondition in dashboards, notifications, and\nincidents. To avoid confusion, don't use the same\ndisplay name for multiple conditions in the same\npolicy.","type":"string"},"name":{"description":"The unique resource name for this condition.\nIts syntax is:\nprojects/[PROJECT_ID]/alertPolicies/[POLICY_ID]/conditions/[CONDITION_ID]\n[CONDITION_ID] is assigned by Stackdriver Monitoring when\nthe condition is created as part of a new or updated alerting\npolicy.","type":"string"}}}},"displayName":{"description":"A short name or phrase used to identify the policy in\ndashboards, notifications, and incidents. To avoid confusion, don't use\nthe same display name for multiple policies in the same project. The\nname is limited to 512 Unicode characters.","type":"string"},"documentation":{"description":"Documentation that is included with notifications and incidents related\nto this policy. Best practice is for the documentation to include information\nto help responders understand, mitigate, escalate, and correct the underlying\nproblems detected by the alerting policy. Notification channels that have\nlimited capacity might not show this documentation.","type":"object","properties":{"content":{"description":"The text of the documentation, interpreted according to mimeType.\nThe content may not exceed 8,192 Unicode characters and may not\nexceed more than 10,240 bytes when encoded in UTF-8 format,\nwhichever is smaller.","type":"string"},"mimeType":{"description":"The format of the content field. Presently, only the value\n\"text/markdown\" is supported.","type":"string"}}},"enabled":{"description":"Whether or not the policy is enabled. The default is true.","type":"boolean"},"notificationChannels":{"type":"array","items":{"description":"Identifies the notification channels to which notifications should be sent when incidents are opened or closed or when new violations occur on an already opened incident.","type":"object","properties":{"external":{"description":"Allowed value: The `name` field of a `MonitoringNotificationChannel` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}},"resourceID":{"description":"Immutable. Optional. The service-generated name of the resource. Used for acquisition only. Leave unset to create a new resource.","type":"string"}}},"status":{"type":"object","properties":{"conditions":{"description":"Conditions represent the latest available observation of the resource's current state.","type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","type":"string"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"Status is the status of the condition. Can be True, False, Unknown.","type":"string"},"type":{"description":"Type is the type of the condition.","type":"string"}}}},"creationRecord":{"description":"A read-only record of the creation of the alerting policy.\nIf provided in a call to create or update, this field will\nbe ignored.","type":"array","items":{"type":"object","properties":{"mutateTime":{"description":"When the change occurred.","type":"string"},"mutatedBy":{"description":"The email address of the user making the change.","type":"string"}}}},"name":{"description":"The unique resource name for this policy.\nIts syntax is: projects/[PROJECT_ID]/alertPolicies/[ALERT_POLICY_ID].","type":"string"},"observedGeneration":{"description":"ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.","type":"integer"}}}},"x-kubernetes-group-version-kind":[{"group":"monitoring.cnrm.cloud.google.com","kind":"MonitoringAlertPolicy","version":"v1beta1"}]},"com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicyList":{"description":"MonitoringAlertPolicyList is a list of MonitoringAlertPolicy","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of monitoringalertpolicies. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicy"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"monitoring.cnrm.cloud.google.com","kind":"MonitoringAlertPolicyList","version":"v1beta1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition":{"description":"CustomResourceColumnDefinition specifies a column for server side printing.","type":"object","required":["name","type","jsonPath"],"properties":{"description":{"description":"description is a human readable description of this column.","type":"string"},"format":{"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.","type":"string"},"jsonPath":{"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.","type":"string","default":""},"name":{"description":"name is a human readable name for the column.","type":"string","default":""},"priority":{"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.","type":"integer","format":"int32"},"type":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion":{"description":"CustomResourceConversion describes how to convert different versions of a CR.","type":"object","required":["strategy"],"properties":{"strategy":{"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.","type":"string","default":""},"webhook":{"description":"webhook describes how to call the conversion webhook. Required when `strategy` is set to `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition":{"description":"CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format \u003c.spec.name\u003e.\u003c.spec.group\u003e.","type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"spec describes how the user wants the resources to appear","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec"},"status":{"description":"status indicates the actual state of the CustomResourceDefinition","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus"}},"x-kubernetes-group-version-kind":[{"group":"apiextensions.k8s.io","kind":"CustomResourceDefinition","version":"v1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition":{"description":"CustomResourceDefinitionCondition contains details for the current condition of this pod.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"lastTransitionTime last time the condition transitioned from one status to another.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"message is a human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"reason is a unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"status is the status of the condition. Can be True, False, Unknown.","type":"string","default":""},"type":{"description":"type is the type of the condition. Types include Established, NamesAccepted and Terminating.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames":{"description":"CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition","type":"object","required":["plural","kind"],"properties":{"categories":{"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`.","type":"array","items":{"type":"string","default":""}},"kind":{"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.","type":"string","default":""},"listKind":{"description":"listKind is the serialized kind of the list for this resource. Defaults to \"`kind`List\".","type":"string"},"plural":{"description":"plural is the plural name of the resource to serve. The custom resources are served under `/apis/\u003cgroup\u003e/\u003cversion\u003e/.../\u003cplural\u003e`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`). Must be all lowercase.","type":"string","default":""},"shortNames":{"description":"shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get \u003cshortname\u003e`. It must be all lowercase.","type":"array","items":{"type":"string","default":""}},"singular":{"description":"singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec":{"description":"CustomResourceDefinitionSpec describes how a user wants their resource to appear","type":"object","required":["group","names","scope","versions"],"properties":{"conversion":{"description":"conversion defines conversion settings for the CRD.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion"},"group":{"description":"group is the API group of the defined custom resource. The custom resources are served under `/apis/\u003cgroup\u003e/...`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`).","type":"string","default":""},"names":{"description":"names specify the resource and kind names for the custom resource.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"preserveUnknownFields":{"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.","type":"boolean"},"scope":{"description":"scope indicates whether the defined custom resource is cluster- or namespace-scoped. Allowed values are `Cluster` and `Namespaced`.","type":"string","default":""},"versions":{"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 \u003e beta \u003e 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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion"}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus":{"description":"CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition","type":"object","properties":{"acceptedNames":{"description":"acceptedNames are the names that are actually being used to serve discovery. They may be different than the names in spec.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"conditions":{"description":"conditions indicate state for particular aspects of a CustomResourceDefinition","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition"},"x-kubernetes-list-map-keys":["type"],"x-kubernetes-list-type":"map"},"storedVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion":{"description":"CustomResourceDefinitionVersion describes a version for CRD.","type":"object","required":["name","served","storage"],"properties":{"additionalPrinterColumns":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition"}},"deprecated":{"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.","type":"boolean"},"deprecationWarning":{"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.","type":"string"},"name":{"description":"name is the version name, e.g. “v1â€, “v2beta1â€, etc. The custom resources are served under this version at `/apis/\u003cgroup\u003e/\u003cversion\u003e/...` if `served` is true.","type":"string","default":""},"schema":{"description":"schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation"},"served":{"description":"served is a flag enabling/disabling this version from being served via REST APIs","type":"boolean","default":false},"storage":{"description":"storage indicates this version should be used when persisting custom resources to storage. There must be exactly one version with storage=true.","type":"boolean","default":false},"subresources":{"description":"subresources specify what subresources this version of the defined custom resource have.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale":{"description":"CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.","type":"object","required":["specReplicasPath","statusReplicasPath"],"properties":{"labelSelectorPath":{"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.","type":"string"},"specReplicasPath":{"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.","type":"string","default":""},"statusReplicasPath":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus":{"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","type":"object"},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources":{"description":"CustomResourceSubresources defines the status and scale subresources for CustomResources.","type":"object","properties":{"scale":{"description":"scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale"},"status":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation":{"description":"CustomResourceValidation is a list of validation methods for CustomResources.","type":"object","properties":{"openAPIV3Schema":{"description":"openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation":{"description":"ExternalDocumentation allows referencing an external resource for extended documentation.","type":"object","properties":{"description":{"type":"string"},"url":{"type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON":{"description":"JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps":{"description":"JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).","type":"object","properties":{"$ref":{"type":"string"},"$schema":{"type":"string"},"additionalItems":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"additionalProperties":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"allOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"anyOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"default":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"definitions":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"dependencies":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray"}},"description":{"type":"string"},"enum":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"}},"example":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"exclusiveMaximum":{"type":"boolean"},"exclusiveMinimum":{"type":"boolean"},"externalDocs":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation"},"format":{"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.","type":"string"},"id":{"type":"string"},"items":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray"},"maxItems":{"type":"integer","format":"int64"},"maxLength":{"type":"integer","format":"int64"},"maxProperties":{"type":"integer","format":"int64"},"maximum":{"type":"number","format":"double"},"minItems":{"type":"integer","format":"int64"},"minLength":{"type":"integer","format":"int64"},"minProperties":{"type":"integer","format":"int64"},"minimum":{"type":"number","format":"double"},"multipleOf":{"type":"number","format":"double"},"not":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"},"nullable":{"type":"boolean"},"oneOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"pattern":{"type":"string"},"patternProperties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"properties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"required":{"type":"array","items":{"type":"string","default":""}},"title":{"type":"string"},"type":{"type":"string"},"uniqueItems":{"type":"boolean"},"x-kubernetes-embedded-resource":{"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).","type":"boolean"},"x-kubernetes-int-or-string":{"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","type":"boolean"},"x-kubernetes-list-map-keys":{"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.","type":"array","items":{"type":"string","default":""}},"x-kubernetes-list-type":{"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.","type":"string"},"x-kubernetes-map-type":{"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.","type":"string"},"x-kubernetes-preserve-unknown-fields":{"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.","type":"boolean"},"x-kubernetes-validations":{"description":"x-kubernetes-validations describes a list of validation rules written in the CEL expression language. This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule"},"x-kubernetes-list-map-keys":["rule"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"rule","x-kubernetes-patch-strategy":"merge"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray":{"description":"JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool":{"description":"JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray":{"description":"JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference":{"description":"ServiceReference holds a reference to Service.legacy.k8s.io","type":"object","required":["namespace","name"],"properties":{"name":{"description":"name is the name of the service. Required","type":"string","default":""},"namespace":{"description":"namespace is the namespace of the service. Required","type":"string","default":""},"path":{"description":"path is an optional URL path at which the webhook will be contacted.","type":"string"},"port":{"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.","type":"integer","format":"int32"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule":{"description":"ValidationRule describes a validation rule written in the CEL expression language.","type":"object","required":["rule"],"properties":{"message":{"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\"","type":"string"},"rule":{"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 \u003c= 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 \u003c 10\"} - Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value \u003e= 0 \u0026\u0026 value \u003c 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__ \u003e 0\"}\n - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop \u003e 0\"}\n - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d \u003e 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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig":{"description":"WebhookClientConfig contains the information to make a TLS connection with the webhook.","type":"object","properties":{"caBundle":{"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.","type":"string","format":"byte"},"service":{"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`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference"},"url":{"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.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion":{"description":"WebhookConversion describes how to call a conversion webhook","type":"object","required":["conversionReviewVersions"],"properties":{"clientConfig":{"description":"clientConfig is the instructions for how to call the webhook if strategy is `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig"},"conversionReviewVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"},"propagationPolicy":{"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.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"creationTimestamp":{"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","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"},"reason":{"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.","type":"string"},"status":{"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","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"}},"securityDefinitions":{"BearerToken":{"description":"Bearer Token authentication","type":"apiKey","name":"authorization","in":"header"}},"security":[{"BearerToken":[]}]}monitoring_v1beta1_monitoringdashboard.json000066400000000000000000011217141453663023200404440ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv2{"swagger":"2.0","info":{"title":"Kubernetes","version":"v1.27.0"},"paths":{"/apis/monitoring.cnrm.cloud.google.com/v1beta1/monitoringdashboards":{"get":{"description":"list objects of kind MonitoringDashboard","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"listMonitoringCnrmCloudGoogleComV1beta1MonitoringDashboardForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboardList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringDashboard"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]},"/apis/monitoring.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/monitoringdashboards":{"get":{"description":"list objects of kind MonitoringDashboard","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"listMonitoringCnrmCloudGoogleComV1beta1NamespacedMonitoringDashboard","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboardList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringDashboard"}},"post":{"description":"create a MonitoringDashboard","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"createMonitoringCnrmCloudGoogleComV1beta1NamespacedMonitoringDashboard","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboard"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboard"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboard"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboard"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringDashboard"}},"delete":{"description":"delete collection of MonitoringDashboard","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"deleteMonitoringCnrmCloudGoogleComV1beta1CollectionNamespacedMonitoringDashboard","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringDashboard"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/monitoring.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/monitoringdashboards/{name}":{"get":{"description":"read the specified MonitoringDashboard","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"readMonitoringCnrmCloudGoogleComV1beta1NamespacedMonitoringDashboard","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboard"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringDashboard"}},"put":{"description":"replace the specified MonitoringDashboard","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"replaceMonitoringCnrmCloudGoogleComV1beta1NamespacedMonitoringDashboard","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboard"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboard"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboard"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringDashboard"}},"delete":{"description":"delete a MonitoringDashboard","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"deleteMonitoringCnrmCloudGoogleComV1beta1NamespacedMonitoringDashboard","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringDashboard"}},"patch":{"description":"partially update the specified MonitoringDashboard","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"patchMonitoringCnrmCloudGoogleComV1beta1NamespacedMonitoringDashboard","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboard"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringDashboard"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the MonitoringDashboard","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/monitoring.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/monitoringdashboards/{name}/status":{"get":{"description":"read status of the specified MonitoringDashboard","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"readMonitoringCnrmCloudGoogleComV1beta1NamespacedMonitoringDashboardStatus","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboard"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringDashboard"}},"put":{"description":"replace status of the specified MonitoringDashboard","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"replaceMonitoringCnrmCloudGoogleComV1beta1NamespacedMonitoringDashboardStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboard"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboard"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboard"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringDashboard"}},"patch":{"description":"partially update status of the specified MonitoringDashboard","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["monitoringCnrmCloudGoogleCom_v1beta1"],"operationId":"patchMonitoringCnrmCloudGoogleComV1beta1NamespacedMonitoringDashboardStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboard"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"monitoring.cnrm.cloud.google.com","version":"v1beta1","kind":"MonitoringDashboard"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the MonitoringDashboard","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]}},"definitions":{"com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboard":{"type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"type":"object","properties":{"columnLayout":{"description":"The content is divided into equally spaced columns and the widgets are arranged vertically.","type":"object","properties":{"columns":{"description":"The columns of content to display.","type":"array","items":{"type":"object","properties":{"weight":{"description":"The relative weight of this column. The column weight is used to adjust the width of columns on the screen (relative to peers). Greater the weight, greater the width of the column on the screen. If omitted, a value of 1 is used while rendering.","type":"integer"},"widgets":{"description":"The display widgets arranged vertically in this column.","type":"array","items":{"type":"object","properties":{"blank":{"description":"A blank space.","type":"object","x-kubernetes-preserve-unknown-fields":true},"logsPanel":{"type":"object","properties":{"filter":{"description":"A filter that chooses which log entries to return. See [Advanced Logs Queries](https://cloud.google.com/logging/docs/view/advanced-queries). Only log entries that match the filter are returned. An empty filter matches all log entries.","type":"string"},"resourceNames":{"type":"array","items":{"type":"object","properties":{"external":{"description":"Allowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}},"scorecard":{"description":"A scorecard summarizing time series data.","type":"object","properties":{"gaugeView":{"description":"Will cause the scorecard to show a gauge chart.","type":"object","properties":{"lowerBound":{"description":"The lower bound for this gauge chart. The value of the chart should always be greater than or equal to this.","type":"number"},"upperBound":{"description":"The upper bound for this gauge chart. The value of the chart should always be less than or equal to this.","type":"number"}}},"sparkChartView":{"description":"Will cause the scorecard to show a spark chart.","type":"object","properties":{"minAlignmentPeriod":{"description":"The lower bound on data point frequency in the chart implemented by specifying the minimum alignment period to use in a time series query. For example, if the data is published once every 10 minutes it would not make sense to fetch and align data at one minute intervals. This field is optional and exists only as a hint.","type":"string"},"sparkChartType":{"description":"Required. The type of sparkchart to show in this chartView. Possible values: SPARK_CHART_TYPE_UNSPECIFIED, SPARK_LINE, SPARK_BAR","type":"string"}}},"thresholds":{"description":"The thresholds used to determine the state of the scorecard given the time series' current value. For an actual value x, the scorecard is in a danger state if x is less than or equal to a danger threshold that triggers below, or greater than or equal to a danger threshold that triggers above. Similarly, if x is above/below a warning threshold that triggers above/below, then the scorecard is in a warning state - unless x also puts it in a danger state. (Danger trumps warning.) As an example, consider a scorecard with the following four thresholds: { value: 90, category: 'DANGER', trigger: 'ABOVE', },: { value: 70, category: 'WARNING', trigger: 'ABOVE', }, { value: 10, category: 'DANGER', trigger: 'BELOW', }, { value: 20, category: 'WARNING', trigger: 'BELOW', } Then: values less than or equal to 10 would put the scorecard in a DANGER state, values greater than 10 but less than or equal to 20 a WARNING state, values strictly between 20 and 70 an OK state, values greater than or equal to 70 but less than 90 a WARNING state, and values greater than or equal to 90 a DANGER state.","type":"array","items":{"type":"object","properties":{"color":{"description":"The state color for this threshold. Color is not allowed in a XyChart. Possible values: COLOR_UNSPECIFIED, GREY, BLUE, GREEN, YELLOW, ORANGE, RED","type":"string"},"direction":{"description":"The direction for the current threshold. Direction is not allowed in a XyChart. Possible values: DIRECTION_UNSPECIFIED, ABOVE, BELOW","type":"string"},"label":{"description":"A label for the threshold.","type":"string"},"value":{"description":"The value of the threshold. The value should be defined in the native scale of the metric.","type":"number"}}}},"timeSeriesQuery":{"description":"Required. Fields for querying time series data from the Stackdriver metrics API.","type":"object","properties":{"timeSeriesFilter":{"description":"Filter parameters to fetch time series.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after `aggregation` is applied.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesFilterRatio":{"description":"Parameters to fetch a ratio between two time series filters.","type":"object","properties":{"denominator":{"description":"The denominator of the ratio.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"numerator":{"description":"The numerator of the ratio.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after the ratio is computed.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesQueryLanguage":{"description":"A query used to fetch time series.","type":"string"},"unitOverride":{"description":"The unit of data contained in fetched time series. If non-empty, this unit will override any unit that accompanies fetched data. The format is the same as the [`unit`](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) field in `MetricDescriptor`.","type":"string"}}}}},"text":{"description":"A raw string or markdown displaying textual content.","type":"object","properties":{"content":{"description":"The text content to be displayed.","type":"string"},"format":{"description":"How the text content is formatted. Possible values: FORMAT_UNSPECIFIED, MARKDOWN, RAW","type":"string"}}},"title":{"description":"Optional. The title of the widget.","type":"string"},"xyChart":{"description":"A chart of time series data.","type":"object","properties":{"chartOptions":{"description":"Display options for the chart.","type":"object","properties":{"mode":{"description":"The chart mode. Possible values: MODE_UNSPECIFIED, COLOR, X_RAY, STATS","type":"string"}}},"dataSets":{"description":"Required. The data displayed in this chart.","type":"array","items":{"type":"object","properties":{"legendTemplate":{"description":"A template string for naming `TimeSeries` in the resulting data set. This should be a string with interpolations of the form `${label_name}`, which will resolve to the label's value. ","type":"string"},"minAlignmentPeriod":{"description":"Optional. The lower bound on data point frequency for this data set, implemented by specifying the minimum alignment period to use in a time series query For example, if the data is published once every 10 minutes, the `min_alignment_period` should be at least 10 minutes. It would not make sense to fetch and align data at one minute intervals.","type":"string"},"plotType":{"description":"How this data should be plotted on the chart. Possible values: PLOT_TYPE_UNSPECIFIED, LINE, STACKED_AREA, STACKED_BAR, HEATMAP","type":"string"},"timeSeriesQuery":{"description":"Required. Fields for querying time series data from the Stackdriver metrics API.","type":"object","properties":{"timeSeriesFilter":{"description":"Filter parameters to fetch time series.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after `aggregation` is applied.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesFilterRatio":{"description":"Parameters to fetch a ratio between two time series filters.","type":"object","properties":{"denominator":{"description":"The denominator of the ratio.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"numerator":{"description":"The numerator of the ratio.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after the ratio is computed.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesQueryLanguage":{"description":"A query used to fetch time series.","type":"string"},"unitOverride":{"description":"The unit of data contained in fetched time series. If non-empty, this unit will override any unit that accompanies fetched data. The format is the same as the [`unit`](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) field in `MetricDescriptor`.","type":"string"}}}}}},"thresholds":{"description":"Threshold lines drawn horizontally across the chart.","type":"array","items":{"type":"object","properties":{"color":{"description":"The state color for this threshold. Color is not allowed in a XyChart. Possible values: COLOR_UNSPECIFIED, GREY, BLUE, GREEN, YELLOW, ORANGE, RED","type":"string"},"direction":{"description":"The direction for the current threshold. Direction is not allowed in a XyChart. Possible values: DIRECTION_UNSPECIFIED, ABOVE, BELOW","type":"string"},"label":{"description":"A label for the threshold.","type":"string"},"value":{"description":"The value of the threshold. The value should be defined in the native scale of the metric.","type":"number"}}}},"timeshiftDuration":{"description":"The duration used to display a comparison chart. A comparison chart simultaneously shows values from two similar-length time periods (e.g., week-over-week metrics). The duration must be positive, and it can only be applied to charts with data sets of LINE plot type.","type":"string"},"xAxis":{"description":"The properties applied to the X axis.","type":"object","properties":{"label":{"description":"The label of the axis.","type":"string"},"scale":{"description":"The axis scale. By default, a linear scale is used. Possible values: SCALE_UNSPECIFIED, LINEAR, LOG10","type":"string"}}},"yAxis":{"description":"The properties applied to the Y axis.","type":"object","properties":{"label":{"description":"The label of the axis.","type":"string"},"scale":{"description":"The axis scale. By default, a linear scale is used. Possible values: SCALE_UNSPECIFIED, LINEAR, LOG10","type":"string"}}}}}}}}}}}}},"displayName":{"description":"Required. The mutable, human-readable name.","type":"string"},"gridLayout":{"description":"Content is arranged with a basic layout that re-flows a simple list of informational elements like widgets or tiles.","type":"object","properties":{"columns":{"description":"The number of columns into which the view's width is divided. If omitted or set to zero, a system default will be used while rendering.","type":"integer"},"widgets":{"description":"The informational elements that are arranged into the columns row-first.","type":"array","items":{"type":"object","properties":{"blank":{"description":"A blank space.","type":"object","x-kubernetes-preserve-unknown-fields":true},"logsPanel":{"type":"object","properties":{"filter":{"description":"A filter that chooses which log entries to return. See [Advanced Logs Queries](https://cloud.google.com/logging/docs/view/advanced-queries). Only log entries that match the filter are returned. An empty filter matches all log entries.","type":"string"},"resourceNames":{"type":"array","items":{"type":"object","properties":{"external":{"description":"Allowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}},"scorecard":{"description":"A scorecard summarizing time series data.","type":"object","properties":{"gaugeView":{"description":"Will cause the scorecard to show a gauge chart.","type":"object","properties":{"lowerBound":{"description":"The lower bound for this gauge chart. The value of the chart should always be greater than or equal to this.","type":"number"},"upperBound":{"description":"The upper bound for this gauge chart. The value of the chart should always be less than or equal to this.","type":"number"}}},"sparkChartView":{"description":"Will cause the scorecard to show a spark chart.","type":"object","properties":{"minAlignmentPeriod":{"description":"The lower bound on data point frequency in the chart implemented by specifying the minimum alignment period to use in a time series query. For example, if the data is published once every 10 minutes it would not make sense to fetch and align data at one minute intervals. This field is optional and exists only as a hint.","type":"string"},"sparkChartType":{"description":"Required. The type of sparkchart to show in this chartView. Possible values: SPARK_CHART_TYPE_UNSPECIFIED, SPARK_LINE, SPARK_BAR","type":"string"}}},"thresholds":{"description":"The thresholds used to determine the state of the scorecard given the time series' current value. For an actual value x, the scorecard is in a danger state if x is less than or equal to a danger threshold that triggers below, or greater than or equal to a danger threshold that triggers above. Similarly, if x is above/below a warning threshold that triggers above/below, then the scorecard is in a warning state - unless x also puts it in a danger state. (Danger trumps warning.) As an example, consider a scorecard with the following four thresholds: { value: 90, category: 'DANGER', trigger: 'ABOVE', },: { value: 70, category: 'WARNING', trigger: 'ABOVE', }, { value: 10, category: 'DANGER', trigger: 'BELOW', }, { value: 20, category: 'WARNING', trigger: 'BELOW', } Then: values less than or equal to 10 would put the scorecard in a DANGER state, values greater than 10 but less than or equal to 20 a WARNING state, values strictly between 20 and 70 an OK state, values greater than or equal to 70 but less than 90 a WARNING state, and values greater than or equal to 90 a DANGER state.","type":"array","items":{"type":"object","properties":{"color":{"description":"The state color for this threshold. Color is not allowed in a XyChart. Possible values: COLOR_UNSPECIFIED, GREY, BLUE, GREEN, YELLOW, ORANGE, RED","type":"string"},"direction":{"description":"The direction for the current threshold. Direction is not allowed in a XyChart. Possible values: DIRECTION_UNSPECIFIED, ABOVE, BELOW","type":"string"},"label":{"description":"A label for the threshold.","type":"string"},"value":{"description":"The value of the threshold. The value should be defined in the native scale of the metric.","type":"number"}}}},"timeSeriesQuery":{"description":"Required. Fields for querying time series data from the Stackdriver metrics API.","type":"object","properties":{"timeSeriesFilter":{"description":"Filter parameters to fetch time series.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after `aggregation` is applied.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesFilterRatio":{"description":"Parameters to fetch a ratio between two time series filters.","type":"object","properties":{"denominator":{"description":"The denominator of the ratio.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"numerator":{"description":"The numerator of the ratio.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after the ratio is computed.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesQueryLanguage":{"description":"A query used to fetch time series.","type":"string"},"unitOverride":{"description":"The unit of data contained in fetched time series. If non-empty, this unit will override any unit that accompanies fetched data. The format is the same as the [`unit`](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) field in `MetricDescriptor`.","type":"string"}}}}},"text":{"description":"A raw string or markdown displaying textual content.","type":"object","properties":{"content":{"description":"The text content to be displayed.","type":"string"},"format":{"description":"How the text content is formatted. Possible values: FORMAT_UNSPECIFIED, MARKDOWN, RAW","type":"string"}}},"title":{"description":"Optional. The title of the widget.","type":"string"},"xyChart":{"description":"A chart of time series data.","type":"object","properties":{"chartOptions":{"description":"Display options for the chart.","type":"object","properties":{"mode":{"description":"The chart mode. Possible values: MODE_UNSPECIFIED, COLOR, X_RAY, STATS","type":"string"}}},"dataSets":{"description":"Required. The data displayed in this chart.","type":"array","items":{"type":"object","properties":{"legendTemplate":{"description":"A template string for naming `TimeSeries` in the resulting data set. This should be a string with interpolations of the form `${label_name}`, which will resolve to the label's value. ","type":"string"},"minAlignmentPeriod":{"description":"Optional. The lower bound on data point frequency for this data set, implemented by specifying the minimum alignment period to use in a time series query For example, if the data is published once every 10 minutes, the `min_alignment_period` should be at least 10 minutes. It would not make sense to fetch and align data at one minute intervals.","type":"string"},"plotType":{"description":"How this data should be plotted on the chart. Possible values: PLOT_TYPE_UNSPECIFIED, LINE, STACKED_AREA, STACKED_BAR, HEATMAP","type":"string"},"timeSeriesQuery":{"description":"Required. Fields for querying time series data from the Stackdriver metrics API.","type":"object","properties":{"timeSeriesFilter":{"description":"Filter parameters to fetch time series.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after `aggregation` is applied.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesFilterRatio":{"description":"Parameters to fetch a ratio between two time series filters.","type":"object","properties":{"denominator":{"description":"The denominator of the ratio.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"numerator":{"description":"The numerator of the ratio.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after the ratio is computed.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesQueryLanguage":{"description":"A query used to fetch time series.","type":"string"},"unitOverride":{"description":"The unit of data contained in fetched time series. If non-empty, this unit will override any unit that accompanies fetched data. The format is the same as the [`unit`](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) field in `MetricDescriptor`.","type":"string"}}}}}},"thresholds":{"description":"Threshold lines drawn horizontally across the chart.","type":"array","items":{"type":"object","properties":{"color":{"description":"The state color for this threshold. Color is not allowed in a XyChart. Possible values: COLOR_UNSPECIFIED, GREY, BLUE, GREEN, YELLOW, ORANGE, RED","type":"string"},"direction":{"description":"The direction for the current threshold. Direction is not allowed in a XyChart. Possible values: DIRECTION_UNSPECIFIED, ABOVE, BELOW","type":"string"},"label":{"description":"A label for the threshold.","type":"string"},"value":{"description":"The value of the threshold. The value should be defined in the native scale of the metric.","type":"number"}}}},"timeshiftDuration":{"description":"The duration used to display a comparison chart. A comparison chart simultaneously shows values from two similar-length time periods (e.g., week-over-week metrics). The duration must be positive, and it can only be applied to charts with data sets of LINE plot type.","type":"string"},"xAxis":{"description":"The properties applied to the X axis.","type":"object","properties":{"label":{"description":"The label of the axis.","type":"string"},"scale":{"description":"The axis scale. By default, a linear scale is used. Possible values: SCALE_UNSPECIFIED, LINEAR, LOG10","type":"string"}}},"yAxis":{"description":"The properties applied to the Y axis.","type":"object","properties":{"label":{"description":"The label of the axis.","type":"string"},"scale":{"description":"The axis scale. By default, a linear scale is used. Possible values: SCALE_UNSPECIFIED, LINEAR, LOG10","type":"string"}}}}}}}}}},"mosaicLayout":{"description":"The content is arranged as a grid of tiles, with each content widget occupying one or more tiles.","type":"object","properties":{"columns":{"description":"The number of columns in the mosaic grid.","type":"integer"},"tiles":{"description":"The tiles to display.","type":"array","items":{"type":"object","properties":{"height":{"description":"The height of the tile, measured in grid squares.","type":"integer"},"widget":{"description":"The informational widget contained in the tile.","type":"object","properties":{"blank":{"description":"A blank space.","type":"object","x-kubernetes-preserve-unknown-fields":true},"logsPanel":{"type":"object","properties":{"filter":{"description":"A filter that chooses which log entries to return. See [Advanced Logs Queries](https://cloud.google.com/logging/docs/view/advanced-queries). Only log entries that match the filter are returned. An empty filter matches all log entries.","type":"string"},"resourceNames":{"type":"array","items":{"type":"object","properties":{"external":{"description":"Allowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}},"scorecard":{"description":"A scorecard summarizing time series data.","type":"object","properties":{"gaugeView":{"description":"Will cause the scorecard to show a gauge chart.","type":"object","properties":{"lowerBound":{"description":"The lower bound for this gauge chart. The value of the chart should always be greater than or equal to this.","type":"number"},"upperBound":{"description":"The upper bound for this gauge chart. The value of the chart should always be less than or equal to this.","type":"number"}}},"sparkChartView":{"description":"Will cause the scorecard to show a spark chart.","type":"object","properties":{"minAlignmentPeriod":{"description":"The lower bound on data point frequency in the chart implemented by specifying the minimum alignment period to use in a time series query. For example, if the data is published once every 10 minutes it would not make sense to fetch and align data at one minute intervals. This field is optional and exists only as a hint.","type":"string"},"sparkChartType":{"description":"Required. The type of sparkchart to show in this chartView. Possible values: SPARK_CHART_TYPE_UNSPECIFIED, SPARK_LINE, SPARK_BAR","type":"string"}}},"thresholds":{"description":"The thresholds used to determine the state of the scorecard given the time series' current value. For an actual value x, the scorecard is in a danger state if x is less than or equal to a danger threshold that triggers below, or greater than or equal to a danger threshold that triggers above. Similarly, if x is above/below a warning threshold that triggers above/below, then the scorecard is in a warning state - unless x also puts it in a danger state. (Danger trumps warning.) As an example, consider a scorecard with the following four thresholds: { value: 90, category: 'DANGER', trigger: 'ABOVE', },: { value: 70, category: 'WARNING', trigger: 'ABOVE', }, { value: 10, category: 'DANGER', trigger: 'BELOW', }, { value: 20, category: 'WARNING', trigger: 'BELOW', } Then: values less than or equal to 10 would put the scorecard in a DANGER state, values greater than 10 but less than or equal to 20 a WARNING state, values strictly between 20 and 70 an OK state, values greater than or equal to 70 but less than 90 a WARNING state, and values greater than or equal to 90 a DANGER state.","type":"array","items":{"type":"object","properties":{"color":{"description":"The state color for this threshold. Color is not allowed in a XyChart. Possible values: COLOR_UNSPECIFIED, GREY, BLUE, GREEN, YELLOW, ORANGE, RED","type":"string"},"direction":{"description":"The direction for the current threshold. Direction is not allowed in a XyChart. Possible values: DIRECTION_UNSPECIFIED, ABOVE, BELOW","type":"string"},"label":{"description":"A label for the threshold.","type":"string"},"value":{"description":"The value of the threshold. The value should be defined in the native scale of the metric.","type":"number"}}}},"timeSeriesQuery":{"description":"Required. Fields for querying time series data from the Stackdriver metrics API.","type":"object","properties":{"timeSeriesFilter":{"description":"Filter parameters to fetch time series.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after `aggregation` is applied.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesFilterRatio":{"description":"Parameters to fetch a ratio between two time series filters.","type":"object","properties":{"denominator":{"description":"The denominator of the ratio.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"numerator":{"description":"The numerator of the ratio.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after the ratio is computed.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesQueryLanguage":{"description":"A query used to fetch time series.","type":"string"},"unitOverride":{"description":"The unit of data contained in fetched time series. If non-empty, this unit will override any unit that accompanies fetched data. The format is the same as the [`unit`](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) field in `MetricDescriptor`.","type":"string"}}}}},"text":{"description":"A raw string or markdown displaying textual content.","type":"object","properties":{"content":{"description":"The text content to be displayed.","type":"string"},"format":{"description":"How the text content is formatted. Possible values: FORMAT_UNSPECIFIED, MARKDOWN, RAW","type":"string"}}},"title":{"description":"Optional. The title of the widget.","type":"string"},"xyChart":{"description":"A chart of time series data.","type":"object","properties":{"chartOptions":{"description":"Display options for the chart.","type":"object","properties":{"mode":{"description":"The chart mode. Possible values: MODE_UNSPECIFIED, COLOR, X_RAY, STATS","type":"string"}}},"dataSets":{"description":"Required. The data displayed in this chart.","type":"array","items":{"type":"object","properties":{"legendTemplate":{"description":"A template string for naming `TimeSeries` in the resulting data set. This should be a string with interpolations of the form `${label_name}`, which will resolve to the label's value. ","type":"string"},"minAlignmentPeriod":{"description":"Optional. The lower bound on data point frequency for this data set, implemented by specifying the minimum alignment period to use in a time series query For example, if the data is published once every 10 minutes, the `min_alignment_period` should be at least 10 minutes. It would not make sense to fetch and align data at one minute intervals.","type":"string"},"plotType":{"description":"How this data should be plotted on the chart. Possible values: PLOT_TYPE_UNSPECIFIED, LINE, STACKED_AREA, STACKED_BAR, HEATMAP","type":"string"},"timeSeriesQuery":{"description":"Required. Fields for querying time series data from the Stackdriver metrics API.","type":"object","properties":{"timeSeriesFilter":{"description":"Filter parameters to fetch time series.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after `aggregation` is applied.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesFilterRatio":{"description":"Parameters to fetch a ratio between two time series filters.","type":"object","properties":{"denominator":{"description":"The denominator of the ratio.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"numerator":{"description":"The numerator of the ratio.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after the ratio is computed.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesQueryLanguage":{"description":"A query used to fetch time series.","type":"string"},"unitOverride":{"description":"The unit of data contained in fetched time series. If non-empty, this unit will override any unit that accompanies fetched data. The format is the same as the [`unit`](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) field in `MetricDescriptor`.","type":"string"}}}}}},"thresholds":{"description":"Threshold lines drawn horizontally across the chart.","type":"array","items":{"type":"object","properties":{"color":{"description":"The state color for this threshold. Color is not allowed in a XyChart. Possible values: COLOR_UNSPECIFIED, GREY, BLUE, GREEN, YELLOW, ORANGE, RED","type":"string"},"direction":{"description":"The direction for the current threshold. Direction is not allowed in a XyChart. Possible values: DIRECTION_UNSPECIFIED, ABOVE, BELOW","type":"string"},"label":{"description":"A label for the threshold.","type":"string"},"value":{"description":"The value of the threshold. The value should be defined in the native scale of the metric.","type":"number"}}}},"timeshiftDuration":{"description":"The duration used to display a comparison chart. A comparison chart simultaneously shows values from two similar-length time periods (e.g., week-over-week metrics). The duration must be positive, and it can only be applied to charts with data sets of LINE plot type.","type":"string"},"xAxis":{"description":"The properties applied to the X axis.","type":"object","properties":{"label":{"description":"The label of the axis.","type":"string"},"scale":{"description":"The axis scale. By default, a linear scale is used. Possible values: SCALE_UNSPECIFIED, LINEAR, LOG10","type":"string"}}},"yAxis":{"description":"The properties applied to the Y axis.","type":"object","properties":{"label":{"description":"The label of the axis.","type":"string"},"scale":{"description":"The axis scale. By default, a linear scale is used. Possible values: SCALE_UNSPECIFIED, LINEAR, LOG10","type":"string"}}}}}}},"width":{"description":"The width of the tile, measured in grid squares.","type":"integer"},"xPos":{"description":"The zero-indexed position of the tile in grid squares relative to the left edge of the grid.","type":"integer"},"yPos":{"description":"The zero-indexed position of the tile in grid squares relative to the top edge of the grid.","type":"integer"}}}}}},"projectRef":{"description":"Immutable. The Project that this resource belongs to.","type":"object","properties":{"external":{"description":"The project id of the resource.\n\nAllowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"resourceID":{"description":"Immutable. Optional. The name of the resource. Used for creation and acquisition. When unset, the value of `metadata.name` is used as the default.","type":"string"},"rowLayout":{"description":"The content is divided into equally spaced rows and the widgets are arranged horizontally.","type":"object","properties":{"rows":{"description":"The rows of content to display.","type":"array","items":{"type":"object","properties":{"weight":{"description":"The relative weight of this row. The row weight is used to adjust the height of rows on the screen (relative to peers). Greater the weight, greater the height of the row on the screen. If omitted, a value of 1 is used while rendering.","type":"integer"},"widgets":{"description":"The display widgets arranged horizontally in this row.","type":"array","items":{"type":"object","properties":{"blank":{"description":"A blank space.","type":"object","x-kubernetes-preserve-unknown-fields":true},"logsPanel":{"type":"object","properties":{"filter":{"description":"A filter that chooses which log entries to return. See [Advanced Logs Queries](https://cloud.google.com/logging/docs/view/advanced-queries). Only log entries that match the filter are returned. An empty filter matches all log entries.","type":"string"},"resourceNames":{"type":"array","items":{"type":"object","properties":{"external":{"description":"Allowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}},"scorecard":{"description":"A scorecard summarizing time series data.","type":"object","properties":{"gaugeView":{"description":"Will cause the scorecard to show a gauge chart.","type":"object","properties":{"lowerBound":{"description":"The lower bound for this gauge chart. The value of the chart should always be greater than or equal to this.","type":"number"},"upperBound":{"description":"The upper bound for this gauge chart. The value of the chart should always be less than or equal to this.","type":"number"}}},"sparkChartView":{"description":"Will cause the scorecard to show a spark chart.","type":"object","properties":{"minAlignmentPeriod":{"description":"The lower bound on data point frequency in the chart implemented by specifying the minimum alignment period to use in a time series query. For example, if the data is published once every 10 minutes it would not make sense to fetch and align data at one minute intervals. This field is optional and exists only as a hint.","type":"string"},"sparkChartType":{"description":"Required. The type of sparkchart to show in this chartView. Possible values: SPARK_CHART_TYPE_UNSPECIFIED, SPARK_LINE, SPARK_BAR","type":"string"}}},"thresholds":{"description":"The thresholds used to determine the state of the scorecard given the time series' current value. For an actual value x, the scorecard is in a danger state if x is less than or equal to a danger threshold that triggers below, or greater than or equal to a danger threshold that triggers above. Similarly, if x is above/below a warning threshold that triggers above/below, then the scorecard is in a warning state - unless x also puts it in a danger state. (Danger trumps warning.) As an example, consider a scorecard with the following four thresholds: { value: 90, category: 'DANGER', trigger: 'ABOVE', },: { value: 70, category: 'WARNING', trigger: 'ABOVE', }, { value: 10, category: 'DANGER', trigger: 'BELOW', }, { value: 20, category: 'WARNING', trigger: 'BELOW', } Then: values less than or equal to 10 would put the scorecard in a DANGER state, values greater than 10 but less than or equal to 20 a WARNING state, values strictly between 20 and 70 an OK state, values greater than or equal to 70 but less than 90 a WARNING state, and values greater than or equal to 90 a DANGER state.","type":"array","items":{"type":"object","properties":{"color":{"description":"The state color for this threshold. Color is not allowed in a XyChart. Possible values: COLOR_UNSPECIFIED, GREY, BLUE, GREEN, YELLOW, ORANGE, RED","type":"string"},"direction":{"description":"The direction for the current threshold. Direction is not allowed in a XyChart. Possible values: DIRECTION_UNSPECIFIED, ABOVE, BELOW","type":"string"},"label":{"description":"A label for the threshold.","type":"string"},"value":{"description":"The value of the threshold. The value should be defined in the native scale of the metric.","type":"number"}}}},"timeSeriesQuery":{"description":"Required. Fields for querying time series data from the Stackdriver metrics API.","type":"object","properties":{"timeSeriesFilter":{"description":"Filter parameters to fetch time series.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after `aggregation` is applied.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesFilterRatio":{"description":"Parameters to fetch a ratio between two time series filters.","type":"object","properties":{"denominator":{"description":"The denominator of the ratio.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"numerator":{"description":"The numerator of the ratio.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after the ratio is computed.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesQueryLanguage":{"description":"A query used to fetch time series.","type":"string"},"unitOverride":{"description":"The unit of data contained in fetched time series. If non-empty, this unit will override any unit that accompanies fetched data. The format is the same as the [`unit`](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) field in `MetricDescriptor`.","type":"string"}}}}},"text":{"description":"A raw string or markdown displaying textual content.","type":"object","properties":{"content":{"description":"The text content to be displayed.","type":"string"},"format":{"description":"How the text content is formatted. Possible values: FORMAT_UNSPECIFIED, MARKDOWN, RAW","type":"string"}}},"title":{"description":"Optional. The title of the widget.","type":"string"},"xyChart":{"description":"A chart of time series data.","type":"object","properties":{"chartOptions":{"description":"Display options for the chart.","type":"object","properties":{"mode":{"description":"The chart mode. Possible values: MODE_UNSPECIFIED, COLOR, X_RAY, STATS","type":"string"}}},"dataSets":{"description":"Required. The data displayed in this chart.","type":"array","items":{"type":"object","properties":{"legendTemplate":{"description":"A template string for naming `TimeSeries` in the resulting data set. This should be a string with interpolations of the form `${label_name}`, which will resolve to the label's value. ","type":"string"},"minAlignmentPeriod":{"description":"Optional. The lower bound on data point frequency for this data set, implemented by specifying the minimum alignment period to use in a time series query For example, if the data is published once every 10 minutes, the `min_alignment_period` should be at least 10 minutes. It would not make sense to fetch and align data at one minute intervals.","type":"string"},"plotType":{"description":"How this data should be plotted on the chart. Possible values: PLOT_TYPE_UNSPECIFIED, LINE, STACKED_AREA, STACKED_BAR, HEATMAP","type":"string"},"timeSeriesQuery":{"description":"Required. Fields for querying time series data from the Stackdriver metrics API.","type":"object","properties":{"timeSeriesFilter":{"description":"Filter parameters to fetch time series.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after `aggregation` is applied.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesFilterRatio":{"description":"Parameters to fetch a ratio between two time series filters.","type":"object","properties":{"denominator":{"description":"The denominator of the ratio.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"numerator":{"description":"The numerator of the ratio.","type":"object","properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after the ratio is computed.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesQueryLanguage":{"description":"A query used to fetch time series.","type":"string"},"unitOverride":{"description":"The unit of data contained in fetched time series. If non-empty, this unit will override any unit that accompanies fetched data. The format is the same as the [`unit`](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) field in `MetricDescriptor`.","type":"string"}}}}}},"thresholds":{"description":"Threshold lines drawn horizontally across the chart.","type":"array","items":{"type":"object","properties":{"color":{"description":"The state color for this threshold. Color is not allowed in a XyChart. Possible values: COLOR_UNSPECIFIED, GREY, BLUE, GREEN, YELLOW, ORANGE, RED","type":"string"},"direction":{"description":"The direction for the current threshold. Direction is not allowed in a XyChart. Possible values: DIRECTION_UNSPECIFIED, ABOVE, BELOW","type":"string"},"label":{"description":"A label for the threshold.","type":"string"},"value":{"description":"The value of the threshold. The value should be defined in the native scale of the metric.","type":"number"}}}},"timeshiftDuration":{"description":"The duration used to display a comparison chart. A comparison chart simultaneously shows values from two similar-length time periods (e.g., week-over-week metrics). The duration must be positive, and it can only be applied to charts with data sets of LINE plot type.","type":"string"},"xAxis":{"description":"The properties applied to the X axis.","type":"object","properties":{"label":{"description":"The label of the axis.","type":"string"},"scale":{"description":"The axis scale. By default, a linear scale is used. Possible values: SCALE_UNSPECIFIED, LINEAR, LOG10","type":"string"}}},"yAxis":{"description":"The properties applied to the Y axis.","type":"object","properties":{"label":{"description":"The label of the axis.","type":"string"},"scale":{"description":"The axis scale. By default, a linear scale is used. Possible values: SCALE_UNSPECIFIED, LINEAR, LOG10","type":"string"}}}}}}}}}}}}}}},"status":{"type":"object","properties":{"conditions":{"description":"Conditions represent the latest available observation of the resource's current state.","type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","type":"string"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"Status is the status of the condition. Can be True, False, Unknown.","type":"string"},"type":{"description":"Type is the type of the condition.","type":"string"}}}},"etag":{"description":"\\`etag\\` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. An \\`etag\\` is returned in the response to \\`GetDashboard\\`, and users are expected to put that etag in the request to \\`UpdateDashboard\\` to ensure that their change will be applied to the same version of the Dashboard configuration. The field should not be passed during dashboard creation.","type":"string"},"observedGeneration":{"description":"ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.","type":"integer"}}}},"x-kubernetes-group-version-kind":[{"group":"monitoring.cnrm.cloud.google.com","kind":"MonitoringDashboard","version":"v1beta1"}]},"com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboardList":{"description":"MonitoringDashboardList is a list of MonitoringDashboard","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of monitoringdashboards. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"$ref":"#/definitions/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboard"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"monitoring.cnrm.cloud.google.com","kind":"MonitoringDashboardList","version":"v1beta1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition":{"description":"CustomResourceColumnDefinition specifies a column for server side printing.","type":"object","required":["name","type","jsonPath"],"properties":{"description":{"description":"description is a human readable description of this column.","type":"string"},"format":{"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.","type":"string"},"jsonPath":{"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.","type":"string","default":""},"name":{"description":"name is a human readable name for the column.","type":"string","default":""},"priority":{"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.","type":"integer","format":"int32"},"type":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion":{"description":"CustomResourceConversion describes how to convert different versions of a CR.","type":"object","required":["strategy"],"properties":{"strategy":{"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.","type":"string","default":""},"webhook":{"description":"webhook describes how to call the conversion webhook. Required when `strategy` is set to `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition":{"description":"CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format \u003c.spec.name\u003e.\u003c.spec.group\u003e.","type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"spec describes how the user wants the resources to appear","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec"},"status":{"description":"status indicates the actual state of the CustomResourceDefinition","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus"}},"x-kubernetes-group-version-kind":[{"group":"apiextensions.k8s.io","kind":"CustomResourceDefinition","version":"v1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition":{"description":"CustomResourceDefinitionCondition contains details for the current condition of this pod.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"lastTransitionTime last time the condition transitioned from one status to another.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"message is a human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"reason is a unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"status is the status of the condition. Can be True, False, Unknown.","type":"string","default":""},"type":{"description":"type is the type of the condition. Types include Established, NamesAccepted and Terminating.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames":{"description":"CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition","type":"object","required":["plural","kind"],"properties":{"categories":{"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`.","type":"array","items":{"type":"string","default":""}},"kind":{"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.","type":"string","default":""},"listKind":{"description":"listKind is the serialized kind of the list for this resource. Defaults to \"`kind`List\".","type":"string"},"plural":{"description":"plural is the plural name of the resource to serve. The custom resources are served under `/apis/\u003cgroup\u003e/\u003cversion\u003e/.../\u003cplural\u003e`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`). Must be all lowercase.","type":"string","default":""},"shortNames":{"description":"shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get \u003cshortname\u003e`. It must be all lowercase.","type":"array","items":{"type":"string","default":""}},"singular":{"description":"singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec":{"description":"CustomResourceDefinitionSpec describes how a user wants their resource to appear","type":"object","required":["group","names","scope","versions"],"properties":{"conversion":{"description":"conversion defines conversion settings for the CRD.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion"},"group":{"description":"group is the API group of the defined custom resource. The custom resources are served under `/apis/\u003cgroup\u003e/...`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`).","type":"string","default":""},"names":{"description":"names specify the resource and kind names for the custom resource.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"preserveUnknownFields":{"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.","type":"boolean"},"scope":{"description":"scope indicates whether the defined custom resource is cluster- or namespace-scoped. Allowed values are `Cluster` and `Namespaced`.","type":"string","default":""},"versions":{"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 \u003e beta \u003e 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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion"}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus":{"description":"CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition","type":"object","properties":{"acceptedNames":{"description":"acceptedNames are the names that are actually being used to serve discovery. They may be different than the names in spec.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"conditions":{"description":"conditions indicate state for particular aspects of a CustomResourceDefinition","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition"},"x-kubernetes-list-map-keys":["type"],"x-kubernetes-list-type":"map"},"storedVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion":{"description":"CustomResourceDefinitionVersion describes a version for CRD.","type":"object","required":["name","served","storage"],"properties":{"additionalPrinterColumns":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition"}},"deprecated":{"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.","type":"boolean"},"deprecationWarning":{"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.","type":"string"},"name":{"description":"name is the version name, e.g. “v1â€, “v2beta1â€, etc. The custom resources are served under this version at `/apis/\u003cgroup\u003e/\u003cversion\u003e/...` if `served` is true.","type":"string","default":""},"schema":{"description":"schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation"},"served":{"description":"served is a flag enabling/disabling this version from being served via REST APIs","type":"boolean","default":false},"storage":{"description":"storage indicates this version should be used when persisting custom resources to storage. There must be exactly one version with storage=true.","type":"boolean","default":false},"subresources":{"description":"subresources specify what subresources this version of the defined custom resource have.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale":{"description":"CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.","type":"object","required":["specReplicasPath","statusReplicasPath"],"properties":{"labelSelectorPath":{"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.","type":"string"},"specReplicasPath":{"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.","type":"string","default":""},"statusReplicasPath":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus":{"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","type":"object"},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources":{"description":"CustomResourceSubresources defines the status and scale subresources for CustomResources.","type":"object","properties":{"scale":{"description":"scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale"},"status":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation":{"description":"CustomResourceValidation is a list of validation methods for CustomResources.","type":"object","properties":{"openAPIV3Schema":{"description":"openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation":{"description":"ExternalDocumentation allows referencing an external resource for extended documentation.","type":"object","properties":{"description":{"type":"string"},"url":{"type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON":{"description":"JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps":{"description":"JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).","type":"object","properties":{"$ref":{"type":"string"},"$schema":{"type":"string"},"additionalItems":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"additionalProperties":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"allOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"anyOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"default":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"definitions":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"dependencies":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray"}},"description":{"type":"string"},"enum":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"}},"example":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"exclusiveMaximum":{"type":"boolean"},"exclusiveMinimum":{"type":"boolean"},"externalDocs":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation"},"format":{"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.","type":"string"},"id":{"type":"string"},"items":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray"},"maxItems":{"type":"integer","format":"int64"},"maxLength":{"type":"integer","format":"int64"},"maxProperties":{"type":"integer","format":"int64"},"maximum":{"type":"number","format":"double"},"minItems":{"type":"integer","format":"int64"},"minLength":{"type":"integer","format":"int64"},"minProperties":{"type":"integer","format":"int64"},"minimum":{"type":"number","format":"double"},"multipleOf":{"type":"number","format":"double"},"not":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"},"nullable":{"type":"boolean"},"oneOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"pattern":{"type":"string"},"patternProperties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"properties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"required":{"type":"array","items":{"type":"string","default":""}},"title":{"type":"string"},"type":{"type":"string"},"uniqueItems":{"type":"boolean"},"x-kubernetes-embedded-resource":{"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).","type":"boolean"},"x-kubernetes-int-or-string":{"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","type":"boolean"},"x-kubernetes-list-map-keys":{"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.","type":"array","items":{"type":"string","default":""}},"x-kubernetes-list-type":{"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.","type":"string"},"x-kubernetes-map-type":{"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.","type":"string"},"x-kubernetes-preserve-unknown-fields":{"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.","type":"boolean"},"x-kubernetes-validations":{"description":"x-kubernetes-validations describes a list of validation rules written in the CEL expression language. This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule"},"x-kubernetes-list-map-keys":["rule"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"rule","x-kubernetes-patch-strategy":"merge"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray":{"description":"JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool":{"description":"JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray":{"description":"JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference":{"description":"ServiceReference holds a reference to Service.legacy.k8s.io","type":"object","required":["namespace","name"],"properties":{"name":{"description":"name is the name of the service. Required","type":"string","default":""},"namespace":{"description":"namespace is the namespace of the service. Required","type":"string","default":""},"path":{"description":"path is an optional URL path at which the webhook will be contacted.","type":"string"},"port":{"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.","type":"integer","format":"int32"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule":{"description":"ValidationRule describes a validation rule written in the CEL expression language.","type":"object","required":["rule"],"properties":{"message":{"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\"","type":"string"},"rule":{"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 \u003c= 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 \u003c 10\"} - Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value \u003e= 0 \u0026\u0026 value \u003c 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__ \u003e 0\"}\n - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop \u003e 0\"}\n - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d \u003e 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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig":{"description":"WebhookClientConfig contains the information to make a TLS connection with the webhook.","type":"object","properties":{"caBundle":{"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.","type":"string","format":"byte"},"service":{"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`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference"},"url":{"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.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion":{"description":"WebhookConversion describes how to call a conversion webhook","type":"object","required":["conversionReviewVersions"],"properties":{"clientConfig":{"description":"clientConfig is the instructions for how to call the webhook if strategy is `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig"},"conversionReviewVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"},"propagationPolicy":{"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.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"creationTimestamp":{"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","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"},"reason":{"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.","type":"string"},"status":{"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","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"}},"securityDefinitions":{"BearerToken":{"description":"Bearer Token authentication","type":"apiKey","name":"authorization","in":"header"}},"security":[{"BearerToken":[]}]}privateca_v1beta1_privatecacertificate.json000066400000000000000000003572121453663023200403640ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv2{"swagger":"2.0","info":{"title":"Kubernetes","version":"v1.27.0"},"paths":{"/apis/privateca.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/privatecacertificates":{"get":{"description":"list objects of kind PrivateCACertificate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"listPrivatecaCnrmCloudGoogleComV1beta1NamespacedPrivateCACertificate","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificate"}},"post":{"description":"create a PrivateCACertificate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"createPrivatecaCnrmCloudGoogleComV1beta1NamespacedPrivateCACertificate","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificate"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificate"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificate"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificate"}},"delete":{"description":"delete collection of PrivateCACertificate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"deletePrivatecaCnrmCloudGoogleComV1beta1CollectionNamespacedPrivateCACertificate","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificate"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/privateca.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/privatecacertificates/{name}":{"get":{"description":"read the specified PrivateCACertificate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"readPrivatecaCnrmCloudGoogleComV1beta1NamespacedPrivateCACertificate","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificate"}},"put":{"description":"replace the specified PrivateCACertificate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"replacePrivatecaCnrmCloudGoogleComV1beta1NamespacedPrivateCACertificate","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificate"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificate"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificate"}},"delete":{"description":"delete a PrivateCACertificate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"deletePrivatecaCnrmCloudGoogleComV1beta1NamespacedPrivateCACertificate","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificate"}},"patch":{"description":"partially update the specified PrivateCACertificate","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"patchPrivatecaCnrmCloudGoogleComV1beta1NamespacedPrivateCACertificate","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificate"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the PrivateCACertificate","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/privateca.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/privatecacertificates/{name}/status":{"get":{"description":"read status of the specified PrivateCACertificate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"readPrivatecaCnrmCloudGoogleComV1beta1NamespacedPrivateCACertificateStatus","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificate"}},"put":{"description":"replace status of the specified PrivateCACertificate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"replacePrivatecaCnrmCloudGoogleComV1beta1NamespacedPrivateCACertificateStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificate"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificate"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificate"}},"patch":{"description":"partially update status of the specified PrivateCACertificate","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"patchPrivatecaCnrmCloudGoogleComV1beta1NamespacedPrivateCACertificateStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificate"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificate"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the PrivateCACertificate","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/privateca.cnrm.cloud.google.com/v1beta1/privatecacertificates":{"get":{"description":"list objects of kind PrivateCACertificate","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"listPrivatecaCnrmCloudGoogleComV1beta1PrivateCACertificateForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificate"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]}},"definitions":{"com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificate":{"type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"type":"object","properties":{"caPoolRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"The ca_pool for the resource\n\nAllowed value: The Google Cloud resource name of a `PrivateCACAPool` resource (format: `projects/{{project}}/locations/{{location}}/caPools/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"certificateAuthorityRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"The certificate authority for the resource\n\nAllowed value: The Google Cloud resource name of a `PrivateCACertificateAuthority` resource (format: `projects/{{project}}/locations/{{location}}/caPools/{{ca_pool}}/certificateAuthorities/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"certificateTemplateRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"Immutable. The resource name for a CertificateTemplate used to issue this certificate, in the format `projects/*/locations/*/certificateTemplates/*`. If this is specified, the caller must have the necessary permission to use this template. If this is omitted, no template will be used. This template must be in the same location as the Certificate.\n\nAllowed value: The `selfLink` field of a `PrivateCACertificateTemplate` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"config":{"description":"Immutable. Immutable. A description of the certificate and key that does not require X.509 or ASN.1.","type":"object","properties":{"publicKey":{"description":"Immutable. Optional. The public key that corresponds to this config. This is, for example, used when issuing Certificates, but not when creating a self-signed CertificateAuthority or CertificateAuthority CSR.","type":"object","properties":{"format":{"description":"Immutable. Required. The format of the public key. Possible values: KEY_FORMAT_UNSPECIFIED, PEM","type":"string"},"key":{"description":"Immutable. Required. A public key. The padding and encoding must match with the `KeyFormat` value specified for the `format` field.","type":"string"}}},"subjectConfig":{"description":"Immutable. Required. Specifies some of the values in a certificate that are related to the subject.","type":"object","properties":{"subject":{"description":"Immutable. Required. Contains distinguished name fields such as the common name, location and organization.","type":"object","properties":{"commonName":{"description":"Immutable. The \"common name\" of the subject.","type":"string"},"countryCode":{"description":"Immutable. The country code of the subject.","type":"string"},"locality":{"description":"Immutable. The locality or city of the subject.","type":"string"},"organization":{"description":"Immutable. The organization of the subject.","type":"string"},"organizationalUnit":{"description":"Immutable. The organizational_unit of the subject.","type":"string"},"postalCode":{"description":"Immutable. The postal code of the subject.","type":"string"},"province":{"description":"Immutable. The province, territory, or regional state of the subject.","type":"string"},"streetAddress":{"description":"Immutable. The street address of the subject.","type":"string"}}},"subjectAltName":{"description":"Immutable. Optional. The subject alternative name fields.","type":"object","properties":{"dnsNames":{"description":"Immutable. Contains only valid, fully-qualified host names.","type":"array","items":{"type":"string"}},"emailAddresses":{"description":"Immutable. Contains only valid RFC 2822 E-mail addresses.","type":"array","items":{"type":"string"}},"ipAddresses":{"description":"Immutable. Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.","type":"array","items":{"type":"string"}},"uris":{"description":"Immutable. Contains only valid RFC 3986 URIs.","type":"array","items":{"type":"string"}}}}}},"x509Config":{"description":"Immutable. Required. Describes how some of the technical X.509 fields in a certificate should be populated.","type":"object","properties":{"additionalExtensions":{"description":"Immutable. Optional. Describes custom X.509 extensions.","type":"array","items":{"type":"object","properties":{"critical":{"description":"Immutable. Optional. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).","type":"boolean"},"objectId":{"description":"Immutable. Required. The OID for this X.509 extension.","type":"object","properties":{"objectIdPath":{"description":"Immutable. Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer"}}}},"value":{"description":"Immutable. Required. The value of this X.509 extension.","type":"string"}}}},"aiaOcspServers":{"description":"Immutable. Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the \"Authority Information Access\" extension in the certificate.","type":"array","items":{"type":"string"}},"caOptions":{"description":"Immutable. Optional. Describes options in this X509Parameters that are relevant in a CA certificate.","type":"object","properties":{"isCa":{"description":"Immutable. Optional. When true, the \"CA\" in Basic Constraints extension will be set to true.","type":"boolean"},"maxIssuerPathLength":{"description":"Immutable. Optional. Refers to the \"path length constraint\" in Basic Constraints extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail.","type":"integer"},"nonCa":{"description":"Immutable. Optional. When true, the \"CA\" in Basic Constraints extension will be set to false. If both `is_ca` and `non_ca` are unset, the extension will be omitted from the CA certificate.","type":"boolean"},"zeroMaxIssuerPathLength":{"description":"Immutable. Optional. When true, the \"path length constraint\" in Basic Constraints extension will be set to 0. if both max_issuer_path_length and zero_max_issuer_path_length are unset, the max path length will be omitted from the CA certificate.","type":"boolean"}}},"keyUsage":{"description":"Immutable. Optional. Indicates the intended use for keys that correspond to a certificate.","type":"object","properties":{"baseKeyUsage":{"description":"Immutable. Describes high-level ways in which a key may be used.","type":"object","properties":{"certSign":{"description":"Immutable. The key may be used to sign certificates.","type":"boolean"},"contentCommitment":{"description":"Immutable. The key may be used for cryptographic commitments. Note that this may also be referred to as \"non-repudiation\".","type":"boolean"},"crlSign":{"description":"Immutable. The key may be used sign certificate revocation lists.","type":"boolean"},"dataEncipherment":{"description":"Immutable. The key may be used to encipher data.","type":"boolean"},"decipherOnly":{"description":"Immutable. The key may be used to decipher only.","type":"boolean"},"digitalSignature":{"description":"Immutable. The key may be used for digital signatures.","type":"boolean"},"encipherOnly":{"description":"Immutable. The key may be used to encipher only.","type":"boolean"},"keyAgreement":{"description":"Immutable. The key may be used in a key agreement protocol.","type":"boolean"},"keyEncipherment":{"description":"Immutable. The key may be used to encipher other keys.","type":"boolean"}}},"extendedKeyUsage":{"description":"Immutable. Detailed scenarios in which a key may be used.","type":"object","properties":{"clientAuth":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as \"TLS WWW client authentication\", though regularly used for non-WWW TLS.","type":"boolean"},"codeSigning":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as \"Signing of downloadable executable code client authentication\".","type":"boolean"},"emailProtection":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as \"Email protection\".","type":"boolean"},"ocspSigning":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as \"Signing OCSP responses\".","type":"boolean"},"serverAuth":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as \"TLS WWW server authentication\", though regularly used for non-WWW TLS.","type":"boolean"},"timeStamping":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as \"Binding the hash of an object to a time\".","type":"boolean"}}},"unknownExtendedKeyUsages":{"description":"Immutable. Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.","type":"array","items":{"type":"object","properties":{"objectIdPath":{"description":"Immutable. Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer"}}}}}}},"policyIds":{"description":"Immutable. Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.","type":"array","items":{"type":"object","properties":{"objectIdPath":{"description":"Immutable. Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer"}}}}}}}}},"lifetime":{"description":"Immutable. Required. Immutable. The desired lifetime of a certificate. Used to create the \"not_before_time\" and \"not_after_time\" fields inside an X.509 certificate. Note that the lifetime may be truncated if it would extend past the life of any certificate authority in the issuing chain.","type":"string"},"location":{"description":"Immutable. The location for the resource","type":"string"},"pemCsr":{"description":"Immutable. Immutable. A pem-encoded X.509 certificate signing request (CSR).","type":"string"},"projectRef":{"description":"Immutable. The Project that this resource belongs to.","type":"object","properties":{"external":{"description":"The project for the resource\n\nAllowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"resourceID":{"description":"Immutable. Optional. The name of the resource. Used for creation and acquisition. When unset, the value of `metadata.name` is used as the default.","type":"string"},"subjectMode":{"description":"Immutable. Immutable. Specifies how the Certificate's identity fields are to be decided. If this is omitted, the `DEFAULT` subject mode will be used. Possible values: SUBJECT_REQUEST_MODE_UNSPECIFIED, DEFAULT, REFLECTED_SPIFFE","type":"string"}}},"status":{"type":"object","properties":{"certificateDescription":{"description":"Output only. A structured description of the issued X.509 certificate.","type":"object","properties":{"aiaIssuingCertificateUrls":{"description":"Describes lists of issuer CA certificate URLs that appear in the \"Authority Information Access\" extension in the certificate.","type":"array","items":{"type":"string"}},"authorityKeyId":{"description":"Identifies the subject_key_id of the parent certificate, per https://tools.ietf.org/html/rfc5280#section-4.2.1.1","type":"object","properties":{"keyId":{"description":"Optional. The value of this KeyId encoded in lowercase hexadecimal. This is most likely the 160 bit SHA-1 hash of the public key.","type":"string"}}},"certFingerprint":{"description":"The hash of the x.509 certificate.","type":"object","properties":{"sha256Hash":{"description":"The SHA 256 hash, encoded in hexadecimal, of the DER x509 certificate.","type":"string"}}},"crlDistributionPoints":{"description":"Describes a list of locations to obtain CRL information, i.e. the DistributionPoint.fullName described by https://tools.ietf.org/html/rfc5280#section-4.2.1.13","type":"array","items":{"type":"string"}},"publicKey":{"description":"The public key that corresponds to an issued certificate.","type":"object","properties":{"format":{"description":"Required. The format of the public key. Possible values: KEY_FORMAT_UNSPECIFIED, PEM","type":"string"},"key":{"description":"Required. A public key. The padding and encoding must match with the `KeyFormat` value specified for the `format` field.","type":"string"}}},"subjectDescription":{"description":"Describes some of the values in a certificate that are related to the subject and lifetime.","type":"object","properties":{"hexSerialNumber":{"description":"The serial number encoded in lowercase hexadecimal.","type":"string"},"lifetime":{"description":"For convenience, the actual lifetime of an issued certificate.","type":"string"},"notAfterTime":{"description":"The time after which the certificate is expired. Per RFC 5280, the validity period for a certificate is the period of time from not_before_time through not_after_time, inclusive. Corresponds to 'not_before_time' + 'lifetime' - 1 second.","type":"string"},"notBeforeTime":{"description":"The time at which the certificate becomes valid.","type":"string"},"subject":{"description":"Contains distinguished name fields such as the common name, location and / organization.","type":"object","properties":{"commonName":{"description":"The \"common name\" of the subject.","type":"string"},"countryCode":{"description":"The country code of the subject.","type":"string"},"locality":{"description":"The locality or city of the subject.","type":"string"},"organization":{"description":"The organization of the subject.","type":"string"},"organizationalUnit":{"description":"The organizational_unit of the subject.","type":"string"},"postalCode":{"description":"The postal code of the subject.","type":"string"},"province":{"description":"The province, territory, or regional state of the subject.","type":"string"},"streetAddress":{"description":"The street address of the subject.","type":"string"}}},"subjectAltName":{"description":"The subject alternative name fields.","type":"object","properties":{"customSans":{"description":"Contains additional subject alternative name values.","type":"array","items":{"type":"object","properties":{"critical":{"description":"Optional. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).","type":"boolean"},"objectId":{"description":"Required. The OID for this X.509 extension.","type":"object","properties":{"objectIdPath":{"description":"Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer"}}}},"value":{"description":"Required. The value of this X.509 extension.","type":"string"}}}},"dnsNames":{"description":"Contains only valid, fully-qualified host names.","type":"array","items":{"type":"string"}},"emailAddresses":{"description":"Contains only valid RFC 2822 E-mail addresses.","type":"array","items":{"type":"string"}},"ipAddresses":{"description":"Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.","type":"array","items":{"type":"string"}},"uris":{"description":"Contains only valid RFC 3986 URIs.","type":"array","items":{"type":"string"}}}}}},"subjectKeyId":{"description":"Provides a means of identifiying certificates that contain a particular public key, per https://tools.ietf.org/html/rfc5280#section-4.2.1.2.","type":"object","properties":{"keyId":{"description":"Optional. The value of this KeyId encoded in lowercase hexadecimal. This is most likely the 160 bit SHA-1 hash of the public key.","type":"string"}}},"x509Description":{"description":"Describes some of the technical X.509 fields in a certificate.","type":"object","properties":{"additionalExtensions":{"description":"Optional. Describes custom X.509 extensions.","type":"array","items":{"type":"object","properties":{"critical":{"description":"Optional. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).","type":"boolean"},"objectId":{"description":"Required. The OID for this X.509 extension.","type":"object","properties":{"objectIdPath":{"description":"Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer"}}}},"value":{"description":"Required. The value of this X.509 extension.","type":"string"}}}},"aiaOcspServers":{"description":"Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the \"Authority Information Access\" extension in the certificate.","type":"array","items":{"type":"string"}},"caOptions":{"description":"Optional. Describes options in this X509Parameters that are relevant in a CA certificate.","type":"object","properties":{"isCa":{"description":"Optional. Refers to the \"CA\" X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.","type":"boolean"},"maxIssuerPathLength":{"description":"Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.","type":"integer"}}},"keyUsage":{"description":"Optional. Indicates the intended use for keys that correspond to a certificate.","type":"object","properties":{"baseKeyUsage":{"description":"Describes high-level ways in which a key may be used.","type":"object","properties":{"certSign":{"description":"The key may be used to sign certificates.","type":"boolean"},"contentCommitment":{"description":"The key may be used for cryptographic commitments. Note that this may also be referred to as \"non-repudiation\".","type":"boolean"},"crlSign":{"description":"The key may be used sign certificate revocation lists.","type":"boolean"},"dataEncipherment":{"description":"The key may be used to encipher data.","type":"boolean"},"decipherOnly":{"description":"The key may be used to decipher only.","type":"boolean"},"digitalSignature":{"description":"The key may be used for digital signatures.","type":"boolean"},"encipherOnly":{"description":"The key may be used to encipher only.","type":"boolean"},"keyAgreement":{"description":"The key may be used in a key agreement protocol.","type":"boolean"},"keyEncipherment":{"description":"The key may be used to encipher other keys.","type":"boolean"}}},"extendedKeyUsage":{"description":"Detailed scenarios in which a key may be used.","type":"object","properties":{"clientAuth":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as \"TLS WWW client authentication\", though regularly used for non-WWW TLS.","type":"boolean"},"codeSigning":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as \"Signing of downloadable executable code client authentication\".","type":"boolean"},"emailProtection":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as \"Email protection\".","type":"boolean"},"ocspSigning":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as \"Signing OCSP responses\".","type":"boolean"},"serverAuth":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as \"TLS WWW server authentication\", though regularly used for non-WWW TLS.","type":"boolean"},"timeStamping":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as \"Binding the hash of an object to a time\".","type":"boolean"}}},"unknownExtendedKeyUsages":{"description":"Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.","type":"array","items":{"type":"object","properties":{"objectIdPath":{"description":"Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer"}}}}}}},"policyIds":{"description":"Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.","type":"array","items":{"type":"object","properties":{"objectIdPath":{"description":"Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer"}}}}}}}}},"conditions":{"description":"Conditions represent the latest available observation of the resource's current state.","type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","type":"string"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"Status is the status of the condition. Can be True, False, Unknown.","type":"string"},"type":{"description":"Type is the type of the condition.","type":"string"}}}},"createTime":{"description":"Output only. The time at which this Certificate was created.","type":"string"},"issuerCertificateAuthority":{"description":"Output only. The resource name of the issuing CertificateAuthority in the format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.","type":"string"},"observedGeneration":{"description":"ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.","type":"integer"},"pemCertificate":{"description":"Output only. The pem-encoded, signed X.509 certificate.","type":"string"},"pemCertificateChain":{"description":"Output only. The chain that may be used to verify the X.509 certificate. Expected to be in issuer-to-root order according to RFC 5246.","type":"array","items":{"type":"string"}},"revocationDetails":{"description":"Output only. Details regarding the revocation of this Certificate. This Certificate is considered revoked if and only if this field is present.","type":"object","properties":{"revocationState":{"description":"Indicates why a Certificate was revoked. Possible values: REVOCATION_REASON_UNSPECIFIED, KEY_COMPROMISE, CERTIFICATE_AUTHORITY_COMPROMISE, AFFILIATION_CHANGED, SUPERSEDED, CESSATION_OF_OPERATION, CERTIFICATE_HOLD, PRIVILEGE_WITHDRAWN, ATTRIBUTE_AUTHORITY_COMPROMISE","type":"string"},"revocationTime":{"description":"The time at which this Certificate was revoked.","type":"string"}}},"updateTime":{"description":"Output only. The time at which this Certificate was updated.","type":"string"}}}},"x-kubernetes-group-version-kind":[{"group":"privateca.cnrm.cloud.google.com","kind":"PrivateCACertificate","version":"v1beta1"}]},"com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateList":{"description":"PrivateCACertificateList is a list of PrivateCACertificate","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of privatecacertificates. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificate"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"privateca.cnrm.cloud.google.com","kind":"PrivateCACertificateList","version":"v1beta1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition":{"description":"CustomResourceColumnDefinition specifies a column for server side printing.","type":"object","required":["name","type","jsonPath"],"properties":{"description":{"description":"description is a human readable description of this column.","type":"string"},"format":{"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.","type":"string"},"jsonPath":{"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.","type":"string","default":""},"name":{"description":"name is a human readable name for the column.","type":"string","default":""},"priority":{"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.","type":"integer","format":"int32"},"type":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion":{"description":"CustomResourceConversion describes how to convert different versions of a CR.","type":"object","required":["strategy"],"properties":{"strategy":{"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.","type":"string","default":""},"webhook":{"description":"webhook describes how to call the conversion webhook. Required when `strategy` is set to `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition":{"description":"CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format \u003c.spec.name\u003e.\u003c.spec.group\u003e.","type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"spec describes how the user wants the resources to appear","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec"},"status":{"description":"status indicates the actual state of the CustomResourceDefinition","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus"}},"x-kubernetes-group-version-kind":[{"group":"apiextensions.k8s.io","kind":"CustomResourceDefinition","version":"v1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition":{"description":"CustomResourceDefinitionCondition contains details for the current condition of this pod.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"lastTransitionTime last time the condition transitioned from one status to another.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"message is a human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"reason is a unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"status is the status of the condition. Can be True, False, Unknown.","type":"string","default":""},"type":{"description":"type is the type of the condition. Types include Established, NamesAccepted and Terminating.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames":{"description":"CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition","type":"object","required":["plural","kind"],"properties":{"categories":{"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`.","type":"array","items":{"type":"string","default":""}},"kind":{"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.","type":"string","default":""},"listKind":{"description":"listKind is the serialized kind of the list for this resource. Defaults to \"`kind`List\".","type":"string"},"plural":{"description":"plural is the plural name of the resource to serve. The custom resources are served under `/apis/\u003cgroup\u003e/\u003cversion\u003e/.../\u003cplural\u003e`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`). Must be all lowercase.","type":"string","default":""},"shortNames":{"description":"shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get \u003cshortname\u003e`. It must be all lowercase.","type":"array","items":{"type":"string","default":""}},"singular":{"description":"singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec":{"description":"CustomResourceDefinitionSpec describes how a user wants their resource to appear","type":"object","required":["group","names","scope","versions"],"properties":{"conversion":{"description":"conversion defines conversion settings for the CRD.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion"},"group":{"description":"group is the API group of the defined custom resource. The custom resources are served under `/apis/\u003cgroup\u003e/...`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`).","type":"string","default":""},"names":{"description":"names specify the resource and kind names for the custom resource.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"preserveUnknownFields":{"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.","type":"boolean"},"scope":{"description":"scope indicates whether the defined custom resource is cluster- or namespace-scoped. Allowed values are `Cluster` and `Namespaced`.","type":"string","default":""},"versions":{"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 \u003e beta \u003e 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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion"}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus":{"description":"CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition","type":"object","properties":{"acceptedNames":{"description":"acceptedNames are the names that are actually being used to serve discovery. They may be different than the names in spec.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"conditions":{"description":"conditions indicate state for particular aspects of a CustomResourceDefinition","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition"},"x-kubernetes-list-map-keys":["type"],"x-kubernetes-list-type":"map"},"storedVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion":{"description":"CustomResourceDefinitionVersion describes a version for CRD.","type":"object","required":["name","served","storage"],"properties":{"additionalPrinterColumns":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition"}},"deprecated":{"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.","type":"boolean"},"deprecationWarning":{"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.","type":"string"},"name":{"description":"name is the version name, e.g. “v1â€, “v2beta1â€, etc. The custom resources are served under this version at `/apis/\u003cgroup\u003e/\u003cversion\u003e/...` if `served` is true.","type":"string","default":""},"schema":{"description":"schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation"},"served":{"description":"served is a flag enabling/disabling this version from being served via REST APIs","type":"boolean","default":false},"storage":{"description":"storage indicates this version should be used when persisting custom resources to storage. There must be exactly one version with storage=true.","type":"boolean","default":false},"subresources":{"description":"subresources specify what subresources this version of the defined custom resource have.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale":{"description":"CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.","type":"object","required":["specReplicasPath","statusReplicasPath"],"properties":{"labelSelectorPath":{"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.","type":"string"},"specReplicasPath":{"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.","type":"string","default":""},"statusReplicasPath":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus":{"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","type":"object"},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources":{"description":"CustomResourceSubresources defines the status and scale subresources for CustomResources.","type":"object","properties":{"scale":{"description":"scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale"},"status":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation":{"description":"CustomResourceValidation is a list of validation methods for CustomResources.","type":"object","properties":{"openAPIV3Schema":{"description":"openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation":{"description":"ExternalDocumentation allows referencing an external resource for extended documentation.","type":"object","properties":{"description":{"type":"string"},"url":{"type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON":{"description":"JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps":{"description":"JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).","type":"object","properties":{"$ref":{"type":"string"},"$schema":{"type":"string"},"additionalItems":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"additionalProperties":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"allOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"anyOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"default":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"definitions":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"dependencies":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray"}},"description":{"type":"string"},"enum":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"}},"example":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"exclusiveMaximum":{"type":"boolean"},"exclusiveMinimum":{"type":"boolean"},"externalDocs":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation"},"format":{"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.","type":"string"},"id":{"type":"string"},"items":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray"},"maxItems":{"type":"integer","format":"int64"},"maxLength":{"type":"integer","format":"int64"},"maxProperties":{"type":"integer","format":"int64"},"maximum":{"type":"number","format":"double"},"minItems":{"type":"integer","format":"int64"},"minLength":{"type":"integer","format":"int64"},"minProperties":{"type":"integer","format":"int64"},"minimum":{"type":"number","format":"double"},"multipleOf":{"type":"number","format":"double"},"not":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"},"nullable":{"type":"boolean"},"oneOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"pattern":{"type":"string"},"patternProperties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"properties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"required":{"type":"array","items":{"type":"string","default":""}},"title":{"type":"string"},"type":{"type":"string"},"uniqueItems":{"type":"boolean"},"x-kubernetes-embedded-resource":{"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).","type":"boolean"},"x-kubernetes-int-or-string":{"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","type":"boolean"},"x-kubernetes-list-map-keys":{"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.","type":"array","items":{"type":"string","default":""}},"x-kubernetes-list-type":{"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.","type":"string"},"x-kubernetes-map-type":{"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.","type":"string"},"x-kubernetes-preserve-unknown-fields":{"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.","type":"boolean"},"x-kubernetes-validations":{"description":"x-kubernetes-validations describes a list of validation rules written in the CEL expression language. This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule"},"x-kubernetes-list-map-keys":["rule"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"rule","x-kubernetes-patch-strategy":"merge"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray":{"description":"JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool":{"description":"JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray":{"description":"JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference":{"description":"ServiceReference holds a reference to Service.legacy.k8s.io","type":"object","required":["namespace","name"],"properties":{"name":{"description":"name is the name of the service. Required","type":"string","default":""},"namespace":{"description":"namespace is the namespace of the service. Required","type":"string","default":""},"path":{"description":"path is an optional URL path at which the webhook will be contacted.","type":"string"},"port":{"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.","type":"integer","format":"int32"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule":{"description":"ValidationRule describes a validation rule written in the CEL expression language.","type":"object","required":["rule"],"properties":{"message":{"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\"","type":"string"},"rule":{"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 \u003c= 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 \u003c 10\"} - Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value \u003e= 0 \u0026\u0026 value \u003c 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__ \u003e 0\"}\n - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop \u003e 0\"}\n - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d \u003e 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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig":{"description":"WebhookClientConfig contains the information to make a TLS connection with the webhook.","type":"object","properties":{"caBundle":{"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.","type":"string","format":"byte"},"service":{"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`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference"},"url":{"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.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion":{"description":"WebhookConversion describes how to call a conversion webhook","type":"object","required":["conversionReviewVersions"],"properties":{"clientConfig":{"description":"clientConfig is the instructions for how to call the webhook if strategy is `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig"},"conversionReviewVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"},"propagationPolicy":{"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.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"creationTimestamp":{"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","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"},"reason":{"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.","type":"string"},"status":{"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","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"}},"securityDefinitions":{"BearerToken":{"description":"Bearer Token authentication","type":"apiKey","name":"authorization","in":"header"}},"security":[{"BearerToken":[]}]}privateca_v1beta1_privatecacertificateauthority.json000066400000000000000000003647501453663023200423420ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv2{"swagger":"2.0","info":{"title":"Kubernetes","version":"v1.27.0"},"paths":{"/apis/privateca.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/privatecacertificateauthorities":{"get":{"description":"list objects of kind PrivateCACertificateAuthority","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"listPrivatecaCnrmCloudGoogleComV1beta1NamespacedPrivateCACertificateAuthority","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthorityList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificateAuthority"}},"post":{"description":"create a PrivateCACertificateAuthority","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"createPrivatecaCnrmCloudGoogleComV1beta1NamespacedPrivateCACertificateAuthority","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthority"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthority"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthority"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthority"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificateAuthority"}},"delete":{"description":"delete collection of PrivateCACertificateAuthority","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"deletePrivatecaCnrmCloudGoogleComV1beta1CollectionNamespacedPrivateCACertificateAuthority","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificateAuthority"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/privateca.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/privatecacertificateauthorities/{name}":{"get":{"description":"read the specified PrivateCACertificateAuthority","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"readPrivatecaCnrmCloudGoogleComV1beta1NamespacedPrivateCACertificateAuthority","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthority"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificateAuthority"}},"put":{"description":"replace the specified PrivateCACertificateAuthority","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"replacePrivatecaCnrmCloudGoogleComV1beta1NamespacedPrivateCACertificateAuthority","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthority"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthority"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthority"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificateAuthority"}},"delete":{"description":"delete a PrivateCACertificateAuthority","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"deletePrivatecaCnrmCloudGoogleComV1beta1NamespacedPrivateCACertificateAuthority","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificateAuthority"}},"patch":{"description":"partially update the specified PrivateCACertificateAuthority","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"patchPrivatecaCnrmCloudGoogleComV1beta1NamespacedPrivateCACertificateAuthority","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthority"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificateAuthority"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the PrivateCACertificateAuthority","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/privateca.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/privatecacertificateauthorities/{name}/status":{"get":{"description":"read status of the specified PrivateCACertificateAuthority","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"readPrivatecaCnrmCloudGoogleComV1beta1NamespacedPrivateCACertificateAuthorityStatus","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthority"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificateAuthority"}},"put":{"description":"replace status of the specified PrivateCACertificateAuthority","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"replacePrivatecaCnrmCloudGoogleComV1beta1NamespacedPrivateCACertificateAuthorityStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthority"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthority"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthority"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificateAuthority"}},"patch":{"description":"partially update status of the specified PrivateCACertificateAuthority","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"patchPrivatecaCnrmCloudGoogleComV1beta1NamespacedPrivateCACertificateAuthorityStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthority"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificateAuthority"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the PrivateCACertificateAuthority","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/privateca.cnrm.cloud.google.com/v1beta1/privatecacertificateauthorities":{"get":{"description":"list objects of kind PrivateCACertificateAuthority","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["privatecaCnrmCloudGoogleCom_v1beta1"],"operationId":"listPrivatecaCnrmCloudGoogleComV1beta1PrivateCACertificateAuthorityForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthorityList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"privateca.cnrm.cloud.google.com","version":"v1beta1","kind":"PrivateCACertificateAuthority"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]}},"definitions":{"com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthority":{"type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"type":"object","properties":{"caPoolRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"The caPool for the resource\n\nAllowed value: The Google Cloud resource name of a `PrivateCACAPool` resource (format: `projects/{{project}}/locations/{{location}}/caPools/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"config":{"description":"Immutable. Required. Immutable. The config used to create a self-signed X.509 certificate or CSR.","type":"object","properties":{"subjectConfig":{"description":"Immutable. Required. Specifies some of the values in a certificate that are related to the subject.","type":"object","properties":{"subject":{"description":"Immutable. Required. Contains distinguished name fields such as the common name, location and organization.","type":"object","properties":{"commonName":{"description":"Immutable. The \"common name\" of the subject.","type":"string"},"countryCode":{"description":"Immutable. The country code of the subject.","type":"string"},"locality":{"description":"Immutable. The locality or city of the subject.","type":"string"},"organization":{"description":"Immutable. The organization of the subject.","type":"string"},"organizationalUnit":{"description":"Immutable. The organizational_unit of the subject.","type":"string"},"postalCode":{"description":"Immutable. The postal code of the subject.","type":"string"},"province":{"description":"Immutable. The province, territory, or regional state of the subject.","type":"string"},"streetAddress":{"description":"Immutable. The street address of the subject.","type":"string"}}},"subjectAltName":{"description":"Immutable. Optional. The subject alternative name fields.","type":"object","properties":{"customSans":{"description":"Immutable. Contains additional subject alternative name values.","type":"array","items":{"type":"object","properties":{"critical":{"description":"Immutable. Optional. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).","type":"boolean"},"objectId":{"description":"Immutable. Required. The OID for this X.509 extension.","type":"object","properties":{"objectIdPath":{"description":"Immutable. Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer"}}}},"value":{"description":"Immutable. Required. The value of this X.509 extension.","type":"string"}}}},"dnsNames":{"description":"Immutable. Contains only valid, fully-qualified host names.","type":"array","items":{"type":"string"}},"emailAddresses":{"description":"Immutable. Contains only valid RFC 2822 E-mail addresses.","type":"array","items":{"type":"string"}},"ipAddresses":{"description":"Immutable. Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.","type":"array","items":{"type":"string"}},"uris":{"description":"Immutable. Contains only valid RFC 3986 URIs.","type":"array","items":{"type":"string"}}}}}},"x509Config":{"description":"Immutable. Required. Describes how some of the technical X.509 fields in a certificate should be populated.","type":"object","properties":{"additionalExtensions":{"description":"Immutable. Optional. Describes custom X.509 extensions.","type":"array","items":{"type":"object","properties":{"critical":{"description":"Immutable. Optional. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).","type":"boolean"},"objectId":{"description":"Immutable. Required. The OID for this X.509 extension.","type":"object","properties":{"objectIdPath":{"description":"Immutable. Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer"}}}},"value":{"description":"Immutable. Required. The value of this X.509 extension.","type":"string"}}}},"caOptions":{"description":"Immutable. Optional. Describes options in this X509Parameters that are relevant in a CA certificate.","type":"object","properties":{"isCa":{"description":"Immutable. Optional. Refers to the \"CA\" X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.","type":"boolean"},"maxIssuerPathLength":{"description":"Immutable. Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.","type":"integer"}}},"keyUsage":{"description":"Immutable. Optional. Indicates the intended use for keys that correspond to a certificate.","type":"object","properties":{"baseKeyUsage":{"description":"Immutable. Describes high-level ways in which a key may be used.","type":"object","properties":{"certSign":{"description":"Immutable. The key may be used to sign certificates.","type":"boolean"},"contentCommitment":{"description":"Immutable. The key may be used for cryptographic commitments. Note that this may also be referred to as \"non-repudiation\".","type":"boolean"},"crlSign":{"description":"Immutable. The key may be used sign certificate revocation lists.","type":"boolean"},"dataEncipherment":{"description":"Immutable. The key may be used to encipher data.","type":"boolean"},"decipherOnly":{"description":"Immutable. The key may be used to decipher only.","type":"boolean"},"digitalSignature":{"description":"Immutable. The key may be used for digital signatures.","type":"boolean"},"encipherOnly":{"description":"Immutable. The key may be used to encipher only.","type":"boolean"},"keyAgreement":{"description":"Immutable. The key may be used in a key agreement protocol.","type":"boolean"},"keyEncipherment":{"description":"Immutable. The key may be used to encipher other keys.","type":"boolean"}}},"extendedKeyUsage":{"description":"Immutable. Detailed scenarios in which a key may be used.","type":"object","properties":{"clientAuth":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as \"TLS WWW client authentication\", though regularly used for non-WWW TLS.","type":"boolean"},"codeSigning":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as \"Signing of downloadable executable code client authentication\".","type":"boolean"},"emailProtection":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as \"Email protection\".","type":"boolean"},"ocspSigning":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as \"Signing OCSP responses\".","type":"boolean"},"serverAuth":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as \"TLS WWW server authentication\", though regularly used for non-WWW TLS.","type":"boolean"},"timeStamping":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as \"Binding the hash of an object to a time\".","type":"boolean"}}},"unknownExtendedKeyUsages":{"description":"Immutable. Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.","type":"array","items":{"type":"object","properties":{"objectIdPath":{"description":"Immutable. Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer"}}}}}}},"policyIds":{"description":"Immutable. Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.","type":"array","items":{"type":"object","properties":{"objectIdPath":{"description":"Immutable. Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer"}}}}}}}}},"gcsBucketRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"Immutable. The name of a Cloud Storage bucket where this CertificateAuthority will publish content, such as the CA certificate and CRLs. This must be a bucket name, without any prefixes (such as `gs://`) or suffixes (such as `.googleapis.com`). For example, to use a bucket named `my-bucket`, you would simply specify `my-bucket`. If not specified, a managed bucket will be created.\n\nAllowed value: The Google Cloud resource name of a `StorageBucket` resource (format: `{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"keySpec":{"description":"Immutable. Required. Immutable. Used when issuing certificates for this CertificateAuthority. If this CertificateAuthority is a self-signed CertificateAuthority, this key is also used to sign the self-signed CA certificate. Otherwise, it is used to sign a CSR.","type":"object","properties":{"algorithm":{"description":"Immutable. The algorithm to use for creating a managed Cloud KMS key for a for a simplified experience. All managed keys will be have their ProtectionLevel as `HSM`. Possible values: RSA_PSS_2048_SHA256, RSA_PSS_3072_SHA256, RSA_PSS_4096_SHA256, RSA_PKCS1_2048_SHA256, RSA_PKCS1_3072_SHA256, RSA_PKCS1_4096_SHA256, EC_P256_SHA256, EC_P384_SHA384","type":"string"},"cloudKmsKeyVersionRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"The resource name for an existing Cloud KMS CryptoKeyVersion in the format `projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`. This option enables full flexibility in the key's capabilities and properties.","type":"string"},"name":{"description":"[WARNING] KMSCryptoKeyVersion not yet supported in Config Connector, use 'external' field to reference existing resources.\nName of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}},"lifetime":{"description":"Immutable. Required. The desired lifetime of the CA certificate. Used to create the \"not_before_time\" and \"not_after_time\" fields inside an X.509 certificate.","type":"string"},"location":{"description":"Immutable. The location for the resource","type":"string"},"projectRef":{"description":"Immutable. The Project that this resource belongs to.","type":"object","properties":{"external":{"description":"The project for the resource\n\nAllowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"resourceID":{"description":"Immutable. Optional. The name of the resource. Used for creation and acquisition. When unset, the value of `metadata.name` is used as the default.","type":"string"},"type":{"description":"Immutable. Required. Immutable. The Type of this CertificateAuthority. Possible values: SELF_SIGNED, SUBORDINATE","type":"string"}}},"status":{"type":"object","properties":{"accessUrls":{"description":"Output only. URLs for accessing content published by this CA, such as the CA certificate and CRLs.","type":"object","properties":{"caCertificateAccessUrl":{"description":"The URL where this CertificateAuthority's CA certificate is published. This will only be set for CAs that have been activated.","type":"string"},"crlAccessUrls":{"description":"The URLs where this CertificateAuthority's CRLs are published. This will only be set for CAs that have been activated.","type":"array","items":{"type":"string"}}}},"caCertificateDescriptions":{"description":"Output only. A structured description of this CertificateAuthority's CA certificate and its issuers. Ordered as self-to-root.","type":"array","items":{"type":"object","properties":{"aiaIssuingCertificateUrls":{"description":"Describes lists of issuer CA certificate URLs that appear in the \"Authority Information Access\" extension in the certificate.","type":"array","items":{"type":"string"}},"authorityKeyId":{"description":"Identifies the subject_key_id of the parent certificate, per https://tools.ietf.org/html/rfc5280#section-4.2.1.1","type":"object","properties":{"keyId":{"description":"Optional. The value of this KeyId encoded in lowercase hexadecimal. This is most likely the 160 bit SHA-1 hash of the public key.","type":"string"}}},"certFingerprint":{"description":"The hash of the x.509 certificate.","type":"object","properties":{"sha256Hash":{"description":"The SHA 256 hash, encoded in hexadecimal, of the DER x509 certificate.","type":"string"}}},"crlDistributionPoints":{"description":"Describes a list of locations to obtain CRL information, i.e. the DistributionPoint.fullName described by https://tools.ietf.org/html/rfc5280#section-4.2.1.13","type":"array","items":{"type":"string"}},"publicKey":{"description":"The public key that corresponds to an issued certificate.","type":"object","properties":{"format":{"description":"Required. The format of the public key. Possible values: PEM","type":"string"},"key":{"description":"Required. A public key. The padding and encoding must match with the `KeyFormat` value specified for the `format` field.","type":"string"}}},"subjectDescription":{"description":"Describes some of the values in a certificate that are related to the subject and lifetime.","type":"object","properties":{"hexSerialNumber":{"description":"The serial number encoded in lowercase hexadecimal.","type":"string"},"lifetime":{"description":"For convenience, the actual lifetime of an issued certificate.","type":"string"},"notAfterTime":{"description":"The time after which the certificate is expired. Per RFC 5280, the validity period for a certificate is the period of time from not_before_time through not_after_time, inclusive. Corresponds to 'not_before_time' + 'lifetime' - 1 second.","type":"string"},"notBeforeTime":{"description":"The time at which the certificate becomes valid.","type":"string"},"subject":{"description":"Contains distinguished name fields such as the common name, location and organization.","type":"object","properties":{"commonName":{"description":"The \"common name\" of the subject.","type":"string"},"countryCode":{"description":"The country code of the subject.","type":"string"},"locality":{"description":"The locality or city of the subject.","type":"string"},"organization":{"description":"The organization of the subject.","type":"string"},"organizationalUnit":{"description":"The organizational_unit of the subject.","type":"string"},"postalCode":{"description":"The postal code of the subject.","type":"string"},"province":{"description":"The province, territory, or regional state of the subject.","type":"string"},"streetAddress":{"description":"The street address of the subject.","type":"string"}}},"subjectAltName":{"description":"The subject alternative name fields.","type":"object","properties":{"customSans":{"description":"Contains additional subject alternative name values.","type":"array","items":{"type":"object","properties":{"critical":{"description":"Optional. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).","type":"boolean"},"objectId":{"description":"Required. The OID for this X.509 extension.","type":"object","properties":{"objectIdPath":{"description":"Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer"}}}},"value":{"description":"Required. The value of this X.509 extension.","type":"string"}}}},"dnsNames":{"description":"Contains only valid, fully-qualified host names.","type":"array","items":{"type":"string"}},"emailAddresses":{"description":"Contains only valid RFC 2822 E-mail addresses.","type":"array","items":{"type":"string"}},"ipAddresses":{"description":"Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.","type":"array","items":{"type":"string"}},"uris":{"description":"Contains only valid RFC 3986 URIs.","type":"array","items":{"type":"string"}}}}}},"subjectKeyId":{"description":"Provides a means of identifiying certificates that contain a particular public key, per https://tools.ietf.org/html/rfc5280#section-4.2.1.2.","type":"object","properties":{"keyId":{"description":"Optional. The value of this KeyId encoded in lowercase hexadecimal. This is most likely the 160 bit SHA-1 hash of the public key.","type":"string"}}},"x509Description":{"description":"Describes some of the technical X.509 fields in a certificate.","type":"object","properties":{"additionalExtensions":{"description":"Optional. Describes custom X.509 extensions.","type":"array","items":{"type":"object","properties":{"critical":{"description":"Optional. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).","type":"boolean"},"objectId":{"description":"Required. The OID for this X.509 extension.","type":"object","properties":{"objectIdPath":{"description":"Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer"}}}},"value":{"description":"Required. The value of this X.509 extension.","type":"string"}}}},"aiaOcspServers":{"description":"Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the \"Authority Information Access\" extension in the certificate.","type":"array","items":{"type":"string"}},"caOptions":{"description":"Optional. Describes options in this X509Parameters that are relevant in a CA certificate.","type":"object","properties":{"isCa":{"description":"Optional. Refers to the \"CA\" X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.","type":"boolean"},"maxIssuerPathLength":{"description":"Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.","type":"integer"}}},"keyUsage":{"description":"Optional. Indicates the intended use for keys that correspond to a certificate.","type":"object","properties":{"baseKeyUsage":{"description":"Describes high-level ways in which a key may be used.","type":"object","properties":{"certSign":{"description":"The key may be used to sign certificates.","type":"boolean"},"contentCommitment":{"description":"The key may be used for cryptographic commitments. Note that this may also be referred to as \"non-repudiation\".","type":"boolean"},"crlSign":{"description":"The key may be used sign certificate revocation lists.","type":"boolean"},"dataEncipherment":{"description":"The key may be used to encipher data.","type":"boolean"},"decipherOnly":{"description":"The key may be used to decipher only.","type":"boolean"},"digitalSignature":{"description":"The key may be used for digital signatures.","type":"boolean"},"encipherOnly":{"description":"The key may be used to encipher only.","type":"boolean"},"keyAgreement":{"description":"The key may be used in a key agreement protocol.","type":"boolean"},"keyEncipherment":{"description":"The key may be used to encipher other keys.","type":"boolean"}}},"extendedKeyUsage":{"description":"Detailed scenarios in which a key may be used.","type":"object","properties":{"clientAuth":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as \"TLS WWW client authentication\", though regularly used for non-WWW TLS.","type":"boolean"},"codeSigning":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as \"Signing of downloadable executable code client authentication\".","type":"boolean"},"emailProtection":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as \"Email protection\".","type":"boolean"},"ocspSigning":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as \"Signing OCSP responses\".","type":"boolean"},"serverAuth":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as \"TLS WWW server authentication\", though regularly used for non-WWW TLS.","type":"boolean"},"timeStamping":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as \"Binding the hash of an object to a time\".","type":"boolean"}}},"unknownExtendedKeyUsages":{"description":"Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.","type":"array","items":{"type":"object","properties":{"objectIdPath":{"description":"Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer"}}}}}}},"policyIds":{"description":"Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.","type":"array","items":{"type":"object","properties":{"objectIdPath":{"description":"Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer"}}}}}}}}}},"conditions":{"description":"Conditions represent the latest available observation of the resource's current state.","type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","type":"string"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"Status is the status of the condition. Can be True, False, Unknown.","type":"string"},"type":{"description":"Type is the type of the condition.","type":"string"}}}},"config":{"type":"object","properties":{"publicKey":{"description":"Optional. The public key that corresponds to this config. This is, for example, used when issuing Certificates, but not when creating a self-signed CertificateAuthority or CertificateAuthority CSR.","type":"object","properties":{"format":{"description":"Required. The format of the public key. Possible values: PEM","type":"string"},"key":{"description":"Required. A public key. The padding and encoding must match with the `KeyFormat` value specified for the `format` field.","type":"string"}}},"x509Config":{"type":"object","properties":{"aiaOcspServers":{"description":"Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the \"Authority Information Access\" extension in the certificate.","type":"array","items":{"type":"string"}}}}}},"createTime":{"description":"Output only. The time at which this CertificateAuthority was created.","type":"string"},"deleteTime":{"description":"Output only. The time at which this CertificateAuthority was soft deleted, if it is in the DELETED state.","type":"string"},"expireTime":{"description":"Output only. The time at which this CertificateAuthority will be permanently purged, if it is in the DELETED state.","type":"string"},"observedGeneration":{"description":"ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.","type":"integer"},"pemCaCertificates":{"description":"Output only. This CertificateAuthority's certificate chain, including the current CertificateAuthority's certificate. Ordered such that the root issuer is the final element (consistent with RFC 5246). For a self-signed CA, this will only list the current CertificateAuthority's certificate.","type":"array","items":{"type":"string"}},"state":{"description":"Output only. The State for this CertificateAuthority. Possible values: ENABLED, DISABLED, STAGED, AWAITING_USER_ACTIVATION, DELETED","type":"string"},"subordinateConfig":{"description":"Optional. If this is a subordinate CertificateAuthority, this field will be set with the subordinate configuration, which describes its issuers. This may be updated, but this CertificateAuthority must continue to validate.","type":"object","properties":{"certificateAuthority":{"description":"Required. This can refer to a CertificateAuthority in the same project that was used to create a subordinate CertificateAuthority. This field is used for information and usability purposes only. The resource name is in the format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.","type":"string"},"pemIssuerChain":{"description":"Required. Contains the PEM certificate chain for the issuers of this CertificateAuthority, but not pem certificate for this CA itself.","type":"object","properties":{"pemCertificates":{"description":"Required. Expected to be in leaf-to-root order according to RFC 5246.","type":"array","items":{"type":"string"}}}}}},"tier":{"description":"Output only. The CaPool.Tier of the CaPool that includes this CertificateAuthority. Possible values: ENTERPRISE, DEVOPS","type":"string"},"updateTime":{"description":"Output only. The time at which this CertificateAuthority was last updated.","type":"string"}}}},"x-kubernetes-group-version-kind":[{"group":"privateca.cnrm.cloud.google.com","kind":"PrivateCACertificateAuthority","version":"v1beta1"}]},"com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthorityList":{"description":"PrivateCACertificateAuthorityList is a list of PrivateCACertificateAuthority","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of privatecacertificateauthorities. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"$ref":"#/definitions/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthority"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"privateca.cnrm.cloud.google.com","kind":"PrivateCACertificateAuthorityList","version":"v1beta1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition":{"description":"CustomResourceColumnDefinition specifies a column for server side printing.","type":"object","required":["name","type","jsonPath"],"properties":{"description":{"description":"description is a human readable description of this column.","type":"string"},"format":{"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.","type":"string"},"jsonPath":{"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.","type":"string","default":""},"name":{"description":"name is a human readable name for the column.","type":"string","default":""},"priority":{"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.","type":"integer","format":"int32"},"type":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion":{"description":"CustomResourceConversion describes how to convert different versions of a CR.","type":"object","required":["strategy"],"properties":{"strategy":{"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.","type":"string","default":""},"webhook":{"description":"webhook describes how to call the conversion webhook. Required when `strategy` is set to `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition":{"description":"CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format \u003c.spec.name\u003e.\u003c.spec.group\u003e.","type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"spec describes how the user wants the resources to appear","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec"},"status":{"description":"status indicates the actual state of the CustomResourceDefinition","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus"}},"x-kubernetes-group-version-kind":[{"group":"apiextensions.k8s.io","kind":"CustomResourceDefinition","version":"v1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition":{"description":"CustomResourceDefinitionCondition contains details for the current condition of this pod.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"lastTransitionTime last time the condition transitioned from one status to another.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"message is a human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"reason is a unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"status is the status of the condition. Can be True, False, Unknown.","type":"string","default":""},"type":{"description":"type is the type of the condition. Types include Established, NamesAccepted and Terminating.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames":{"description":"CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition","type":"object","required":["plural","kind"],"properties":{"categories":{"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`.","type":"array","items":{"type":"string","default":""}},"kind":{"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.","type":"string","default":""},"listKind":{"description":"listKind is the serialized kind of the list for this resource. Defaults to \"`kind`List\".","type":"string"},"plural":{"description":"plural is the plural name of the resource to serve. The custom resources are served under `/apis/\u003cgroup\u003e/\u003cversion\u003e/.../\u003cplural\u003e`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`). Must be all lowercase.","type":"string","default":""},"shortNames":{"description":"shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get \u003cshortname\u003e`. It must be all lowercase.","type":"array","items":{"type":"string","default":""}},"singular":{"description":"singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec":{"description":"CustomResourceDefinitionSpec describes how a user wants their resource to appear","type":"object","required":["group","names","scope","versions"],"properties":{"conversion":{"description":"conversion defines conversion settings for the CRD.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion"},"group":{"description":"group is the API group of the defined custom resource. The custom resources are served under `/apis/\u003cgroup\u003e/...`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`).","type":"string","default":""},"names":{"description":"names specify the resource and kind names for the custom resource.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"preserveUnknownFields":{"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.","type":"boolean"},"scope":{"description":"scope indicates whether the defined custom resource is cluster- or namespace-scoped. Allowed values are `Cluster` and `Namespaced`.","type":"string","default":""},"versions":{"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 \u003e beta \u003e 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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion"}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus":{"description":"CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition","type":"object","properties":{"acceptedNames":{"description":"acceptedNames are the names that are actually being used to serve discovery. They may be different than the names in spec.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"conditions":{"description":"conditions indicate state for particular aspects of a CustomResourceDefinition","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition"},"x-kubernetes-list-map-keys":["type"],"x-kubernetes-list-type":"map"},"storedVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion":{"description":"CustomResourceDefinitionVersion describes a version for CRD.","type":"object","required":["name","served","storage"],"properties":{"additionalPrinterColumns":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition"}},"deprecated":{"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.","type":"boolean"},"deprecationWarning":{"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.","type":"string"},"name":{"description":"name is the version name, e.g. “v1â€, “v2beta1â€, etc. The custom resources are served under this version at `/apis/\u003cgroup\u003e/\u003cversion\u003e/...` if `served` is true.","type":"string","default":""},"schema":{"description":"schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation"},"served":{"description":"served is a flag enabling/disabling this version from being served via REST APIs","type":"boolean","default":false},"storage":{"description":"storage indicates this version should be used when persisting custom resources to storage. There must be exactly one version with storage=true.","type":"boolean","default":false},"subresources":{"description":"subresources specify what subresources this version of the defined custom resource have.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale":{"description":"CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.","type":"object","required":["specReplicasPath","statusReplicasPath"],"properties":{"labelSelectorPath":{"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.","type":"string"},"specReplicasPath":{"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.","type":"string","default":""},"statusReplicasPath":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus":{"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","type":"object"},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources":{"description":"CustomResourceSubresources defines the status and scale subresources for CustomResources.","type":"object","properties":{"scale":{"description":"scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale"},"status":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation":{"description":"CustomResourceValidation is a list of validation methods for CustomResources.","type":"object","properties":{"openAPIV3Schema":{"description":"openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation":{"description":"ExternalDocumentation allows referencing an external resource for extended documentation.","type":"object","properties":{"description":{"type":"string"},"url":{"type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON":{"description":"JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps":{"description":"JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).","type":"object","properties":{"$ref":{"type":"string"},"$schema":{"type":"string"},"additionalItems":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"additionalProperties":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"allOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"anyOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"default":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"definitions":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"dependencies":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray"}},"description":{"type":"string"},"enum":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"}},"example":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"exclusiveMaximum":{"type":"boolean"},"exclusiveMinimum":{"type":"boolean"},"externalDocs":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation"},"format":{"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.","type":"string"},"id":{"type":"string"},"items":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray"},"maxItems":{"type":"integer","format":"int64"},"maxLength":{"type":"integer","format":"int64"},"maxProperties":{"type":"integer","format":"int64"},"maximum":{"type":"number","format":"double"},"minItems":{"type":"integer","format":"int64"},"minLength":{"type":"integer","format":"int64"},"minProperties":{"type":"integer","format":"int64"},"minimum":{"type":"number","format":"double"},"multipleOf":{"type":"number","format":"double"},"not":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"},"nullable":{"type":"boolean"},"oneOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"pattern":{"type":"string"},"patternProperties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"properties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"required":{"type":"array","items":{"type":"string","default":""}},"title":{"type":"string"},"type":{"type":"string"},"uniqueItems":{"type":"boolean"},"x-kubernetes-embedded-resource":{"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).","type":"boolean"},"x-kubernetes-int-or-string":{"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","type":"boolean"},"x-kubernetes-list-map-keys":{"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.","type":"array","items":{"type":"string","default":""}},"x-kubernetes-list-type":{"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.","type":"string"},"x-kubernetes-map-type":{"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.","type":"string"},"x-kubernetes-preserve-unknown-fields":{"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.","type":"boolean"},"x-kubernetes-validations":{"description":"x-kubernetes-validations describes a list of validation rules written in the CEL expression language. This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule"},"x-kubernetes-list-map-keys":["rule"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"rule","x-kubernetes-patch-strategy":"merge"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray":{"description":"JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool":{"description":"JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray":{"description":"JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference":{"description":"ServiceReference holds a reference to Service.legacy.k8s.io","type":"object","required":["namespace","name"],"properties":{"name":{"description":"name is the name of the service. Required","type":"string","default":""},"namespace":{"description":"namespace is the namespace of the service. Required","type":"string","default":""},"path":{"description":"path is an optional URL path at which the webhook will be contacted.","type":"string"},"port":{"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.","type":"integer","format":"int32"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule":{"description":"ValidationRule describes a validation rule written in the CEL expression language.","type":"object","required":["rule"],"properties":{"message":{"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\"","type":"string"},"rule":{"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 \u003c= 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 \u003c 10\"} - Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value \u003e= 0 \u0026\u0026 value \u003c 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__ \u003e 0\"}\n - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop \u003e 0\"}\n - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d \u003e 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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig":{"description":"WebhookClientConfig contains the information to make a TLS connection with the webhook.","type":"object","properties":{"caBundle":{"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.","type":"string","format":"byte"},"service":{"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`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference"},"url":{"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.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion":{"description":"WebhookConversion describes how to call a conversion webhook","type":"object","required":["conversionReviewVersions"],"properties":{"clientConfig":{"description":"clientConfig is the instructions for how to call the webhook if strategy is `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig"},"conversionReviewVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"},"propagationPolicy":{"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.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"creationTimestamp":{"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","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"},"reason":{"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.","type":"string"},"status":{"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","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"}},"securityDefinitions":{"BearerToken":{"description":"Bearer Token authentication","type":"apiKey","name":"authorization","in":"header"}},"security":[{"BearerToken":[]}]}storagetransfer_v1beta1_storagetransferjob.json000066400000000000000000003330161453663023200413360ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv2{"swagger":"2.0","info":{"title":"Kubernetes","version":"v1.27.0"},"paths":{"/apis/storagetransfer.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/storagetransferjobs":{"get":{"description":"list objects of kind StorageTransferJob","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["storagetransferCnrmCloudGoogleCom_v1beta1"],"operationId":"listStoragetransferCnrmCloudGoogleComV1beta1NamespacedStorageTransferJob","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJobList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"storagetransfer.cnrm.cloud.google.com","version":"v1beta1","kind":"StorageTransferJob"}},"post":{"description":"create a StorageTransferJob","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["storagetransferCnrmCloudGoogleCom_v1beta1"],"operationId":"createStoragetransferCnrmCloudGoogleComV1beta1NamespacedStorageTransferJob","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJob"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJob"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJob"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJob"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"storagetransfer.cnrm.cloud.google.com","version":"v1beta1","kind":"StorageTransferJob"}},"delete":{"description":"delete collection of StorageTransferJob","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["storagetransferCnrmCloudGoogleCom_v1beta1"],"operationId":"deleteStoragetransferCnrmCloudGoogleComV1beta1CollectionNamespacedStorageTransferJob","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"storagetransfer.cnrm.cloud.google.com","version":"v1beta1","kind":"StorageTransferJob"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/storagetransfer.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/storagetransferjobs/{name}":{"get":{"description":"read the specified StorageTransferJob","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["storagetransferCnrmCloudGoogleCom_v1beta1"],"operationId":"readStoragetransferCnrmCloudGoogleComV1beta1NamespacedStorageTransferJob","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJob"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"storagetransfer.cnrm.cloud.google.com","version":"v1beta1","kind":"StorageTransferJob"}},"put":{"description":"replace the specified StorageTransferJob","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["storagetransferCnrmCloudGoogleCom_v1beta1"],"operationId":"replaceStoragetransferCnrmCloudGoogleComV1beta1NamespacedStorageTransferJob","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJob"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJob"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJob"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"storagetransfer.cnrm.cloud.google.com","version":"v1beta1","kind":"StorageTransferJob"}},"delete":{"description":"delete a StorageTransferJob","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["storagetransferCnrmCloudGoogleCom_v1beta1"],"operationId":"deleteStoragetransferCnrmCloudGoogleComV1beta1NamespacedStorageTransferJob","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"storagetransfer.cnrm.cloud.google.com","version":"v1beta1","kind":"StorageTransferJob"}},"patch":{"description":"partially update the specified StorageTransferJob","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["storagetransferCnrmCloudGoogleCom_v1beta1"],"operationId":"patchStoragetransferCnrmCloudGoogleComV1beta1NamespacedStorageTransferJob","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJob"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"storagetransfer.cnrm.cloud.google.com","version":"v1beta1","kind":"StorageTransferJob"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the StorageTransferJob","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/storagetransfer.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/storagetransferjobs/{name}/status":{"get":{"description":"read status of the specified StorageTransferJob","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["storagetransferCnrmCloudGoogleCom_v1beta1"],"operationId":"readStoragetransferCnrmCloudGoogleComV1beta1NamespacedStorageTransferJobStatus","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJob"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"storagetransfer.cnrm.cloud.google.com","version":"v1beta1","kind":"StorageTransferJob"}},"put":{"description":"replace status of the specified StorageTransferJob","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["storagetransferCnrmCloudGoogleCom_v1beta1"],"operationId":"replaceStoragetransferCnrmCloudGoogleComV1beta1NamespacedStorageTransferJobStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJob"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJob"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJob"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"storagetransfer.cnrm.cloud.google.com","version":"v1beta1","kind":"StorageTransferJob"}},"patch":{"description":"partially update status of the specified StorageTransferJob","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["storagetransferCnrmCloudGoogleCom_v1beta1"],"operationId":"patchStoragetransferCnrmCloudGoogleComV1beta1NamespacedStorageTransferJobStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJob"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"storagetransfer.cnrm.cloud.google.com","version":"v1beta1","kind":"StorageTransferJob"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the StorageTransferJob","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/storagetransfer.cnrm.cloud.google.com/v1beta1/storagetransferjobs":{"get":{"description":"list objects of kind StorageTransferJob","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["storagetransferCnrmCloudGoogleCom_v1beta1"],"operationId":"listStoragetransferCnrmCloudGoogleComV1beta1StorageTransferJobForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJobList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"storagetransfer.cnrm.cloud.google.com","version":"v1beta1","kind":"StorageTransferJob"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]}},"definitions":{"com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJob":{"type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"type":"object","properties":{"description":{"description":"Unique description to identify the Transfer Job.","type":"string"},"notificationConfig":{"description":"Notification configuration.","type":"object","properties":{"eventTypes":{"description":"Event types for which a notification is desired. If empty, send notifications for all event types. The valid types are \"TRANSFER_OPERATION_SUCCESS\", \"TRANSFER_OPERATION_FAILED\", \"TRANSFER_OPERATION_ABORTED\".","type":"array","items":{"type":"string"}},"payloadFormat":{"description":"The desired format of the notification message payloads. One of \"NONE\" or \"JSON\".","type":"string"},"topicRef":{"description":"The PubSubTopic to which to publish notifications.","type":"object","properties":{"external":{"description":"Allowed value: string of the format `projects/{{project}}/topics/{{value}}`, where {{value}} is the `name` field of a `PubSubTopic` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}},"resourceID":{"description":"Immutable. Optional. The service-generated name of the resource. Used for acquisition only. Leave unset to create a new resource.","type":"string"},"schedule":{"description":"Schedule specification defining when the Transfer Job should be scheduled to start, end and what time to run.","type":"object","properties":{"repeatInterval":{"description":"Interval between the start of each scheduled transfer. If unspecified, the default value is 24 hours. This value may not be less than 1 hour. A duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".","type":"string"},"scheduleEndDate":{"description":"Immutable. The last day the recurring transfer will be run. If schedule_end_date is the same as schedule_start_date, the transfer will be executed only once.","type":"object","properties":{"day":{"description":"Immutable. Day of month. Must be from 1 to 31 and valid for the year and month.","type":"integer"},"month":{"description":"Immutable. Month of year. Must be from 1 to 12.","type":"integer"},"year":{"description":"Immutable. Year of date. Must be from 1 to 9999.","type":"integer"}}},"scheduleStartDate":{"description":"Immutable. The first day the recurring transfer is scheduled to run. If schedule_start_date is in the past, the transfer will run for the first time on the following day.","type":"object","properties":{"day":{"description":"Immutable. Day of month. Must be from 1 to 31 and valid for the year and month.","type":"integer"},"month":{"description":"Immutable. Month of year. Must be from 1 to 12.","type":"integer"},"year":{"description":"Immutable. Year of date. Must be from 1 to 9999.","type":"integer"}}},"startTimeOfDay":{"description":"Immutable. The time in UTC at which the transfer will be scheduled to start in a day. Transfers may start later than this time. If not specified, recurring and one-time transfers that are scheduled to run today will run immediately; recurring transfers that are scheduled to run on a future date will start at approximately midnight UTC on that date. Note that when configuring a transfer with the Cloud Platform Console, the transfer's start time in a day is specified in your local timezone.","type":"object","properties":{"hours":{"description":"Immutable. Hours of day in 24 hour format. Should be from 0 to 23.","type":"integer"},"minutes":{"description":"Immutable. Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Immutable. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Immutable. Seconds of minutes of the time. Must normally be from 0 to 59.","type":"integer"}}}}},"status":{"description":"Status of the job. Default: ENABLED. NOTE: The effect of the new job status takes place during a subsequent job run. For example, if you change the job status from ENABLED to DISABLED, and an operation spawned by the transfer is running, the status change would not affect the current operation.","type":"string"},"transferSpec":{"description":"Transfer specification.","type":"object","properties":{"awsS3DataSource":{"description":"An AWS S3 data source.","type":"object","properties":{"awsAccessKey":{"description":"AWS credentials block.","type":"object","properties":{"accessKeyId":{"description":"AWS Key ID.","type":"object","properties":{"value":{"description":"Value of the field. Cannot be used if 'valueFrom' is specified.","type":"string"},"valueFrom":{"description":"Source for the field's value. Cannot be used if 'value' is specified.","type":"object","properties":{"secretKeyRef":{"description":"Reference to a value with the given key in the given Secret in the resource's namespace.","type":"object","properties":{"key":{"description":"Key that identifies the value to be extracted.","type":"string"},"name":{"description":"Name of the Secret to extract a value from.","type":"string"}}}}}}},"secretAccessKey":{"description":"AWS Secret Access Key.","type":"object","properties":{"value":{"description":"Value of the field. Cannot be used if 'valueFrom' is specified.","type":"string"},"valueFrom":{"description":"Source for the field's value. Cannot be used if 'value' is specified.","type":"object","properties":{"secretKeyRef":{"description":"Reference to a value with the given key in the given Secret in the resource's namespace.","type":"object","properties":{"key":{"description":"Key that identifies the value to be extracted.","type":"string"},"name":{"description":"Name of the Secret to extract a value from.","type":"string"}}}}}}}}},"bucketName":{"description":"S3 Bucket name.","type":"string"},"roleArn":{"description":"The Amazon Resource Name (ARN) of the role to support temporary credentials via 'AssumeRoleWithWebIdentity'. For more information about ARNs, see [IAM ARNs](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns). When a role ARN is provided, Transfer Service fetches temporary credentials for the session using a 'AssumeRoleWithWebIdentity' call for the provided role using the [GoogleServiceAccount][] for this project.","type":"string"}}},"azureBlobStorageDataSource":{"description":"An Azure Blob Storage data source.","type":"object","properties":{"azureCredentials":{"description":" Credentials used to authenticate API requests to Azure.","type":"object","properties":{"sasToken":{"description":"Azure shared access signature.","type":"object","properties":{"value":{"description":"Value of the field. Cannot be used if 'valueFrom' is specified.","type":"string"},"valueFrom":{"description":"Source for the field's value. Cannot be used if 'value' is specified.","type":"object","properties":{"secretKeyRef":{"description":"Reference to a value with the given key in the given Secret in the resource's namespace.","type":"object","properties":{"key":{"description":"Key that identifies the value to be extracted.","type":"string"},"name":{"description":"Name of the Secret to extract a value from.","type":"string"}}}}}}}}},"container":{"description":"The container to transfer from the Azure Storage account.","type":"string"},"path":{"description":"Root path to transfer objects. Must be an empty string or full path name that ends with a '/'. This field is treated as an object prefix. As such, it should generally not begin with a '/'.","type":"string"},"storageAccount":{"description":"The name of the Azure Storage account.","type":"string"}}},"gcsDataSink":{"description":"A Google Cloud Storage data sink.","type":"object","properties":{"bucketRef":{"type":"object","properties":{"external":{"description":"Allowed value: The `name` field of a `StorageBucket` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"path":{"description":"Google Cloud Storage path in bucket to transfer.","type":"string"}}},"gcsDataSource":{"description":"A Google Cloud Storage data source.","type":"object","properties":{"bucketRef":{"type":"object","properties":{"external":{"description":"Allowed value: The `name` field of a `StorageBucket` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"path":{"description":"Google Cloud Storage path in bucket to transfer.","type":"string"}}},"httpDataSource":{"description":"A HTTP URL data source.","type":"object","properties":{"listUrl":{"description":"The URL that points to the file that stores the object list entries. This file must allow public access. Currently, only URLs with HTTP and HTTPS schemes are supported.","type":"string"}}},"objectConditions":{"description":"Only objects that satisfy these object conditions are included in the set of data source and data sink objects. Object conditions based on objects' last_modification_time do not exclude objects in a data sink.","type":"object","properties":{"excludePrefixes":{"description":"exclude_prefixes must follow the requirements described for include_prefixes.","type":"array","items":{"type":"string"}},"includePrefixes":{"description":"If include_refixes is specified, objects that satisfy the object conditions must have names that start with one of the include_prefixes and that do not start with any of the exclude_prefixes. If include_prefixes is not specified, all objects except those that have names starting with one of the exclude_prefixes must satisfy the object conditions.","type":"array","items":{"type":"string"}},"maxTimeElapsedSinceLastModification":{"description":"A duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".","type":"string"},"minTimeElapsedSinceLastModification":{"description":"A duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".","type":"string"}}},"posixDataSink":{"description":"A POSIX filesystem data sink.","type":"object","properties":{"rootDirectory":{"description":"Root directory path to the filesystem.","type":"string"}}},"posixDataSource":{"description":"A POSIX filesystem data source.","type":"object","properties":{"rootDirectory":{"description":"Root directory path to the filesystem.","type":"string"}}},"transferOptions":{"description":"Characteristics of how to treat files from datasource and sink during job. If the option delete_objects_unique_in_sink is true, object conditions based on objects' last_modification_time are ignored and do not exclude objects in a data source or a data sink.","type":"object","properties":{"deleteObjectsFromSourceAfterTransfer":{"description":"Whether objects should be deleted from the source after they are transferred to the sink. Note that this option and delete_objects_unique_in_sink are mutually exclusive.","type":"boolean"},"deleteObjectsUniqueInSink":{"description":"Whether objects that exist only in the sink should be deleted. Note that this option and delete_objects_from_source_after_transfer are mutually exclusive.","type":"boolean"},"overwriteObjectsAlreadyExistingInSink":{"description":"Whether overwriting objects that already exist in the sink is allowed.","type":"boolean"},"overwriteWhen":{"description":"When to overwrite objects that already exist in the sink. If not set, overwrite behavior is determined by overwriteObjectsAlreadyExistingInSink.","type":"string"}}}}}}},"status":{"type":"object","properties":{"conditions":{"description":"Conditions represent the latest available observation of the resource's current state.","type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","type":"string"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"Status is the status of the condition. Can be True, False, Unknown.","type":"string"},"type":{"description":"Type is the type of the condition.","type":"string"}}}},"creationTime":{"description":"When the Transfer Job was created.","type":"string"},"deletionTime":{"description":"When the Transfer Job was deleted.","type":"string"},"lastModificationTime":{"description":"When the Transfer Job was last modified.","type":"string"},"name":{"description":"The name of the Transfer Job.","type":"string"},"observedGeneration":{"description":"ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.","type":"integer"}}}},"x-kubernetes-group-version-kind":[{"group":"storagetransfer.cnrm.cloud.google.com","kind":"StorageTransferJob","version":"v1beta1"}]},"com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJobList":{"description":"StorageTransferJobList is a list of StorageTransferJob","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of storagetransferjobs. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"$ref":"#/definitions/com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJob"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"storagetransfer.cnrm.cloud.google.com","kind":"StorageTransferJobList","version":"v1beta1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition":{"description":"CustomResourceColumnDefinition specifies a column for server side printing.","type":"object","required":["name","type","jsonPath"],"properties":{"description":{"description":"description is a human readable description of this column.","type":"string"},"format":{"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.","type":"string"},"jsonPath":{"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.","type":"string","default":""},"name":{"description":"name is a human readable name for the column.","type":"string","default":""},"priority":{"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.","type":"integer","format":"int32"},"type":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion":{"description":"CustomResourceConversion describes how to convert different versions of a CR.","type":"object","required":["strategy"],"properties":{"strategy":{"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.","type":"string","default":""},"webhook":{"description":"webhook describes how to call the conversion webhook. Required when `strategy` is set to `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition":{"description":"CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format \u003c.spec.name\u003e.\u003c.spec.group\u003e.","type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"spec describes how the user wants the resources to appear","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec"},"status":{"description":"status indicates the actual state of the CustomResourceDefinition","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus"}},"x-kubernetes-group-version-kind":[{"group":"apiextensions.k8s.io","kind":"CustomResourceDefinition","version":"v1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition":{"description":"CustomResourceDefinitionCondition contains details for the current condition of this pod.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"lastTransitionTime last time the condition transitioned from one status to another.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"message is a human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"reason is a unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"status is the status of the condition. Can be True, False, Unknown.","type":"string","default":""},"type":{"description":"type is the type of the condition. Types include Established, NamesAccepted and Terminating.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames":{"description":"CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition","type":"object","required":["plural","kind"],"properties":{"categories":{"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`.","type":"array","items":{"type":"string","default":""}},"kind":{"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.","type":"string","default":""},"listKind":{"description":"listKind is the serialized kind of the list for this resource. Defaults to \"`kind`List\".","type":"string"},"plural":{"description":"plural is the plural name of the resource to serve. The custom resources are served under `/apis/\u003cgroup\u003e/\u003cversion\u003e/.../\u003cplural\u003e`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`). Must be all lowercase.","type":"string","default":""},"shortNames":{"description":"shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get \u003cshortname\u003e`. It must be all lowercase.","type":"array","items":{"type":"string","default":""}},"singular":{"description":"singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec":{"description":"CustomResourceDefinitionSpec describes how a user wants their resource to appear","type":"object","required":["group","names","scope","versions"],"properties":{"conversion":{"description":"conversion defines conversion settings for the CRD.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion"},"group":{"description":"group is the API group of the defined custom resource. The custom resources are served under `/apis/\u003cgroup\u003e/...`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`).","type":"string","default":""},"names":{"description":"names specify the resource and kind names for the custom resource.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"preserveUnknownFields":{"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.","type":"boolean"},"scope":{"description":"scope indicates whether the defined custom resource is cluster- or namespace-scoped. Allowed values are `Cluster` and `Namespaced`.","type":"string","default":""},"versions":{"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 \u003e beta \u003e 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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion"}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus":{"description":"CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition","type":"object","properties":{"acceptedNames":{"description":"acceptedNames are the names that are actually being used to serve discovery. They may be different than the names in spec.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"conditions":{"description":"conditions indicate state for particular aspects of a CustomResourceDefinition","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition"},"x-kubernetes-list-map-keys":["type"],"x-kubernetes-list-type":"map"},"storedVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion":{"description":"CustomResourceDefinitionVersion describes a version for CRD.","type":"object","required":["name","served","storage"],"properties":{"additionalPrinterColumns":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition"}},"deprecated":{"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.","type":"boolean"},"deprecationWarning":{"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.","type":"string"},"name":{"description":"name is the version name, e.g. “v1â€, “v2beta1â€, etc. The custom resources are served under this version at `/apis/\u003cgroup\u003e/\u003cversion\u003e/...` if `served` is true.","type":"string","default":""},"schema":{"description":"schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation"},"served":{"description":"served is a flag enabling/disabling this version from being served via REST APIs","type":"boolean","default":false},"storage":{"description":"storage indicates this version should be used when persisting custom resources to storage. There must be exactly one version with storage=true.","type":"boolean","default":false},"subresources":{"description":"subresources specify what subresources this version of the defined custom resource have.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale":{"description":"CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.","type":"object","required":["specReplicasPath","statusReplicasPath"],"properties":{"labelSelectorPath":{"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.","type":"string"},"specReplicasPath":{"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.","type":"string","default":""},"statusReplicasPath":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus":{"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","type":"object"},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources":{"description":"CustomResourceSubresources defines the status and scale subresources for CustomResources.","type":"object","properties":{"scale":{"description":"scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale"},"status":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation":{"description":"CustomResourceValidation is a list of validation methods for CustomResources.","type":"object","properties":{"openAPIV3Schema":{"description":"openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation":{"description":"ExternalDocumentation allows referencing an external resource for extended documentation.","type":"object","properties":{"description":{"type":"string"},"url":{"type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON":{"description":"JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps":{"description":"JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).","type":"object","properties":{"$ref":{"type":"string"},"$schema":{"type":"string"},"additionalItems":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"additionalProperties":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"allOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"anyOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"default":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"definitions":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"dependencies":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray"}},"description":{"type":"string"},"enum":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"}},"example":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"exclusiveMaximum":{"type":"boolean"},"exclusiveMinimum":{"type":"boolean"},"externalDocs":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation"},"format":{"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.","type":"string"},"id":{"type":"string"},"items":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray"},"maxItems":{"type":"integer","format":"int64"},"maxLength":{"type":"integer","format":"int64"},"maxProperties":{"type":"integer","format":"int64"},"maximum":{"type":"number","format":"double"},"minItems":{"type":"integer","format":"int64"},"minLength":{"type":"integer","format":"int64"},"minProperties":{"type":"integer","format":"int64"},"minimum":{"type":"number","format":"double"},"multipleOf":{"type":"number","format":"double"},"not":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"},"nullable":{"type":"boolean"},"oneOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"pattern":{"type":"string"},"patternProperties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"properties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"required":{"type":"array","items":{"type":"string","default":""}},"title":{"type":"string"},"type":{"type":"string"},"uniqueItems":{"type":"boolean"},"x-kubernetes-embedded-resource":{"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).","type":"boolean"},"x-kubernetes-int-or-string":{"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","type":"boolean"},"x-kubernetes-list-map-keys":{"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.","type":"array","items":{"type":"string","default":""}},"x-kubernetes-list-type":{"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.","type":"string"},"x-kubernetes-map-type":{"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.","type":"string"},"x-kubernetes-preserve-unknown-fields":{"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.","type":"boolean"},"x-kubernetes-validations":{"description":"x-kubernetes-validations describes a list of validation rules written in the CEL expression language. This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule"},"x-kubernetes-list-map-keys":["rule"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"rule","x-kubernetes-patch-strategy":"merge"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray":{"description":"JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool":{"description":"JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray":{"description":"JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference":{"description":"ServiceReference holds a reference to Service.legacy.k8s.io","type":"object","required":["namespace","name"],"properties":{"name":{"description":"name is the name of the service. Required","type":"string","default":""},"namespace":{"description":"namespace is the namespace of the service. Required","type":"string","default":""},"path":{"description":"path is an optional URL path at which the webhook will be contacted.","type":"string"},"port":{"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.","type":"integer","format":"int32"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule":{"description":"ValidationRule describes a validation rule written in the CEL expression language.","type":"object","required":["rule"],"properties":{"message":{"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\"","type":"string"},"rule":{"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 \u003c= 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 \u003c 10\"} - Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value \u003e= 0 \u0026\u0026 value \u003c 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__ \u003e 0\"}\n - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop \u003e 0\"}\n - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d \u003e 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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig":{"description":"WebhookClientConfig contains the information to make a TLS connection with the webhook.","type":"object","properties":{"caBundle":{"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.","type":"string","format":"byte"},"service":{"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`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference"},"url":{"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.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion":{"description":"WebhookConversion describes how to call a conversion webhook","type":"object","required":["conversionReviewVersions"],"properties":{"clientConfig":{"description":"clientConfig is the instructions for how to call the webhook if strategy is `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig"},"conversionReviewVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"},"propagationPolicy":{"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.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"creationTimestamp":{"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","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"},"reason":{"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.","type":"string"},"status":{"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","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"}},"securityDefinitions":{"BearerToken":{"description":"Bearer Token authentication","type":"apiKey","name":"authorization","in":"header"}},"security":[{"BearerToken":[]}]}vpcaccess_v1beta1_vpcaccessconnector.json000066400000000000000000003123411453663023200400560ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv2{"swagger":"2.0","info":{"title":"Kubernetes","version":"v1.27.0"},"paths":{"/apis/vpcaccess.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/vpcaccessconnectors":{"get":{"description":"list objects of kind VPCAccessConnector","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["vpcaccessCnrmCloudGoogleCom_v1beta1"],"operationId":"listVpcaccessCnrmCloudGoogleComV1beta1NamespacedVPCAccessConnector","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnectorList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"vpcaccess.cnrm.cloud.google.com","version":"v1beta1","kind":"VPCAccessConnector"}},"post":{"description":"create a VPCAccessConnector","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["vpcaccessCnrmCloudGoogleCom_v1beta1"],"operationId":"createVpcaccessCnrmCloudGoogleComV1beta1NamespacedVPCAccessConnector","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnector"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnector"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnector"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnector"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"post","x-kubernetes-group-version-kind":{"group":"vpcaccess.cnrm.cloud.google.com","version":"v1beta1","kind":"VPCAccessConnector"}},"delete":{"description":"delete collection of VPCAccessConnector","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["vpcaccessCnrmCloudGoogleCom_v1beta1"],"operationId":"deleteVpcaccessCnrmCloudGoogleComV1beta1CollectionNamespacedVPCAccessConnector","parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"deletecollection","x-kubernetes-group-version-kind":{"group":"vpcaccess.cnrm.cloud.google.com","version":"v1beta1","kind":"VPCAccessConnector"}},"parameters":[{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/vpcaccess.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/vpcaccessconnectors/{name}":{"get":{"description":"read the specified VPCAccessConnector","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["vpcaccessCnrmCloudGoogleCom_v1beta1"],"operationId":"readVpcaccessCnrmCloudGoogleComV1beta1NamespacedVPCAccessConnector","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnector"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"vpcaccess.cnrm.cloud.google.com","version":"v1beta1","kind":"VPCAccessConnector"}},"put":{"description":"replace the specified VPCAccessConnector","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["vpcaccessCnrmCloudGoogleCom_v1beta1"],"operationId":"replaceVpcaccessCnrmCloudGoogleComV1beta1NamespacedVPCAccessConnector","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnector"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnector"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnector"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"vpcaccess.cnrm.cloud.google.com","version":"v1beta1","kind":"VPCAccessConnector"}},"delete":{"description":"delete a VPCAccessConnector","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["vpcaccessCnrmCloudGoogleCom_v1beta1"],"operationId":"deleteVpcaccessCnrmCloudGoogleComV1beta1NamespacedVPCAccessConnector","parameters":[{"name":"body","in":"body","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"gracePeriodSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","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.","name":"orphanDependents","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"propagationPolicy","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"202":{"description":"Accepted","schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"delete","x-kubernetes-group-version-kind":{"group":"vpcaccess.cnrm.cloud.google.com","version":"v1beta1","kind":"VPCAccessConnector"}},"patch":{"description":"partially update the specified VPCAccessConnector","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["vpcaccessCnrmCloudGoogleCom_v1beta1"],"operationId":"patchVpcaccessCnrmCloudGoogleComV1beta1NamespacedVPCAccessConnector","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnector"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"vpcaccess.cnrm.cloud.google.com","version":"v1beta1","kind":"VPCAccessConnector"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the VPCAccessConnector","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/vpcaccess.cnrm.cloud.google.com/v1beta1/namespaces/{namespace}/vpcaccessconnectors/{name}/status":{"get":{"description":"read status of the specified VPCAccessConnector","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["vpcaccessCnrmCloudGoogleCom_v1beta1"],"operationId":"readVpcaccessCnrmCloudGoogleComV1beta1NamespacedVPCAccessConnectorStatus","parameters":[{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnector"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"get","x-kubernetes-group-version-kind":{"group":"vpcaccess.cnrm.cloud.google.com","version":"v1beta1","kind":"VPCAccessConnector"}},"put":{"description":"replace status of the specified VPCAccessConnector","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["vpcaccessCnrmCloudGoogleCom_v1beta1"],"operationId":"replaceVpcaccessCnrmCloudGoogleComV1beta1NamespacedVPCAccessConnectorStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnector"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnector"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnector"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"put","x-kubernetes-group-version-kind":{"group":"vpcaccess.cnrm.cloud.google.com","version":"v1beta1","kind":"VPCAccessConnector"}},"patch":{"description":"partially update status of the specified VPCAccessConnector","consumes":["application/json-patch+json","application/merge-patch+json","application/apply-patch+yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["vpcaccessCnrmCloudGoogleCom_v1beta1"],"operationId":"patchVpcaccessCnrmCloudGoogleComV1beta1NamespacedVPCAccessConnectorStatus","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}},{"uniqueItems":true,"type":"string","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","name":"dryRun","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"fieldManager","in":"query"},{"uniqueItems":true,"type":"string","description":"fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.","name":"fieldValidation","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnector"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"patch","x-kubernetes-group-version-kind":{"group":"vpcaccess.cnrm.cloud.google.com","version":"v1beta1","kind":"VPCAccessConnector"}},"parameters":[{"uniqueItems":true,"type":"string","description":"name of the VPCAccessConnector","name":"name","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"object name and auth scope, such as for teams and projects","name":"namespace","in":"path","required":true},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"}]},"/apis/vpcaccess.cnrm.cloud.google.com/v1beta1/vpcaccessconnectors":{"get":{"description":"list objects of kind VPCAccessConnector","consumes":["application/json","application/yaml"],"produces":["application/json","application/yaml"],"schemes":["https"],"tags":["vpcaccessCnrmCloudGoogleCom_v1beta1"],"operationId":"listVpcaccessCnrmCloudGoogleComV1beta1VPCAccessConnectorForAllNamespaces","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnectorList"}},"401":{"description":"Unauthorized"}},"x-kubernetes-action":"list","x-kubernetes-group-version-kind":{"group":"vpcaccess.cnrm.cloud.google.com","version":"v1beta1","kind":"VPCAccessConnector"}},"parameters":[{"uniqueItems":true,"type":"boolean","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.","name":"allowWatchBookmarks","in":"query"},{"uniqueItems":true,"type":"string","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.","name":"continue","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","name":"fieldSelector","in":"query"},{"uniqueItems":true,"type":"string","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","name":"labelSelector","in":"query"},{"uniqueItems":true,"type":"integer","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.","name":"limit","in":"query"},{"uniqueItems":true,"type":"string","description":"If 'true', then the output is pretty printed.","name":"pretty","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersion","in":"query"},{"uniqueItems":true,"type":"string","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","name":"resourceVersionMatch","in":"query"},{"uniqueItems":true,"type":"integer","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","name":"timeoutSeconds","in":"query"},{"uniqueItems":true,"type":"boolean","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","name":"watch","in":"query"}]}},"definitions":{"com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnector":{"type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"type":"object","properties":{"ipCidrRange":{"description":"Immutable. The range of internal addresses that follows RFC 4632 notation. Example: `10.132.0.0/28`.","type":"string"},"location":{"description":"Immutable. The location for the resource","type":"string"},"machineType":{"description":"Immutable. Machine type of VM Instance underlying connector. Default is e2-micro","type":"string"},"maxInstances":{"description":"Immutable. Maximum value of instances in autoscaling group underlying the connector.","type":"integer"},"maxThroughput":{"description":"Immutable. Maximum throughput of the connector in Mbps. Default is 200, max is 1000.","type":"integer"},"minInstances":{"description":"Immutable. Minimum value of instances in autoscaling group underlying the connector.","type":"integer"},"minThroughput":{"description":"Immutable. Minimum throughput of the connector in Mbps. Default and min is 200.","type":"integer"},"networkRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"Name of a VPC network.\n\nAllowed value: The Google Cloud resource name of a `ComputeNetwork` resource (format: `projects/{{project}}/global/networks/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"projectRef":{"description":"Immutable. The Project that this resource belongs to.","type":"object","properties":{"external":{"description":"The project for the resource\n\nAllowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"resourceID":{"description":"Immutable. Optional. The name of the resource. Used for creation and acquisition. When unset, the value of `metadata.name` is used as the default.","type":"string"},"subnet":{"description":"Immutable. The subnet in which to house the VPC Access Connector.","type":"object","properties":{"nameRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"Subnet name (relative, not fully qualified). E.g. if the full subnet selfLink is https://compute.googleapis.com/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetName} the correct input for this field would be: {subnetName}\n\nAllowed value: The Google Cloud resource name of a `ComputeSubnetwork` resource (format: `projects/{{project}}/regions/{{region}}/subnetworks/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"projectRef":{"description":"Immutable.","type":"object","properties":{"external":{"description":"Project in which the subnet exists. If not set, this project is assumed to be the project for which the connector create request was issued.\n\nAllowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}}},"status":{"type":"object","properties":{"conditions":{"description":"Conditions represent the latest available observation of the resource's current state.","type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","type":"string"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"Status is the status of the condition. Can be True, False, Unknown.","type":"string"},"type":{"description":"Type is the type of the condition.","type":"string"}}}},"connectedProjects":{"description":"Output only. List of projects using the connector.","type":"array","items":{"type":"string"}},"observedGeneration":{"description":"ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.","type":"integer"},"state":{"description":"Output only. State of the VPC access connector. Possible values: STATE_UNSPECIFIED, READY, CREATING, DELETING, ERROR, UPDATING","type":"string"}}}},"x-kubernetes-group-version-kind":[{"group":"vpcaccess.cnrm.cloud.google.com","kind":"VPCAccessConnector","version":"v1beta1"}]},"com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnectorList":{"description":"VPCAccessConnectorList is a list of VPCAccessConnector","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of vpcaccessconnectors. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"$ref":"#/definitions/com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnector"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"vpcaccess.cnrm.cloud.google.com","kind":"VPCAccessConnectorList","version":"v1beta1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition":{"description":"CustomResourceColumnDefinition specifies a column for server side printing.","type":"object","required":["name","type","jsonPath"],"properties":{"description":{"description":"description is a human readable description of this column.","type":"string"},"format":{"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.","type":"string"},"jsonPath":{"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.","type":"string","default":""},"name":{"description":"name is a human readable name for the column.","type":"string","default":""},"priority":{"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.","type":"integer","format":"int32"},"type":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion":{"description":"CustomResourceConversion describes how to convert different versions of a CR.","type":"object","required":["strategy"],"properties":{"strategy":{"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.","type":"string","default":""},"webhook":{"description":"webhook describes how to call the conversion webhook. Required when `strategy` is set to `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition":{"description":"CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format \u003c.spec.name\u003e.\u003c.spec.group\u003e.","type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"spec describes how the user wants the resources to appear","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec"},"status":{"description":"status indicates the actual state of the CustomResourceDefinition","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus"}},"x-kubernetes-group-version-kind":[{"group":"apiextensions.k8s.io","kind":"CustomResourceDefinition","version":"v1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition":{"description":"CustomResourceDefinitionCondition contains details for the current condition of this pod.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"lastTransitionTime last time the condition transitioned from one status to another.","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"message is a human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"reason is a unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"status is the status of the condition. Can be True, False, Unknown.","type":"string","default":""},"type":{"description":"type is the type of the condition. Types include Established, NamesAccepted and Terminating.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames":{"description":"CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition","type":"object","required":["plural","kind"],"properties":{"categories":{"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`.","type":"array","items":{"type":"string","default":""}},"kind":{"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.","type":"string","default":""},"listKind":{"description":"listKind is the serialized kind of the list for this resource. Defaults to \"`kind`List\".","type":"string"},"plural":{"description":"plural is the plural name of the resource to serve. The custom resources are served under `/apis/\u003cgroup\u003e/\u003cversion\u003e/.../\u003cplural\u003e`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`). Must be all lowercase.","type":"string","default":""},"shortNames":{"description":"shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get \u003cshortname\u003e`. It must be all lowercase.","type":"array","items":{"type":"string","default":""}},"singular":{"description":"singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec":{"description":"CustomResourceDefinitionSpec describes how a user wants their resource to appear","type":"object","required":["group","names","scope","versions"],"properties":{"conversion":{"description":"conversion defines conversion settings for the CRD.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion"},"group":{"description":"group is the API group of the defined custom resource. The custom resources are served under `/apis/\u003cgroup\u003e/...`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`).","type":"string","default":""},"names":{"description":"names specify the resource and kind names for the custom resource.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"preserveUnknownFields":{"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.","type":"boolean"},"scope":{"description":"scope indicates whether the defined custom resource is cluster- or namespace-scoped. Allowed values are `Cluster` and `Namespaced`.","type":"string","default":""},"versions":{"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 \u003e beta \u003e 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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion"}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus":{"description":"CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition","type":"object","properties":{"acceptedNames":{"description":"acceptedNames are the names that are actually being used to serve discovery. They may be different than the names in spec.","default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"conditions":{"description":"conditions indicate state for particular aspects of a CustomResourceDefinition","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition"},"x-kubernetes-list-map-keys":["type"],"x-kubernetes-list-type":"map"},"storedVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion":{"description":"CustomResourceDefinitionVersion describes a version for CRD.","type":"object","required":["name","served","storage"],"properties":{"additionalPrinterColumns":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition"}},"deprecated":{"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.","type":"boolean"},"deprecationWarning":{"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.","type":"string"},"name":{"description":"name is the version name, e.g. “v1â€, “v2beta1â€, etc. The custom resources are served under this version at `/apis/\u003cgroup\u003e/\u003cversion\u003e/...` if `served` is true.","type":"string","default":""},"schema":{"description":"schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation"},"served":{"description":"served is a flag enabling/disabling this version from being served via REST APIs","type":"boolean","default":false},"storage":{"description":"storage indicates this version should be used when persisting custom resources to storage. There must be exactly one version with storage=true.","type":"boolean","default":false},"subresources":{"description":"subresources specify what subresources this version of the defined custom resource have.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale":{"description":"CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.","type":"object","required":["specReplicasPath","statusReplicasPath"],"properties":{"labelSelectorPath":{"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.","type":"string"},"specReplicasPath":{"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.","type":"string","default":""},"statusReplicasPath":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus":{"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","type":"object"},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources":{"description":"CustomResourceSubresources defines the status and scale subresources for CustomResources.","type":"object","properties":{"scale":{"description":"scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale"},"status":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation":{"description":"CustomResourceValidation is a list of validation methods for CustomResources.","type":"object","properties":{"openAPIV3Schema":{"description":"openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation":{"description":"ExternalDocumentation allows referencing an external resource for extended documentation.","type":"object","properties":{"description":{"type":"string"},"url":{"type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON":{"description":"JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps":{"description":"JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).","type":"object","properties":{"$ref":{"type":"string"},"$schema":{"type":"string"},"additionalItems":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"additionalProperties":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"allOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"anyOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"default":{"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.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"definitions":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"dependencies":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray"}},"description":{"type":"string"},"enum":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"}},"example":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"exclusiveMaximum":{"type":"boolean"},"exclusiveMinimum":{"type":"boolean"},"externalDocs":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation"},"format":{"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.","type":"string"},"id":{"type":"string"},"items":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray"},"maxItems":{"type":"integer","format":"int64"},"maxLength":{"type":"integer","format":"int64"},"maxProperties":{"type":"integer","format":"int64"},"maximum":{"type":"number","format":"double"},"minItems":{"type":"integer","format":"int64"},"minLength":{"type":"integer","format":"int64"},"minProperties":{"type":"integer","format":"int64"},"minimum":{"type":"number","format":"double"},"multipleOf":{"type":"number","format":"double"},"not":{"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"},"nullable":{"type":"boolean"},"oneOf":{"type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"pattern":{"type":"string"},"patternProperties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"properties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"required":{"type":"array","items":{"type":"string","default":""}},"title":{"type":"string"},"type":{"type":"string"},"uniqueItems":{"type":"boolean"},"x-kubernetes-embedded-resource":{"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).","type":"boolean"},"x-kubernetes-int-or-string":{"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","type":"boolean"},"x-kubernetes-list-map-keys":{"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.","type":"array","items":{"type":"string","default":""}},"x-kubernetes-list-type":{"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.","type":"string"},"x-kubernetes-map-type":{"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.","type":"string"},"x-kubernetes-preserve-unknown-fields":{"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.","type":"boolean"},"x-kubernetes-validations":{"description":"x-kubernetes-validations describes a list of validation rules written in the CEL expression language. This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule"},"x-kubernetes-list-map-keys":["rule"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"rule","x-kubernetes-patch-strategy":"merge"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray":{"description":"JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool":{"description":"JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray":{"description":"JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference":{"description":"ServiceReference holds a reference to Service.legacy.k8s.io","type":"object","required":["namespace","name"],"properties":{"name":{"description":"name is the name of the service. Required","type":"string","default":""},"namespace":{"description":"namespace is the namespace of the service. Required","type":"string","default":""},"path":{"description":"path is an optional URL path at which the webhook will be contacted.","type":"string"},"port":{"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.","type":"integer","format":"int32"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule":{"description":"ValidationRule describes a validation rule written in the CEL expression language.","type":"object","required":["rule"],"properties":{"message":{"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\"","type":"string"},"rule":{"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 \u003c= 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 \u003c 10\"} - Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value \u003e= 0 \u0026\u0026 value \u003c 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__ \u003e 0\"}\n - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop \u003e 0\"}\n - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d \u003e 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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig":{"description":"WebhookClientConfig contains the information to make a TLS connection with the webhook.","type":"object","properties":{"caBundle":{"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.","type":"string","format":"byte"},"service":{"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`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference"},"url":{"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.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion":{"description":"WebhookConversion describes how to call a conversion webhook","type":"object","required":["conversionReviewVersions"],"properties":{"clientConfig":{"description":"clientConfig is the instructions for how to call the webhook if strategy is `Webhook`.","$ref":"#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig"},"conversionReviewVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"},"propagationPolicy":{"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.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"creationTimestamp":{"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","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"},"reason":{"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.","type":"string"},"status":{"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","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"}},"securityDefinitions":{"BearerToken":{"description":"Bearer Token authentication","type":"apiKey","name":"authorization","in":"header"}},"security":[{"BearerToken":[]}]}golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv3/000077500000000000000000000000001453663023200277755ustar00rootroot00000000000000accesscontextmanager_v1beta1_accesscontextmanagerserviceperimeter.json000066400000000000000000001445261453663023200461300ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv3{"openapi":"3.0.0","info":{"title":"Kubernetes CRD Swagger","version":"v0.1.0"},"components":{"schemas":{"com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeter":{"type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"type":"object","required":["accessPolicyRef","title"],"properties":{"accessPolicyRef":{"description":"The AccessContextManagerAccessPolicy this\nAccessContextManagerServicePerimeter lives in.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: string of the format `accessPolicies/{{value}}`, where {{value}} is the `name` field of an `AccessContextManagerAccessPolicy` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"description":{"description":"Description of the ServicePerimeter and its use. Does not affect\nbehavior.","type":"string"},"perimeterType":{"description":"Immutable. Specifies the type of the Perimeter. There are two types: regular and\nbridge. Regular Service Perimeter contains resources, access levels,\nand restricted services. Every resource can be in at most\nONE regular Service Perimeter.\n\nIn addition to being in a regular service perimeter, a resource can also\nbe in zero or more perimeter bridges. A perimeter bridge only contains\nresources. Cross project operations are permitted if all effected\nresources share some perimeter (whether bridge or regular). Perimeter\nBridge does not contain access levels or services: those are governed\nentirely by the regular perimeter that resource is in.\n\nPerimeter Bridges are typically useful when building more complex\ntopologies with many independent perimeters that need to share some data\nwith a common perimeter, but should not be able to share data among\nthemselves. Default value: \"PERIMETER_TYPE_REGULAR\" Possible values: [\"PERIMETER_TYPE_REGULAR\", \"PERIMETER_TYPE_BRIDGE\"].","type":"string"},"resourceID":{"description":"Immutable. Optional. The name of the resource. Used for creation and acquisition. When unset, the value of `metadata.name` is used as the default.","type":"string"},"spec":{"description":"Proposed (or dry run) ServicePerimeter configuration.\nThis configuration allows to specify and test ServicePerimeter configuration\nwithout enforcing actual access restrictions. Only allowed to be set when\nthe 'useExplicitDryRunSpec' flag is set.","type":"object","properties":{"accessLevels":{"type":"array","items":{"description":"(Optional) A list of AccessLevel resource names that allow resources within\nthe ServicePerimeter to be accessed from the internet. AccessLevels listed\nmust be in the same policy as this ServicePerimeter.\nReferencing a nonexistent AccessLevel is a syntax error. If no\nAccessLevel names are listed, resources within the perimeter can\nonly be accessed via GCP calls with request origins within the\nperimeter. For Service Perimeter Bridge, must be empty.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: string of the format `{{parent}}/accessLevels/{{value}}`, where {{value}} is the `name` field of an `AccessContextManagerAccessLevel` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}},"egressPolicies":{"description":"List of EgressPolicies to apply to the perimeter. A perimeter may \nhave multiple EgressPolicies, each of which is evaluated separately.\nAccess is granted if any EgressPolicy grants it. Must be empty for \na perimeter bridge.","type":"array","items":{"type":"object","properties":{"egressFrom":{"description":"Defines conditions on the source of a request causing this 'EgressPolicy' to apply.","type":"object","properties":{"identities":{"type":"array","items":{"description":"(Optional) A list of identities that are allowed access through this\nEgressPolicy. Should be in the format of email address. The email\naddress should represent individual user or service account only.","type":"object","oneOf":[{"required":["serviceAccountRef"]},{"required":["user"]}],"properties":{"serviceAccountRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: string of the format `serviceAccount:{{value}}`, where {{value}} is the `email` field of an `IAMServiceAccount` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"user":{"type":"string"}}}},"identityType":{"description":"Specifies the type of identities that are allowed access to outside the \nperimeter. If left unspecified, then members of 'identities' field will \nbe allowed access. Possible values: [\"IDENTITY_TYPE_UNSPECIFIED\", \"ANY_IDENTITY\", \"ANY_USER_ACCOUNT\", \"ANY_SERVICE_ACCOUNT\"].","type":"string"}}},"egressTo":{"description":"Defines the conditions on the 'ApiOperation' and destination resources that \ncause this 'EgressPolicy' to apply.","type":"object","properties":{"externalResources":{"description":"A list of external resources that are allowed to be accessed. A request\nmatches if it contains an external resource in this list (Example:\ns3://bucket/path). Currently '*' is not allowed.","type":"array","items":{"type":"string"}},"operations":{"description":"A list of 'ApiOperations' that this egress rule applies to. A request matches \nif it contains an operation/service in this list.","type":"array","items":{"type":"object","properties":{"methodSelectors":{"description":"API methods or permissions to allow. Method or permission must belong \nto the service specified by 'serviceName' field. A single MethodSelector \nentry with '*' specified for the 'method' field will allow all methods \nAND permissions for the service specified in 'serviceName'.","type":"array","items":{"type":"object","properties":{"method":{"description":"Value for 'method' should be a valid method name for the corresponding \n'serviceName' in 'ApiOperation'. If '*' used as value for method, \nthen ALL methods and permissions are allowed.","type":"string"},"permission":{"description":"Value for permission should be a valid Cloud IAM permission for the \ncorresponding 'serviceName' in 'ApiOperation'.","type":"string"}}}},"serviceName":{"description":"The name of the API whose methods or permissions the 'IngressPolicy' or \n'EgressPolicy' want to allow. A single 'ApiOperation' with serviceName \nfield set to '*' will allow all methods AND permissions for all services.","type":"string"}}}},"resources":{"type":"array","items":{"description":"(Optional) A list of resources, currently only projects in the form\n\"projects/{project_number}\". A request\nmatches if it contains a resource in this list.","type":"object","properties":{"projectRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: string of the format `projects/{{value}}`, where {{value}} is the `number` field of a `Project` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}}}}}}},"ingressPolicies":{"description":"List of 'IngressPolicies' to apply to the perimeter. A perimeter may\nhave multiple 'IngressPolicies', each of which is evaluated\nseparately. Access is granted if any 'Ingress Policy' grants it.\nMust be empty for a perimeter bridge.","type":"array","items":{"type":"object","properties":{"ingressFrom":{"description":"Defines the conditions on the source of a request causing this 'IngressPolicy'\nto apply.","type":"object","properties":{"identities":{"type":"array","items":{"description":"(Optional) A list of identities that are allowed access through this\ningress policy. Should be in the format of email address. The email\naddress should represent individual user or service account only.","type":"object","oneOf":[{"required":["serviceAccountRef"]},{"required":["user"]}],"properties":{"serviceAccountRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: string of the format `serviceAccount:{{value}}`, where {{value}} is the `email` field of an `IAMServiceAccount` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"user":{"type":"string"}}}},"identityType":{"description":"Specifies the type of identities that are allowed access from outside the \nperimeter. If left unspecified, then members of 'identities' field will be \nallowed access. Possible values: [\"IDENTITY_TYPE_UNSPECIFIED\", \"ANY_IDENTITY\", \"ANY_USER_ACCOUNT\", \"ANY_SERVICE_ACCOUNT\"].","type":"string"},"sources":{"description":"Sources that this 'IngressPolicy' authorizes access from.","type":"array","items":{"type":"object","properties":{"accessLevelRef":{"description":"An AccessLevel resource name that allow resources within the\nServicePerimeters to be accessed from the internet. AccessLevels\nlisted must be in the same policy as this ServicePerimeter.\nReferencing a nonexistent AccessLevel will cause an error. If no\nAccessLevel names are listed, resources within the perimeter can\nonly be accessed via Google Cloud calls with request origins within\nthe perimeter.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: string of the format `{{parent}}/accessLevels/{{value}}`, where {{value}} is the `name` field of an `AccessContextManagerAccessLevel` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"projectRef":{"description":"(Optional) A Google Cloud resource that is allowed to ingress the\nperimeter. Requests from these resources will be allowed to access\nperimeter data. Currently only projects are allowed. Format\n\"projects/{project_number}\" The project may be in any Google Cloud\norganization, not just the organization that the perimeter is defined in.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: string of the format `projects/{{value}}`, where {{value}} is the `number` field of a `Project` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}}}},"ingressTo":{"description":"Defines the conditions on the 'ApiOperation' and request destination that cause\nthis 'IngressPolicy' to apply.","type":"object","properties":{"operations":{"description":"A list of 'ApiOperations' the sources specified in corresponding 'IngressFrom' \nare allowed to perform in this 'ServicePerimeter'.","type":"array","items":{"type":"object","properties":{"methodSelectors":{"description":"API methods or permissions to allow. Method or permission must belong to \nthe service specified by serviceName field. A single 'MethodSelector' entry \nwith '*' specified for the method field will allow all methods AND \npermissions for the service specified in 'serviceName'.","type":"array","items":{"type":"object","properties":{"method":{"description":"Value for method should be a valid method name for the corresponding \nserviceName in 'ApiOperation'. If '*' used as value for 'method', then \nALL methods and permissions are allowed.","type":"string"},"permission":{"description":"Value for permission should be a valid Cloud IAM permission for the \ncorresponding 'serviceName' in 'ApiOperation'.","type":"string"}}}},"serviceName":{"description":"The name of the API whose methods or permissions the 'IngressPolicy' or \n'EgressPolicy' want to allow. A single 'ApiOperation' with 'serviceName' \nfield set to '*' will allow all methods AND permissions for all services.","type":"string"}}}},"resources":{"type":"array","items":{"description":"A list of resources, currently only projects in the form\n\"projects/{project_number}\", protected by this ServicePerimeter\nthat are allowed to be accessed by sources defined in the\ncorresponding IngressFrom. A request matches if it contains a\nresource in this list.","type":"object","properties":{"projectRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: string of the format `projects/{{value}}`, where {{value}} is the `number` field of a `Project` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}}}}}}},"resources":{"type":"array","items":{"description":"(Optional) A list of GCP resources that are inside of the service perimeter.\nCurrently only projects are allowed.","type":"object","properties":{"projectRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: string of the format `projects/{{value}}`, where {{value}} is the `number` field of a `Project` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}},"restrictedServices":{"description":"GCP services that are subject to the Service Perimeter\nrestrictions. Must contain a list of services. For example, if\n'storage.googleapis.com' is specified, access to the storage\nbuckets inside the perimeter must meet the perimeter's access\nrestrictions.","type":"array","items":{"type":"string"}},"vpcAccessibleServices":{"description":"Specifies how APIs are allowed to communicate within the Service\nPerimeter.","type":"object","properties":{"allowedServices":{"description":"The list of APIs usable within the Service Perimeter.\nMust be empty unless 'enableRestriction' is True.","type":"array","items":{"type":"string"}},"enableRestriction":{"description":"Whether to restrict API calls within the Service Perimeter to the\nlist of APIs specified in 'allowedServices'.","type":"boolean"}}}}},"status":{"description":"ServicePerimeter configuration. Specifies sets of resources,\nrestricted services and access levels that determine\nperimeter content and boundaries.","type":"object","properties":{"accessLevels":{"type":"array","items":{"description":"(Optional) A list of AccessLevel resource names that allow resources within\nthe ServicePerimeter to be accessed from the internet. AccessLevels listed\nmust be in the same policy as this ServicePerimeter.\nReferencing a nonexistent AccessLevel is a syntax error. If no\nAccessLevel names are listed, resources within the perimeter can\nonly be accessed via GCP calls with request origins within the\nperimeter. For Service Perimeter Bridge, must be empty.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: string of the format `{{parent}}/accessLevels/{{value}}`, where {{value}} is the `name` field of an `AccessContextManagerAccessLevel` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}},"egressPolicies":{"description":"List of EgressPolicies to apply to the perimeter. A perimeter may \nhave multiple EgressPolicies, each of which is evaluated separately.\nAccess is granted if any EgressPolicy grants it. Must be empty for \na perimeter bridge.","type":"array","items":{"type":"object","properties":{"egressFrom":{"description":"Defines conditions on the source of a request causing this 'EgressPolicy' to apply.","type":"object","properties":{"identities":{"type":"array","items":{"description":"(Optional) A list of identities that are allowed access through this\nEgressPolicy. Should be in the format of email address. The email\naddress should represent individual user or service account only.","type":"object","oneOf":[{"required":["serviceAccountRef"]},{"required":["user"]}],"properties":{"serviceAccountRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: string of the format `serviceAccount:{{value}}`, where {{value}} is the `email` field of an `IAMServiceAccount` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"user":{"type":"string"}}}},"identityType":{"description":"Specifies the type of identities that are allowed access to outside the \nperimeter. If left unspecified, then members of 'identities' field will \nbe allowed access. Possible values: [\"IDENTITY_TYPE_UNSPECIFIED\", \"ANY_IDENTITY\", \"ANY_USER_ACCOUNT\", \"ANY_SERVICE_ACCOUNT\"].","type":"string"}}},"egressTo":{"description":"Defines the conditions on the 'ApiOperation' and destination resources that \ncause this 'EgressPolicy' to apply.","type":"object","properties":{"externalResources":{"description":"A list of external resources that are allowed to be accessed. A request\nmatches if it contains an external resource in this list (Example:\ns3://bucket/path). Currently '*' is not allowed.","type":"array","items":{"type":"string"}},"operations":{"description":"A list of 'ApiOperations' that this egress rule applies to. A request matches \nif it contains an operation/service in this list.","type":"array","items":{"type":"object","properties":{"methodSelectors":{"description":"API methods or permissions to allow. Method or permission must belong \nto the service specified by 'serviceName' field. A single MethodSelector \nentry with '*' specified for the 'method' field will allow all methods \nAND permissions for the service specified in 'serviceName'.","type":"array","items":{"type":"object","properties":{"method":{"description":"Value for 'method' should be a valid method name for the corresponding \n'serviceName' in 'ApiOperation'. If '*' used as value for method, \nthen ALL methods and permissions are allowed.","type":"string"},"permission":{"description":"Value for permission should be a valid Cloud IAM permission for the \ncorresponding 'serviceName' in 'ApiOperation'.","type":"string"}}}},"serviceName":{"description":"The name of the API whose methods or permissions the 'IngressPolicy' or \n'EgressPolicy' want to allow. A single 'ApiOperation' with serviceName \nfield set to '*' will allow all methods AND permissions for all services.","type":"string"}}}},"resources":{"type":"array","items":{"description":"(Optional) A list of resources, currently only projects in the form\n\"projects/{project_number}\". A request\nmatches if it contains a resource in this list.","type":"object","properties":{"projectRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: string of the format `projects/{{value}}`, where {{value}} is the `number` field of a `Project` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}}}}}}},"ingressPolicies":{"description":"List of 'IngressPolicies' to apply to the perimeter. A perimeter may\nhave multiple 'IngressPolicies', each of which is evaluated\nseparately. Access is granted if any 'Ingress Policy' grants it.\nMust be empty for a perimeter bridge.","type":"array","items":{"type":"object","properties":{"ingressFrom":{"description":"Defines the conditions on the source of a request causing this 'IngressPolicy'\nto apply.","type":"object","properties":{"identities":{"type":"array","items":{"description":"(Optional) A list of identities that are allowed access through this\nEgressPolicy. Should be in the format of email address. The email\naddress should represent individual user or service account only.","type":"object","oneOf":[{"required":["serviceAccountRef"]},{"required":["user"]}],"properties":{"serviceAccountRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: string of the format `serviceAccount:{{value}}`, where {{value}} is the `email` field of an `IAMServiceAccount` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"user":{"type":"string"}}}},"identityType":{"description":"Specifies the type of identities that are allowed access from outside the \nperimeter. If left unspecified, then members of 'identities' field will be \nallowed access. Possible values: [\"IDENTITY_TYPE_UNSPECIFIED\", \"ANY_IDENTITY\", \"ANY_USER_ACCOUNT\", \"ANY_SERVICE_ACCOUNT\"].","type":"string"},"sources":{"description":"Sources that this 'IngressPolicy' authorizes access from.","type":"array","items":{"type":"object","properties":{"accessLevelRef":{"description":"An AccessLevel resource name that allow resources within the\nServicePerimeters to be accessed from the internet. AccessLevels\nlisted must be in the same policy as this ServicePerimeter.\nReferencing a nonexistent AccessLevel will cause an error. If no\nAccessLevel names are listed, resources within the perimeter can\nonly be accessed via Google Cloud calls with request origins within\nthe perimeter.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: string of the format `{{parent}}/accessLevels/{{value}}`, where {{value}} is the `name` field of an `AccessContextManagerAccessLevel` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"projectRef":{"description":"(Optional) A Google Cloud resource that is allowed to ingress the\nperimeter. Requests from these resources will be allowed to access\nperimeter data. Currently only projects are allowed. Format\n\"projects/{project_number}\" The project may be in any Google Cloud\norganization, not just the organization that the perimeter is defined in.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: string of the format `projects/{{value}}`, where {{value}} is the `number` field of a `Project` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}}}},"ingressTo":{"description":"Defines the conditions on the 'ApiOperation' and request destination that cause\nthis 'IngressPolicy' to apply.","type":"object","properties":{"operations":{"description":"A list of 'ApiOperations' the sources specified in corresponding 'IngressFrom' \nare allowed to perform in this 'ServicePerimeter'.","type":"array","items":{"type":"object","properties":{"methodSelectors":{"description":"API methods or permissions to allow. Method or permission must belong to \nthe service specified by serviceName field. A single 'MethodSelector' entry \nwith '*' specified for the method field will allow all methods AND \npermissions for the service specified in 'serviceName'.","type":"array","items":{"type":"object","properties":{"method":{"description":"Value for method should be a valid method name for the corresponding \nserviceName in 'ApiOperation'. If '*' used as value for 'method', then \nALL methods and permissions are allowed.","type":"string"},"permission":{"description":"Value for permission should be a valid Cloud IAM permission for the \ncorresponding 'serviceName' in 'ApiOperation'.","type":"string"}}}},"serviceName":{"description":"The name of the API whose methods or permissions the 'IngressPolicy' or \n'EgressPolicy' want to allow. A single 'ApiOperation' with 'serviceName' \nfield set to '*' will allow all methods AND permissions for all services.","type":"string"}}}},"resources":{"type":"array","items":{"description":"A list of resources, currently only projects in the form\n\"projects/{project_number}\", protected by this ServicePerimeter\nthat are allowed to be accessed by sources defined in the\ncorresponding IngressFrom. A request matches if it contains a\nresource in this list.","type":"object","properties":{"projectRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: string of the format `projects/{{value}}`, where {{value}} is the `number` field of a `Project` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}}}}}}},"resources":{"type":"array","items":{"description":"(Optional) A list of GCP resources that are inside of the service perimeter.\nCurrently only projects are allowed.","type":"object","properties":{"projectRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: string of the format `projects/{{value}}`, where {{value}} is the `number` field of a `Project` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}},"restrictedServices":{"description":"GCP services that are subject to the Service Perimeter\nrestrictions. Must contain a list of services. For example, if\n'storage.googleapis.com' is specified, access to the storage\nbuckets inside the perimeter must meet the perimeter's access\nrestrictions.","type":"array","items":{"type":"string"}},"vpcAccessibleServices":{"description":"Specifies how APIs are allowed to communicate within the Service\nPerimeter.","type":"object","properties":{"allowedServices":{"description":"The list of APIs usable within the Service Perimeter.\nMust be empty unless 'enableRestriction' is True.","type":"array","items":{"type":"string"}},"enableRestriction":{"description":"Whether to restrict API calls within the Service Perimeter to the\nlist of APIs specified in 'allowedServices'.","type":"boolean"}}}}},"title":{"description":"Human readable title. Must be unique within the Policy.","type":"string"},"useExplicitDryRunSpec":{"description":"Use explicit dry run spec flag. Ordinarily, a dry-run spec implicitly exists\nfor all Service Perimeters, and that spec is identical to the status for those\nService Perimeters. When this flag is set, it inhibits the generation of the\nimplicit spec, thereby allowing the user to explicitly provide a\nconfiguration (\"spec\") to use in a dry-run version of the Service Perimeter.\nThis allows the user to test changes to the enforced config (\"status\") without\nactually enforcing them. This testing is done through analyzing the differences\nbetween currently enforced and suggested restrictions. useExplicitDryRunSpec must\nbet set to True if any of the fields in the spec are set to non-default values.","type":"boolean"}}},"status":{"type":"object","properties":{"conditions":{"description":"Conditions represent the latest available observation of the resource's current state.","type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","type":"string"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"Status is the status of the condition. Can be True, False, Unknown.","type":"string"},"type":{"description":"Type is the type of the condition.","type":"string"}}}},"createTime":{"description":"Time the AccessPolicy was created in UTC.","type":"string"},"observedGeneration":{"description":"ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.","type":"integer"},"updateTime":{"description":"Time the AccessPolicy was updated in UTC.","type":"string"}}}},"x-kubernetes-group-version-kind":[{"group":"accesscontextmanager.cnrm.cloud.google.com","kind":"AccessContextManagerServicePerimeter","version":"v1beta1"}]},"com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeterList":{"description":"AccessContextManagerServicePerimeterList is a list of AccessContextManagerServicePerimeter","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of accesscontextmanagerserviceperimeters. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"$ref":"#/components/schemas/com.google.cloud.cnrm.accesscontextmanager.v1beta1.AccessContextManagerServicePerimeter"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"accesscontextmanager.cnrm.cloud.google.com","kind":"AccessContextManagerServicePerimeterList","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"}]},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"creationTimestamp":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}]}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"}]},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"}}}}container_v1beta1_containercluster.json000066400000000000000000002004201453663023200375600ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv3{"openapi":"3.0.0","info":{"title":"Kubernetes CRD Swagger","version":"v0.1.0"},"components":{"schemas":{"com.google.cloud.cnrm.container.v1beta1.ContainerCluster":{"type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"type":"object","required":["location"],"properties":{"addonsConfig":{"description":"The configuration for addons supported by GKE.","type":"object","properties":{"cloudrunConfig":{"description":"The status of the CloudRun addon. It is disabled by default. Set disabled = false to enable.","type":"object","required":["disabled"],"properties":{"disabled":{"type":"boolean"},"loadBalancerType":{"type":"string"}}},"configConnectorConfig":{"description":"The of the Config Connector addon.","type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean"}}},"dnsCacheConfig":{"description":"The status of the NodeLocal DNSCache addon. It is disabled by default. Set enabled = true to enable.","type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean"}}},"gcePersistentDiskCsiDriverConfig":{"description":"Whether this cluster should enable the Google Compute Engine Persistent Disk Container Storage Interface (CSI) Driver. Defaults to enabled; set disabled = true to disable.","type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean"}}},"gcpFilestoreCsiDriverConfig":{"description":"The status of the Filestore CSI driver addon, which allows the usage of filestore instance as volumes. Defaults to disabled; set enabled = true to enable.","type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean"}}},"gkeBackupAgentConfig":{"description":"The status of the Backup for GKE Agent addon. It is disabled by default. Set enabled = true to enable.","type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean"}}},"horizontalPodAutoscaling":{"description":"The status of the Horizontal Pod Autoscaling addon, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods. It ensures that a Heapster pod is running in the cluster, which is also used by the Cloud Monitoring service. It is enabled by default; set disabled = true to disable.","type":"object","required":["disabled"],"properties":{"disabled":{"type":"boolean"}}},"httpLoadBalancing":{"description":"The status of the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster. It is enabled by default; set disabled = true to disable.","type":"object","required":["disabled"],"properties":{"disabled":{"type":"boolean"}}},"istioConfig":{"description":"The status of the Istio addon.","type":"object","required":["disabled"],"properties":{"auth":{"description":"The authentication type between services in Istio. Available options include AUTH_MUTUAL_TLS.","type":"string"},"disabled":{"description":"The status of the Istio addon, which makes it easy to set up Istio for services in a cluster. It is disabled by default. Set disabled = false to enable.","type":"boolean"}}},"kalmConfig":{"description":"Configuration for the KALM addon, which manages the lifecycle of k8s. It is disabled by default; Set enabled = true to enable.","type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean"}}},"networkPolicyConfig":{"description":"Whether we should enable the network policy addon for the master. This must be enabled in order to enable network policy for the nodes. To enable this, you must also define a network_policy block, otherwise nothing will happen. It can only be disabled if the nodes already do not have network policies enabled. Defaults to disabled; set disabled = false to enable.","type":"object","required":["disabled"],"properties":{"disabled":{"type":"boolean"}}}}},"authenticatorGroupsConfig":{"description":"Configuration for the Google Groups for GKE feature.","type":"object","required":["securityGroup"],"properties":{"securityGroup":{"description":"The name of the RBAC security group for use with Google security groups in Kubernetes RBAC. Group name must be in format gke-security-groups@yourdomain.com.","type":"string"}}},"binaryAuthorization":{"description":"Configuration options for the Binary Authorization feature.","type":"object","properties":{"enabled":{"description":"DEPRECATED. Deprecated in favor of evaluation_mode. Enable Binary Authorization for this cluster.","type":"boolean"},"evaluationMode":{"description":"Mode of operation for Binary Authorization policy evaluation.","type":"string"}}},"clusterAutoscaling":{"description":"Per-cluster configuration of Node Auto-Provisioning with Cluster Autoscaler to automatically adjust the size of the cluster and create/delete node pools based on the current needs of the cluster's workload. See the guide to using Node Auto-Provisioning for more details.","type":"object","properties":{"autoProvisioningDefaults":{"description":"Contains defaults for a node pool created by NAP.","type":"object","properties":{"bootDiskKMSKeyRef":{"description":"Immutable. The Customer Managed Encryption Key used to encrypt the\nboot disk attached to each node in the node pool.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: The `selfLink` field of a `KMSCryptoKey` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"diskSize":{"description":"Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB.","type":"integer"},"imageType":{"description":"The default image type used by NAP once a new node pool is being created.","type":"string"},"management":{"description":"NodeManagement configuration for this NodePool.","type":"object","properties":{"autoRepair":{"description":"Specifies whether the node auto-repair is enabled for the node pool. If enabled, the nodes in this node pool will be monitored and, if they fail health checks too many times, an automatic repair action will be triggered.","type":"boolean"},"autoUpgrade":{"description":"Specifies whether node auto-upgrade is enabled for the node pool. If enabled, node auto-upgrade helps keep the nodes in your node pool up to date with the latest release version of Kubernetes.","type":"boolean"},"upgradeOptions":{"description":"Specifies the Auto Upgrade knobs for the node pool.","type":"array","items":{"type":"object","properties":{"autoUpgradeStartTime":{"description":"This field is set when upgrades are about to commence with the approximate start time for the upgrades, in RFC3339 text format.","type":"string"},"description":{"description":"This field is set when upgrades are about to commence with the description of the upgrade.","type":"string"}}}}}},"minCpuPlatform":{"description":"Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform. Applicable values are the friendly names of CPU platforms, such as Intel Haswell.","type":"string"},"oauthScopes":{"description":"Scopes that are used by NAP when creating node pools.","type":"array","items":{"type":"string"}},"serviceAccountRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: The `email` field of an `IAMServiceAccount` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"shieldedInstanceConfig":{"description":"Shielded Instance options.","type":"object","properties":{"enableIntegrityMonitoring":{"description":"Defines whether the instance has integrity monitoring enabled.","type":"boolean"},"enableSecureBoot":{"description":"Defines whether the instance has Secure Boot enabled.","type":"boolean"}}},"upgradeSettings":{"description":"Specifies the upgrade settings for NAP created node pools.","type":"object","properties":{"blueGreenSettings":{"description":"Settings for blue-green upgrade strategy.","type":"object","properties":{"nodePoolSoakDuration":{"description":"Time needed after draining entire blue pool. After this period, blue pool will be cleaned up.\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA duration in seconds with up to nine fractional digits, ending with 's'. Example: \"3.5s\".","type":"string"},"standardRolloutPolicy":{"description":"Standard policy for the blue-green upgrade.","type":"object","properties":{"batchNodeCount":{"description":"Number of blue nodes to drain in a batch.","type":"integer"},"batchPercentage":{"description":"Percentage of the bool pool nodes to drain in a batch. The range of this field should be (0.0, 1.0].","type":"number"},"batchSoakDuration":{"description":"Soak time after each batch gets drained.\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA duration in seconds with up to nine fractional digits, ending with 's'. Example: \"3.5s\".","type":"string"}}}}},"maxSurge":{"description":"The maximum number of nodes that can be created beyond the current size of the node pool during the upgrade process.","type":"integer"},"maxUnavailable":{"description":"The maximum number of nodes that can be simultaneously unavailable during the upgrade process.","type":"integer"},"strategy":{"description":"Update strategy of the node pool.","type":"string"}}}}},"autoscalingProfile":{"description":"Configuration options for the Autoscaling profile feature, which lets you choose whether the cluster autoscaler should optimize for resource utilization or resource availability when deciding to remove nodes from a cluster. Can be BALANCED or OPTIMIZE_UTILIZATION. Defaults to BALANCED.","type":"string"},"enabled":{"description":"Whether node auto-provisioning is enabled. Resource limits for cpu and memory must be defined to enable node auto-provisioning.","type":"boolean"},"resourceLimits":{"description":"Global constraints for machine resources in the cluster. Configuring the cpu and memory types is required if node auto-provisioning is enabled. These limits will apply to node pool autoscaling in addition to node auto-provisioning.","type":"array","items":{"type":"object","required":["resourceType"],"properties":{"maximum":{"description":"Maximum amount of the resource in the cluster.","type":"integer"},"minimum":{"description":"Minimum amount of the resource in the cluster.","type":"integer"},"resourceType":{"description":"The type of the resource. For example, cpu and memory. See the guide to using Node Auto-Provisioning for a list of types.","type":"string"}}}}}},"clusterIpv4Cidr":{"description":"Immutable. The IP address range of the Kubernetes pods in this cluster in CIDR notation (e.g. 10.96.0.0/14). Leave blank to have one automatically chosen or specify a /14 block in 10.0.0.0/8. This field will only work for routes-based clusters, where ip_allocation_policy is not defined.","type":"string"},"clusterTelemetry":{"description":"Telemetry integration for the cluster.","type":"object","required":["type"],"properties":{"type":{"description":"Type of the integration.","type":"string"}}},"confidentialNodes":{"description":"Immutable. Configuration for the confidential nodes feature, which makes nodes run on confidential VMs. Warning: This configuration can't be changed (or added/removed) after cluster creation without deleting and recreating the entire cluster.","type":"object","required":["enabled"],"properties":{"enabled":{"description":"Immutable. Whether Confidential Nodes feature is enabled for all nodes in this cluster.","type":"boolean"}}},"costManagementConfig":{"description":"Cost management configuration for the cluster.","type":"object","required":["enabled"],"properties":{"enabled":{"description":"Whether to enable GKE cost allocation. When you enable GKE cost allocation, the cluster name and namespace of your GKE workloads appear in the labels field of the billing export to BigQuery. Defaults to false.","type":"boolean"}}},"databaseEncryption":{"description":"Application-layer Secrets Encryption settings. The object format is {state = string, key_name = string}. Valid values of state are: \"ENCRYPTED\"; \"DECRYPTED\". key_name is the name of a CloudKMS key.","type":"object","required":["state"],"properties":{"keyName":{"description":"The key to use to encrypt/decrypt secrets.","type":"string"},"state":{"description":"ENCRYPTED or DECRYPTED.","type":"string"}}},"datapathProvider":{"description":"Immutable. The desired datapath provider for this cluster. By default, uses the IPTables-based kube-proxy implementation.","type":"string"},"defaultMaxPodsPerNode":{"description":"Immutable. The default maximum number of pods per node in this cluster. This doesn't work on \"routes-based\" clusters, clusters that don't have IP Aliasing enabled.","type":"integer"},"defaultSnatStatus":{"description":"Whether the cluster disables default in-node sNAT rules. In-node sNAT rules will be disabled when defaultSnatStatus is disabled.","type":"object","required":["disabled"],"properties":{"disabled":{"description":"When disabled is set to false, default IP masquerade rules will be applied to the nodes to prevent sNAT on cluster internal traffic.","type":"boolean"}}},"description":{"description":"Immutable. Description of the cluster.","type":"string"},"dnsConfig":{"description":"Immutable. Configuration for Cloud DNS for Kubernetes Engine.","type":"object","properties":{"clusterDns":{"description":"Which in-cluster DNS provider should be used.","type":"string"},"clusterDnsDomain":{"description":"The suffix used for all cluster service records.","type":"string"},"clusterDnsScope":{"description":"The scope of access to cluster DNS records.","type":"string"}}},"enableAutopilot":{"description":"Immutable. Enable Autopilot for this cluster.","type":"boolean"},"enableBinaryAuthorization":{"description":"DEPRECATED. Deprecated in favor of binary_authorization. Enable Binary Authorization for this cluster. If enabled, all container images will be validated by Google Binary Authorization.","type":"boolean"},"enableIntranodeVisibility":{"description":"Whether Intra-node visibility is enabled for this cluster. This makes same node pod to pod traffic visible for VPC network.","type":"boolean"},"enableKubernetesAlpha":{"description":"Immutable. Whether to enable Kubernetes Alpha features for this cluster. Note that when this option is enabled, the cluster cannot be upgraded and will be automatically deleted after 30 days.","type":"boolean"},"enableL4IlbSubsetting":{"description":"Whether L4ILB Subsetting is enabled for this cluster.","type":"boolean"},"enableLegacyAbac":{"description":"Whether the ABAC authorizer is enabled for this cluster. When enabled, identities in the system, including service accounts, nodes, and controllers, will have statically granted permissions beyond those provided by the RBAC configuration or IAM. Defaults to false.","type":"boolean"},"enableShieldedNodes":{"description":"Enable Shielded Nodes features on all nodes in this cluster. Defaults to true.","type":"boolean"},"enableTpu":{"description":"Immutable. Whether to enable Cloud TPU resources in this cluster.","type":"boolean"},"gatewayApiConfig":{"description":"Configuration for GKE Gateway API controller.","type":"object","required":["channel"],"properties":{"channel":{"description":"The Gateway API release channel to use for Gateway API.","type":"string"}}},"identityServiceConfig":{"description":"Configuration for Identity Service which allows customers to use external identity providers with the K8S API.","type":"object","properties":{"enabled":{"description":"Whether to enable the Identity Service component.","type":"boolean"}}},"initialNodeCount":{"description":"Immutable. The number of nodes to create in this cluster's default node pool. In regional or multi-zonal clusters, this is the number of nodes per zone. Must be set if node_pool is not set. If you're using google_container_node_pool objects with no default node pool, you'll need to set this to a value of at least 1, alongside setting remove_default_node_pool to true.","type":"integer"},"ipAllocationPolicy":{"description":"Immutable. Configuration of cluster IP allocation for VPC-native clusters. Adding this block enables IP aliasing, making the cluster VPC-native instead of routes-based.","type":"object","properties":{"clusterIpv4CidrBlock":{"description":"Immutable. The IP address range for the cluster pod IPs. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. /14) to have a range chosen with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use.","type":"string"},"clusterSecondaryRangeName":{"description":"Immutable. The name of the existing secondary range in the cluster's subnetwork to use for pod IP addresses. Alternatively, cluster_ipv4_cidr_block can be used to automatically create a GKE-managed one.","type":"string"},"servicesIpv4CidrBlock":{"description":"Immutable. The IP address range of the services IPs in this cluster. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. /14) to have a range chosen with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use.","type":"string"},"servicesSecondaryRangeName":{"description":"Immutable. The name of the existing secondary range in the cluster's subnetwork to use for service ClusterIPs. Alternatively, services_ipv4_cidr_block can be used to automatically create a GKE-managed one.","type":"string"}}},"location":{"description":"Immutable. The location (region or zone) in which the cluster master will be created, as well as the default node location. If you specify a zone (such as us-central1-a), the cluster will be a zonal cluster with a single cluster master. If you specify a region (such as us-west1), the cluster will be a regional cluster with multiple masters spread across zones in the region, and with default node locations in those zones as well.","type":"string"},"loggingConfig":{"description":"Logging configuration for the cluster.","type":"object","required":["enableComponents"],"properties":{"enableComponents":{"description":"GKE components exposing logs. Valid values include SYSTEM_COMPONENTS, APISERVER, CONTROLLER_MANAGER, SCHEDULER, and WORKLOADS.","type":"array","items":{"type":"string"}}}},"loggingService":{"description":"The logging service that the cluster should write logs to. Available options include logging.googleapis.com(Legacy Stackdriver), logging.googleapis.com/kubernetes(Stackdriver Kubernetes Engine Logging), and none. Defaults to logging.googleapis.com/kubernetes.","type":"string"},"maintenancePolicy":{"description":"The maintenance policy to use for the cluster.","type":"object","properties":{"dailyMaintenanceWindow":{"description":"Time window specified for daily maintenance operations. Specify start_time in RFC3339 format \"HH:MMâ€, where HH : [00-23] and MM : [00-59] GMT.","type":"object","required":["startTime"],"properties":{"duration":{"type":"string"},"startTime":{"type":"string"}}},"maintenanceExclusion":{"description":"Exceptions to maintenance window. Non-emergency maintenance should not occur in these windows.","type":"array","items":{"type":"object","required":["endTime","exclusionName","startTime"],"properties":{"endTime":{"type":"string"},"exclusionName":{"type":"string"},"exclusionOptions":{"description":"Maintenance exclusion related options.","type":"object","required":["scope"],"properties":{"scope":{"description":"The scope of automatic upgrades to restrict in the exclusion window.","type":"string"}}},"startTime":{"type":"string"}}}},"recurringWindow":{"description":"Time window for recurring maintenance operations.","type":"object","required":["endTime","recurrence","startTime"],"properties":{"endTime":{"type":"string"},"recurrence":{"type":"string"},"startTime":{"type":"string"}}}}},"masterAuth":{"description":"DEPRECATED. Basic authentication was removed for GKE cluster versions \u003e= 1.19. The authentication information for accessing the Kubernetes master. Some values in this block are only returned by the API if your service account has permission to get credentials for your GKE cluster. If you see an unexpected diff unsetting your client cert, ensure you have the container.clusters.getCredentials permission.","type":"object","properties":{"clientCertificate":{"description":"Base64 encoded public certificate used by clients to authenticate to the cluster endpoint.","type":"string"},"clientCertificateConfig":{"description":"Immutable. Whether client certificate authorization is enabled for this cluster.","type":"object","required":["issueClientCertificate"],"properties":{"issueClientCertificate":{"description":"Immutable. Whether client certificate authorization is enabled for this cluster.","type":"boolean"}}},"clientKey":{"description":"Base64 encoded private key used by clients to authenticate to the cluster endpoint.","type":"string"},"clusterCaCertificate":{"description":"Base64 encoded public certificate that is the root of trust for the cluster.","type":"string"},"password":{"description":"The password to use for HTTP basic authentication when accessing the Kubernetes master endpoint.","type":"object","oneOf":[{"required":["value"],"not":{"required":["valueFrom"]}},{"required":["valueFrom"],"not":{"required":["value"]}}],"properties":{"value":{"description":"Value of the field. Cannot be used if 'valueFrom' is specified.","type":"string"},"valueFrom":{"description":"Source for the field's value. Cannot be used if 'value' is specified.","type":"object","properties":{"secretKeyRef":{"description":"Reference to a value with the given key in the given Secret in the resource's namespace.","type":"object","required":["name","key"],"properties":{"key":{"description":"Key that identifies the value to be extracted.","type":"string"},"name":{"description":"Name of the Secret to extract a value from.","type":"string"}}}}}}},"username":{"description":"The username to use for HTTP basic authentication when accessing the Kubernetes master endpoint. If not present basic auth will be disabled.","type":"string"}}},"masterAuthorizedNetworksConfig":{"description":"The desired configuration options for master authorized networks. Omit the nested cidr_blocks attribute to disallow external access (except the cluster node IPs, which GKE automatically whitelists).","type":"object","properties":{"cidrBlocks":{"description":"External networks that can access the Kubernetes cluster master through HTTPS.","type":"array","items":{"type":"object","required":["cidrBlock"],"properties":{"cidrBlock":{"description":"External network that can access Kubernetes master through HTTPS. Must be specified in CIDR notation.","type":"string"},"displayName":{"description":"Field for users to identify CIDR blocks.","type":"string"}}}},"gcpPublicCidrsAccessEnabled":{"description":"Whether master is accessbile via Google Compute Engine Public IP addresses.","type":"boolean"}}},"meshCertificates":{"description":"If set, and enable_certificates=true, the GKE Workload Identity Certificates controller and node agent will be deployed in the cluster.","type":"object","required":["enableCertificates"],"properties":{"enableCertificates":{"description":"When enabled the GKE Workload Identity Certificates controller and node agent will be deployed in the cluster.","type":"boolean"}}},"minMasterVersion":{"description":"The minimum version of the master. GKE will auto-update the master to new versions, so this does not guarantee the current master version--use the read-only master_version field to obtain that. If unset, the cluster's version will be set by GKE to the version of the most recent official release (which is not necessarily the latest version).","type":"string"},"monitoringConfig":{"description":"Monitoring configuration for the cluster.","type":"object","properties":{"enableComponents":{"description":"GKE components exposing metrics. Valid values include SYSTEM_COMPONENTS, APISERVER, CONTROLLER_MANAGER, SCHEDULER, and WORKLOADS.","type":"array","items":{"type":"string"}},"managedPrometheus":{"description":"Configuration for Google Cloud Managed Services for Prometheus.","type":"object","required":["enabled"],"properties":{"enabled":{"description":"Whether or not the managed collection is enabled.","type":"boolean"}}}}},"monitoringService":{"description":"The monitoring service that the cluster should write metrics to. Automatically send metrics from pods in the cluster to the Google Cloud Monitoring API. VM metrics will be collected by Google Compute Engine regardless of this setting Available options include monitoring.googleapis.com(Legacy Stackdriver), monitoring.googleapis.com/kubernetes(Stackdriver Kubernetes Engine Monitoring), and none. Defaults to monitoring.googleapis.com/kubernetes.","type":"string"},"networkPolicy":{"description":"Configuration options for the NetworkPolicy feature.","type":"object","required":["enabled"],"properties":{"enabled":{"description":"Whether network policy is enabled on the cluster.","type":"boolean"},"provider":{"description":"The selected network policy provider. Defaults to PROVIDER_UNSPECIFIED.","type":"string"}}},"networkRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: The `selfLink` field of a `ComputeNetwork` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"networkingMode":{"description":"Immutable. Determines whether alias IPs or routes will be used for pod IPs in the cluster.","type":"string"},"nodeConfig":{"description":"Immutable. The configuration of the nodepool.","type":"object","properties":{"bootDiskKMSCryptoKeyRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: The `selfLink` field of a `KMSCryptoKey` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"diskSizeGb":{"description":"Immutable. Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB.","type":"integer"},"diskType":{"description":"Immutable. Type of the disk attached to each node. Such as pd-standard, pd-balanced or pd-ssd.","type":"string"},"ephemeralStorageConfig":{"description":"Immutable. Parameters for the ephemeral storage filesystem.","type":"object","required":["localSsdCount"],"properties":{"localSsdCount":{"description":"Immutable. Number of local SSDs to use to back ephemeral storage. Uses NVMe interfaces. Each local SSD is 375 GB in size.","type":"integer"}}},"gcfsConfig":{"description":"Immutable. GCFS configuration for this node.","type":"object","required":["enabled"],"properties":{"enabled":{"description":"Immutable. Whether or not GCFS is enabled.","type":"boolean"}}},"guestAccelerator":{"description":"Immutable. List of the type and count of accelerator cards attached to the instance.","type":"array","items":{"type":"object","required":["count","type"],"properties":{"count":{"description":"Immutable. The number of the accelerator cards exposed to an instance.","type":"integer"},"gpuPartitionSize":{"description":"Immutable. Size of partitions to create on the GPU. Valid values are described in the NVIDIA mig user guide (https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning).","type":"string"},"gpuSharingConfig":{"description":"Immutable. Configuration for GPU sharing.","type":"object","required":["gpuSharingStrategy","maxSharedClientsPerGpu"],"properties":{"gpuSharingStrategy":{"description":"Immutable. The type of GPU sharing strategy to enable on the GPU node. Possible values are described in the API package (https://pkg.go.dev/google.golang.org/api/container/v1#GPUSharingConfig).","type":"string"},"maxSharedClientsPerGpu":{"description":"Immutable. The maximum number of containers that can share a GPU.","type":"integer"}}},"type":{"description":"Immutable. The accelerator type resource name.","type":"string"}}}},"gvnic":{"description":"Immutable. Enable or disable gvnic in the node pool.","type":"object","required":["enabled"],"properties":{"enabled":{"description":"Immutable. Whether or not gvnic is enabled.","type":"boolean"}}},"imageType":{"description":"The image type to use for this node. Note that for a given image type, the latest version of it will be used.","type":"string"},"kubeletConfig":{"description":"Node kubelet configs.","type":"object","required":["cpuManagerPolicy"],"properties":{"cpuCfsQuota":{"description":"Enable CPU CFS quota enforcement for containers that specify CPU limits.","type":"boolean"},"cpuCfsQuotaPeriod":{"description":"Set the CPU CFS quota period value 'cpu.cfs_period_us'.","type":"string"},"cpuManagerPolicy":{"description":"Control the CPU management policy on the node.","type":"string"}}},"labels":{"description":"Immutable. The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node.","type":"object","additionalProperties":{"type":"string"}},"linuxNodeConfig":{"description":"Parameters that can be configured on Linux nodes.","type":"object","required":["sysctls"],"properties":{"sysctls":{"description":"The Linux kernel parameters to be applied to the nodes and all pods running on the nodes.","type":"object","additionalProperties":{"type":"string"}}}},"localSsdCount":{"description":"Immutable. The number of local SSD disks to be attached to the node.","type":"integer"},"loggingVariant":{"description":"Type of logging agent that is used as the default value for node pools in the cluster. Valid values include DEFAULT and MAX_THROUGHPUT.","type":"string"},"machineType":{"description":"Immutable. The name of a Google Compute Engine machine type.","type":"string"},"metadata":{"description":"Immutable. The metadata key/value pairs assigned to instances in the cluster.","type":"object","additionalProperties":{"type":"string"}},"minCpuPlatform":{"description":"Immutable. Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform.","type":"string"},"nodeGroupRef":{"description":"Immutable. Setting this field will assign instances\nof this pool to run on the specified node group. This is useful\nfor running workloads on sole tenant nodes.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: The `name` field of a `ComputeNodeGroup` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"oauthScopes":{"description":"Immutable. The set of Google API scopes to be made available on all of the node VMs.","type":"array","items":{"type":"string"}},"preemptible":{"description":"Immutable. Whether the nodes are created as preemptible VM instances.","type":"boolean"},"reservationAffinity":{"description":"Immutable. The reservation affinity configuration for the node pool.","type":"object","required":["consumeReservationType"],"properties":{"consumeReservationType":{"description":"Immutable. Corresponds to the type of reservation consumption.","type":"string"},"key":{"description":"Immutable. The label key of a reservation resource.","type":"string"},"values":{"description":"Immutable. The label values of the reservation resource.","type":"array","items":{"type":"string"}}}},"resourceLabels":{"description":"The GCE resource labels (a map of key/value pairs) to be applied to the node pool.","type":"object","additionalProperties":{"type":"string"}},"sandboxConfig":{"description":"Immutable. Sandbox configuration for this node.","type":"object","required":["sandboxType"],"properties":{"sandboxType":{"description":"Type of the sandbox to use for the node (e.g. 'gvisor').","type":"string"}}},"serviceAccountRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: The `email` field of an `IAMServiceAccount` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"shieldedInstanceConfig":{"description":"Immutable. Shielded Instance options.","type":"object","properties":{"enableIntegrityMonitoring":{"description":"Immutable. Defines whether the instance has integrity monitoring enabled.","type":"boolean"},"enableSecureBoot":{"description":"Immutable. Defines whether the instance has Secure Boot enabled.","type":"boolean"}}},"spot":{"description":"Immutable. Whether the nodes are created as spot VM instances.","type":"boolean"},"tags":{"description":"The list of instance tags applied to all nodes.","type":"array","items":{"type":"string"}},"taint":{"description":"Immutable. List of Kubernetes taints to be applied to each node.","type":"array","items":{"type":"object","required":["effect","key","value"],"properties":{"effect":{"description":"Immutable. Effect for taint.","type":"string"},"key":{"description":"Immutable. Key for taint.","type":"string"},"value":{"description":"Immutable. Value for taint.","type":"string"}}}},"workloadMetadataConfig":{"description":"Immutable. The workload metadata configuration for this node.","type":"object","properties":{"mode":{"description":"Mode is the configuration for how to expose metadata to workloads running on the node.","type":"string"},"nodeMetadata":{"description":"DEPRECATED. Deprecated in favor of mode. NodeMetadata is the configuration for how to expose metadata to the workloads running on the node.","type":"string"}}}}},"nodeLocations":{"description":"The list of zones in which the cluster's nodes are located. Nodes must be in the region of their regional cluster or in the same region as their cluster's zone for zonal clusters. If this is specified for a zonal cluster, omit the cluster's zone.","type":"array","items":{"type":"string"}},"nodePoolAutoConfig":{"description":"Node pool configs that apply to all auto-provisioned node pools in autopilot clusters and node auto-provisioning enabled clusters.","type":"object","properties":{"networkTags":{"description":"Collection of Compute Engine network tags that can be applied to a node's underlying VM instance.","type":"object","properties":{"tags":{"description":"List of network tags applied to auto-provisioned node pools.","type":"array","items":{"type":"string"}}}}}},"nodePoolDefaults":{"description":"The default nodel pool settings for the entire cluster.","type":"object","properties":{"nodeConfigDefaults":{"description":"Subset of NodeConfig message that has defaults.","type":"object","properties":{"gcfsConfig":{"description":"GCFS configuration for this node.","type":"object","required":["enabled"],"properties":{"enabled":{"description":"Whether or not GCFS is enabled.","type":"boolean"}}},"loggingVariant":{"description":"Type of logging agent that is used as the default value for node pools in the cluster. Valid values include DEFAULT and MAX_THROUGHPUT.","type":"string"}}}}},"nodeVersion":{"type":"string"},"notificationConfig":{"description":"The notification config for sending cluster upgrade notifications.","type":"object","required":["pubsub"],"properties":{"pubsub":{"description":"Notification config for Cloud Pub/Sub.","type":"object","required":["enabled"],"properties":{"enabled":{"description":"Whether or not the notification config is enabled.","type":"boolean"},"filter":{"description":"Allows filtering to one or more specific event types. If event types are present, those and only those event types will be transmitted to the cluster. Other types will be skipped. If no filter is specified, or no event types are present, all event types will be sent.","type":"object","required":["eventType"],"properties":{"eventType":{"description":"Can be used to filter what notifications are sent. Valid values include include UPGRADE_AVAILABLE_EVENT, UPGRADE_EVENT and SECURITY_BULLETIN_EVENT.","type":"array","items":{"type":"string"}}}},"topicRef":{"description":"The PubSubTopic to send the notification to.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: string of the format `projects/{{project}}/topics/{{value}}`, where {{value}} is the `name` field of a `PubSubTopic` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}}},"podSecurityPolicyConfig":{"description":"Configuration for the PodSecurityPolicy feature.","type":"object","required":["enabled"],"properties":{"enabled":{"description":"Enable the PodSecurityPolicy controller for this cluster. If enabled, pods must be valid under a PodSecurityPolicy to be created.","type":"boolean"}}},"privateClusterConfig":{"description":"Configuration for private clusters, clusters with private nodes.","type":"object","properties":{"enablePrivateEndpoint":{"description":"When true, the cluster's private endpoint is used as the cluster endpoint and access through the public endpoint is disabled. When false, either endpoint can be used. This field only applies to private clusters, when enable_private_nodes is true.","type":"boolean"},"enablePrivateNodes":{"description":"Immutable. Enables the private cluster feature, creating a private endpoint on the cluster. In a private cluster, nodes only have RFC 1918 private addresses and communicate with the master's private endpoint via private networking.","type":"boolean"},"masterGlobalAccessConfig":{"description":"Controls cluster master global access settings.","type":"object","required":["enabled"],"properties":{"enabled":{"description":"Whether the cluster master is accessible globally or not.","type":"boolean"}}},"masterIpv4CidrBlock":{"description":"Immutable. The IP range in CIDR notation to use for the hosted master network. This range will be used for assigning private IP addresses to the cluster master(s) and the ILB VIP. This range must not overlap with any other ranges in use within the cluster's network, and it must be a /28 subnet. See Private Cluster Limitations for more details. This field only applies to private clusters, when enable_private_nodes is true.","type":"string"},"peeringName":{"description":"The name of the peering between this cluster and the Google owned VPC.","type":"string"},"privateEndpoint":{"description":"The internal IP address of this cluster's master endpoint.","type":"string"},"privateEndpointSubnetworkRef":{"description":"Immutable. Subnetwork in cluster's network where master's endpoint\nwill be provisioned.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: The `selfLink` field of a `ComputeSubnetwork` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"publicEndpoint":{"description":"The external IP address of this cluster's master endpoint.","type":"string"}}},"privateIpv6GoogleAccess":{"description":"The desired state of IPv6 connectivity to Google Services. By default, no private IPv6 access to or from Google Services (all access will be via IPv4).","type":"string"},"releaseChannel":{"description":"Configuration options for the Release channel feature, which provide more control over automatic upgrades of your GKE clusters. Note that removing this field from your config will not unenroll it. Instead, use the \"UNSPECIFIED\" channel.","type":"object","required":["channel"],"properties":{"channel":{"description":"The selected release channel. Accepted values are:\n* UNSPECIFIED: Not set.\n* RAPID: Weekly upgrade cadence; Early testers and developers who requires new features.\n* REGULAR: Multiple per month upgrade cadence; Production users who need features not yet offered in the Stable channel.\n* STABLE: Every few months upgrade cadence; Production users who need stability above all else, and for whom frequent upgrades are too risky.","type":"string"}}},"resourceID":{"description":"Immutable. Optional. The name of the resource. Used for creation and acquisition. When unset, the value of `metadata.name` is used as the default.","type":"string"},"resourceUsageExportConfig":{"description":"Configuration for the ResourceUsageExportConfig feature.","type":"object","required":["bigqueryDestination"],"properties":{"bigqueryDestination":{"description":"Parameters for using BigQuery as the destination of resource usage export.","type":"object","required":["datasetId"],"properties":{"datasetId":{"description":"The ID of a BigQuery Dataset.","type":"string"}}},"enableNetworkEgressMetering":{"description":"Whether to enable network egress metering for this cluster. If enabled, a daemonset will be created in the cluster to meter network egress traffic.","type":"boolean"},"enableResourceConsumptionMetering":{"description":"Whether to enable resource consumption metering on this cluster. When enabled, a table will be created in the resource export BigQuery dataset to store resource consumption data. The resulting table can be joined with the resource usage table or with BigQuery billing export. Defaults to true.","type":"boolean"}}},"serviceExternalIpsConfig":{"description":"If set, and enabled=true, services with external ips field will not be blocked.","type":"object","required":["enabled"],"properties":{"enabled":{"description":"When enabled, services with exterenal ips specified will be allowed.","type":"boolean"}}},"subnetworkRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: The `selfLink` field of a `ComputeSubnetwork` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"verticalPodAutoscaling":{"description":"Vertical Pod Autoscaling automatically adjusts the resources of pods controlled by it.","type":"object","required":["enabled"],"properties":{"enabled":{"description":"Enables vertical pod autoscaling.","type":"boolean"}}},"workloadIdentityConfig":{"description":"Configuration for the use of Kubernetes Service Accounts in GCP IAM policies.","type":"object","properties":{"identityNamespace":{"description":"DEPRECATED. This field will be removed in a future major release as it has been deprecated in the API. Use `workloadPool` instead; `workloadPool` field will supersede this field.\nEnables workload identity.","type":"string"},"workloadPool":{"description":"The workload pool to attach all Kubernetes service accounts to.","type":"string"}}}}},"status":{"type":"object","properties":{"conditions":{"description":"Conditions represent the latest available observation of the resource's current state.","type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","type":"string"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"Status is the status of the condition. Can be True, False, Unknown.","type":"string"},"type":{"description":"Type is the type of the condition.","type":"string"}}}},"endpoint":{"description":"The IP address of this cluster's Kubernetes master.","type":"string"},"labelFingerprint":{"description":"The fingerprint of the set of labels for this cluster.","type":"string"},"masterVersion":{"description":"The current version of the master in the cluster. This may be different than the min_master_version set in the config if the master has been updated by GKE.","type":"string"},"observedGeneration":{"description":"ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.","type":"integer"},"operation":{"type":"string"},"selfLink":{"description":"Server-defined URL for the resource.","type":"string"},"servicesIpv4Cidr":{"description":"The IP address range of the Kubernetes services in this cluster, in CIDR notation (e.g. 1.2.3.4/29). Service addresses are typically put in the last /16 from the container CIDR.","type":"string"},"tpuIpv4CidrBlock":{"description":"The IP address range of the Cloud TPUs in this cluster, in CIDR notation (e.g. 1.2.3.4/29).","type":"string"}}}},"x-kubernetes-group-version-kind":[{"group":"container.cnrm.cloud.google.com","kind":"ContainerCluster","version":"v1beta1"}]},"com.google.cloud.cnrm.container.v1beta1.ContainerClusterList":{"description":"ContainerClusterList is a list of ContainerCluster","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of containerclusters. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"$ref":"#/components/schemas/com.google.cloud.cnrm.container.v1beta1.ContainerCluster"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"container.cnrm.cloud.google.com","kind":"ContainerClusterList","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"}]},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"creationTimestamp":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}]}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"}]},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"}}}}dataproc_v1beta1_dataprocworkflowtemplate.json000066400000000000000000002474131453663023200411500ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv3{"openapi":"3.0.0","info":{"title":"Kubernetes CRD Swagger","version":"v0.1.0"},"components":{"schemas":{"com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplate":{"type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"type":"object","required":["jobs","location","placement"],"properties":{"dagTimeout":{"description":"Immutable. Optional. Timeout duration for the DAG of jobs, expressed in seconds (see [JSON representation of duration](https://developers.google.com/protocol-buffers/docs/proto3#json)). The timeout duration must be from 10 minutes (\"600s\") to 24 hours (\"86400s\"). The timer begins when the first job is submitted. If the workflow is running at the end of the timeout period, any remaining jobs are cancelled, the workflow is ended, and if the workflow was running on a [managed cluster](/dataproc/docs/concepts/workflows/using-workflows#configuring_or_selecting_a_cluster), the cluster is deleted.","type":"string"},"jobs":{"description":"Immutable. Required. The Directed Acyclic Graph of Jobs to submit.","type":"array","items":{"type":"object","required":["stepId"],"properties":{"hadoopJob":{"description":"Immutable. Optional. Job is a Hadoop job.","type":"object","properties":{"archiveUris":{"description":"Immutable. Optional. HCFS URIs of archives to be extracted in the working directory of Hadoop drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, or .zip.","type":"array","items":{"type":"string"}},"args":{"description":"Immutable. Optional. The arguments to pass to the driver. Do not include arguments, such as `-libjars` or `-Dfoo=bar`, that can be set as job properties, since a collision may occur that causes an incorrect job submission.","type":"array","items":{"type":"string"}},"fileUris":{"description":"Immutable. Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied to the working directory of Hadoop drivers and distributed tasks. Useful for naively parallel tasks.","type":"array","items":{"type":"string"}},"jarFileUris":{"description":"Immutable. Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.","type":"array","items":{"type":"string"}},"loggingConfig":{"description":"Immutable. Optional. The runtime log config for job execution.","type":"object","properties":{"driverLogLevels":{"description":"Immutable. The per-package log levels for the driver. This may include \"root\" package name to configure rootLogger. Examples: 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'","type":"object","additionalProperties":{"type":"string"}}}},"mainClass":{"description":"Immutable. The name of the driver's main class. The jar file containing the class must be in the default CLASSPATH or specified in `jar_file_uris`.","type":"string"},"mainJarFileUri":{"description":"Immutable. The HCFS URI of the jar file containing the main class. Examples: 'gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar' 'hdfs:/tmp/test-samples/custom-wordcount.jar' 'file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar'","type":"string"},"properties":{"description":"Immutable. Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.","type":"object","additionalProperties":{"type":"string"}}}},"hiveJob":{"description":"Immutable. Optional. Job is a Hive job.","type":"object","properties":{"continueOnFailure":{"description":"Immutable. Optional. Whether to continue executing queries if a query fails. The default value is `false`. Setting to `true` can be useful when executing independent parallel queries.","type":"boolean"},"jarFileUris":{"description":"Immutable. Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and UDFs.","type":"array","items":{"type":"string"}},"properties":{"description":"Immutable. Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/hive/conf/hive-site.xml, and classes in user code.","type":"object","additionalProperties":{"type":"string"}},"queryFileUri":{"description":"Immutable. The HCFS URI of the script that contains Hive queries.","type":"string"},"queryList":{"description":"Immutable. A list of queries.","type":"object","required":["queries"],"properties":{"queries":{"description":"Immutable. Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: \"hiveJob\": { \"queryList\": { \"queries\": [ \"query1\", \"query2\", \"query3;query4\", ] } }","type":"array","items":{"type":"string"}}}},"scriptVariables":{"description":"Immutable. Optional. Mapping of query variable names to values (equivalent to the Hive command: `SET name=\"value\";`).","type":"object","additionalProperties":{"type":"string"}}}},"labels":{"description":"Immutable. Optional. The labels to associate with this job. Label keys must be between 1 and 63 characters long, and must conform to the following regular expression: p{Ll}p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following regular expression: [p{Ll}p{Lo}p{N}_-]{0,63} No more than 32 labels can be associated with a given job.","type":"object","additionalProperties":{"type":"string"}},"pigJob":{"description":"Immutable. Optional. Job is a Pig job.","type":"object","properties":{"continueOnFailure":{"description":"Immutable. Optional. Whether to continue executing queries if a query fails. The default value is `false`. Setting to `true` can be useful when executing independent parallel queries.","type":"boolean"},"jarFileUris":{"description":"Immutable. Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.","type":"array","items":{"type":"string"}},"loggingConfig":{"description":"Immutable. Optional. The runtime log config for job execution.","type":"object","properties":{"driverLogLevels":{"description":"Immutable. The per-package log levels for the driver. This may include \"root\" package name to configure rootLogger. Examples: 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'","type":"object","additionalProperties":{"type":"string"}}}},"properties":{"description":"Immutable. Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and classes in user code.","type":"object","additionalProperties":{"type":"string"}},"queryFileUri":{"description":"Immutable. The HCFS URI of the script that contains the Pig queries.","type":"string"},"queryList":{"description":"Immutable. A list of queries.","type":"object","required":["queries"],"properties":{"queries":{"description":"Immutable. Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: \"hiveJob\": { \"queryList\": { \"queries\": [ \"query1\", \"query2\", \"query3;query4\", ] } }","type":"array","items":{"type":"string"}}}},"scriptVariables":{"description":"Immutable. Optional. Mapping of query variable names to values (equivalent to the Pig command: `name=[value]`).","type":"object","additionalProperties":{"type":"string"}}}},"prerequisiteStepIds":{"description":"Immutable. Optional. The optional list of prerequisite job step_ids. If not specified, the job will start at the beginning of workflow.","type":"array","items":{"type":"string"}},"prestoJob":{"description":"Immutable. Optional. Job is a Presto job.","type":"object","properties":{"clientTags":{"description":"Immutable. Optional. Presto client tags to attach to this query","type":"array","items":{"type":"string"}},"continueOnFailure":{"description":"Immutable. Optional. Whether to continue executing queries if a query fails. The default value is `false`. Setting to `true` can be useful when executing independent parallel queries.","type":"boolean"},"loggingConfig":{"description":"Immutable. Optional. The runtime log config for job execution.","type":"object","properties":{"driverLogLevels":{"description":"Immutable. The per-package log levels for the driver. This may include \"root\" package name to configure rootLogger. Examples: 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'","type":"object","additionalProperties":{"type":"string"}}}},"outputFormat":{"description":"Immutable. Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats","type":"string"},"properties":{"description":"Immutable. Optional. A mapping of property names to values. Used to set Presto [session properties](https://prestodb.io/docs/current/sql/set-session.html) Equivalent to using the --session flag in the Presto CLI","type":"object","additionalProperties":{"type":"string"}},"queryFileUri":{"description":"Immutable. The HCFS URI of the script that contains SQL queries.","type":"string"},"queryList":{"description":"Immutable. A list of queries.","type":"object","required":["queries"],"properties":{"queries":{"description":"Immutable. Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: \"hiveJob\": { \"queryList\": { \"queries\": [ \"query1\", \"query2\", \"query3;query4\", ] } }","type":"array","items":{"type":"string"}}}}}},"pysparkJob":{"description":"Immutable. Optional. Job is a PySpark job.","type":"object","required":["mainPythonFileUri"],"properties":{"archiveUris":{"description":"Immutable. Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.","type":"array","items":{"type":"string"}},"args":{"description":"Immutable. Optional. The arguments to pass to the driver. Do not include arguments, such as `--conf`, that can be set as job properties, since a collision may occur that causes an incorrect job submission.","type":"array","items":{"type":"string"}},"fileUris":{"description":"Immutable. Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.","type":"array","items":{"type":"string"}},"jarFileUris":{"description":"Immutable. Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.","type":"array","items":{"type":"string"}},"loggingConfig":{"description":"Immutable. Optional. The runtime log config for job execution.","type":"object","properties":{"driverLogLevels":{"description":"Immutable. The per-package log levels for the driver. This may include \"root\" package name to configure rootLogger. Examples: 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'","type":"object","additionalProperties":{"type":"string"}}}},"mainPythonFileUri":{"description":"Immutable. Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file.","type":"string"},"properties":{"description":"Immutable. Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.","type":"object","additionalProperties":{"type":"string"}},"pythonFileUris":{"description":"Immutable. Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.","type":"array","items":{"type":"string"}}}},"scheduling":{"description":"Immutable. Optional. Job scheduling configuration.","type":"object","properties":{"maxFailuresPerHour":{"description":"Immutable. Optional. Maximum number of times per hour a driver may be restarted as a result of driver exiting with non-zero code before job is reported failed. A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window. Maximum value is 10.","type":"integer","format":"int64"},"maxFailuresTotal":{"description":"Immutable. Optional. Maximum number of times in total a driver may be restarted as a result of driver exiting with non-zero code before job is reported failed. Maximum value is 240.","type":"integer","format":"int64"}}},"sparkJob":{"description":"Immutable. Optional. Job is a Spark job.","type":"object","properties":{"archiveUris":{"description":"Immutable. Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.","type":"array","items":{"type":"string"}},"args":{"description":"Immutable. Optional. The arguments to pass to the driver. Do not include arguments, such as `--conf`, that can be set as job properties, since a collision may occur that causes an incorrect job submission.","type":"array","items":{"type":"string"}},"fileUris":{"description":"Immutable. Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.","type":"array","items":{"type":"string"}},"jarFileUris":{"description":"Immutable. Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.","type":"array","items":{"type":"string"}},"loggingConfig":{"description":"Immutable. Optional. The runtime log config for job execution.","type":"object","properties":{"driverLogLevels":{"description":"Immutable. The per-package log levels for the driver. This may include \"root\" package name to configure rootLogger. Examples: 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'","type":"object","additionalProperties":{"type":"string"}}}},"mainClass":{"description":"Immutable. The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in `jar_file_uris`.","type":"string"},"mainJarFileUri":{"description":"Immutable. The HCFS URI of the jar file that contains the main class.","type":"string"},"properties":{"description":"Immutable. Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.","type":"object","additionalProperties":{"type":"string"}}}},"sparkRJob":{"description":"Immutable. Optional. Job is a SparkR job.","type":"object","required":["mainRFileUri"],"properties":{"archiveUris":{"description":"Immutable. Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.","type":"array","items":{"type":"string"}},"args":{"description":"Immutable. Optional. The arguments to pass to the driver. Do not include arguments, such as `--conf`, that can be set as job properties, since a collision may occur that causes an incorrect job submission.","type":"array","items":{"type":"string"}},"fileUris":{"description":"Immutable. Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.","type":"array","items":{"type":"string"}},"loggingConfig":{"description":"Immutable. Optional. The runtime log config for job execution.","type":"object","properties":{"driverLogLevels":{"description":"Immutable. The per-package log levels for the driver. This may include \"root\" package name to configure rootLogger. Examples: 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'","type":"object","additionalProperties":{"type":"string"}}}},"mainRFileUri":{"description":"Immutable. Required. The HCFS URI of the main R file to use as the driver. Must be a .R file.","type":"string"},"properties":{"description":"Immutable. Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.","type":"object","additionalProperties":{"type":"string"}}}},"sparkSqlJob":{"description":"Immutable. Optional. Job is a SparkSql job.","type":"object","properties":{"jarFileUris":{"description":"Immutable. Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.","type":"array","items":{"type":"string"}},"loggingConfig":{"description":"Immutable. Optional. The runtime log config for job execution.","type":"object","properties":{"driverLogLevels":{"description":"Immutable. The per-package log levels for the driver. This may include \"root\" package name to configure rootLogger. Examples: 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'","type":"object","additionalProperties":{"type":"string"}}}},"properties":{"description":"Immutable. Optional. A mapping of property names to values, used to configure Spark SQL's SparkConf. Properties that conflict with values set by the Dataproc API may be overwritten.","type":"object","additionalProperties":{"type":"string"}},"queryFileUri":{"description":"Immutable. The HCFS URI of the script that contains SQL queries.","type":"string"},"queryList":{"description":"Immutable. A list of queries.","type":"object","required":["queries"],"properties":{"queries":{"description":"Immutable. Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: \"hiveJob\": { \"queryList\": { \"queries\": [ \"query1\", \"query2\", \"query3;query4\", ] } }","type":"array","items":{"type":"string"}}}},"scriptVariables":{"description":"Immutable. Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET `name=\"value\";`).","type":"object","additionalProperties":{"type":"string"}}}},"stepId":{"description":"Immutable. Required. The step id. The id must be unique among all jobs within the template. The step id is used as prefix for job id, as job `goog-dataproc-workflow-step-id` label, and in prerequisiteStepIds field from other steps. The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end with underscore or hyphen. Must consist of between 3 and 50 characters.","type":"string"}}}},"location":{"description":"Immutable. The location for the resource","type":"string"},"parameters":{"description":"Immutable. Optional. Template parameters whose values are substituted into the template. Values for parameters must be provided when the template is instantiated.","type":"array","items":{"type":"object","required":["fields","name"],"properties":{"description":{"description":"Immutable. Optional. Brief description of the parameter. Must not exceed 1024 characters.","type":"string"},"fields":{"description":"Immutable. Required. Paths to all fields that the parameter replaces. A field is allowed to appear in at most one parameter's list of field paths. A field path is similar in syntax to a google.protobuf.FieldMask. For example, a field path that references the zone field of a workflow template's cluster selector would be specified as `placement.clusterSelector.zone`. Also, field paths can reference fields using the following syntax: * Values in maps can be referenced by key: * labels['key'] * placement.clusterSelector.clusterLabels['key'] * placement.managedCluster.labels['key'] * placement.clusterSelector.clusterLabels['key'] * jobs['step-id'].labels['key'] * Jobs in the jobs list can be referenced by step-id: * jobs['step-id'].hadoopJob.mainJarFileUri * jobs['step-id'].hiveJob.queryFileUri * jobs['step-id'].pySparkJob.mainPythonFileUri * jobs['step-id'].hadoopJob.jarFileUris[0] * jobs['step-id'].hadoopJob.archiveUris[0] * jobs['step-id'].hadoopJob.fileUris[0] * jobs['step-id'].pySparkJob.pythonFileUris[0] * Items in repeated fields can be referenced by a zero-based index: * jobs['step-id'].sparkJob.args[0] * Other examples: * jobs['step-id'].hadoopJob.properties['key'] * jobs['step-id'].hadoopJob.args[0] * jobs['step-id'].hiveJob.scriptVariables['key'] * jobs['step-id'].hadoopJob.mainJarFileUri * placement.clusterSelector.zone It may not be possible to parameterize maps and repeated fields in their entirety since only individual map values and individual items in repeated fields can be referenced. For example, the following field paths are invalid: - placement.clusterSelector.clusterLabels - jobs['step-id'].sparkJob.args","type":"array","items":{"type":"string"}},"name":{"description":"Immutable. Required. Parameter name. The parameter name is used as the key, and paired with the parameter value, which are passed to the template when the template is instantiated. The name must contain only capital letters (A-Z), numbers (0-9), and underscores (_), and must not start with a number. The maximum length is 40 characters.","type":"string"},"validation":{"description":"Immutable. Optional. Validation rules to be applied to this parameter's value.","type":"object","properties":{"regex":{"description":"Immutable. Validation based on regular expressions.","type":"object","required":["regexes"],"properties":{"regexes":{"description":"Immutable. Required. RE2 regular expressions used to validate the parameter's value. The value must match the regex in its entirety (substring matches are not sufficient).","type":"array","items":{"type":"string"}}}},"values":{"description":"Immutable. Validation based on a list of allowed values.","type":"object","required":["values"],"properties":{"values":{"description":"Immutable. Required. List of allowed values for the parameter.","type":"array","items":{"type":"string"}}}}}}}}},"placement":{"description":"Immutable. Required. WorkflowTemplate scheduling information.","type":"object","properties":{"clusterSelector":{"description":"Immutable. Optional. A selector that chooses target cluster for jobs based on metadata. The selector is evaluated at the time each job is submitted.","type":"object","required":["clusterLabels"],"properties":{"clusterLabels":{"description":"Immutable. Required. The cluster labels. Cluster must have all labels to match.","type":"object","additionalProperties":{"type":"string"}},"zone":{"description":"Immutable. Optional. The zone where workflow process executes. This parameter does not affect the selection of the cluster. If unspecified, the zone of the first cluster matching the selector is used.","type":"string"}}},"managedCluster":{"description":"Immutable. A cluster that is managed by the workflow.","type":"object","required":["clusterName","config"],"properties":{"clusterName":{"description":"Immutable. Required. The cluster name prefix. A unique cluster name will be formed by appending a random suffix. The name must contain only lower-case letters (a-z), numbers (0-9), and hyphens (-). Must begin with a letter. Cannot begin or end with hyphen. Must consist of between 2 and 35 characters.","type":"string"},"config":{"description":"Immutable. Required. The cluster configuration.","type":"object","properties":{"autoscalingConfig":{"description":"Immutable. Optional. Autoscaling config for the policy associated with the cluster. Cluster does not autoscale if this field is unset.","type":"object","properties":{"policyRef":{"description":"Immutable.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Optional. The autoscaling policy used by the cluster. Only resource names including projectid and location (region) are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id]` * `projects/[project_id]/locations/[dataproc_region]/autoscalingPolicies/[policy_id]` Note that the policy must be in the same project and Dataproc region.\n\nAllowed value: The Google Cloud resource name of a `DataprocAutoscalingPolicy` resource (format: `projects/{{project}}/locations/{{location}}/autoscalingPolicies/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}},"encryptionConfig":{"description":"Immutable. Optional. Encryption settings for the cluster.","type":"object","properties":{"gcePdKmsKeyRef":{"description":"Immutable.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Optional. The Cloud KMS key name to use for PD disk encryption for all instances in the cluster.\n\nAllowed value: The `selfLink` field of a `KMSCryptoKey` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}},"endpointConfig":{"description":"Immutable. Optional. Port/endpoint configuration for this cluster","type":"object","properties":{"enableHttpPortAccess":{"description":"Immutable. Optional. If true, enable http access to specific ports on the cluster from external sources. Defaults to false.","type":"boolean"}}},"gceClusterConfig":{"description":"Immutable. Optional. The shared Compute Engine config settings for all instances in a cluster.","type":"object","properties":{"internalIPOnly":{"description":"Immutable. Optional. If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This `internal_ip_only` restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.","type":"boolean"},"metadata":{"description":"Immutable. The Compute Engine metadata entries to add to all instances (see [Project and instance metadata](https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)).","type":"object","additionalProperties":{"type":"string"}},"networkRef":{"description":"Immutable.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Optional. The Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither `network_uri` nor `subnetwork_uri` is specified, the \"default\" network of the project is used, if it exists. Cannot be a \"Custom Subnet Network\" (see [Using Subnetworks](https://cloud.google.com/compute/docs/subnetworks) for more information). A full URL, partial URI, or short name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default` * `projects/[project_id]/regions/global/default` * `default`\n\nAllowed value: The `selfLink` field of a `ComputeNetwork` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"nodeGroupAffinity":{"description":"Immutable. Optional. Node Group Affinity for sole-tenant clusters.","type":"object","required":["nodeGroupRef"],"properties":{"nodeGroupRef":{"description":"Immutable.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Required. The URI of a sole-tenant [node group resource](https://cloud.google.com/compute/docs/reference/rest/v1/nodeGroups) that the cluster will be created on. A full URL, partial URI, or node group name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-central1-a/nodeGroups/node-group-1` * `projects/[project_id]/zones/us-central1-a/nodeGroups/node-group-1` * `node-group-1`\n\nAllowed value: The `selfLink` field of a `ComputeNodeGroup` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}},"privateIPv6GoogleAccess":{"description":"Immutable. Optional. The type of IPv6 access for a cluster. Possible values: PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED, INHERIT_FROM_SUBNETWORK, OUTBOUND, BIDIRECTIONAL","type":"string"},"reservationAffinity":{"description":"Immutable. Optional. Reservation Affinity for consuming Zonal reservation.","type":"object","properties":{"consumeReservationType":{"description":"Immutable. Optional. Type of reservation to consume Possible values: TYPE_UNSPECIFIED, NO_RESERVATION, ANY_RESERVATION, SPECIFIC_RESERVATION","type":"string"},"key":{"description":"Immutable. Optional. Corresponds to the label key of reservation resource.","type":"string"},"values":{"description":"Immutable. Optional. Corresponds to the label values of reservation resource.","type":"array","items":{"type":"string"}}}},"serviceAccountRef":{"description":"Immutable.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Optional. The [Dataproc service account](https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/service-accounts#service_accounts_in_dataproc) (also see [VM Data Plane identity](https://cloud.google.com/dataproc/docs/concepts/iam/dataproc-principals#vm_service_account_data_plane_identity)) used by Dataproc cluster VM instances to access Google Cloud Platform services. If not specified, the [Compute Engine default service account](https://cloud.google.com/compute/docs/access/service-accounts#default_service_account) is used.\n\nAllowed value: The `email` field of an `IAMServiceAccount` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"serviceAccountScopes":{"description":"Immutable. Optional. The URIs of service account scopes to be included in Compute Engine instances. The following base set of scopes is always included: * https://www.googleapis.com/auth/cloud.useraccounts.readonly * https://www.googleapis.com/auth/devstorage.read_write * https://www.googleapis.com/auth/logging.write If no scopes are specified, the following defaults are also provided: * https://www.googleapis.com/auth/bigquery * https://www.googleapis.com/auth/bigtable.admin.table * https://www.googleapis.com/auth/bigtable.data * https://www.googleapis.com/auth/devstorage.full_control","type":"array","items":{"type":"string"}},"shieldedInstanceConfig":{"description":"Immutable. Optional. Shielded Instance Config for clusters using Compute Engine Shielded VMs.","type":"object","properties":{"enableIntegrityMonitoring":{"description":"Immutable. Optional. Defines whether instances have integrity monitoring enabled. Integrity monitoring compares the most recent boot measurements to the integrity policy baseline and returns a pair of pass/fail results depending on whether they match or not.","type":"boolean"},"enableSecureBoot":{"description":"Immutable. Optional. Defines whether the instances have Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails.","type":"boolean"},"enableVtpm":{"description":"Immutable. Optional. Defines whether the instance have the vTPM enabled. Virtual Trusted Platform Module protects objects like keys, certificates and enables Measured Boot by performing the measurements needed to create a known good boot baseline, called the integrity policy baseline.","type":"boolean"}}},"subnetworkRef":{"description":"Immutable.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Optional. The Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri. A full URL, partial URI, or short name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/subnetworks/sub0` * `projects/[project_id]/regions/us-east1/subnetworks/sub0` * `sub0`\n\nAllowed value: The `selfLink` field of a `ComputeSubnetwork` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"tags":{"description":"Immutable. The Compute Engine tags to add to all instances (see [Tagging instances](https://cloud.google.com/compute/docs/label-or-tag-resources#tags)).","type":"array","items":{"type":"string"}},"zone":{"description":"Immutable. Optional. The zone where the Compute Engine cluster will be located. On a create request, it is required in the \"global\" region. If omitted in a non-global Dataproc region, the service will pick a zone in the corresponding Compute Engine region. On a get request, zone will always be present. A full URL, partial URI, or short name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone]` * `projects/[project_id]/zones/[zone]` * `us-central1-f`","type":"string"}}},"initializationActions":{"description":"Immutable. Optional. Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node's `role` metadata to run an executable on a master or worker node, as shown below using `curl` (you can also use `wget`): ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/attributes/dataproc-role) if [[ \"${ROLE}\" == 'Master' ]]; then ... master specific actions ... else ... worker specific actions ... fi","type":"array","items":{"type":"object","properties":{"executableFile":{"description":"Immutable. Required. Cloud Storage URI of executable file.","type":"string"},"executionTimeout":{"description":"Immutable. Optional. Amount of time executable has to complete. Default is 10 minutes (see JSON representation of [Duration](https://developers.google.com/protocol-buffers/docs/proto3#json)). Cluster creation fails with an explanatory error message (the name of the executable that caused the error and the exceeded timeout period) if the executable is not completed at end of the timeout period.","type":"string"}}}},"lifecycleConfig":{"description":"Immutable. Optional. Lifecycle setting for the cluster.","type":"object","properties":{"autoDeleteTime":{"description":"Immutable. Optional. The time when cluster will be auto-deleted (see JSON representation of [Timestamp](https://developers.google.com/protocol-buffers/docs/proto3#json)).","type":"string","format":"date-time"},"autoDeleteTtl":{"description":"Immutable. Optional. The lifetime duration of cluster. The cluster will be auto-deleted at the end of this period. Minimum value is 10 minutes; maximum value is 14 days (see JSON representation of [Duration](https://developers.google.com/protocol-buffers/docs/proto3#json)).","type":"string"},"idleDeleteTtl":{"description":"Immutable. Optional. The duration to keep the cluster alive while idling (when no jobs are running). Passing this threshold will cause the cluster to be deleted. Minimum value is 5 minutes; maximum value is 14 days (see JSON representation of [Duration](https://developers.google.com/protocol-buffers/docs/proto3#json)).","type":"string"}}},"masterConfig":{"description":"Immutable. Optional. The Compute Engine config settings for the master instance in a cluster.","type":"object","properties":{"accelerators":{"description":"Immutable. Optional. The Compute Engine accelerator configuration for these instances.","type":"array","items":{"type":"object","properties":{"acceleratorCount":{"description":"Immutable. The number of the accelerator cards of this type exposed to this instance.","type":"integer","format":"int64"},"acceleratorType":{"description":"Immutable. Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See [Compute Engine AcceleratorTypes](https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes). Examples: * `https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80` * `projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80` * `nvidia-tesla-k80` **Auto Zone Exception**: If you are using the Dataproc [Auto Zone Placement](https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, `nvidia-tesla-k80`.","type":"string"}}}},"diskConfig":{"description":"Immutable. Optional. Disk option config settings.","type":"object","properties":{"bootDiskSizeGb":{"description":"Immutable. Optional. Size in GB of the boot disk (default is 500GB).","type":"integer","format":"int64"},"bootDiskType":{"description":"Immutable. Optional. Type of the boot disk (default is \"pd-standard\"). Valid values: \"pd-balanced\" (Persistent Disk Balanced Solid State Drive), \"pd-ssd\" (Persistent Disk Solid State Drive), or \"pd-standard\" (Persistent Disk Hard Disk Drive). See [Disk types](https://cloud.google.com/compute/docs/disks#disk-types).","type":"string"},"numLocalSsds":{"description":"Immutable. Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.","type":"integer","format":"int64"}}},"imageRef":{"description":"Immutable.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Optional. The Compute Engine image resource used for cluster instances. The URI can represent an image or image family. Image examples: * `https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id]` * `projects/[project_id]/global/images/[image-id]` * `image-id` Image family examples. Dataproc will use the most recent image from the family: * `https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name]` * `projects/[project_id]/global/images/family/[custom-image-family-name]` If the URI is unspecified, it will be inferred from `SoftwareConfig.image_version` or the system default.\n\nAllowed value: The `selfLink` field of a `ComputeImage` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"machineType":{"description":"Immutable. Optional. The Compute Engine machine type used for cluster instances. A full URL, partial URI, or short name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2` * `projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2` * `n1-standard-2` **Auto Zone Exception**: If you are using the Dataproc [Auto Zone Placement](https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, `n1-standard-2`.","type":"string"},"minCpuPlatform":{"description":"Immutable. Optional. Specifies the minimum cpu platform for the Instance Group. See [Dataproc -\u003e Minimum CPU Platform](https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu).","type":"string"},"numInstances":{"description":"Immutable. Optional. The number of VM instances in the instance group. For [HA cluster](/dataproc/docs/concepts/configuring-clusters/high-availability) [master_config](#FIELDS.master_config) groups, **must be set to 3**. For standard cluster [master_config](#FIELDS.master_config) groups, **must be set to 1**.","type":"integer","format":"int64"},"preemptibility":{"description":"Immutable. Optional. Specifies the preemptibility of the instance group. The default value for master and worker groups is `NON_PREEMPTIBLE`. This default cannot be changed. The default value for secondary instances is `PREEMPTIBLE`. Possible values: PREEMPTIBILITY_UNSPECIFIED, NON_PREEMPTIBLE, PREEMPTIBLE","type":"string"}}},"secondaryWorkerConfig":{"description":"Immutable. Optional. The Compute Engine config settings for additional worker instances in a cluster.","type":"object","properties":{"accelerators":{"description":"Immutable. Optional. The Compute Engine accelerator configuration for these instances.","type":"array","items":{"type":"object","properties":{"acceleratorCount":{"description":"Immutable. The number of the accelerator cards of this type exposed to this instance.","type":"integer","format":"int64"},"acceleratorType":{"description":"Immutable. Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See [Compute Engine AcceleratorTypes](https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes). Examples: * `https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80` * `projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80` * `nvidia-tesla-k80` **Auto Zone Exception**: If you are using the Dataproc [Auto Zone Placement](https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, `nvidia-tesla-k80`.","type":"string"}}}},"diskConfig":{"description":"Immutable. Optional. Disk option config settings.","type":"object","properties":{"bootDiskSizeGb":{"description":"Immutable. Optional. Size in GB of the boot disk (default is 500GB).","type":"integer","format":"int64"},"bootDiskType":{"description":"Immutable. Optional. Type of the boot disk (default is \"pd-standard\"). Valid values: \"pd-balanced\" (Persistent Disk Balanced Solid State Drive), \"pd-ssd\" (Persistent Disk Solid State Drive), or \"pd-standard\" (Persistent Disk Hard Disk Drive). See [Disk types](https://cloud.google.com/compute/docs/disks#disk-types).","type":"string"},"numLocalSsds":{"description":"Immutable. Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.","type":"integer","format":"int64"}}},"imageRef":{"description":"Immutable.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Optional. The Compute Engine image resource used for cluster instances. The URI can represent an image or image family. Image examples: * `https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id]` * `projects/[project_id]/global/images/[image-id]` * `image-id` Image family examples. Dataproc will use the most recent image from the family: * `https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name]` * `projects/[project_id]/global/images/family/[custom-image-family-name]` If the URI is unspecified, it will be inferred from `SoftwareConfig.image_version` or the system default.\n\nAllowed value: The `selfLink` field of a `ComputeImage` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"machineType":{"description":"Immutable. Optional. The Compute Engine machine type used for cluster instances. A full URL, partial URI, or short name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2` * `projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2` * `n1-standard-2` **Auto Zone Exception**: If you are using the Dataproc [Auto Zone Placement](https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, `n1-standard-2`.","type":"string"},"minCpuPlatform":{"description":"Immutable. Optional. Specifies the minimum cpu platform for the Instance Group. See [Dataproc -\u003e Minimum CPU Platform](https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu).","type":"string"},"numInstances":{"description":"Immutable. Optional. The number of VM instances in the instance group. For [HA cluster](/dataproc/docs/concepts/configuring-clusters/high-availability) [master_config](#FIELDS.master_config) groups, **must be set to 3**. For standard cluster [master_config](#FIELDS.master_config) groups, **must be set to 1**.","type":"integer","format":"int64"},"preemptibility":{"description":"Immutable. Optional. Specifies the preemptibility of the instance group. The default value for master and worker groups is `NON_PREEMPTIBLE`. This default cannot be changed. The default value for secondary instances is `PREEMPTIBLE`. Possible values: PREEMPTIBILITY_UNSPECIFIED, NON_PREEMPTIBLE, PREEMPTIBLE","type":"string"}}},"securityConfig":{"description":"Immutable. Optional. Security settings for the cluster.","type":"object","properties":{"kerberosConfig":{"description":"Immutable. Optional. Kerberos related configuration.","type":"object","properties":{"crossRealmTrustAdminServer":{"description":"Immutable. Optional. The admin server (IP or hostname) for the remote trusted realm in a cross realm trust relationship.","type":"string"},"crossRealmTrustKdc":{"description":"Immutable. Optional. The KDC (IP or hostname) for the remote trusted realm in a cross realm trust relationship.","type":"string"},"crossRealmTrustRealm":{"description":"Immutable. Optional. The remote realm the Dataproc on-cluster KDC will trust, should the user enable cross realm trust.","type":"string"},"crossRealmTrustSharedPassword":{"description":"Immutable. Optional. The Cloud Storage URI of a KMS encrypted file containing the shared password between the on-cluster Kerberos realm and the remote trusted realm, in a cross realm trust relationship.","type":"string"},"enableKerberos":{"description":"Immutable. Optional. Flag to indicate whether to Kerberize the cluster (default: false). Set this field to true to enable Kerberos on a cluster.","type":"boolean"},"kdcDbKey":{"description":"Immutable. Optional. The Cloud Storage URI of a KMS encrypted file containing the master key of the KDC database.","type":"string"},"keyPassword":{"description":"Immutable. Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided key. For the self-signed certificate, this password is generated by Dataproc.","type":"string"},"keystore":{"description":"Immutable. Optional. The Cloud Storage URI of the keystore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate.","type":"string"},"keystorePassword":{"description":"Immutable. Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided keystore. For the self-signed certificate, this password is generated by Dataproc.","type":"string"},"kmsKeyRef":{"description":"Immutable.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Optional. The uri of the KMS key used to encrypt various sensitive files.\n\nAllowed value: The `selfLink` field of a `KMSCryptoKey` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"realm":{"description":"Immutable. Optional. The name of the on-cluster Kerberos realm. If not specified, the uppercased domain of hostnames will be the realm.","type":"string"},"rootPrincipalPassword":{"description":"Immutable. Optional. The Cloud Storage URI of a KMS encrypted file containing the root principal password.","type":"string"},"tgtLifetimeHours":{"description":"Immutable. Optional. The lifetime of the ticket granting ticket, in hours. If not specified, or user specifies 0, then default value 10 will be used.","type":"integer","format":"int64"},"truststore":{"description":"Immutable. Optional. The Cloud Storage URI of the truststore file used for SSL encryption. If not provided, Dataproc will provide a self-signed certificate.","type":"string"},"truststorePassword":{"description":"Immutable. Optional. The Cloud Storage URI of a KMS encrypted file containing the password to the user provided truststore. For the self-signed certificate, this password is generated by Dataproc.","type":"string"}}}}},"softwareConfig":{"description":"Immutable. Optional. The config settings for software inside the cluster.","type":"object","properties":{"imageVersion":{"description":"Immutable. Optional. The version of software inside the cluster. It must be one of the supported [Dataproc Versions](https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#supported_dataproc_versions), such as \"1.2\" (including a subminor version, such as \"1.2.29\"), or the [\"preview\" version](https://cloud.google.com/dataproc/docs/concepts/versioning/dataproc-versions#other_versions). If unspecified, it defaults to the latest Debian version.","type":"string"},"optionalComponents":{"description":"Immutable. Optional. The set of components to activate on the cluster.","type":"array","items":{"type":"string"}},"properties":{"description":"Immutable. Optional. The properties to set on daemon config files. Property keys are specified in `prefix:property` format, for example `core:hadoop.tmp.dir`. The following are supported prefixes and their mappings: * capacity-scheduler: `capacity-scheduler.xml` * core: `core-site.xml` * distcp: `distcp-default.xml` * hdfs: `hdfs-site.xml` * hive: `hive-site.xml` * mapred: `mapred-site.xml` * pig: `pig.properties` * spark: `spark-defaults.conf` * yarn: `yarn-site.xml` For more information, see [Cluster properties](https://cloud.google.com/dataproc/docs/concepts/cluster-properties).","type":"object","additionalProperties":{"type":"string"}}}},"stagingBucketRef":{"description":"Immutable.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Optional. A Cloud Storage bucket used to stage job dependencies, config files, and job driver console output. If you do not specify a staging bucket, Cloud Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket (see [Dataproc staging bucket](https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/staging-bucket)). **This field requires a Cloud Storage bucket name, not a URI to a Cloud Storage bucket.**\n\nAllowed value: The Google Cloud resource name of a `StorageBucket` resource (format: `{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"tempBucketRef":{"description":"Immutable.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Optional. A Cloud Storage bucket used to store ephemeral cluster and jobs data, such as Spark and MapReduce history files. If you do not specify a temp bucket, Dataproc will determine a Cloud Storage location (US, ASIA, or EU) for your cluster's temp bucket according to the Compute Engine zone where your cluster is deployed, and then create and manage this project-level, per-location bucket. The default bucket has a TTL of 90 days, but you can use any TTL (or none) if you specify a bucket. **This field requires a Cloud Storage bucket name, not a URI to a Cloud Storage bucket.**\n\nAllowed value: The Google Cloud resource name of a `StorageBucket` resource (format: `{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"workerConfig":{"description":"Immutable. Optional. The Compute Engine config settings for worker instances in a cluster.","type":"object","properties":{"accelerators":{"description":"Immutable. Optional. The Compute Engine accelerator configuration for these instances.","type":"array","items":{"type":"object","properties":{"acceleratorCount":{"description":"Immutable. The number of the accelerator cards of this type exposed to this instance.","type":"integer","format":"int64"},"acceleratorType":{"description":"Immutable. Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See [Compute Engine AcceleratorTypes](https://cloud.google.com/compute/docs/reference/beta/acceleratorTypes). Examples: * `https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80` * `projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80` * `nvidia-tesla-k80` **Auto Zone Exception**: If you are using the Dataproc [Auto Zone Placement](https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the accelerator type resource, for example, `nvidia-tesla-k80`.","type":"string"}}}},"diskConfig":{"description":"Immutable. Optional. Disk option config settings.","type":"object","properties":{"bootDiskSizeGb":{"description":"Immutable. Optional. Size in GB of the boot disk (default is 500GB).","type":"integer","format":"int64"},"bootDiskType":{"description":"Immutable. Optional. Type of the boot disk (default is \"pd-standard\"). Valid values: \"pd-balanced\" (Persistent Disk Balanced Solid State Drive), \"pd-ssd\" (Persistent Disk Solid State Drive), or \"pd-standard\" (Persistent Disk Hard Disk Drive). See [Disk types](https://cloud.google.com/compute/docs/disks#disk-types).","type":"string"},"numLocalSsds":{"description":"Immutable. Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.","type":"integer","format":"int64"}}},"imageRef":{"description":"Immutable.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Optional. The Compute Engine image resource used for cluster instances. The URI can represent an image or image family. Image examples: * `https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/[image-id]` * `projects/[project_id]/global/images/[image-id]` * `image-id` Image family examples. Dataproc will use the most recent image from the family: * `https://www.googleapis.com/compute/beta/projects/[project_id]/global/images/family/[custom-image-family-name]` * `projects/[project_id]/global/images/family/[custom-image-family-name]` If the URI is unspecified, it will be inferred from `SoftwareConfig.image_version` or the system default.\n\nAllowed value: The `selfLink` field of a `ComputeImage` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"machineType":{"description":"Immutable. Optional. The Compute Engine machine type used for cluster instances. A full URL, partial URI, or short name are valid. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2` * `projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2` * `n1-standard-2` **Auto Zone Exception**: If you are using the Dataproc [Auto Zone Placement](https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/auto-zone#using_auto_zone_placement) feature, you must use the short name of the machine type resource, for example, `n1-standard-2`.","type":"string"},"minCpuPlatform":{"description":"Immutable. Optional. Specifies the minimum cpu platform for the Instance Group. See [Dataproc -\u003e Minimum CPU Platform](https://cloud.google.com/dataproc/docs/concepts/compute/dataproc-min-cpu).","type":"string"},"numInstances":{"description":"Immutable. Optional. The number of VM instances in the instance group. For [HA cluster](/dataproc/docs/concepts/configuring-clusters/high-availability) [master_config](#FIELDS.master_config) groups, **must be set to 3**. For standard cluster [master_config](#FIELDS.master_config) groups, **must be set to 1**.","type":"integer","format":"int64"},"preemptibility":{"description":"Immutable. Optional. Specifies the preemptibility of the instance group. The default value for master and worker groups is `NON_PREEMPTIBLE`. This default cannot be changed. The default value for secondary instances is `PREEMPTIBLE`. Possible values: PREEMPTIBILITY_UNSPECIFIED, NON_PREEMPTIBLE, PREEMPTIBLE","type":"string"}}}}},"labels":{"description":"Immutable. Optional. The labels to associate with this cluster. Label keys must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: p{Ll}p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: [p{Ll}p{Lo}p{N}_-]{0,63} No more than 32 labels can be associated with a given cluster.","type":"object","additionalProperties":{"type":"string"}}}}}},"projectRef":{"description":"Immutable. The Project that this resource belongs to.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"The project for the resource\n\nAllowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"resourceID":{"description":"Immutable. Optional. The name of the resource. Used for creation and acquisition. When unset, the value of `metadata.name` is used as the default.","type":"string"}}},"status":{"type":"object","properties":{"conditions":{"description":"Conditions represent the latest available observation of the resource's current state.","type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","type":"string"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"Status is the status of the condition. Can be True, False, Unknown.","type":"string"},"type":{"description":"Type is the type of the condition.","type":"string"}}}},"createTime":{"description":"Output only. The time template was created.","type":"string","format":"date-time"},"observedGeneration":{"description":"ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.","type":"integer"},"placement":{"type":"object","properties":{"managedCluster":{"type":"object","properties":{"config":{"type":"object","properties":{"endpointConfig":{"type":"object","properties":{"httpPorts":{"description":"Output only. The map of port descriptions to URLs. Will only be populated if enable_http_port_access is true.","type":"object","additionalProperties":{"type":"string"}}}},"lifecycleConfig":{"type":"object","properties":{"idleStartTime":{"description":"Output only. The time when cluster became idle (most recent job finished) and became eligible for deletion due to idleness (see JSON representation of [Timestamp](https://developers.google.com/protocol-buffers/docs/proto3#json)).","type":"string","format":"date-time"}}},"masterConfig":{"type":"object","properties":{"instanceNames":{"description":"Output only. The list of instance names. Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group.","type":"array","items":{"type":"string"}},"isPreemptible":{"description":"Output only. Specifies that this instance group contains preemptible instances.","type":"boolean"},"managedGroupConfig":{"description":"Output only. The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.","type":"object","properties":{"instanceGroupManagerName":{"description":"Output only. The name of the Instance Group Manager for this group.","type":"string"},"instanceTemplateName":{"description":"Output only. The name of the Instance Template used for the Managed Instance Group.","type":"string"}}}}},"secondaryWorkerConfig":{"type":"object","properties":{"instanceNames":{"description":"Output only. The list of instance names. Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group.","type":"array","items":{"type":"string"}},"isPreemptible":{"description":"Output only. Specifies that this instance group contains preemptible instances.","type":"boolean"},"managedGroupConfig":{"description":"Output only. The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.","type":"object","properties":{"instanceGroupManagerName":{"description":"Output only. The name of the Instance Group Manager for this group.","type":"string"},"instanceTemplateName":{"description":"Output only. The name of the Instance Template used for the Managed Instance Group.","type":"string"}}}}},"workerConfig":{"type":"object","properties":{"instanceNames":{"description":"Output only. The list of instance names. Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group.","type":"array","items":{"type":"string"}},"isPreemptible":{"description":"Output only. Specifies that this instance group contains preemptible instances.","type":"boolean"},"managedGroupConfig":{"description":"Output only. The config for Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.","type":"object","properties":{"instanceGroupManagerName":{"description":"Output only. The name of the Instance Group Manager for this group.","type":"string"},"instanceTemplateName":{"description":"Output only. The name of the Instance Template used for the Managed Instance Group.","type":"string"}}}}}}}}}}},"updateTime":{"description":"Output only. The time template was last updated.","type":"string","format":"date-time"},"version":{"description":"Output only. The current version of this workflow template.","type":"integer","format":"int64"}}}},"x-kubernetes-group-version-kind":[{"group":"dataproc.cnrm.cloud.google.com","kind":"DataprocWorkflowTemplate","version":"v1beta1"}]},"com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplateList":{"description":"DataprocWorkflowTemplateList is a list of DataprocWorkflowTemplate","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of dataprocworkflowtemplates. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"$ref":"#/components/schemas/com.google.cloud.cnrm.dataproc.v1beta1.DataprocWorkflowTemplate"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"dataproc.cnrm.cloud.google.com","kind":"DataprocWorkflowTemplateList","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"}]},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"creationTimestamp":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}]}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"}]},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"}}}}dlp_v1beta1_dlpdeidentifytemplate.json000066400000000000000000003551611453663023200373660ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv3{"openapi":"3.0.0","info":{"title":"Kubernetes CRD Swagger","version":"v0.1.0"},"components":{"schemas":{"com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplate":{"type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"type":"object","oneOf":[{"required":["organizationRef"]},{"required":["projectRef"]}],"properties":{"deidentifyConfig":{"description":"The core content of the template.","type":"object","properties":{"infoTypeTransformations":{"description":"Treat the dataset as free-form text and apply the same free text transformation everywhere.","type":"object","required":["transformations"],"properties":{"transformations":{"description":"Required. Transformation for each infoType. Cannot specify more than one for a given infoType.","type":"array","items":{"type":"object","required":["primitiveTransformation"],"properties":{"infoTypes":{"description":"InfoTypes to apply the transformation to. An empty list will cause this transformation to apply to all findings that correspond to infoTypes that were requested in `InspectConfig`.","type":"array","items":{"type":"object","properties":{"name":{"description":"Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/dlp/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$-_]{1,64}`.","type":"string"}}}},"primitiveTransformation":{"description":"Required. Primitive transformation to apply to the infoType.","type":"object","properties":{"bucketingConfig":{"description":"Bucketing","type":"object","properties":{"buckets":{"description":"Set of buckets. Ranges must be non-overlapping.","type":"array","items":{"type":"object","required":["replacementValue"],"properties":{"max":{"description":"Upper bound of the range, exclusive; type must match min.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}},"min":{"description":"Lower bound of the range, inclusive. Type should be the same as max if used.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}},"replacementValue":{"description":"Required. Replacement value for this bucket.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}}}}}}},"characterMaskConfig":{"description":"Mask","type":"object","properties":{"charactersToIgnore":{"description":"When masking a string, items in this list will be skipped when replacing characters. For example, if the input string is `555-555-5555` and you instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP returns `***-**5-5555`.","type":"array","items":{"type":"object","properties":{"charactersToSkip":{"description":"Characters to not transform when masking.","type":"string"},"commonCharactersToIgnore":{"description":"Common characters to not transform when masking. Useful to avoid removing punctuation. Possible values: COMMON_CHARS_TO_IGNORE_UNSPECIFIED, NUMERIC, ALPHA_UPPER_CASE, ALPHA_LOWER_CASE, PUNCTUATION, WHITESPACE","type":"string"}}}},"maskingCharacter":{"description":"Character to use to mask the sensitive values—for example, `*` for an alphabetic string such as a name, or `0` for a numeric string such as ZIP code or credit card number. This string must have a length of 1. If not supplied, this value defaults to `*` for strings, and `0` for digits.","type":"string"},"numberToMask":{"description":"Number of characters to mask. If not set, all matching chars will be masked. Skipped characters do not count towards this tally.","type":"integer","format":"int64"},"reverseOrder":{"description":"Mask characters in reverse order. For example, if `masking_character` is `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the input string `1234-5678-9012-3456` is masked as `00000000000000-3456`. If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order` is `true`, then the string `12345` is masked as `12***`.","type":"boolean"}}},"cryptoDeterministicConfig":{"description":"Deterministic Crypto","type":"object","properties":{"context":{"description":"A context may be used for higher security and maintaining referential integrity such that the same identifier in two different contexts will be given a distinct surrogate. The context is appended to plaintext value being encrypted. On decryption the provided context is validated against the value used during encryption. If a context was provided during encryption, same context must be provided during decryption as well. If the context is not set, plaintext would be used as is for encryption. If the context is set but: 1. there is no record present when transforming a given value or 2. the field is not present when transforming a given value, plaintext would be used as is for encryption. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and non-structured `ContentItem`s.","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"cryptoKey":{"description":"The key used by the encryption function. For deterministic encryption using AES-SIV, the provided key is internally expanded to 64 bytes prior to use.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","required":["cryptoKeyRef","wrappedKey"],"properties":{"cryptoKeyRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","required":["name"],"properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","required":["key"],"properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}},"surrogateInfoType":{"description":"The custom info type to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom info type followed by the number of characters comprising the surrogate. The following scheme defines the format: {info type name}({surrogate character count}):{surrogate} For example, if the name of custom info type is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom info type 'Surrogate'. This facilitates reversal of the surrogate when it occurs in free text. Note: For record transformations where the entire cell in a table is being transformed, surrogates are not mandatory. Surrogates are used to denote the location of the token and are necessary for re-identification in free form text. In order for inspection to work properly, the name of this info type must not occur naturally anywhere in your data; otherwise, inspection may either - reverse a surrogate that does not correspond to an actual identifier - be unable to parse the surrogate and result in an error Therefore, choose your custom info type name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: â§MY_TOKEN_TYPE.","type":"object","properties":{"name":{"description":"Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/dlp/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$-_]{1,64}`.","type":"string"}}}}},"cryptoHashConfig":{"description":"Crypto","type":"object","properties":{"cryptoKey":{"description":"The key used by the hash function.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","required":["cryptoKeyRef","wrappedKey"],"properties":{"cryptoKeyRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","required":["name"],"properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","required":["key"],"properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}}}},"cryptoReplaceFfxFpeConfig":{"description":"Ffx-Fpe","type":"object","required":["cryptoKey"],"properties":{"commonAlphabet":{"description":"Common alphabets. Possible values: FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED, NUMERIC, HEXADECIMAL, UPPER_CASE_ALPHA_NUMERIC, ALPHA_NUMERIC","type":"string"},"context":{"description":"The 'tweak', a context may be used for higher security since the same identifier in two different contexts won't be given the same surrogate. If the context is not set, a default tweak will be used. If the context is set but: 1. there is no record present when transforming a given value or 1. the field is not present when transforming a given value, a default tweak will be used. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and non-structured `ContentItem`s. Currently, the referenced field may be of value type integer or string. The tweak is constructed as a sequence of bytes in big endian byte order such that: - a 64 bit integer is encoded followed by a single byte of value 1 - a string is encoded in UTF-8 format followed by a single byte of value 2","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"cryptoKey":{"description":"Required. The key used by the encryption algorithm.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","required":["cryptoKeyRef","wrappedKey"],"properties":{"cryptoKeyRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","required":["name"],"properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","required":["key"],"properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}},"customAlphabet":{"description":"This is supported by mapping these to the alphanumeric characters that the FFX mode natively supports. This happens before/after encryption/decryption. Each character listed must appear only once. Number of characters must be in the range [2, 95]. This must be encoded as ASCII. The order of characters does not matter. The full list of allowed characters is: ``0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ~`!@#$%^\u0026*()_-+={[}]|:;\"'\u003c,\u003e.?/``","type":"string"},"radix":{"description":"The native way to select the alphabet. Must be in the range [2, 95].","type":"integer","format":"int64"},"surrogateInfoType":{"description":"The custom infoType to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom infoType followed by the number of characters comprising the surrogate. The following scheme defines the format: info_type_name(surrogate_character_count):surrogate For example, if the name of custom infoType is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom infoType [`SurrogateType`](https://cloud.google.com/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype). This facilitates reversal of the surrogate when it occurs in free text. In order for inspection to work properly, the name of this infoType must not occur naturally anywhere in your data; otherwise, inspection may find a surrogate that does not correspond to an actual identifier. Therefore, choose your custom infoType name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: â§MY_TOKEN_TYPE","type":"object","properties":{"name":{"description":"Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/dlp/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$-_]{1,64}`.","type":"string"}}}}},"dateShiftConfig":{"description":"Date Shift","type":"object","required":["lowerBoundDays","upperBoundDays"],"properties":{"context":{"description":"Points to the field that contains the context, for example, an entity id. If set, must also set cryptoKey. If set, shift will be consistent for the given context.","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"cryptoKey":{"description":"Causes the shift to be computed based on this key and the context. This results in the same shift for the same context and crypto_key. If set, must also set context. Can only be applied to table items.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","required":["cryptoKeyRef","wrappedKey"],"properties":{"cryptoKeyRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","required":["name"],"properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","required":["key"],"properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}},"lowerBoundDays":{"description":"Required. For example, -5 means shift date to at most 5 days back in the past.","type":"integer","format":"int64"},"upperBoundDays":{"description":"Required. Range of shift in days. Actual shift will be selected at random within this range (inclusive ends). Negative means shift to earlier in time. Must not be more than 365250 days (1000 years) each direction. For example, 3 means shift date to at most 3 days into the future.","type":"integer","format":"int64"}}},"fixedSizeBucketingConfig":{"description":"Fixed size bucketing","type":"object","required":["bucketSize","lowerBound","upperBound"],"properties":{"bucketSize":{"description":"Required. Size of each bucket (except for minimum and maximum buckets). So if `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60, 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.","type":"number","format":"double"},"lowerBound":{"description":"Required. Lower bound value of buckets. All values less than `lower_bound` are grouped together into a single bucket; for example if `lower_bound` = 10, then all values less than 10 are replaced with the value \"-10\".","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}},"upperBound":{"description":"Required. Upper bound value of buckets. All values greater than upper_bound are grouped together into a single bucket; for example if `upper_bound` = 89, then all values greater than 89 are replaced with the value \"89+\".","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}}}},"redactConfig":{"description":"Redact","type":"object","x-kubernetes-preserve-unknown-fields":true},"replaceConfig":{"description":"Replace with a specified value.","type":"object","properties":{"newValue":{"description":"Value to replace it with.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}}}},"replaceWithInfoTypeConfig":{"description":"Replace with infotype","type":"object","x-kubernetes-preserve-unknown-fields":true},"timePartConfig":{"description":"Time extraction","type":"object","properties":{"partToExtract":{"description":"The part of the time to keep. Possible values: TIME_PART_UNSPECIFIED, YEAR, MONTH, DAY_OF_MONTH, DAY_OF_WEEK, WEEK_OF_YEAR, HOUR_OF_DAY","type":"string"}}}}}}}}}},"recordTransformations":{"description":"Treat the dataset as structured. Transformations can be applied to specific locations within structured datasets, such as transforming a column within a table.","type":"object","properties":{"fieldTransformations":{"description":"Transform the record by applying various field transformations.","type":"array","items":{"type":"object","required":["fields"],"properties":{"condition":{"description":"Only apply the transformation if the condition evaluates to true for the given `RecordCondition`. The conditions are allowed to reference fields that are not used in the actual transformation. Example Use Cases: - Apply a different bucket transformation to an age column if the zip code column for the same record is within a specific range. - Redact a field if the date of birth field is greater than 85.","type":"object","properties":{"expressions":{"description":"An expression.","type":"object","properties":{"conditions":{"description":"Conditions to apply to the expression.","type":"object","properties":{"conditions":{"description":"A collection of conditions.","type":"array","items":{"type":"object","required":["field","operator"],"properties":{"field":{"description":"Required. Field within the record this condition is evaluated against.","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"operator":{"description":"Required. Operator used to compare the field or infoType to the value. Possible values: LOGICAL_OPERATOR_UNSPECIFIED, AND","type":"string"},"value":{"description":"Value to compare against. [Mandatory, except for `EXISTS` tests.]","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}}}}}}},"logicalOperator":{"description":"The operator to apply to the result of conditions. Default and currently only supported value is `AND`. Possible values: LOGICAL_OPERATOR_UNSPECIFIED, AND","type":"string"}}}}},"fields":{"description":"Required. Input field(s) to apply the transformation to. When you have columns that reference their position within a list, omit the index from the FieldId. FieldId name matching ignores the index. For example, instead of \"contact.nums[0].type\", use \"contact.nums.type\".","type":"array","items":{"type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}}},"infoTypeTransformations":{"description":"Treat the contents of the field as free text, and selectively transform content that matches an `InfoType`.","type":"object","required":["transformations"],"properties":{"transformations":{"description":"Required. Transformation for each infoType. Cannot specify more than one for a given infoType.","type":"array","items":{"type":"object","required":["primitiveTransformation"],"properties":{"infoTypes":{"description":"InfoTypes to apply the transformation to. An empty list will cause this transformation to apply to all findings that correspond to infoTypes that were requested in `InspectConfig`.","type":"array","items":{"type":"object","properties":{"name":{"description":"Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/dlp/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$-_]{1,64}`.","type":"string"}}}},"primitiveTransformation":{"description":"Required. Primitive transformation to apply to the infoType.","type":"object","properties":{"bucketingConfig":{"description":"Bucketing","type":"object","properties":{"buckets":{"description":"Set of buckets. Ranges must be non-overlapping.","type":"array","items":{"type":"object","required":["replacementValue"],"properties":{"max":{"description":"Upper bound of the range, exclusive; type must match min.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}},"min":{"description":"Lower bound of the range, inclusive. Type should be the same as max if used.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}},"replacementValue":{"description":"Required. Replacement value for this bucket.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}}}}}}},"characterMaskConfig":{"description":"Mask","type":"object","properties":{"charactersToIgnore":{"description":"When masking a string, items in this list will be skipped when replacing characters. For example, if the input string is `555-555-5555` and you instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP returns `***-**5-5555`.","type":"array","items":{"type":"object","properties":{"charactersToSkip":{"description":"Characters to not transform when masking.","type":"string"},"commonCharactersToIgnore":{"description":"Common characters to not transform when masking. Useful to avoid removing punctuation. Possible values: COMMON_CHARS_TO_IGNORE_UNSPECIFIED, NUMERIC, ALPHA_UPPER_CASE, ALPHA_LOWER_CASE, PUNCTUATION, WHITESPACE","type":"string"}}}},"maskingCharacter":{"description":"Character to use to mask the sensitive values—for example, `*` for an alphabetic string such as a name, or `0` for a numeric string such as ZIP code or credit card number. This string must have a length of 1. If not supplied, this value defaults to `*` for strings, and `0` for digits.","type":"string"},"numberToMask":{"description":"Number of characters to mask. If not set, all matching chars will be masked. Skipped characters do not count towards this tally.","type":"integer","format":"int64"},"reverseOrder":{"description":"Mask characters in reverse order. For example, if `masking_character` is `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the input string `1234-5678-9012-3456` is masked as `00000000000000-3456`. If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order` is `true`, then the string `12345` is masked as `12***`.","type":"boolean"}}},"cryptoDeterministicConfig":{"description":"Deterministic Crypto","type":"object","properties":{"context":{"description":"A context may be used for higher security and maintaining referential integrity such that the same identifier in two different contexts will be given a distinct surrogate. The context is appended to plaintext value being encrypted. On decryption the provided context is validated against the value used during encryption. If a context was provided during encryption, same context must be provided during decryption as well. If the context is not set, plaintext would be used as is for encryption. If the context is set but: 1. there is no record present when transforming a given value or 2. the field is not present when transforming a given value, plaintext would be used as is for encryption. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and non-structured `ContentItem`s.","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"cryptoKey":{"description":"The key used by the encryption function. For deterministic encryption using AES-SIV, the provided key is internally expanded to 64 bytes prior to use.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","required":["cryptoKeyRef","wrappedKey"],"properties":{"cryptoKeyRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","required":["name"],"properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","required":["key"],"properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}},"surrogateInfoType":{"description":"The custom info type to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom info type followed by the number of characters comprising the surrogate. The following scheme defines the format: {info type name}({surrogate character count}):{surrogate} For example, if the name of custom info type is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom info type 'Surrogate'. This facilitates reversal of the surrogate when it occurs in free text. Note: For record transformations where the entire cell in a table is being transformed, surrogates are not mandatory. Surrogates are used to denote the location of the token and are necessary for re-identification in free form text. In order for inspection to work properly, the name of this info type must not occur naturally anywhere in your data; otherwise, inspection may either - reverse a surrogate that does not correspond to an actual identifier - be unable to parse the surrogate and result in an error Therefore, choose your custom info type name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: â§MY_TOKEN_TYPE.","type":"object","properties":{"name":{"description":"Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/dlp/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$-_]{1,64}`.","type":"string"}}}}},"cryptoHashConfig":{"description":"Crypto","type":"object","properties":{"cryptoKey":{"description":"The key used by the hash function.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","required":["cryptoKeyRef","wrappedKey"],"properties":{"cryptoKeyRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","required":["name"],"properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","required":["key"],"properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}}}},"cryptoReplaceFfxFpeConfig":{"description":"Ffx-Fpe","type":"object","required":["cryptoKey"],"properties":{"commonAlphabet":{"description":"Common alphabets. Possible values: FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED, NUMERIC, HEXADECIMAL, UPPER_CASE_ALPHA_NUMERIC, ALPHA_NUMERIC","type":"string"},"context":{"description":"The 'tweak', a context may be used for higher security since the same identifier in two different contexts won't be given the same surrogate. If the context is not set, a default tweak will be used. If the context is set but: 1. there is no record present when transforming a given value or 1. the field is not present when transforming a given value, a default tweak will be used. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and non-structured `ContentItem`s. Currently, the referenced field may be of value type integer or string. The tweak is constructed as a sequence of bytes in big endian byte order such that: - a 64 bit integer is encoded followed by a single byte of value 1 - a string is encoded in UTF-8 format followed by a single byte of value 2","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"cryptoKey":{"description":"Required. The key used by the encryption algorithm.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","required":["cryptoKeyRef","wrappedKey"],"properties":{"cryptoKeyRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","required":["name"],"properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","required":["key"],"properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}},"customAlphabet":{"description":"This is supported by mapping these to the alphanumeric characters that the FFX mode natively supports. This happens before/after encryption/decryption. Each character listed must appear only once. Number of characters must be in the range [2, 95]. This must be encoded as ASCII. The order of characters does not matter. The full list of allowed characters is: ``0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ~`!@#$%^\u0026*()_-+={[}]|:;\"'\u003c,\u003e.?/``","type":"string"},"radix":{"description":"The native way to select the alphabet. Must be in the range [2, 95].","type":"integer","format":"int64"},"surrogateInfoType":{"description":"The custom infoType to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom infoType followed by the number of characters comprising the surrogate. The following scheme defines the format: info_type_name(surrogate_character_count):surrogate For example, if the name of custom infoType is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom infoType [`SurrogateType`](https://cloud.google.com/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype). This facilitates reversal of the surrogate when it occurs in free text. In order for inspection to work properly, the name of this infoType must not occur naturally anywhere in your data; otherwise, inspection may find a surrogate that does not correspond to an actual identifier. Therefore, choose your custom infoType name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: â§MY_TOKEN_TYPE","type":"object","properties":{"name":{"description":"Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/dlp/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$-_]{1,64}`.","type":"string"}}}}},"dateShiftConfig":{"description":"Date Shift","type":"object","required":["lowerBoundDays","upperBoundDays"],"properties":{"context":{"description":"Points to the field that contains the context, for example, an entity id. If set, must also set cryptoKey. If set, shift will be consistent for the given context.","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"cryptoKey":{"description":"Causes the shift to be computed based on this key and the context. This results in the same shift for the same context and crypto_key. If set, must also set context. Can only be applied to table items.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","required":["cryptoKeyRef","wrappedKey"],"properties":{"cryptoKeyRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","required":["name"],"properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","required":["key"],"properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}},"lowerBoundDays":{"description":"Required. For example, -5 means shift date to at most 5 days back in the past.","type":"integer","format":"int64"},"upperBoundDays":{"description":"Required. Range of shift in days. Actual shift will be selected at random within this range (inclusive ends). Negative means shift to earlier in time. Must not be more than 365250 days (1000 years) each direction. For example, 3 means shift date to at most 3 days into the future.","type":"integer","format":"int64"}}},"fixedSizeBucketingConfig":{"description":"Fixed size bucketing","type":"object","required":["bucketSize","lowerBound","upperBound"],"properties":{"bucketSize":{"description":"Required. Size of each bucket (except for minimum and maximum buckets). So if `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60, 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.","type":"number","format":"double"},"lowerBound":{"description":"Required. Lower bound value of buckets. All values less than `lower_bound` are grouped together into a single bucket; for example if `lower_bound` = 10, then all values less than 10 are replaced with the value \"-10\".","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}},"upperBound":{"description":"Required. Upper bound value of buckets. All values greater than upper_bound are grouped together into a single bucket; for example if `upper_bound` = 89, then all values greater than 89 are replaced with the value \"89+\".","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}}}},"redactConfig":{"description":"Redact","type":"object","x-kubernetes-preserve-unknown-fields":true},"replaceConfig":{"description":"Replace with a specified value.","type":"object","properties":{"newValue":{"description":"Value to replace it with.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}}}},"replaceWithInfoTypeConfig":{"description":"Replace with infotype","type":"object","x-kubernetes-preserve-unknown-fields":true},"timePartConfig":{"description":"Time extraction","type":"object","properties":{"partToExtract":{"description":"The part of the time to keep. Possible values: TIME_PART_UNSPECIFIED, YEAR, MONTH, DAY_OF_MONTH, DAY_OF_WEEK, WEEK_OF_YEAR, HOUR_OF_DAY","type":"string"}}}}}}}}}},"primitiveTransformation":{"description":"Apply the transformation to the entire field.","type":"object","properties":{"bucketingConfig":{"description":"Bucketing","type":"object","properties":{"buckets":{"description":"Set of buckets. Ranges must be non-overlapping.","type":"array","items":{"type":"object","required":["replacementValue"],"properties":{"max":{"description":"Upper bound of the range, exclusive; type must match min.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}},"min":{"description":"Lower bound of the range, inclusive. Type should be the same as max if used.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}},"replacementValue":{"description":"Required. Replacement value for this bucket.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}}}}}}},"characterMaskConfig":{"description":"Mask","type":"object","properties":{"charactersToIgnore":{"description":"When masking a string, items in this list will be skipped when replacing characters. For example, if the input string is `555-555-5555` and you instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP returns `***-**5-5555`.","type":"array","items":{"type":"object","properties":{"charactersToSkip":{"description":"Characters to not transform when masking.","type":"string"},"commonCharactersToIgnore":{"description":"Common characters to not transform when masking. Useful to avoid removing punctuation. Possible values: COMMON_CHARS_TO_IGNORE_UNSPECIFIED, NUMERIC, ALPHA_UPPER_CASE, ALPHA_LOWER_CASE, PUNCTUATION, WHITESPACE","type":"string"}}}},"maskingCharacter":{"description":"Character to use to mask the sensitive values—for example, `*` for an alphabetic string such as a name, or `0` for a numeric string such as ZIP code or credit card number. This string must have a length of 1. If not supplied, this value defaults to `*` for strings, and `0` for digits.","type":"string"},"numberToMask":{"description":"Number of characters to mask. If not set, all matching chars will be masked. Skipped characters do not count towards this tally.","type":"integer","format":"int64"},"reverseOrder":{"description":"Mask characters in reverse order. For example, if `masking_character` is `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the input string `1234-5678-9012-3456` is masked as `00000000000000-3456`. If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order` is `true`, then the string `12345` is masked as `12***`.","type":"boolean"}}},"cryptoDeterministicConfig":{"description":"Deterministic Crypto","type":"object","properties":{"context":{"description":"A context may be used for higher security and maintaining referential integrity such that the same identifier in two different contexts will be given a distinct surrogate. The context is appended to plaintext value being encrypted. On decryption the provided context is validated against the value used during encryption. If a context was provided during encryption, same context must be provided during decryption as well. If the context is not set, plaintext would be used as is for encryption. If the context is set but: 1. there is no record present when transforming a given value or 2. the field is not present when transforming a given value, plaintext would be used as is for encryption. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and non-structured `ContentItem`s.","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"cryptoKey":{"description":"The key used by the encryption function. For deterministic encryption using AES-SIV, the provided key is internally expanded to 64 bytes prior to use.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","required":["cryptoKeyRef","wrappedKey"],"properties":{"cryptoKeyRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","required":["name"],"properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","required":["key"],"properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}},"surrogateInfoType":{"description":"The custom info type to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom info type followed by the number of characters comprising the surrogate. The following scheme defines the format: {info type name}({surrogate character count}):{surrogate} For example, if the name of custom info type is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom info type 'Surrogate'. This facilitates reversal of the surrogate when it occurs in free text. Note: For record transformations where the entire cell in a table is being transformed, surrogates are not mandatory. Surrogates are used to denote the location of the token and are necessary for re-identification in free form text. In order for inspection to work properly, the name of this info type must not occur naturally anywhere in your data; otherwise, inspection may either - reverse a surrogate that does not correspond to an actual identifier - be unable to parse the surrogate and result in an error Therefore, choose your custom info type name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: â§MY_TOKEN_TYPE.","type":"object","properties":{"name":{"description":"Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/dlp/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$-_]{1,64}`.","type":"string"}}}}},"cryptoHashConfig":{"description":"Crypto","type":"object","properties":{"cryptoKey":{"description":"The key used by the hash function.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","required":["cryptoKeyRef","wrappedKey"],"properties":{"cryptoKeyRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","required":["name"],"properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","required":["key"],"properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}}}},"cryptoReplaceFfxFpeConfig":{"description":"Ffx-Fpe","type":"object","required":["cryptoKey"],"properties":{"commonAlphabet":{"description":"Common alphabets. Possible values: FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED, NUMERIC, HEXADECIMAL, UPPER_CASE_ALPHA_NUMERIC, ALPHA_NUMERIC","type":"string"},"context":{"description":"The 'tweak', a context may be used for higher security since the same identifier in two different contexts won't be given the same surrogate. If the context is not set, a default tweak will be used. If the context is set but: 1. there is no record present when transforming a given value or 1. the field is not present when transforming a given value, a default tweak will be used. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and non-structured `ContentItem`s. Currently, the referenced field may be of value type integer or string. The tweak is constructed as a sequence of bytes in big endian byte order such that: - a 64 bit integer is encoded followed by a single byte of value 1 - a string is encoded in UTF-8 format followed by a single byte of value 2","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"cryptoKey":{"description":"Required. The key used by the encryption algorithm.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","required":["cryptoKeyRef","wrappedKey"],"properties":{"cryptoKeyRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","required":["name"],"properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","required":["key"],"properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}},"customAlphabet":{"description":"This is supported by mapping these to the alphanumeric characters that the FFX mode natively supports. This happens before/after encryption/decryption. Each character listed must appear only once. Number of characters must be in the range [2, 95]. This must be encoded as ASCII. The order of characters does not matter. The full list of allowed characters is: ``0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ~`!@#$%^\u0026*()_-+={[}]|:;\"'\u003c,\u003e.?/``","type":"string"},"radix":{"description":"The native way to select the alphabet. Must be in the range [2, 95].","type":"integer","format":"int64"},"surrogateInfoType":{"description":"The custom infoType to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom infoType followed by the number of characters comprising the surrogate. The following scheme defines the format: info_type_name(surrogate_character_count):surrogate For example, if the name of custom infoType is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom infoType [`SurrogateType`](https://cloud.google.com/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype). This facilitates reversal of the surrogate when it occurs in free text. In order for inspection to work properly, the name of this infoType must not occur naturally anywhere in your data; otherwise, inspection may find a surrogate that does not correspond to an actual identifier. Therefore, choose your custom infoType name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: â§MY_TOKEN_TYPE","type":"object","properties":{"name":{"description":"Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/dlp/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$-_]{1,64}`.","type":"string"}}}}},"dateShiftConfig":{"description":"Date Shift","type":"object","required":["lowerBoundDays","upperBoundDays"],"properties":{"context":{"description":"Points to the field that contains the context, for example, an entity id. If set, must also set cryptoKey. If set, shift will be consistent for the given context.","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"cryptoKey":{"description":"Causes the shift to be computed based on this key and the context. This results in the same shift for the same context and crypto_key. If set, must also set context. Can only be applied to table items.","type":"object","properties":{"kmsWrapped":{"description":"Key wrapped using Cloud KMS","type":"object","required":["cryptoKeyRef","wrappedKey"],"properties":{"cryptoKeyRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Required. The resource name of the KMS CryptoKey to use for unwrapping.\n\nAllowed value: The Google Cloud resource name of a `KMSCryptoKey` resource (format: `{{selfLink}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"wrappedKey":{"description":"Required. The wrapped data crypto key.","type":"string"}}},"transient":{"description":"Transient crypto key","type":"object","required":["name"],"properties":{"name":{"description":"Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).","type":"string"}}},"unwrapped":{"description":"Unwrapped crypto key","type":"object","required":["key"],"properties":{"key":{"description":"Required. A 128/192/256 bit key.","type":"string"}}}}},"lowerBoundDays":{"description":"Required. For example, -5 means shift date to at most 5 days back in the past.","type":"integer","format":"int64"},"upperBoundDays":{"description":"Required. Range of shift in days. Actual shift will be selected at random within this range (inclusive ends). Negative means shift to earlier in time. Must not be more than 365250 days (1000 years) each direction. For example, 3 means shift date to at most 3 days into the future.","type":"integer","format":"int64"}}},"fixedSizeBucketingConfig":{"description":"Fixed size bucketing","type":"object","required":["bucketSize","lowerBound","upperBound"],"properties":{"bucketSize":{"description":"Required. Size of each bucket (except for minimum and maximum buckets). So if `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60, 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.","type":"number","format":"double"},"lowerBound":{"description":"Required. Lower bound value of buckets. All values less than `lower_bound` are grouped together into a single bucket; for example if `lower_bound` = 10, then all values less than 10 are replaced with the value \"-10\".","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}},"upperBound":{"description":"Required. Upper bound value of buckets. All values greater than upper_bound are grouped together into a single bucket; for example if `upper_bound` = 89, then all values greater than 89 are replaced with the value \"89+\".","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}}}},"redactConfig":{"description":"Redact","type":"object","x-kubernetes-preserve-unknown-fields":true},"replaceConfig":{"description":"Replace with a specified value.","type":"object","properties":{"newValue":{"description":"Value to replace it with.","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}}}},"replaceWithInfoTypeConfig":{"description":"Replace with infotype","type":"object","x-kubernetes-preserve-unknown-fields":true},"timePartConfig":{"description":"Time extraction","type":"object","properties":{"partToExtract":{"description":"The part of the time to keep. Possible values: TIME_PART_UNSPECIFIED, YEAR, MONTH, DAY_OF_MONTH, DAY_OF_WEEK, WEEK_OF_YEAR, HOUR_OF_DAY","type":"string"}}}}}}}},"recordSuppressions":{"description":"Configuration defining which records get suppressed entirely. Records that match any suppression rule are omitted from the output.","type":"array","items":{"type":"object","properties":{"condition":{"description":"A condition that when it evaluates to true will result in the record being evaluated to be suppressed from the transformed content.","type":"object","properties":{"expressions":{"description":"An expression.","type":"object","properties":{"conditions":{"description":"Conditions to apply to the expression.","type":"object","properties":{"conditions":{"description":"A collection of conditions.","type":"array","items":{"type":"object","required":["field","operator"],"properties":{"field":{"description":"Required. Field within the record this condition is evaluated against.","type":"object","properties":{"name":{"description":"Name describing the field.","type":"string"}}},"operator":{"description":"Required. Operator used to compare the field or infoType to the value. Possible values: LOGICAL_OPERATOR_UNSPECIFIED, AND","type":"string"},"value":{"description":"Value to compare against. [Mandatory, except for `EXISTS` tests.]","type":"object","properties":{"booleanValue":{"description":"boolean","type":"boolean"},"dateValue":{"description":"date","type":"object","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","type":"integer","format":"int64"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","type":"integer","format":"int64"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","type":"integer","format":"int64"}}},"dayOfWeekValue":{"description":"day of week Possible values: DAY_OF_WEEK_UNSPECIFIED, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY","type":"string"},"floatValue":{"description":"float","type":"number","format":"double"},"integerValue":{"description":"integer","type":"integer","format":"int64"},"stringValue":{"description":"string","type":"string"},"timeValue":{"description":"time of day","type":"object","properties":{"hours":{"description":"Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.","type":"integer","format":"int64"},"minutes":{"description":"Minutes of hour of day. Must be from 0 to 59.","type":"integer","format":"int64"},"nanos":{"description":"Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer","format":"int64"},"seconds":{"description":"Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.","type":"integer","format":"int64"}}},"timestampValue":{"description":"timestamp","type":"string","format":"date-time"}}}}}}}},"logicalOperator":{"description":"The operator to apply to the result of conditions. Default and currently only supported value is `AND`. Possible values: LOGICAL_OPERATOR_UNSPECIFIED, AND","type":"string"}}}}}}}}}},"transformationErrorHandling":{"description":"Mode for handling transformation errors. If left unspecified, the default mode is `TransformationErrorHandling.ThrowError`.","type":"object","properties":{"leaveUntransformed":{"description":"Ignore errors","type":"object","x-kubernetes-preserve-unknown-fields":true},"throwError":{"description":"Throw an error","type":"object","x-kubernetes-preserve-unknown-fields":true}}}}},"description":{"description":"Short description (max 256 chars).","type":"string"},"displayName":{"description":"Display name (max 256 chars).","type":"string"},"location":{"description":"Immutable. The location of the resource","type":"string"},"organizationRef":{"description":"Immutable. The Organization that this resource belongs to. Only one of [organizationRef, projectRef] may be specified.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: The Google Cloud resource name of a Google Cloud Organization (format: `organizations/{{name}}`).","type":"string"},"name":{"description":"[WARNING] Organization not yet supported in Config Connector, use 'external' field to reference existing resources.\nName of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"projectRef":{"description":"Immutable. The Project that this resource belongs to. Only one of [organizationRef, projectRef] may be specified.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"resourceID":{"description":"Immutable. Optional. The service-generated name of the resource. Used for acquisition only. Leave unset to create a new resource.","type":"string"}}},"status":{"type":"object","properties":{"conditions":{"description":"Conditions represent the latest available observation of the resource's current state.","type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","type":"string"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"Status is the status of the condition. Can be True, False, Unknown.","type":"string"},"type":{"description":"Type is the type of the condition.","type":"string"}}}},"createTime":{"description":"Output only. The creation timestamp of an inspectTemplate.","type":"string","format":"date-time"},"locationId":{"description":"Output only. The geographic location where this resource is stored.","type":"string"},"observedGeneration":{"description":"ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.","type":"integer"},"updateTime":{"description":"Output only. The last update timestamp of an inspectTemplate.","type":"string","format":"date-time"}}}},"x-kubernetes-group-version-kind":[{"group":"dlp.cnrm.cloud.google.com","kind":"DLPDeidentifyTemplate","version":"v1beta1"}]},"com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplateList":{"description":"DLPDeidentifyTemplateList is a list of DLPDeidentifyTemplate","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of dlpdeidentifytemplates. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"$ref":"#/components/schemas/com.google.cloud.cnrm.dlp.v1beta1.DLPDeidentifyTemplate"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"dlp.cnrm.cloud.google.com","kind":"DLPDeidentifyTemplateList","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"}]},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"creationTimestamp":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}]}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"}]},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"}}}}monitoring_v1beta1_monitoringalertpolicy.json000066400000000000000000001246021453663023200410430ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv3{"openapi":"3.0.0","info":{"title":"Kubernetes CRD Swagger","version":"v0.1.0"},"components":{"schemas":{"com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicy":{"type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"type":"object","required":["combiner","conditions","displayName"],"properties":{"alertStrategy":{"description":"Control over how this alert policy's notification channels are notified.","type":"object","properties":{"autoClose":{"description":"If an alert policy that was active has no data for this long, any open incidents will close.","type":"string"},"notificationRateLimit":{"description":"Required for alert policies with a LogMatch condition.\nThis limit is not implemented for alert policies that are not log-based.","type":"object","properties":{"period":{"description":"Not more than one notification per period.","type":"string"}}}}},"combiner":{"description":"How to combine the results of multiple conditions to\ndetermine if an incident should be opened. Possible values: [\"AND\", \"OR\", \"AND_WITH_MATCHING_RESOURCE\"].","type":"string"},"conditions":{"description":"A list of conditions for the policy. The conditions are combined by\nAND or OR according to the combiner field. If the combined conditions\nevaluate to true, then an incident is created. A policy can have from\none to six conditions.","type":"array","items":{"type":"object","required":["displayName"],"properties":{"conditionAbsent":{"description":"A condition that checks that a time series\ncontinues to receive new data points.","type":"object","required":["duration"],"properties":{"aggregations":{"description":"Specifies the alignment of data points in\nindividual time series as well as how to\ncombine the retrieved time series together\n(such as when aggregating multiple streams\non each resource to a single stream for each\nresource or when aggregating streams across\nall members of a group of resources).\nMultiple aggregations are applied in the\norder specified.","type":"array","items":{"type":"object","properties":{"alignmentPeriod":{"description":"The alignment period for per-time\nseries alignment. If present,\nalignmentPeriod must be at least\n60 seconds. After per-time series\nalignment, each time series will\ncontain data points only on the\nperiod boundaries. If\nperSeriesAligner is not specified\nor equals ALIGN_NONE, then this\nfield is ignored. If\nperSeriesAligner is specified and\ndoes not equal ALIGN_NONE, then\nthis field must be defined;\notherwise an error is returned.","type":"string"},"crossSeriesReducer":{"description":"The approach to be used to combine\ntime series. Not all reducer\nfunctions may be applied to all\ntime series, depending on the\nmetric type and the value type of\nthe original time series.\nReduction may change the metric\ntype of value type of the time\nseries.Time series data must be\naligned in order to perform cross-\ntime series reduction. If\ncrossSeriesReducer is specified,\nthen perSeriesAligner must be\nspecified and not equal ALIGN_NONE\nand alignmentPeriod must be\nspecified; otherwise, an error is\nreturned. Possible values: [\"REDUCE_NONE\", \"REDUCE_MEAN\", \"REDUCE_MIN\", \"REDUCE_MAX\", \"REDUCE_SUM\", \"REDUCE_STDDEV\", \"REDUCE_COUNT\", \"REDUCE_COUNT_TRUE\", \"REDUCE_COUNT_FALSE\", \"REDUCE_FRACTION_TRUE\", \"REDUCE_PERCENTILE_99\", \"REDUCE_PERCENTILE_95\", \"REDUCE_PERCENTILE_50\", \"REDUCE_PERCENTILE_05\"].","type":"string"},"groupByFields":{"description":"The set of fields to preserve when\ncrossSeriesReducer is specified.\nThe groupByFields determine how\nthe time series are partitioned\ninto subsets prior to applying the\naggregation function. Each subset\ncontains time series that have the\nsame value for each of the\ngrouping fields. Each individual\ntime series is a member of exactly\none subset. The crossSeriesReducer\nis applied to each subset of time\nseries. It is not possible to\nreduce across different resource\ntypes, so this field implicitly\ncontains resource.type. Fields not\nspecified in groupByFields are\naggregated away. If groupByFields\nis not specified and all the time\nseries have the same resource\ntype, then the time series are\naggregated into a single output\ntime series. If crossSeriesReducer\nis not defined, this field is\nignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"The approach to be used to align\nindividual time series. Not all\nalignment functions may be applied\nto all time series, depending on\nthe metric type and value type of\nthe original time series.\nAlignment may change the metric\ntype or the value type of the time\nseries.Time series data must be\naligned in order to perform cross-\ntime series reduction. If\ncrossSeriesReducer is specified,\nthen perSeriesAligner must be\nspecified and not equal ALIGN_NONE\nand alignmentPeriod must be\nspecified; otherwise, an error is\nreturned. Possible values: [\"ALIGN_NONE\", \"ALIGN_DELTA\", \"ALIGN_RATE\", \"ALIGN_INTERPOLATE\", \"ALIGN_NEXT_OLDER\", \"ALIGN_MIN\", \"ALIGN_MAX\", \"ALIGN_MEAN\", \"ALIGN_COUNT\", \"ALIGN_SUM\", \"ALIGN_STDDEV\", \"ALIGN_COUNT_TRUE\", \"ALIGN_COUNT_FALSE\", \"ALIGN_FRACTION_TRUE\", \"ALIGN_PERCENTILE_99\", \"ALIGN_PERCENTILE_95\", \"ALIGN_PERCENTILE_50\", \"ALIGN_PERCENTILE_05\", \"ALIGN_PERCENT_CHANGE\"].","type":"string"}}}},"duration":{"description":"The amount of time that a time series must\nfail to report new data to be considered\nfailing. Currently, only values that are a\nmultiple of a minute--e.g. 60s, 120s, or 300s\n--are supported.","type":"string"},"filter":{"description":"A filter that identifies which time series\nshould be compared with the threshold.The\nfilter is similar to the one that is\nspecified in the\nMetricService.ListTimeSeries request (that\ncall is useful to verify the time series\nthat will be retrieved / processed) and must\nspecify the metric type and optionally may\ncontain restrictions on resource type,\nresource labels, and metric labels. This\nfield may not exceed 2048 Unicode characters\nin length.","type":"string"},"trigger":{"description":"The number/percent of time series for which\nthe comparison must hold in order for the\ncondition to trigger. If unspecified, then\nthe condition will trigger if the comparison\nis true for any of the time series that have\nbeen identified by filter and aggregations.","type":"object","properties":{"count":{"description":"The absolute number of time series\nthat must fail the predicate for the\ncondition to be triggered.","type":"integer"},"percent":{"description":"The percentage of time series that\nmust fail the predicate for the\ncondition to be triggered.","type":"number"}}}}},"conditionMatchedLog":{"description":"A condition that checks for log messages matching given constraints.\nIf set, no other conditions can be present.","type":"object","required":["filter"],"properties":{"filter":{"description":"A logs-based filter.","type":"string"},"labelExtractors":{"description":"A map from a label key to an extractor expression, which is used to\nextract the value for this label key. Each entry in this map is\na specification for how data should be extracted from log entries that\nmatch filter. Each combination of extracted values is treated as\na separate rule for the purposes of triggering notifications.\nLabel keys and corresponding values can be used in notifications\ngenerated by this condition.","type":"object","additionalProperties":{"type":"string"}}}},"conditionMonitoringQueryLanguage":{"description":"A Monitoring Query Language query that outputs a boolean stream.","type":"object","required":["duration","query"],"properties":{"duration":{"description":"The amount of time that a time series must\nviolate the threshold to be considered\nfailing. Currently, only values that are a\nmultiple of a minute--e.g., 0, 60, 120, or\n300 seconds--are supported. If an invalid\nvalue is given, an error will be returned.\nWhen choosing a duration, it is useful to\nkeep in mind the frequency of the underlying\ntime series data (which may also be affected\nby any alignments specified in the\naggregations field); a good duration is long\nenough so that a single outlier does not\ngenerate spurious alerts, but short enough\nthat unhealthy states are detected and\nalerted on quickly.","type":"string"},"evaluationMissingData":{"description":"A condition control that determines how\nmetric-threshold conditions are evaluated when\ndata stops arriving. Possible values: [\"EVALUATION_MISSING_DATA_INACTIVE\", \"EVALUATION_MISSING_DATA_ACTIVE\", \"EVALUATION_MISSING_DATA_NO_OP\"].","type":"string"},"query":{"description":"Monitoring Query Language query that outputs a boolean stream.","type":"string"},"trigger":{"description":"The number/percent of time series for which\nthe comparison must hold in order for the\ncondition to trigger. If unspecified, then\nthe condition will trigger if the comparison\nis true for any of the time series that have\nbeen identified by filter and aggregations,\nor by the ratio, if denominator_filter and\ndenominator_aggregations are specified.","type":"object","properties":{"count":{"description":"The absolute number of time series\nthat must fail the predicate for the\ncondition to be triggered.","type":"integer"},"percent":{"description":"The percentage of time series that\nmust fail the predicate for the\ncondition to be triggered.","type":"number"}}}}},"conditionThreshold":{"description":"A condition that compares a time series against a\nthreshold.","type":"object","required":["comparison","duration"],"properties":{"aggregations":{"description":"Specifies the alignment of data points in\nindividual time series as well as how to\ncombine the retrieved time series together\n(such as when aggregating multiple streams\non each resource to a single stream for each\nresource or when aggregating streams across\nall members of a group of resources).\nMultiple aggregations are applied in the\norder specified.This field is similar to the\none in the MetricService.ListTimeSeries\nrequest. It is advisable to use the\nListTimeSeries method when debugging this\nfield.","type":"array","items":{"type":"object","properties":{"alignmentPeriod":{"description":"The alignment period for per-time\nseries alignment. If present,\nalignmentPeriod must be at least\n60 seconds. After per-time series\nalignment, each time series will\ncontain data points only on the\nperiod boundaries. If\nperSeriesAligner is not specified\nor equals ALIGN_NONE, then this\nfield is ignored. If\nperSeriesAligner is specified and\ndoes not equal ALIGN_NONE, then\nthis field must be defined;\notherwise an error is returned.","type":"string"},"crossSeriesReducer":{"description":"The approach to be used to combine\ntime series. Not all reducer\nfunctions may be applied to all\ntime series, depending on the\nmetric type and the value type of\nthe original time series.\nReduction may change the metric\ntype of value type of the time\nseries.Time series data must be\naligned in order to perform cross-\ntime series reduction. If\ncrossSeriesReducer is specified,\nthen perSeriesAligner must be\nspecified and not equal ALIGN_NONE\nand alignmentPeriod must be\nspecified; otherwise, an error is\nreturned. Possible values: [\"REDUCE_NONE\", \"REDUCE_MEAN\", \"REDUCE_MIN\", \"REDUCE_MAX\", \"REDUCE_SUM\", \"REDUCE_STDDEV\", \"REDUCE_COUNT\", \"REDUCE_COUNT_TRUE\", \"REDUCE_COUNT_FALSE\", \"REDUCE_FRACTION_TRUE\", \"REDUCE_PERCENTILE_99\", \"REDUCE_PERCENTILE_95\", \"REDUCE_PERCENTILE_50\", \"REDUCE_PERCENTILE_05\"].","type":"string"},"groupByFields":{"description":"The set of fields to preserve when\ncrossSeriesReducer is specified.\nThe groupByFields determine how\nthe time series are partitioned\ninto subsets prior to applying the\naggregation function. Each subset\ncontains time series that have the\nsame value for each of the\ngrouping fields. Each individual\ntime series is a member of exactly\none subset. The crossSeriesReducer\nis applied to each subset of time\nseries. It is not possible to\nreduce across different resource\ntypes, so this field implicitly\ncontains resource.type. Fields not\nspecified in groupByFields are\naggregated away. If groupByFields\nis not specified and all the time\nseries have the same resource\ntype, then the time series are\naggregated into a single output\ntime series. If crossSeriesReducer\nis not defined, this field is\nignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"The approach to be used to align\nindividual time series. Not all\nalignment functions may be applied\nto all time series, depending on\nthe metric type and value type of\nthe original time series.\nAlignment may change the metric\ntype or the value type of the time\nseries.Time series data must be\naligned in order to perform cross-\ntime series reduction. If\ncrossSeriesReducer is specified,\nthen perSeriesAligner must be\nspecified and not equal ALIGN_NONE\nand alignmentPeriod must be\nspecified; otherwise, an error is\nreturned. Possible values: [\"ALIGN_NONE\", \"ALIGN_DELTA\", \"ALIGN_RATE\", \"ALIGN_INTERPOLATE\", \"ALIGN_NEXT_OLDER\", \"ALIGN_MIN\", \"ALIGN_MAX\", \"ALIGN_MEAN\", \"ALIGN_COUNT\", \"ALIGN_SUM\", \"ALIGN_STDDEV\", \"ALIGN_COUNT_TRUE\", \"ALIGN_COUNT_FALSE\", \"ALIGN_FRACTION_TRUE\", \"ALIGN_PERCENTILE_99\", \"ALIGN_PERCENTILE_95\", \"ALIGN_PERCENTILE_50\", \"ALIGN_PERCENTILE_05\", \"ALIGN_PERCENT_CHANGE\"].","type":"string"}}}},"comparison":{"description":"The comparison to apply between the time\nseries (indicated by filter and aggregation)\nand the threshold (indicated by\nthreshold_value). The comparison is applied\non each time series, with the time series on\nthe left-hand side and the threshold on the\nright-hand side. Only COMPARISON_LT and\nCOMPARISON_GT are supported currently. Possible values: [\"COMPARISON_GT\", \"COMPARISON_GE\", \"COMPARISON_LT\", \"COMPARISON_LE\", \"COMPARISON_EQ\", \"COMPARISON_NE\"].","type":"string"},"denominatorAggregations":{"description":"Specifies the alignment of data points in\nindividual time series selected by\ndenominatorFilter as well as how to combine\nthe retrieved time series together (such as\nwhen aggregating multiple streams on each\nresource to a single stream for each\nresource or when aggregating streams across\nall members of a group of resources).When\ncomputing ratios, the aggregations and\ndenominator_aggregations fields must use the\nsame alignment period and produce time\nseries that have the same periodicity and\nlabels.This field is similar to the one in\nthe MetricService.ListTimeSeries request. It\nis advisable to use the ListTimeSeries\nmethod when debugging this field.","type":"array","items":{"type":"object","properties":{"alignmentPeriod":{"description":"The alignment period for per-time\nseries alignment. If present,\nalignmentPeriod must be at least\n60 seconds. After per-time series\nalignment, each time series will\ncontain data points only on the\nperiod boundaries. If\nperSeriesAligner is not specified\nor equals ALIGN_NONE, then this\nfield is ignored. If\nperSeriesAligner is specified and\ndoes not equal ALIGN_NONE, then\nthis field must be defined;\notherwise an error is returned.","type":"string"},"crossSeriesReducer":{"description":"The approach to be used to combine\ntime series. Not all reducer\nfunctions may be applied to all\ntime series, depending on the\nmetric type and the value type of\nthe original time series.\nReduction may change the metric\ntype of value type of the time\nseries.Time series data must be\naligned in order to perform cross-\ntime series reduction. If\ncrossSeriesReducer is specified,\nthen perSeriesAligner must be\nspecified and not equal ALIGN_NONE\nand alignmentPeriod must be\nspecified; otherwise, an error is\nreturned. Possible values: [\"REDUCE_NONE\", \"REDUCE_MEAN\", \"REDUCE_MIN\", \"REDUCE_MAX\", \"REDUCE_SUM\", \"REDUCE_STDDEV\", \"REDUCE_COUNT\", \"REDUCE_COUNT_TRUE\", \"REDUCE_COUNT_FALSE\", \"REDUCE_FRACTION_TRUE\", \"REDUCE_PERCENTILE_99\", \"REDUCE_PERCENTILE_95\", \"REDUCE_PERCENTILE_50\", \"REDUCE_PERCENTILE_05\"].","type":"string"},"groupByFields":{"description":"The set of fields to preserve when\ncrossSeriesReducer is specified.\nThe groupByFields determine how\nthe time series are partitioned\ninto subsets prior to applying the\naggregation function. Each subset\ncontains time series that have the\nsame value for each of the\ngrouping fields. Each individual\ntime series is a member of exactly\none subset. The crossSeriesReducer\nis applied to each subset of time\nseries. It is not possible to\nreduce across different resource\ntypes, so this field implicitly\ncontains resource.type. Fields not\nspecified in groupByFields are\naggregated away. If groupByFields\nis not specified and all the time\nseries have the same resource\ntype, then the time series are\naggregated into a single output\ntime series. If crossSeriesReducer\nis not defined, this field is\nignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"The approach to be used to align\nindividual time series. Not all\nalignment functions may be applied\nto all time series, depending on\nthe metric type and value type of\nthe original time series.\nAlignment may change the metric\ntype or the value type of the time\nseries.Time series data must be\naligned in order to perform cross-\ntime series reduction. If\ncrossSeriesReducer is specified,\nthen perSeriesAligner must be\nspecified and not equal ALIGN_NONE\nand alignmentPeriod must be\nspecified; otherwise, an error is\nreturned. Possible values: [\"ALIGN_NONE\", \"ALIGN_DELTA\", \"ALIGN_RATE\", \"ALIGN_INTERPOLATE\", \"ALIGN_NEXT_OLDER\", \"ALIGN_MIN\", \"ALIGN_MAX\", \"ALIGN_MEAN\", \"ALIGN_COUNT\", \"ALIGN_SUM\", \"ALIGN_STDDEV\", \"ALIGN_COUNT_TRUE\", \"ALIGN_COUNT_FALSE\", \"ALIGN_FRACTION_TRUE\", \"ALIGN_PERCENTILE_99\", \"ALIGN_PERCENTILE_95\", \"ALIGN_PERCENTILE_50\", \"ALIGN_PERCENTILE_05\", \"ALIGN_PERCENT_CHANGE\"].","type":"string"}}}},"denominatorFilter":{"description":"A filter that identifies a time series that\nshould be used as the denominator of a ratio\nthat will be compared with the threshold. If\na denominator_filter is specified, the time\nseries specified by the filter field will be\nused as the numerator.The filter is similar\nto the one that is specified in the\nMetricService.ListTimeSeries request (that\ncall is useful to verify the time series\nthat will be retrieved / processed) and must\nspecify the metric type and optionally may\ncontain restrictions on resource type,\nresource labels, and metric labels. This\nfield may not exceed 2048 Unicode characters\nin length.","type":"string"},"duration":{"description":"The amount of time that a time series must\nviolate the threshold to be considered\nfailing. Currently, only values that are a\nmultiple of a minute--e.g., 0, 60, 120, or\n300 seconds--are supported. If an invalid\nvalue is given, an error will be returned.\nWhen choosing a duration, it is useful to\nkeep in mind the frequency of the underlying\ntime series data (which may also be affected\nby any alignments specified in the\naggregations field); a good duration is long\nenough so that a single outlier does not\ngenerate spurious alerts, but short enough\nthat unhealthy states are detected and\nalerted on quickly.","type":"string"},"evaluationMissingData":{"description":"A condition control that determines how\nmetric-threshold conditions are evaluated when\ndata stops arriving. Possible values: [\"EVALUATION_MISSING_DATA_INACTIVE\", \"EVALUATION_MISSING_DATA_ACTIVE\", \"EVALUATION_MISSING_DATA_NO_OP\"].","type":"string"},"filter":{"description":"A filter that identifies which time series\nshould be compared with the threshold.The\nfilter is similar to the one that is\nspecified in the\nMetricService.ListTimeSeries request (that\ncall is useful to verify the time series\nthat will be retrieved / processed) and must\nspecify the metric type and optionally may\ncontain restrictions on resource type,\nresource labels, and metric labels. This\nfield may not exceed 2048 Unicode characters\nin length.","type":"string"},"thresholdValue":{"description":"A value against which to compare the time\nseries.","type":"number"},"trigger":{"description":"The number/percent of time series for which\nthe comparison must hold in order for the\ncondition to trigger. If unspecified, then\nthe condition will trigger if the comparison\nis true for any of the time series that have\nbeen identified by filter and aggregations,\nor by the ratio, if denominator_filter and\ndenominator_aggregations are specified.","type":"object","properties":{"count":{"description":"The absolute number of time series\nthat must fail the predicate for the\ncondition to be triggered.","type":"integer"},"percent":{"description":"The percentage of time series that\nmust fail the predicate for the\ncondition to be triggered.","type":"number"}}}}},"displayName":{"description":"A short name or phrase used to identify the\ncondition in dashboards, notifications, and\nincidents. To avoid confusion, don't use the same\ndisplay name for multiple conditions in the same\npolicy.","type":"string"},"name":{"description":"The unique resource name for this condition.\nIts syntax is:\nprojects/[PROJECT_ID]/alertPolicies/[POLICY_ID]/conditions/[CONDITION_ID]\n[CONDITION_ID] is assigned by Stackdriver Monitoring when\nthe condition is created as part of a new or updated alerting\npolicy.","type":"string"}}}},"displayName":{"description":"A short name or phrase used to identify the policy in\ndashboards, notifications, and incidents. To avoid confusion, don't use\nthe same display name for multiple policies in the same project. The\nname is limited to 512 Unicode characters.","type":"string"},"documentation":{"description":"Documentation that is included with notifications and incidents related\nto this policy. Best practice is for the documentation to include information\nto help responders understand, mitigate, escalate, and correct the underlying\nproblems detected by the alerting policy. Notification channels that have\nlimited capacity might not show this documentation.","type":"object","properties":{"content":{"description":"The text of the documentation, interpreted according to mimeType.\nThe content may not exceed 8,192 Unicode characters and may not\nexceed more than 10,240 bytes when encoded in UTF-8 format,\nwhichever is smaller.","type":"string"},"mimeType":{"description":"The format of the content field. Presently, only the value\n\"text/markdown\" is supported.","type":"string"}}},"enabled":{"description":"Whether or not the policy is enabled. The default is true.","type":"boolean"},"notificationChannels":{"type":"array","items":{"description":"Identifies the notification channels to which notifications should be sent when incidents are opened or closed or when new violations occur on an already opened incident.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: The `name` field of a `MonitoringNotificationChannel` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}},"resourceID":{"description":"Immutable. Optional. The service-generated name of the resource. Used for acquisition only. Leave unset to create a new resource.","type":"string"}}},"status":{"type":"object","properties":{"conditions":{"description":"Conditions represent the latest available observation of the resource's current state.","type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","type":"string"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"Status is the status of the condition. Can be True, False, Unknown.","type":"string"},"type":{"description":"Type is the type of the condition.","type":"string"}}}},"creationRecord":{"description":"A read-only record of the creation of the alerting policy.\nIf provided in a call to create or update, this field will\nbe ignored.","type":"array","items":{"type":"object","properties":{"mutateTime":{"description":"When the change occurred.","type":"string"},"mutatedBy":{"description":"The email address of the user making the change.","type":"string"}}}},"name":{"description":"The unique resource name for this policy.\nIts syntax is: projects/[PROJECT_ID]/alertPolicies/[ALERT_POLICY_ID].","type":"string"},"observedGeneration":{"description":"ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.","type":"integer"}}}},"x-kubernetes-group-version-kind":[{"group":"monitoring.cnrm.cloud.google.com","kind":"MonitoringAlertPolicy","version":"v1beta1"}]},"com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicyList":{"description":"MonitoringAlertPolicyList is a list of MonitoringAlertPolicy","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of monitoringalertpolicies. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"$ref":"#/components/schemas/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringAlertPolicy"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"monitoring.cnrm.cloud.google.com","kind":"MonitoringAlertPolicyList","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"}]},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"creationTimestamp":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}]}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"}]},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"}}}}monitoring_v1beta1_monitoringdashboard.json000066400000000000000000006720161453663023200404520ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv3{"openapi":"3.0.0","info":{"title":"Kubernetes CRD Swagger","version":"v0.1.0"},"components":{"schemas":{"com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboard":{"type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"type":"object","required":["displayName","projectRef"],"properties":{"columnLayout":{"description":"The content is divided into equally spaced columns and the widgets are arranged vertically.","type":"object","properties":{"columns":{"description":"The columns of content to display.","type":"array","items":{"type":"object","properties":{"weight":{"description":"The relative weight of this column. The column weight is used to adjust the width of columns on the screen (relative to peers). Greater the weight, greater the width of the column on the screen. If omitted, a value of 1 is used while rendering.","type":"integer","format":"int64"},"widgets":{"description":"The display widgets arranged vertically in this column.","type":"array","items":{"type":"object","properties":{"blank":{"description":"A blank space.","type":"object","x-kubernetes-preserve-unknown-fields":true},"logsPanel":{"type":"object","properties":{"filter":{"description":"A filter that chooses which log entries to return. See [Advanced Logs Queries](https://cloud.google.com/logging/docs/view/advanced-queries). Only log entries that match the filter are returned. An empty filter matches all log entries.","type":"string"},"resourceNames":{"type":"array","items":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}},"scorecard":{"description":"A scorecard summarizing time series data.","type":"object","required":["timeSeriesQuery"],"properties":{"gaugeView":{"description":"Will cause the scorecard to show a gauge chart.","type":"object","properties":{"lowerBound":{"description":"The lower bound for this gauge chart. The value of the chart should always be greater than or equal to this.","type":"number","format":"double"},"upperBound":{"description":"The upper bound for this gauge chart. The value of the chart should always be less than or equal to this.","type":"number","format":"double"}}},"sparkChartView":{"description":"Will cause the scorecard to show a spark chart.","type":"object","required":["sparkChartType"],"properties":{"minAlignmentPeriod":{"description":"The lower bound on data point frequency in the chart implemented by specifying the minimum alignment period to use in a time series query. For example, if the data is published once every 10 minutes it would not make sense to fetch and align data at one minute intervals. This field is optional and exists only as a hint.","type":"string"},"sparkChartType":{"description":"Required. The type of sparkchart to show in this chartView. Possible values: SPARK_CHART_TYPE_UNSPECIFIED, SPARK_LINE, SPARK_BAR","type":"string"}}},"thresholds":{"description":"The thresholds used to determine the state of the scorecard given the time series' current value. For an actual value x, the scorecard is in a danger state if x is less than or equal to a danger threshold that triggers below, or greater than or equal to a danger threshold that triggers above. Similarly, if x is above/below a warning threshold that triggers above/below, then the scorecard is in a warning state - unless x also puts it in a danger state. (Danger trumps warning.) As an example, consider a scorecard with the following four thresholds: { value: 90, category: 'DANGER', trigger: 'ABOVE', },: { value: 70, category: 'WARNING', trigger: 'ABOVE', }, { value: 10, category: 'DANGER', trigger: 'BELOW', }, { value: 20, category: 'WARNING', trigger: 'BELOW', } Then: values less than or equal to 10 would put the scorecard in a DANGER state, values greater than 10 but less than or equal to 20 a WARNING state, values strictly between 20 and 70 an OK state, values greater than or equal to 70 but less than 90 a WARNING state, and values greater than or equal to 90 a DANGER state.","type":"array","items":{"type":"object","properties":{"color":{"description":"The state color for this threshold. Color is not allowed in a XyChart. Possible values: COLOR_UNSPECIFIED, GREY, BLUE, GREEN, YELLOW, ORANGE, RED","type":"string"},"direction":{"description":"The direction for the current threshold. Direction is not allowed in a XyChart. Possible values: DIRECTION_UNSPECIFIED, ABOVE, BELOW","type":"string"},"label":{"description":"A label for the threshold.","type":"string"},"value":{"description":"The value of the threshold. The value should be defined in the native scale of the metric.","type":"number","format":"double"}}}},"timeSeriesQuery":{"description":"Required. Fields for querying time series data from the Stackdriver metrics API.","type":"object","properties":{"timeSeriesFilter":{"description":"Filter parameters to fetch time series.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer","format":"int64"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after `aggregation` is applied.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesFilterRatio":{"description":"Parameters to fetch a ratio between two time series filters.","type":"object","properties":{"denominator":{"description":"The denominator of the ratio.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"numerator":{"description":"The numerator of the ratio.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer","format":"int64"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after the ratio is computed.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesQueryLanguage":{"description":"A query used to fetch time series.","type":"string"},"unitOverride":{"description":"The unit of data contained in fetched time series. If non-empty, this unit will override any unit that accompanies fetched data. The format is the same as the [`unit`](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) field in `MetricDescriptor`.","type":"string"}}}}},"text":{"description":"A raw string or markdown displaying textual content.","type":"object","properties":{"content":{"description":"The text content to be displayed.","type":"string"},"format":{"description":"How the text content is formatted. Possible values: FORMAT_UNSPECIFIED, MARKDOWN, RAW","type":"string"}}},"title":{"description":"Optional. The title of the widget.","type":"string"},"xyChart":{"description":"A chart of time series data.","type":"object","required":["dataSets"],"properties":{"chartOptions":{"description":"Display options for the chart.","type":"object","properties":{"mode":{"description":"The chart mode. Possible values: MODE_UNSPECIFIED, COLOR, X_RAY, STATS","type":"string"}}},"dataSets":{"description":"Required. The data displayed in this chart.","type":"array","items":{"type":"object","required":["timeSeriesQuery"],"properties":{"legendTemplate":{"description":"A template string for naming `TimeSeries` in the resulting data set. This should be a string with interpolations of the form `${label_name}`, which will resolve to the label's value. ","type":"string"},"minAlignmentPeriod":{"description":"Optional. The lower bound on data point frequency for this data set, implemented by specifying the minimum alignment period to use in a time series query For example, if the data is published once every 10 minutes, the `min_alignment_period` should be at least 10 minutes. It would not make sense to fetch and align data at one minute intervals.","type":"string"},"plotType":{"description":"How this data should be plotted on the chart. Possible values: PLOT_TYPE_UNSPECIFIED, LINE, STACKED_AREA, STACKED_BAR, HEATMAP","type":"string"},"timeSeriesQuery":{"description":"Required. Fields for querying time series data from the Stackdriver metrics API.","type":"object","properties":{"timeSeriesFilter":{"description":"Filter parameters to fetch time series.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer","format":"int64"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after `aggregation` is applied.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesFilterRatio":{"description":"Parameters to fetch a ratio between two time series filters.","type":"object","properties":{"denominator":{"description":"The denominator of the ratio.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"numerator":{"description":"The numerator of the ratio.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer","format":"int64"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after the ratio is computed.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesQueryLanguage":{"description":"A query used to fetch time series.","type":"string"},"unitOverride":{"description":"The unit of data contained in fetched time series. If non-empty, this unit will override any unit that accompanies fetched data. The format is the same as the [`unit`](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) field in `MetricDescriptor`.","type":"string"}}}}}},"thresholds":{"description":"Threshold lines drawn horizontally across the chart.","type":"array","items":{"type":"object","properties":{"color":{"description":"The state color for this threshold. Color is not allowed in a XyChart. Possible values: COLOR_UNSPECIFIED, GREY, BLUE, GREEN, YELLOW, ORANGE, RED","type":"string"},"direction":{"description":"The direction for the current threshold. Direction is not allowed in a XyChart. Possible values: DIRECTION_UNSPECIFIED, ABOVE, BELOW","type":"string"},"label":{"description":"A label for the threshold.","type":"string"},"value":{"description":"The value of the threshold. The value should be defined in the native scale of the metric.","type":"number","format":"double"}}}},"timeshiftDuration":{"description":"The duration used to display a comparison chart. A comparison chart simultaneously shows values from two similar-length time periods (e.g., week-over-week metrics). The duration must be positive, and it can only be applied to charts with data sets of LINE plot type.","type":"string"},"xAxis":{"description":"The properties applied to the X axis.","type":"object","properties":{"label":{"description":"The label of the axis.","type":"string"},"scale":{"description":"The axis scale. By default, a linear scale is used. Possible values: SCALE_UNSPECIFIED, LINEAR, LOG10","type":"string"}}},"yAxis":{"description":"The properties applied to the Y axis.","type":"object","properties":{"label":{"description":"The label of the axis.","type":"string"},"scale":{"description":"The axis scale. By default, a linear scale is used. Possible values: SCALE_UNSPECIFIED, LINEAR, LOG10","type":"string"}}}}}}}}}}}}},"displayName":{"description":"Required. The mutable, human-readable name.","type":"string"},"gridLayout":{"description":"Content is arranged with a basic layout that re-flows a simple list of informational elements like widgets or tiles.","type":"object","properties":{"columns":{"description":"The number of columns into which the view's width is divided. If omitted or set to zero, a system default will be used while rendering.","type":"integer","format":"int64"},"widgets":{"description":"The informational elements that are arranged into the columns row-first.","type":"array","items":{"type":"object","properties":{"blank":{"description":"A blank space.","type":"object","x-kubernetes-preserve-unknown-fields":true},"logsPanel":{"type":"object","properties":{"filter":{"description":"A filter that chooses which log entries to return. See [Advanced Logs Queries](https://cloud.google.com/logging/docs/view/advanced-queries). Only log entries that match the filter are returned. An empty filter matches all log entries.","type":"string"},"resourceNames":{"type":"array","items":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}},"scorecard":{"description":"A scorecard summarizing time series data.","type":"object","required":["timeSeriesQuery"],"properties":{"gaugeView":{"description":"Will cause the scorecard to show a gauge chart.","type":"object","properties":{"lowerBound":{"description":"The lower bound for this gauge chart. The value of the chart should always be greater than or equal to this.","type":"number","format":"double"},"upperBound":{"description":"The upper bound for this gauge chart. The value of the chart should always be less than or equal to this.","type":"number","format":"double"}}},"sparkChartView":{"description":"Will cause the scorecard to show a spark chart.","type":"object","required":["sparkChartType"],"properties":{"minAlignmentPeriod":{"description":"The lower bound on data point frequency in the chart implemented by specifying the minimum alignment period to use in a time series query. For example, if the data is published once every 10 minutes it would not make sense to fetch and align data at one minute intervals. This field is optional and exists only as a hint.","type":"string"},"sparkChartType":{"description":"Required. The type of sparkchart to show in this chartView. Possible values: SPARK_CHART_TYPE_UNSPECIFIED, SPARK_LINE, SPARK_BAR","type":"string"}}},"thresholds":{"description":"The thresholds used to determine the state of the scorecard given the time series' current value. For an actual value x, the scorecard is in a danger state if x is less than or equal to a danger threshold that triggers below, or greater than or equal to a danger threshold that triggers above. Similarly, if x is above/below a warning threshold that triggers above/below, then the scorecard is in a warning state - unless x also puts it in a danger state. (Danger trumps warning.) As an example, consider a scorecard with the following four thresholds: { value: 90, category: 'DANGER', trigger: 'ABOVE', },: { value: 70, category: 'WARNING', trigger: 'ABOVE', }, { value: 10, category: 'DANGER', trigger: 'BELOW', }, { value: 20, category: 'WARNING', trigger: 'BELOW', } Then: values less than or equal to 10 would put the scorecard in a DANGER state, values greater than 10 but less than or equal to 20 a WARNING state, values strictly between 20 and 70 an OK state, values greater than or equal to 70 but less than 90 a WARNING state, and values greater than or equal to 90 a DANGER state.","type":"array","items":{"type":"object","properties":{"color":{"description":"The state color for this threshold. Color is not allowed in a XyChart. Possible values: COLOR_UNSPECIFIED, GREY, BLUE, GREEN, YELLOW, ORANGE, RED","type":"string"},"direction":{"description":"The direction for the current threshold. Direction is not allowed in a XyChart. Possible values: DIRECTION_UNSPECIFIED, ABOVE, BELOW","type":"string"},"label":{"description":"A label for the threshold.","type":"string"},"value":{"description":"The value of the threshold. The value should be defined in the native scale of the metric.","type":"number","format":"double"}}}},"timeSeriesQuery":{"description":"Required. Fields for querying time series data from the Stackdriver metrics API.","type":"object","properties":{"timeSeriesFilter":{"description":"Filter parameters to fetch time series.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer","format":"int64"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after `aggregation` is applied.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesFilterRatio":{"description":"Parameters to fetch a ratio between two time series filters.","type":"object","properties":{"denominator":{"description":"The denominator of the ratio.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"numerator":{"description":"The numerator of the ratio.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer","format":"int64"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after the ratio is computed.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesQueryLanguage":{"description":"A query used to fetch time series.","type":"string"},"unitOverride":{"description":"The unit of data contained in fetched time series. If non-empty, this unit will override any unit that accompanies fetched data. The format is the same as the [`unit`](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) field in `MetricDescriptor`.","type":"string"}}}}},"text":{"description":"A raw string or markdown displaying textual content.","type":"object","properties":{"content":{"description":"The text content to be displayed.","type":"string"},"format":{"description":"How the text content is formatted. Possible values: FORMAT_UNSPECIFIED, MARKDOWN, RAW","type":"string"}}},"title":{"description":"Optional. The title of the widget.","type":"string"},"xyChart":{"description":"A chart of time series data.","type":"object","required":["dataSets"],"properties":{"chartOptions":{"description":"Display options for the chart.","type":"object","properties":{"mode":{"description":"The chart mode. Possible values: MODE_UNSPECIFIED, COLOR, X_RAY, STATS","type":"string"}}},"dataSets":{"description":"Required. The data displayed in this chart.","type":"array","items":{"type":"object","required":["timeSeriesQuery"],"properties":{"legendTemplate":{"description":"A template string for naming `TimeSeries` in the resulting data set. This should be a string with interpolations of the form `${label_name}`, which will resolve to the label's value. ","type":"string"},"minAlignmentPeriod":{"description":"Optional. The lower bound on data point frequency for this data set, implemented by specifying the minimum alignment period to use in a time series query For example, if the data is published once every 10 minutes, the `min_alignment_period` should be at least 10 minutes. It would not make sense to fetch and align data at one minute intervals.","type":"string"},"plotType":{"description":"How this data should be plotted on the chart. Possible values: PLOT_TYPE_UNSPECIFIED, LINE, STACKED_AREA, STACKED_BAR, HEATMAP","type":"string"},"timeSeriesQuery":{"description":"Required. Fields for querying time series data from the Stackdriver metrics API.","type":"object","properties":{"timeSeriesFilter":{"description":"Filter parameters to fetch time series.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer","format":"int64"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after `aggregation` is applied.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesFilterRatio":{"description":"Parameters to fetch a ratio between two time series filters.","type":"object","properties":{"denominator":{"description":"The denominator of the ratio.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"numerator":{"description":"The numerator of the ratio.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer","format":"int64"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after the ratio is computed.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesQueryLanguage":{"description":"A query used to fetch time series.","type":"string"},"unitOverride":{"description":"The unit of data contained in fetched time series. If non-empty, this unit will override any unit that accompanies fetched data. The format is the same as the [`unit`](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) field in `MetricDescriptor`.","type":"string"}}}}}},"thresholds":{"description":"Threshold lines drawn horizontally across the chart.","type":"array","items":{"type":"object","properties":{"color":{"description":"The state color for this threshold. Color is not allowed in a XyChart. Possible values: COLOR_UNSPECIFIED, GREY, BLUE, GREEN, YELLOW, ORANGE, RED","type":"string"},"direction":{"description":"The direction for the current threshold. Direction is not allowed in a XyChart. Possible values: DIRECTION_UNSPECIFIED, ABOVE, BELOW","type":"string"},"label":{"description":"A label for the threshold.","type":"string"},"value":{"description":"The value of the threshold. The value should be defined in the native scale of the metric.","type":"number","format":"double"}}}},"timeshiftDuration":{"description":"The duration used to display a comparison chart. A comparison chart simultaneously shows values from two similar-length time periods (e.g., week-over-week metrics). The duration must be positive, and it can only be applied to charts with data sets of LINE plot type.","type":"string"},"xAxis":{"description":"The properties applied to the X axis.","type":"object","properties":{"label":{"description":"The label of the axis.","type":"string"},"scale":{"description":"The axis scale. By default, a linear scale is used. Possible values: SCALE_UNSPECIFIED, LINEAR, LOG10","type":"string"}}},"yAxis":{"description":"The properties applied to the Y axis.","type":"object","properties":{"label":{"description":"The label of the axis.","type":"string"},"scale":{"description":"The axis scale. By default, a linear scale is used. Possible values: SCALE_UNSPECIFIED, LINEAR, LOG10","type":"string"}}}}}}}}}},"mosaicLayout":{"description":"The content is arranged as a grid of tiles, with each content widget occupying one or more tiles.","type":"object","properties":{"columns":{"description":"The number of columns in the mosaic grid.","type":"integer","format":"int64"},"tiles":{"description":"The tiles to display.","type":"array","items":{"type":"object","properties":{"height":{"description":"The height of the tile, measured in grid squares.","type":"integer","format":"int64"},"widget":{"description":"The informational widget contained in the tile.","type":"object","properties":{"blank":{"description":"A blank space.","type":"object","x-kubernetes-preserve-unknown-fields":true},"logsPanel":{"type":"object","properties":{"filter":{"description":"A filter that chooses which log entries to return. See [Advanced Logs Queries](https://cloud.google.com/logging/docs/view/advanced-queries). Only log entries that match the filter are returned. An empty filter matches all log entries.","type":"string"},"resourceNames":{"type":"array","items":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}},"scorecard":{"description":"A scorecard summarizing time series data.","type":"object","required":["timeSeriesQuery"],"properties":{"gaugeView":{"description":"Will cause the scorecard to show a gauge chart.","type":"object","properties":{"lowerBound":{"description":"The lower bound for this gauge chart. The value of the chart should always be greater than or equal to this.","type":"number","format":"double"},"upperBound":{"description":"The upper bound for this gauge chart. The value of the chart should always be less than or equal to this.","type":"number","format":"double"}}},"sparkChartView":{"description":"Will cause the scorecard to show a spark chart.","type":"object","required":["sparkChartType"],"properties":{"minAlignmentPeriod":{"description":"The lower bound on data point frequency in the chart implemented by specifying the minimum alignment period to use in a time series query. For example, if the data is published once every 10 minutes it would not make sense to fetch and align data at one minute intervals. This field is optional and exists only as a hint.","type":"string"},"sparkChartType":{"description":"Required. The type of sparkchart to show in this chartView. Possible values: SPARK_CHART_TYPE_UNSPECIFIED, SPARK_LINE, SPARK_BAR","type":"string"}}},"thresholds":{"description":"The thresholds used to determine the state of the scorecard given the time series' current value. For an actual value x, the scorecard is in a danger state if x is less than or equal to a danger threshold that triggers below, or greater than or equal to a danger threshold that triggers above. Similarly, if x is above/below a warning threshold that triggers above/below, then the scorecard is in a warning state - unless x also puts it in a danger state. (Danger trumps warning.) As an example, consider a scorecard with the following four thresholds: { value: 90, category: 'DANGER', trigger: 'ABOVE', },: { value: 70, category: 'WARNING', trigger: 'ABOVE', }, { value: 10, category: 'DANGER', trigger: 'BELOW', }, { value: 20, category: 'WARNING', trigger: 'BELOW', } Then: values less than or equal to 10 would put the scorecard in a DANGER state, values greater than 10 but less than or equal to 20 a WARNING state, values strictly between 20 and 70 an OK state, values greater than or equal to 70 but less than 90 a WARNING state, and values greater than or equal to 90 a DANGER state.","type":"array","items":{"type":"object","properties":{"color":{"description":"The state color for this threshold. Color is not allowed in a XyChart. Possible values: COLOR_UNSPECIFIED, GREY, BLUE, GREEN, YELLOW, ORANGE, RED","type":"string"},"direction":{"description":"The direction for the current threshold. Direction is not allowed in a XyChart. Possible values: DIRECTION_UNSPECIFIED, ABOVE, BELOW","type":"string"},"label":{"description":"A label for the threshold.","type":"string"},"value":{"description":"The value of the threshold. The value should be defined in the native scale of the metric.","type":"number","format":"double"}}}},"timeSeriesQuery":{"description":"Required. Fields for querying time series data from the Stackdriver metrics API.","type":"object","properties":{"timeSeriesFilter":{"description":"Filter parameters to fetch time series.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer","format":"int64"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after `aggregation` is applied.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesFilterRatio":{"description":"Parameters to fetch a ratio between two time series filters.","type":"object","properties":{"denominator":{"description":"The denominator of the ratio.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"numerator":{"description":"The numerator of the ratio.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer","format":"int64"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after the ratio is computed.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesQueryLanguage":{"description":"A query used to fetch time series.","type":"string"},"unitOverride":{"description":"The unit of data contained in fetched time series. If non-empty, this unit will override any unit that accompanies fetched data. The format is the same as the [`unit`](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) field in `MetricDescriptor`.","type":"string"}}}}},"text":{"description":"A raw string or markdown displaying textual content.","type":"object","properties":{"content":{"description":"The text content to be displayed.","type":"string"},"format":{"description":"How the text content is formatted. Possible values: FORMAT_UNSPECIFIED, MARKDOWN, RAW","type":"string"}}},"title":{"description":"Optional. The title of the widget.","type":"string"},"xyChart":{"description":"A chart of time series data.","type":"object","required":["dataSets"],"properties":{"chartOptions":{"description":"Display options for the chart.","type":"object","properties":{"mode":{"description":"The chart mode. Possible values: MODE_UNSPECIFIED, COLOR, X_RAY, STATS","type":"string"}}},"dataSets":{"description":"Required. The data displayed in this chart.","type":"array","items":{"type":"object","required":["timeSeriesQuery"],"properties":{"legendTemplate":{"description":"A template string for naming `TimeSeries` in the resulting data set. This should be a string with interpolations of the form `${label_name}`, which will resolve to the label's value. ","type":"string"},"minAlignmentPeriod":{"description":"Optional. The lower bound on data point frequency for this data set, implemented by specifying the minimum alignment period to use in a time series query For example, if the data is published once every 10 minutes, the `min_alignment_period` should be at least 10 minutes. It would not make sense to fetch and align data at one minute intervals.","type":"string"},"plotType":{"description":"How this data should be plotted on the chart. Possible values: PLOT_TYPE_UNSPECIFIED, LINE, STACKED_AREA, STACKED_BAR, HEATMAP","type":"string"},"timeSeriesQuery":{"description":"Required. Fields for querying time series data from the Stackdriver metrics API.","type":"object","properties":{"timeSeriesFilter":{"description":"Filter parameters to fetch time series.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer","format":"int64"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after `aggregation` is applied.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesFilterRatio":{"description":"Parameters to fetch a ratio between two time series filters.","type":"object","properties":{"denominator":{"description":"The denominator of the ratio.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"numerator":{"description":"The numerator of the ratio.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer","format":"int64"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after the ratio is computed.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesQueryLanguage":{"description":"A query used to fetch time series.","type":"string"},"unitOverride":{"description":"The unit of data contained in fetched time series. If non-empty, this unit will override any unit that accompanies fetched data. The format is the same as the [`unit`](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) field in `MetricDescriptor`.","type":"string"}}}}}},"thresholds":{"description":"Threshold lines drawn horizontally across the chart.","type":"array","items":{"type":"object","properties":{"color":{"description":"The state color for this threshold. Color is not allowed in a XyChart. Possible values: COLOR_UNSPECIFIED, GREY, BLUE, GREEN, YELLOW, ORANGE, RED","type":"string"},"direction":{"description":"The direction for the current threshold. Direction is not allowed in a XyChart. Possible values: DIRECTION_UNSPECIFIED, ABOVE, BELOW","type":"string"},"label":{"description":"A label for the threshold.","type":"string"},"value":{"description":"The value of the threshold. The value should be defined in the native scale of the metric.","type":"number","format":"double"}}}},"timeshiftDuration":{"description":"The duration used to display a comparison chart. A comparison chart simultaneously shows values from two similar-length time periods (e.g., week-over-week metrics). The duration must be positive, and it can only be applied to charts with data sets of LINE plot type.","type":"string"},"xAxis":{"description":"The properties applied to the X axis.","type":"object","properties":{"label":{"description":"The label of the axis.","type":"string"},"scale":{"description":"The axis scale. By default, a linear scale is used. Possible values: SCALE_UNSPECIFIED, LINEAR, LOG10","type":"string"}}},"yAxis":{"description":"The properties applied to the Y axis.","type":"object","properties":{"label":{"description":"The label of the axis.","type":"string"},"scale":{"description":"The axis scale. By default, a linear scale is used. Possible values: SCALE_UNSPECIFIED, LINEAR, LOG10","type":"string"}}}}}}},"width":{"description":"The width of the tile, measured in grid squares.","type":"integer","format":"int64"},"xPos":{"description":"The zero-indexed position of the tile in grid squares relative to the left edge of the grid.","type":"integer","format":"int64"},"yPos":{"description":"The zero-indexed position of the tile in grid squares relative to the top edge of the grid.","type":"integer","format":"int64"}}}}}},"projectRef":{"description":"Immutable. The Project that this resource belongs to.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"The project id of the resource.\n\nAllowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"resourceID":{"description":"Immutable. Optional. The name of the resource. Used for creation and acquisition. When unset, the value of `metadata.name` is used as the default.","type":"string"},"rowLayout":{"description":"The content is divided into equally spaced rows and the widgets are arranged horizontally.","type":"object","properties":{"rows":{"description":"The rows of content to display.","type":"array","items":{"type":"object","properties":{"weight":{"description":"The relative weight of this row. The row weight is used to adjust the height of rows on the screen (relative to peers). Greater the weight, greater the height of the row on the screen. If omitted, a value of 1 is used while rendering.","type":"integer","format":"int64"},"widgets":{"description":"The display widgets arranged horizontally in this row.","type":"array","items":{"type":"object","properties":{"blank":{"description":"A blank space.","type":"object","x-kubernetes-preserve-unknown-fields":true},"logsPanel":{"type":"object","properties":{"filter":{"description":"A filter that chooses which log entries to return. See [Advanced Logs Queries](https://cloud.google.com/logging/docs/view/advanced-queries). Only log entries that match the filter are returned. An empty filter matches all log entries.","type":"string"},"resourceNames":{"type":"array","items":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}}},"scorecard":{"description":"A scorecard summarizing time series data.","type":"object","required":["timeSeriesQuery"],"properties":{"gaugeView":{"description":"Will cause the scorecard to show a gauge chart.","type":"object","properties":{"lowerBound":{"description":"The lower bound for this gauge chart. The value of the chart should always be greater than or equal to this.","type":"number","format":"double"},"upperBound":{"description":"The upper bound for this gauge chart. The value of the chart should always be less than or equal to this.","type":"number","format":"double"}}},"sparkChartView":{"description":"Will cause the scorecard to show a spark chart.","type":"object","required":["sparkChartType"],"properties":{"minAlignmentPeriod":{"description":"The lower bound on data point frequency in the chart implemented by specifying the minimum alignment period to use in a time series query. For example, if the data is published once every 10 minutes it would not make sense to fetch and align data at one minute intervals. This field is optional and exists only as a hint.","type":"string"},"sparkChartType":{"description":"Required. The type of sparkchart to show in this chartView. Possible values: SPARK_CHART_TYPE_UNSPECIFIED, SPARK_LINE, SPARK_BAR","type":"string"}}},"thresholds":{"description":"The thresholds used to determine the state of the scorecard given the time series' current value. For an actual value x, the scorecard is in a danger state if x is less than or equal to a danger threshold that triggers below, or greater than or equal to a danger threshold that triggers above. Similarly, if x is above/below a warning threshold that triggers above/below, then the scorecard is in a warning state - unless x also puts it in a danger state. (Danger trumps warning.) As an example, consider a scorecard with the following four thresholds: { value: 90, category: 'DANGER', trigger: 'ABOVE', },: { value: 70, category: 'WARNING', trigger: 'ABOVE', }, { value: 10, category: 'DANGER', trigger: 'BELOW', }, { value: 20, category: 'WARNING', trigger: 'BELOW', } Then: values less than or equal to 10 would put the scorecard in a DANGER state, values greater than 10 but less than or equal to 20 a WARNING state, values strictly between 20 and 70 an OK state, values greater than or equal to 70 but less than 90 a WARNING state, and values greater than or equal to 90 a DANGER state.","type":"array","items":{"type":"object","properties":{"color":{"description":"The state color for this threshold. Color is not allowed in a XyChart. Possible values: COLOR_UNSPECIFIED, GREY, BLUE, GREEN, YELLOW, ORANGE, RED","type":"string"},"direction":{"description":"The direction for the current threshold. Direction is not allowed in a XyChart. Possible values: DIRECTION_UNSPECIFIED, ABOVE, BELOW","type":"string"},"label":{"description":"A label for the threshold.","type":"string"},"value":{"description":"The value of the threshold. The value should be defined in the native scale of the metric.","type":"number","format":"double"}}}},"timeSeriesQuery":{"description":"Required. Fields for querying time series data from the Stackdriver metrics API.","type":"object","properties":{"timeSeriesFilter":{"description":"Filter parameters to fetch time series.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer","format":"int64"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after `aggregation` is applied.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesFilterRatio":{"description":"Parameters to fetch a ratio between two time series filters.","type":"object","properties":{"denominator":{"description":"The denominator of the ratio.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"numerator":{"description":"The numerator of the ratio.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer","format":"int64"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after the ratio is computed.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesQueryLanguage":{"description":"A query used to fetch time series.","type":"string"},"unitOverride":{"description":"The unit of data contained in fetched time series. If non-empty, this unit will override any unit that accompanies fetched data. The format is the same as the [`unit`](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) field in `MetricDescriptor`.","type":"string"}}}}},"text":{"description":"A raw string or markdown displaying textual content.","type":"object","properties":{"content":{"description":"The text content to be displayed.","type":"string"},"format":{"description":"How the text content is formatted. Possible values: FORMAT_UNSPECIFIED, MARKDOWN, RAW","type":"string"}}},"title":{"description":"Optional. The title of the widget.","type":"string"},"xyChart":{"description":"A chart of time series data.","type":"object","required":["dataSets"],"properties":{"chartOptions":{"description":"Display options for the chart.","type":"object","properties":{"mode":{"description":"The chart mode. Possible values: MODE_UNSPECIFIED, COLOR, X_RAY, STATS","type":"string"}}},"dataSets":{"description":"Required. The data displayed in this chart.","type":"array","items":{"type":"object","required":["timeSeriesQuery"],"properties":{"legendTemplate":{"description":"A template string for naming `TimeSeries` in the resulting data set. This should be a string with interpolations of the form `${label_name}`, which will resolve to the label's value. ","type":"string"},"minAlignmentPeriod":{"description":"Optional. The lower bound on data point frequency for this data set, implemented by specifying the minimum alignment period to use in a time series query For example, if the data is published once every 10 minutes, the `min_alignment_period` should be at least 10 minutes. It would not make sense to fetch and align data at one minute intervals.","type":"string"},"plotType":{"description":"How this data should be plotted on the chart. Possible values: PLOT_TYPE_UNSPECIFIED, LINE, STACKED_AREA, STACKED_BAR, HEATMAP","type":"string"},"timeSeriesQuery":{"description":"Required. Fields for querying time series data from the Stackdriver metrics API.","type":"object","properties":{"timeSeriesFilter":{"description":"Filter parameters to fetch time series.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer","format":"int64"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after `aggregation` is applied.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesFilterRatio":{"description":"Parameters to fetch a ratio between two time series filters.","type":"object","properties":{"denominator":{"description":"The denominator of the ratio.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"numerator":{"description":"The numerator of the ratio.","type":"object","required":["filter"],"properties":{"aggregation":{"description":"By default, the raw time series data is returned. Use this field to combine multiple time series for different views of the data.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}},"filter":{"description":"Required. The [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) that identifies the metric types, resources, and projects to query.","type":"string"}}},"pickTimeSeriesFilter":{"description":"Ranking based time series filter.","type":"object","properties":{"direction":{"description":"How to use the ranking to select time series that pass through the filter. Possible values: DIRECTION_UNSPECIFIED, TOP, BOTTOM","type":"string"},"numTimeSeries":{"description":"How many time series to allow to pass through the filter.","type":"integer","format":"int64"},"rankingMethod":{"description":"`ranking_method` is applied to each time series independently to produce the value which will be used to compare the time series to other time series. Possible values: METHOD_UNSPECIFIED, METHOD_MEAN, METHOD_MAX, METHOD_MIN, METHOD_SUM, METHOD_LATEST","type":"string"}}},"secondaryAggregation":{"description":"Apply a second aggregation after the ratio is computed.","type":"object","properties":{"alignmentPeriod":{"description":"The `alignment_period` specifies a time interval, in seconds, that is used to divide the data in all the [time series][google.monitoring.v3.TimeSeries] into consistent blocks of time. This will be done before the per-series aligner can be applied to the data. The value must be at least 60 seconds. If a per-series aligner other than `ALIGN_NONE` is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner `ALIGN_NONE` is specified, then this field is ignored.","type":"string"},"crossSeriesReducer":{"description":"The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series. Not all reducer operations can be applied to all time series. The valid choices depend on the `metric_kind` and the `value_type` of the original time series. Reduction can yield a time series with a different `metric_kind` or `value_type` than the input time series. Time series data must first be aligned (see `per_series_aligner`) in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified, and must not be `ALIGN_NONE`. An `alignment_period` must also be specified; otherwise, an error is returned. Possible values: REDUCE_NONE, REDUCE_MEAN, REDUCE_MIN, REDUCE_MAX, REDUCE_SUM, REDUCE_STDDEV, REDUCE_COUNT, REDUCE_COUNT_TRUE, REDUCE_COUNT_FALSE, REDUCE_FRACTION_TRUE, REDUCE_PERCENTILE_99, REDUCE_PERCENTILE_95, REDUCE_PERCENTILE_50, REDUCE_PERCENTILE_05, REDUCE_FRACTION_LESS_THAN, REDUCE_MAKE_DISTRIBUTION","type":"string"},"groupByFields":{"description":"The set of fields to preserve when `cross_series_reducer` is specified. The `group_by_fields` determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The `cross_series_reducer` is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains `resource.type`. Fields not specified in `group_by_fields` are aggregated away. If `group_by_fields` is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If `cross_series_reducer` is not defined, this field is ignored.","type":"array","items":{"type":"string"}},"perSeriesAligner":{"description":"An `Aligner` describes how to bring the data points in a single time series into temporal alignment. Except for `ALIGN_NONE`, all alignments cause all the data points in an `alignment_period` to be mathematically grouped together, resulting in a single data point for each `alignment_period` with end timestamp at the end of the period. Not all alignment operations may be applied to all time series. The valid choices depend on the `metric_kind` and `value_type` of the original time series. Alignment can change the `metric_kind` or the `value_type` of the time series. Time series data must be aligned in order to perform cross-time series reduction. If `cross_series_reducer` is specified, then `per_series_aligner` must be specified and not equal to `ALIGN_NONE` and `alignment_period` must be specified; otherwise, an error is returned.","type":"string"}}}}},"timeSeriesQueryLanguage":{"description":"A query used to fetch time series.","type":"string"},"unitOverride":{"description":"The unit of data contained in fetched time series. If non-empty, this unit will override any unit that accompanies fetched data. The format is the same as the [`unit`](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors) field in `MetricDescriptor`.","type":"string"}}}}}},"thresholds":{"description":"Threshold lines drawn horizontally across the chart.","type":"array","items":{"type":"object","properties":{"color":{"description":"The state color for this threshold. Color is not allowed in a XyChart. Possible values: COLOR_UNSPECIFIED, GREY, BLUE, GREEN, YELLOW, ORANGE, RED","type":"string"},"direction":{"description":"The direction for the current threshold. Direction is not allowed in a XyChart. Possible values: DIRECTION_UNSPECIFIED, ABOVE, BELOW","type":"string"},"label":{"description":"A label for the threshold.","type":"string"},"value":{"description":"The value of the threshold. The value should be defined in the native scale of the metric.","type":"number","format":"double"}}}},"timeshiftDuration":{"description":"The duration used to display a comparison chart. A comparison chart simultaneously shows values from two similar-length time periods (e.g., week-over-week metrics). The duration must be positive, and it can only be applied to charts with data sets of LINE plot type.","type":"string"},"xAxis":{"description":"The properties applied to the X axis.","type":"object","properties":{"label":{"description":"The label of the axis.","type":"string"},"scale":{"description":"The axis scale. By default, a linear scale is used. Possible values: SCALE_UNSPECIFIED, LINEAR, LOG10","type":"string"}}},"yAxis":{"description":"The properties applied to the Y axis.","type":"object","properties":{"label":{"description":"The label of the axis.","type":"string"},"scale":{"description":"The axis scale. By default, a linear scale is used. Possible values: SCALE_UNSPECIFIED, LINEAR, LOG10","type":"string"}}}}}}}}}}}}}}},"status":{"type":"object","properties":{"conditions":{"description":"Conditions represent the latest available observation of the resource's current state.","type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","type":"string"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"Status is the status of the condition. Can be True, False, Unknown.","type":"string"},"type":{"description":"Type is the type of the condition.","type":"string"}}}},"etag":{"description":"\\`etag\\` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. An \\`etag\\` is returned in the response to \\`GetDashboard\\`, and users are expected to put that etag in the request to \\`UpdateDashboard\\` to ensure that their change will be applied to the same version of the Dashboard configuration. The field should not be passed during dashboard creation.","type":"string"},"observedGeneration":{"description":"ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.","type":"integer"}}}},"x-kubernetes-group-version-kind":[{"group":"monitoring.cnrm.cloud.google.com","kind":"MonitoringDashboard","version":"v1beta1"}]},"com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboardList":{"description":"MonitoringDashboardList is a list of MonitoringDashboard","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of monitoringdashboards. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"$ref":"#/components/schemas/com.google.cloud.cnrm.monitoring.v1beta1.MonitoringDashboard"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"monitoring.cnrm.cloud.google.com","kind":"MonitoringDashboardList","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"}]},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"creationTimestamp":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}]}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"}]},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"}}}}privateca_v1beta1_privatecacertificate.json000066400000000000000000001245741453663023200403700ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv3{"openapi":"3.0.0","info":{"title":"Kubernetes CRD Swagger","version":"v0.1.0"},"components":{"schemas":{"com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificate":{"type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"type":"object","required":["caPoolRef","lifetime","location","projectRef"],"properties":{"caPoolRef":{"description":"Immutable.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"The ca_pool for the resource\n\nAllowed value: The Google Cloud resource name of a `PrivateCACAPool` resource (format: `projects/{{project}}/locations/{{location}}/caPools/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"certificateAuthorityRef":{"description":"Immutable.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"The certificate authority for the resource\n\nAllowed value: The Google Cloud resource name of a `PrivateCACertificateAuthority` resource (format: `projects/{{project}}/locations/{{location}}/caPools/{{ca_pool}}/certificateAuthorities/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"certificateTemplateRef":{"description":"Immutable.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Immutable. The resource name for a CertificateTemplate used to issue this certificate, in the format `projects/*/locations/*/certificateTemplates/*`. If this is specified, the caller must have the necessary permission to use this template. If this is omitted, no template will be used. This template must be in the same location as the Certificate.\n\nAllowed value: The `selfLink` field of a `PrivateCACertificateTemplate` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"config":{"description":"Immutable. Immutable. A description of the certificate and key that does not require X.509 or ASN.1.","type":"object","required":["subjectConfig","x509Config"],"properties":{"publicKey":{"description":"Immutable. Optional. The public key that corresponds to this config. This is, for example, used when issuing Certificates, but not when creating a self-signed CertificateAuthority or CertificateAuthority CSR.","type":"object","required":["format","key"],"properties":{"format":{"description":"Immutable. Required. The format of the public key. Possible values: KEY_FORMAT_UNSPECIFIED, PEM","type":"string"},"key":{"description":"Immutable. Required. A public key. The padding and encoding must match with the `KeyFormat` value specified for the `format` field.","type":"string"}}},"subjectConfig":{"description":"Immutable. Required. Specifies some of the values in a certificate that are related to the subject.","type":"object","required":["subject"],"properties":{"subject":{"description":"Immutable. Required. Contains distinguished name fields such as the common name, location and organization.","type":"object","properties":{"commonName":{"description":"Immutable. The \"common name\" of the subject.","type":"string"},"countryCode":{"description":"Immutable. The country code of the subject.","type":"string"},"locality":{"description":"Immutable. The locality or city of the subject.","type":"string"},"organization":{"description":"Immutable. The organization of the subject.","type":"string"},"organizationalUnit":{"description":"Immutable. The organizational_unit of the subject.","type":"string"},"postalCode":{"description":"Immutable. The postal code of the subject.","type":"string"},"province":{"description":"Immutable. The province, territory, or regional state of the subject.","type":"string"},"streetAddress":{"description":"Immutable. The street address of the subject.","type":"string"}}},"subjectAltName":{"description":"Immutable. Optional. The subject alternative name fields.","type":"object","properties":{"dnsNames":{"description":"Immutable. Contains only valid, fully-qualified host names.","type":"array","items":{"type":"string"}},"emailAddresses":{"description":"Immutable. Contains only valid RFC 2822 E-mail addresses.","type":"array","items":{"type":"string"}},"ipAddresses":{"description":"Immutable. Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.","type":"array","items":{"type":"string"}},"uris":{"description":"Immutable. Contains only valid RFC 3986 URIs.","type":"array","items":{"type":"string"}}}}}},"x509Config":{"description":"Immutable. Required. Describes how some of the technical X.509 fields in a certificate should be populated.","type":"object","properties":{"additionalExtensions":{"description":"Immutable. Optional. Describes custom X.509 extensions.","type":"array","items":{"type":"object","required":["objectId","value"],"properties":{"critical":{"description":"Immutable. Optional. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).","type":"boolean"},"objectId":{"description":"Immutable. Required. The OID for this X.509 extension.","type":"object","required":["objectIdPath"],"properties":{"objectIdPath":{"description":"Immutable. Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer","format":"int64"}}}},"value":{"description":"Immutable. Required. The value of this X.509 extension.","type":"string"}}}},"aiaOcspServers":{"description":"Immutable. Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the \"Authority Information Access\" extension in the certificate.","type":"array","items":{"type":"string"}},"caOptions":{"description":"Immutable. Optional. Describes options in this X509Parameters that are relevant in a CA certificate.","type":"object","properties":{"isCa":{"description":"Immutable. Optional. When true, the \"CA\" in Basic Constraints extension will be set to true.","type":"boolean"},"maxIssuerPathLength":{"description":"Immutable. Optional. Refers to the \"path length constraint\" in Basic Constraints extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail.","type":"integer","format":"int64"},"nonCa":{"description":"Immutable. Optional. When true, the \"CA\" in Basic Constraints extension will be set to false. If both `is_ca` and `non_ca` are unset, the extension will be omitted from the CA certificate.","type":"boolean"},"zeroMaxIssuerPathLength":{"description":"Immutable. Optional. When true, the \"path length constraint\" in Basic Constraints extension will be set to 0. if both max_issuer_path_length and zero_max_issuer_path_length are unset, the max path length will be omitted from the CA certificate.","type":"boolean"}}},"keyUsage":{"description":"Immutable. Optional. Indicates the intended use for keys that correspond to a certificate.","type":"object","properties":{"baseKeyUsage":{"description":"Immutable. Describes high-level ways in which a key may be used.","type":"object","properties":{"certSign":{"description":"Immutable. The key may be used to sign certificates.","type":"boolean"},"contentCommitment":{"description":"Immutable. The key may be used for cryptographic commitments. Note that this may also be referred to as \"non-repudiation\".","type":"boolean"},"crlSign":{"description":"Immutable. The key may be used sign certificate revocation lists.","type":"boolean"},"dataEncipherment":{"description":"Immutable. The key may be used to encipher data.","type":"boolean"},"decipherOnly":{"description":"Immutable. The key may be used to decipher only.","type":"boolean"},"digitalSignature":{"description":"Immutable. The key may be used for digital signatures.","type":"boolean"},"encipherOnly":{"description":"Immutable. The key may be used to encipher only.","type":"boolean"},"keyAgreement":{"description":"Immutable. The key may be used in a key agreement protocol.","type":"boolean"},"keyEncipherment":{"description":"Immutable. The key may be used to encipher other keys.","type":"boolean"}}},"extendedKeyUsage":{"description":"Immutable. Detailed scenarios in which a key may be used.","type":"object","properties":{"clientAuth":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as \"TLS WWW client authentication\", though regularly used for non-WWW TLS.","type":"boolean"},"codeSigning":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as \"Signing of downloadable executable code client authentication\".","type":"boolean"},"emailProtection":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as \"Email protection\".","type":"boolean"},"ocspSigning":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as \"Signing OCSP responses\".","type":"boolean"},"serverAuth":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as \"TLS WWW server authentication\", though regularly used for non-WWW TLS.","type":"boolean"},"timeStamping":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as \"Binding the hash of an object to a time\".","type":"boolean"}}},"unknownExtendedKeyUsages":{"description":"Immutable. Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.","type":"array","items":{"type":"object","required":["objectIdPath"],"properties":{"objectIdPath":{"description":"Immutable. Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer","format":"int64"}}}}}}},"policyIds":{"description":"Immutable. Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.","type":"array","items":{"type":"object","required":["objectIdPath"],"properties":{"objectIdPath":{"description":"Immutable. Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer","format":"int64"}}}}}}}}},"lifetime":{"description":"Immutable. Required. Immutable. The desired lifetime of a certificate. Used to create the \"not_before_time\" and \"not_after_time\" fields inside an X.509 certificate. Note that the lifetime may be truncated if it would extend past the life of any certificate authority in the issuing chain.","type":"string"},"location":{"description":"Immutable. The location for the resource","type":"string"},"pemCsr":{"description":"Immutable. Immutable. A pem-encoded X.509 certificate signing request (CSR).","type":"string"},"projectRef":{"description":"Immutable. The Project that this resource belongs to.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"The project for the resource\n\nAllowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"resourceID":{"description":"Immutable. Optional. The name of the resource. Used for creation and acquisition. When unset, the value of `metadata.name` is used as the default.","type":"string"},"subjectMode":{"description":"Immutable. Immutable. Specifies how the Certificate's identity fields are to be decided. If this is omitted, the `DEFAULT` subject mode will be used. Possible values: SUBJECT_REQUEST_MODE_UNSPECIFIED, DEFAULT, REFLECTED_SPIFFE","type":"string"}}},"status":{"type":"object","properties":{"certificateDescription":{"description":"Output only. A structured description of the issued X.509 certificate.","type":"object","properties":{"aiaIssuingCertificateUrls":{"description":"Describes lists of issuer CA certificate URLs that appear in the \"Authority Information Access\" extension in the certificate.","type":"array","items":{"type":"string"}},"authorityKeyId":{"description":"Identifies the subject_key_id of the parent certificate, per https://tools.ietf.org/html/rfc5280#section-4.2.1.1","type":"object","properties":{"keyId":{"description":"Optional. The value of this KeyId encoded in lowercase hexadecimal. This is most likely the 160 bit SHA-1 hash of the public key.","type":"string"}}},"certFingerprint":{"description":"The hash of the x.509 certificate.","type":"object","properties":{"sha256Hash":{"description":"The SHA 256 hash, encoded in hexadecimal, of the DER x509 certificate.","type":"string"}}},"crlDistributionPoints":{"description":"Describes a list of locations to obtain CRL information, i.e. the DistributionPoint.fullName described by https://tools.ietf.org/html/rfc5280#section-4.2.1.13","type":"array","items":{"type":"string"}},"publicKey":{"description":"The public key that corresponds to an issued certificate.","type":"object","properties":{"format":{"description":"Required. The format of the public key. Possible values: KEY_FORMAT_UNSPECIFIED, PEM","type":"string"},"key":{"description":"Required. A public key. The padding and encoding must match with the `KeyFormat` value specified for the `format` field.","type":"string"}}},"subjectDescription":{"description":"Describes some of the values in a certificate that are related to the subject and lifetime.","type":"object","properties":{"hexSerialNumber":{"description":"The serial number encoded in lowercase hexadecimal.","type":"string"},"lifetime":{"description":"For convenience, the actual lifetime of an issued certificate.","type":"string"},"notAfterTime":{"description":"The time after which the certificate is expired. Per RFC 5280, the validity period for a certificate is the period of time from not_before_time through not_after_time, inclusive. Corresponds to 'not_before_time' + 'lifetime' - 1 second.","type":"string","format":"date-time"},"notBeforeTime":{"description":"The time at which the certificate becomes valid.","type":"string","format":"date-time"},"subject":{"description":"Contains distinguished name fields such as the common name, location and / organization.","type":"object","properties":{"commonName":{"description":"The \"common name\" of the subject.","type":"string"},"countryCode":{"description":"The country code of the subject.","type":"string"},"locality":{"description":"The locality or city of the subject.","type":"string"},"organization":{"description":"The organization of the subject.","type":"string"},"organizationalUnit":{"description":"The organizational_unit of the subject.","type":"string"},"postalCode":{"description":"The postal code of the subject.","type":"string"},"province":{"description":"The province, territory, or regional state of the subject.","type":"string"},"streetAddress":{"description":"The street address of the subject.","type":"string"}}},"subjectAltName":{"description":"The subject alternative name fields.","type":"object","properties":{"customSans":{"description":"Contains additional subject alternative name values.","type":"array","items":{"type":"object","properties":{"critical":{"description":"Optional. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).","type":"boolean"},"objectId":{"description":"Required. The OID for this X.509 extension.","type":"object","properties":{"objectIdPath":{"description":"Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer","format":"int64"}}}},"value":{"description":"Required. The value of this X.509 extension.","type":"string"}}}},"dnsNames":{"description":"Contains only valid, fully-qualified host names.","type":"array","items":{"type":"string"}},"emailAddresses":{"description":"Contains only valid RFC 2822 E-mail addresses.","type":"array","items":{"type":"string"}},"ipAddresses":{"description":"Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.","type":"array","items":{"type":"string"}},"uris":{"description":"Contains only valid RFC 3986 URIs.","type":"array","items":{"type":"string"}}}}}},"subjectKeyId":{"description":"Provides a means of identifiying certificates that contain a particular public key, per https://tools.ietf.org/html/rfc5280#section-4.2.1.2.","type":"object","properties":{"keyId":{"description":"Optional. The value of this KeyId encoded in lowercase hexadecimal. This is most likely the 160 bit SHA-1 hash of the public key.","type":"string"}}},"x509Description":{"description":"Describes some of the technical X.509 fields in a certificate.","type":"object","properties":{"additionalExtensions":{"description":"Optional. Describes custom X.509 extensions.","type":"array","items":{"type":"object","properties":{"critical":{"description":"Optional. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).","type":"boolean"},"objectId":{"description":"Required. The OID for this X.509 extension.","type":"object","properties":{"objectIdPath":{"description":"Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer","format":"int64"}}}},"value":{"description":"Required. The value of this X.509 extension.","type":"string"}}}},"aiaOcspServers":{"description":"Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the \"Authority Information Access\" extension in the certificate.","type":"array","items":{"type":"string"}},"caOptions":{"description":"Optional. Describes options in this X509Parameters that are relevant in a CA certificate.","type":"object","properties":{"isCa":{"description":"Optional. Refers to the \"CA\" X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.","type":"boolean"},"maxIssuerPathLength":{"description":"Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.","type":"integer","format":"int64"}}},"keyUsage":{"description":"Optional. Indicates the intended use for keys that correspond to a certificate.","type":"object","properties":{"baseKeyUsage":{"description":"Describes high-level ways in which a key may be used.","type":"object","properties":{"certSign":{"description":"The key may be used to sign certificates.","type":"boolean"},"contentCommitment":{"description":"The key may be used for cryptographic commitments. Note that this may also be referred to as \"non-repudiation\".","type":"boolean"},"crlSign":{"description":"The key may be used sign certificate revocation lists.","type":"boolean"},"dataEncipherment":{"description":"The key may be used to encipher data.","type":"boolean"},"decipherOnly":{"description":"The key may be used to decipher only.","type":"boolean"},"digitalSignature":{"description":"The key may be used for digital signatures.","type":"boolean"},"encipherOnly":{"description":"The key may be used to encipher only.","type":"boolean"},"keyAgreement":{"description":"The key may be used in a key agreement protocol.","type":"boolean"},"keyEncipherment":{"description":"The key may be used to encipher other keys.","type":"boolean"}}},"extendedKeyUsage":{"description":"Detailed scenarios in which a key may be used.","type":"object","properties":{"clientAuth":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as \"TLS WWW client authentication\", though regularly used for non-WWW TLS.","type":"boolean"},"codeSigning":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as \"Signing of downloadable executable code client authentication\".","type":"boolean"},"emailProtection":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as \"Email protection\".","type":"boolean"},"ocspSigning":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as \"Signing OCSP responses\".","type":"boolean"},"serverAuth":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as \"TLS WWW server authentication\", though regularly used for non-WWW TLS.","type":"boolean"},"timeStamping":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as \"Binding the hash of an object to a time\".","type":"boolean"}}},"unknownExtendedKeyUsages":{"description":"Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.","type":"array","items":{"type":"object","properties":{"objectIdPath":{"description":"Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer","format":"int64"}}}}}}},"policyIds":{"description":"Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.","type":"array","items":{"type":"object","properties":{"objectIdPath":{"description":"Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer","format":"int64"}}}}}}}}},"conditions":{"description":"Conditions represent the latest available observation of the resource's current state.","type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","type":"string"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"Status is the status of the condition. Can be True, False, Unknown.","type":"string"},"type":{"description":"Type is the type of the condition.","type":"string"}}}},"createTime":{"description":"Output only. The time at which this Certificate was created.","type":"string","format":"date-time"},"issuerCertificateAuthority":{"description":"Output only. The resource name of the issuing CertificateAuthority in the format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.","type":"string"},"observedGeneration":{"description":"ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.","type":"integer"},"pemCertificate":{"description":"Output only. The pem-encoded, signed X.509 certificate.","type":"string"},"pemCertificateChain":{"description":"Output only. The chain that may be used to verify the X.509 certificate. Expected to be in issuer-to-root order according to RFC 5246.","type":"array","items":{"type":"string"}},"revocationDetails":{"description":"Output only. Details regarding the revocation of this Certificate. This Certificate is considered revoked if and only if this field is present.","type":"object","properties":{"revocationState":{"description":"Indicates why a Certificate was revoked. Possible values: REVOCATION_REASON_UNSPECIFIED, KEY_COMPROMISE, CERTIFICATE_AUTHORITY_COMPROMISE, AFFILIATION_CHANGED, SUPERSEDED, CESSATION_OF_OPERATION, CERTIFICATE_HOLD, PRIVILEGE_WITHDRAWN, ATTRIBUTE_AUTHORITY_COMPROMISE","type":"string"},"revocationTime":{"description":"The time at which this Certificate was revoked.","type":"string","format":"date-time"}}},"updateTime":{"description":"Output only. The time at which this Certificate was updated.","type":"string","format":"date-time"}}}},"x-kubernetes-group-version-kind":[{"group":"privateca.cnrm.cloud.google.com","kind":"PrivateCACertificate","version":"v1beta1"}]},"com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateList":{"description":"PrivateCACertificateList is a list of PrivateCACertificate","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of privatecacertificates. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"$ref":"#/components/schemas/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificate"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"privateca.cnrm.cloud.google.com","kind":"PrivateCACertificateList","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"}]},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"creationTimestamp":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}]}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"}]},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"}}}}privateca_v1beta1_privatecacertificateauthority.json000066400000000000000000001315071453663023200423330ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv3{"openapi":"3.0.0","info":{"title":"Kubernetes CRD Swagger","version":"v0.1.0"},"components":{"schemas":{"com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthority":{"type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"type":"object","required":["caPoolRef","config","keySpec","lifetime","location","projectRef","type"],"properties":{"caPoolRef":{"description":"Immutable.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"The caPool for the resource\n\nAllowed value: The Google Cloud resource name of a `PrivateCACAPool` resource (format: `projects/{{project}}/locations/{{location}}/caPools/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"config":{"description":"Immutable. Required. Immutable. The config used to create a self-signed X.509 certificate or CSR.","type":"object","required":["subjectConfig","x509Config"],"properties":{"subjectConfig":{"description":"Immutable. Required. Specifies some of the values in a certificate that are related to the subject.","type":"object","required":["subject"],"properties":{"subject":{"description":"Immutable. Required. Contains distinguished name fields such as the common name, location and organization.","type":"object","properties":{"commonName":{"description":"Immutable. The \"common name\" of the subject.","type":"string"},"countryCode":{"description":"Immutable. The country code of the subject.","type":"string"},"locality":{"description":"Immutable. The locality or city of the subject.","type":"string"},"organization":{"description":"Immutable. The organization of the subject.","type":"string"},"organizationalUnit":{"description":"Immutable. The organizational_unit of the subject.","type":"string"},"postalCode":{"description":"Immutable. The postal code of the subject.","type":"string"},"province":{"description":"Immutable. The province, territory, or regional state of the subject.","type":"string"},"streetAddress":{"description":"Immutable. The street address of the subject.","type":"string"}}},"subjectAltName":{"description":"Immutable. Optional. The subject alternative name fields.","type":"object","properties":{"customSans":{"description":"Immutable. Contains additional subject alternative name values.","type":"array","items":{"type":"object","required":["objectId","value"],"properties":{"critical":{"description":"Immutable. Optional. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).","type":"boolean"},"objectId":{"description":"Immutable. Required. The OID for this X.509 extension.","type":"object","required":["objectIdPath"],"properties":{"objectIdPath":{"description":"Immutable. Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer","format":"int64"}}}},"value":{"description":"Immutable. Required. The value of this X.509 extension.","type":"string"}}}},"dnsNames":{"description":"Immutable. Contains only valid, fully-qualified host names.","type":"array","items":{"type":"string"}},"emailAddresses":{"description":"Immutable. Contains only valid RFC 2822 E-mail addresses.","type":"array","items":{"type":"string"}},"ipAddresses":{"description":"Immutable. Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.","type":"array","items":{"type":"string"}},"uris":{"description":"Immutable. Contains only valid RFC 3986 URIs.","type":"array","items":{"type":"string"}}}}}},"x509Config":{"description":"Immutable. Required. Describes how some of the technical X.509 fields in a certificate should be populated.","type":"object","properties":{"additionalExtensions":{"description":"Immutable. Optional. Describes custom X.509 extensions.","type":"array","items":{"type":"object","required":["objectId","value"],"properties":{"critical":{"description":"Immutable. Optional. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).","type":"boolean"},"objectId":{"description":"Immutable. Required. The OID for this X.509 extension.","type":"object","required":["objectIdPath"],"properties":{"objectIdPath":{"description":"Immutable. Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer","format":"int64"}}}},"value":{"description":"Immutable. Required. The value of this X.509 extension.","type":"string"}}}},"caOptions":{"description":"Immutable. Optional. Describes options in this X509Parameters that are relevant in a CA certificate.","type":"object","properties":{"isCa":{"description":"Immutable. Optional. Refers to the \"CA\" X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.","type":"boolean"},"maxIssuerPathLength":{"description":"Immutable. Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.","type":"integer","format":"int64"}}},"keyUsage":{"description":"Immutable. Optional. Indicates the intended use for keys that correspond to a certificate.","type":"object","properties":{"baseKeyUsage":{"description":"Immutable. Describes high-level ways in which a key may be used.","type":"object","properties":{"certSign":{"description":"Immutable. The key may be used to sign certificates.","type":"boolean"},"contentCommitment":{"description":"Immutable. The key may be used for cryptographic commitments. Note that this may also be referred to as \"non-repudiation\".","type":"boolean"},"crlSign":{"description":"Immutable. The key may be used sign certificate revocation lists.","type":"boolean"},"dataEncipherment":{"description":"Immutable. The key may be used to encipher data.","type":"boolean"},"decipherOnly":{"description":"Immutable. The key may be used to decipher only.","type":"boolean"},"digitalSignature":{"description":"Immutable. The key may be used for digital signatures.","type":"boolean"},"encipherOnly":{"description":"Immutable. The key may be used to encipher only.","type":"boolean"},"keyAgreement":{"description":"Immutable. The key may be used in a key agreement protocol.","type":"boolean"},"keyEncipherment":{"description":"Immutable. The key may be used to encipher other keys.","type":"boolean"}}},"extendedKeyUsage":{"description":"Immutable. Detailed scenarios in which a key may be used.","type":"object","properties":{"clientAuth":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as \"TLS WWW client authentication\", though regularly used for non-WWW TLS.","type":"boolean"},"codeSigning":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as \"Signing of downloadable executable code client authentication\".","type":"boolean"},"emailProtection":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as \"Email protection\".","type":"boolean"},"ocspSigning":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as \"Signing OCSP responses\".","type":"boolean"},"serverAuth":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as \"TLS WWW server authentication\", though regularly used for non-WWW TLS.","type":"boolean"},"timeStamping":{"description":"Immutable. Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as \"Binding the hash of an object to a time\".","type":"boolean"}}},"unknownExtendedKeyUsages":{"description":"Immutable. Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.","type":"array","items":{"type":"object","required":["objectIdPath"],"properties":{"objectIdPath":{"description":"Immutable. Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer","format":"int64"}}}}}}},"policyIds":{"description":"Immutable. Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.","type":"array","items":{"type":"object","required":["objectIdPath"],"properties":{"objectIdPath":{"description":"Immutable. Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer","format":"int64"}}}}}}}}},"gcsBucketRef":{"description":"Immutable.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Immutable. The name of a Cloud Storage bucket where this CertificateAuthority will publish content, such as the CA certificate and CRLs. This must be a bucket name, without any prefixes (such as `gs://`) or suffixes (such as `.googleapis.com`). For example, to use a bucket named `my-bucket`, you would simply specify `my-bucket`. If not specified, a managed bucket will be created.\n\nAllowed value: The Google Cloud resource name of a `StorageBucket` resource (format: `{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"keySpec":{"description":"Immutable. Required. Immutable. Used when issuing certificates for this CertificateAuthority. If this CertificateAuthority is a self-signed CertificateAuthority, this key is also used to sign the self-signed CA certificate. Otherwise, it is used to sign a CSR.","type":"object","properties":{"algorithm":{"description":"Immutable. The algorithm to use for creating a managed Cloud KMS key for a for a simplified experience. All managed keys will be have their ProtectionLevel as `HSM`. Possible values: RSA_PSS_2048_SHA256, RSA_PSS_3072_SHA256, RSA_PSS_4096_SHA256, RSA_PKCS1_2048_SHA256, RSA_PKCS1_3072_SHA256, RSA_PKCS1_4096_SHA256, EC_P256_SHA256, EC_P384_SHA384","type":"string"},"cloudKmsKeyVersionRef":{"description":"Immutable.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"The resource name for an existing Cloud KMS CryptoKeyVersion in the format `projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`. This option enables full flexibility in the key's capabilities and properties.","type":"string"},"name":{"description":"[WARNING] KMSCryptoKeyVersion not yet supported in Config Connector, use 'external' field to reference existing resources.\nName of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}},"lifetime":{"description":"Immutable. Required. The desired lifetime of the CA certificate. Used to create the \"not_before_time\" and \"not_after_time\" fields inside an X.509 certificate.","type":"string"},"location":{"description":"Immutable. The location for the resource","type":"string"},"projectRef":{"description":"Immutable. The Project that this resource belongs to.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"The project for the resource\n\nAllowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"resourceID":{"description":"Immutable. Optional. The name of the resource. Used for creation and acquisition. When unset, the value of `metadata.name` is used as the default.","type":"string"},"type":{"description":"Immutable. Required. Immutable. The Type of this CertificateAuthority. Possible values: SELF_SIGNED, SUBORDINATE","type":"string"}}},"status":{"type":"object","properties":{"accessUrls":{"description":"Output only. URLs for accessing content published by this CA, such as the CA certificate and CRLs.","type":"object","properties":{"caCertificateAccessUrl":{"description":"The URL where this CertificateAuthority's CA certificate is published. This will only be set for CAs that have been activated.","type":"string"},"crlAccessUrls":{"description":"The URLs where this CertificateAuthority's CRLs are published. This will only be set for CAs that have been activated.","type":"array","items":{"type":"string"}}}},"caCertificateDescriptions":{"description":"Output only. A structured description of this CertificateAuthority's CA certificate and its issuers. Ordered as self-to-root.","type":"array","items":{"type":"object","properties":{"aiaIssuingCertificateUrls":{"description":"Describes lists of issuer CA certificate URLs that appear in the \"Authority Information Access\" extension in the certificate.","type":"array","items":{"type":"string"}},"authorityKeyId":{"description":"Identifies the subject_key_id of the parent certificate, per https://tools.ietf.org/html/rfc5280#section-4.2.1.1","type":"object","properties":{"keyId":{"description":"Optional. The value of this KeyId encoded in lowercase hexadecimal. This is most likely the 160 bit SHA-1 hash of the public key.","type":"string"}}},"certFingerprint":{"description":"The hash of the x.509 certificate.","type":"object","properties":{"sha256Hash":{"description":"The SHA 256 hash, encoded in hexadecimal, of the DER x509 certificate.","type":"string"}}},"crlDistributionPoints":{"description":"Describes a list of locations to obtain CRL information, i.e. the DistributionPoint.fullName described by https://tools.ietf.org/html/rfc5280#section-4.2.1.13","type":"array","items":{"type":"string"}},"publicKey":{"description":"The public key that corresponds to an issued certificate.","type":"object","properties":{"format":{"description":"Required. The format of the public key. Possible values: PEM","type":"string"},"key":{"description":"Required. A public key. The padding and encoding must match with the `KeyFormat` value specified for the `format` field.","type":"string"}}},"subjectDescription":{"description":"Describes some of the values in a certificate that are related to the subject and lifetime.","type":"object","properties":{"hexSerialNumber":{"description":"The serial number encoded in lowercase hexadecimal.","type":"string"},"lifetime":{"description":"For convenience, the actual lifetime of an issued certificate.","type":"string"},"notAfterTime":{"description":"The time after which the certificate is expired. Per RFC 5280, the validity period for a certificate is the period of time from not_before_time through not_after_time, inclusive. Corresponds to 'not_before_time' + 'lifetime' - 1 second.","type":"string","format":"date-time"},"notBeforeTime":{"description":"The time at which the certificate becomes valid.","type":"string","format":"date-time"},"subject":{"description":"Contains distinguished name fields such as the common name, location and organization.","type":"object","properties":{"commonName":{"description":"The \"common name\" of the subject.","type":"string"},"countryCode":{"description":"The country code of the subject.","type":"string"},"locality":{"description":"The locality or city of the subject.","type":"string"},"organization":{"description":"The organization of the subject.","type":"string"},"organizationalUnit":{"description":"The organizational_unit of the subject.","type":"string"},"postalCode":{"description":"The postal code of the subject.","type":"string"},"province":{"description":"The province, territory, or regional state of the subject.","type":"string"},"streetAddress":{"description":"The street address of the subject.","type":"string"}}},"subjectAltName":{"description":"The subject alternative name fields.","type":"object","properties":{"customSans":{"description":"Contains additional subject alternative name values.","type":"array","items":{"type":"object","properties":{"critical":{"description":"Optional. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).","type":"boolean"},"objectId":{"description":"Required. The OID for this X.509 extension.","type":"object","properties":{"objectIdPath":{"description":"Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer","format":"int64"}}}},"value":{"description":"Required. The value of this X.509 extension.","type":"string"}}}},"dnsNames":{"description":"Contains only valid, fully-qualified host names.","type":"array","items":{"type":"string"}},"emailAddresses":{"description":"Contains only valid RFC 2822 E-mail addresses.","type":"array","items":{"type":"string"}},"ipAddresses":{"description":"Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.","type":"array","items":{"type":"string"}},"uris":{"description":"Contains only valid RFC 3986 URIs.","type":"array","items":{"type":"string"}}}}}},"subjectKeyId":{"description":"Provides a means of identifiying certificates that contain a particular public key, per https://tools.ietf.org/html/rfc5280#section-4.2.1.2.","type":"object","properties":{"keyId":{"description":"Optional. The value of this KeyId encoded in lowercase hexadecimal. This is most likely the 160 bit SHA-1 hash of the public key.","type":"string"}}},"x509Description":{"description":"Describes some of the technical X.509 fields in a certificate.","type":"object","properties":{"additionalExtensions":{"description":"Optional. Describes custom X.509 extensions.","type":"array","items":{"type":"object","properties":{"critical":{"description":"Optional. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).","type":"boolean"},"objectId":{"description":"Required. The OID for this X.509 extension.","type":"object","properties":{"objectIdPath":{"description":"Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer","format":"int64"}}}},"value":{"description":"Required. The value of this X.509 extension.","type":"string"}}}},"aiaOcspServers":{"description":"Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the \"Authority Information Access\" extension in the certificate.","type":"array","items":{"type":"string"}},"caOptions":{"description":"Optional. Describes options in this X509Parameters that are relevant in a CA certificate.","type":"object","properties":{"isCa":{"description":"Optional. Refers to the \"CA\" X.509 extension, which is a boolean value. When this value is missing, the extension will be omitted from the CA certificate.","type":"boolean"},"maxIssuerPathLength":{"description":"Optional. Refers to the path length restriction X.509 extension. For a CA certificate, this value describes the depth of subordinate CA certificates that are allowed. If this value is less than 0, the request will fail. If this value is missing, the max path length will be omitted from the CA certificate.","type":"integer","format":"int64"}}},"keyUsage":{"description":"Optional. Indicates the intended use for keys that correspond to a certificate.","type":"object","properties":{"baseKeyUsage":{"description":"Describes high-level ways in which a key may be used.","type":"object","properties":{"certSign":{"description":"The key may be used to sign certificates.","type":"boolean"},"contentCommitment":{"description":"The key may be used for cryptographic commitments. Note that this may also be referred to as \"non-repudiation\".","type":"boolean"},"crlSign":{"description":"The key may be used sign certificate revocation lists.","type":"boolean"},"dataEncipherment":{"description":"The key may be used to encipher data.","type":"boolean"},"decipherOnly":{"description":"The key may be used to decipher only.","type":"boolean"},"digitalSignature":{"description":"The key may be used for digital signatures.","type":"boolean"},"encipherOnly":{"description":"The key may be used to encipher only.","type":"boolean"},"keyAgreement":{"description":"The key may be used in a key agreement protocol.","type":"boolean"},"keyEncipherment":{"description":"The key may be used to encipher other keys.","type":"boolean"}}},"extendedKeyUsage":{"description":"Detailed scenarios in which a key may be used.","type":"object","properties":{"clientAuth":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as \"TLS WWW client authentication\", though regularly used for non-WWW TLS.","type":"boolean"},"codeSigning":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as \"Signing of downloadable executable code client authentication\".","type":"boolean"},"emailProtection":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as \"Email protection\".","type":"boolean"},"ocspSigning":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as \"Signing OCSP responses\".","type":"boolean"},"serverAuth":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as \"TLS WWW server authentication\", though regularly used for non-WWW TLS.","type":"boolean"},"timeStamping":{"description":"Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as \"Binding the hash of an object to a time\".","type":"boolean"}}},"unknownExtendedKeyUsages":{"description":"Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.","type":"array","items":{"type":"object","properties":{"objectIdPath":{"description":"Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer","format":"int64"}}}}}}},"policyIds":{"description":"Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.","type":"array","items":{"type":"object","properties":{"objectIdPath":{"description":"Required. The parts of an OID path. The most significant parts of the path come first.","type":"array","items":{"type":"integer","format":"int64"}}}}}}}}}},"conditions":{"description":"Conditions represent the latest available observation of the resource's current state.","type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","type":"string"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"Status is the status of the condition. Can be True, False, Unknown.","type":"string"},"type":{"description":"Type is the type of the condition.","type":"string"}}}},"config":{"type":"object","properties":{"publicKey":{"description":"Optional. The public key that corresponds to this config. This is, for example, used when issuing Certificates, but not when creating a self-signed CertificateAuthority or CertificateAuthority CSR.","type":"object","properties":{"format":{"description":"Required. The format of the public key. Possible values: PEM","type":"string"},"key":{"description":"Required. A public key. The padding and encoding must match with the `KeyFormat` value specified for the `format` field.","type":"string"}}},"x509Config":{"type":"object","properties":{"aiaOcspServers":{"description":"Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the \"Authority Information Access\" extension in the certificate.","type":"array","items":{"type":"string"}}}}}},"createTime":{"description":"Output only. The time at which this CertificateAuthority was created.","type":"string","format":"date-time"},"deleteTime":{"description":"Output only. The time at which this CertificateAuthority was soft deleted, if it is in the DELETED state.","type":"string","format":"date-time"},"expireTime":{"description":"Output only. The time at which this CertificateAuthority will be permanently purged, if it is in the DELETED state.","type":"string","format":"date-time"},"observedGeneration":{"description":"ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.","type":"integer"},"pemCaCertificates":{"description":"Output only. This CertificateAuthority's certificate chain, including the current CertificateAuthority's certificate. Ordered such that the root issuer is the final element (consistent with RFC 5246). For a self-signed CA, this will only list the current CertificateAuthority's certificate.","type":"array","items":{"type":"string"}},"state":{"description":"Output only. The State for this CertificateAuthority. Possible values: ENABLED, DISABLED, STAGED, AWAITING_USER_ACTIVATION, DELETED","type":"string"},"subordinateConfig":{"description":"Optional. If this is a subordinate CertificateAuthority, this field will be set with the subordinate configuration, which describes its issuers. This may be updated, but this CertificateAuthority must continue to validate.","type":"object","properties":{"certificateAuthority":{"description":"Required. This can refer to a CertificateAuthority in the same project that was used to create a subordinate CertificateAuthority. This field is used for information and usability purposes only. The resource name is in the format `projects/*/locations/*/caPools/*/certificateAuthorities/*`.","type":"string"},"pemIssuerChain":{"description":"Required. Contains the PEM certificate chain for the issuers of this CertificateAuthority, but not pem certificate for this CA itself.","type":"object","properties":{"pemCertificates":{"description":"Required. Expected to be in leaf-to-root order according to RFC 5246.","type":"array","items":{"type":"string"}}}}}},"tier":{"description":"Output only. The CaPool.Tier of the CaPool that includes this CertificateAuthority. Possible values: ENTERPRISE, DEVOPS","type":"string"},"updateTime":{"description":"Output only. The time at which this CertificateAuthority was last updated.","type":"string","format":"date-time"}}}},"x-kubernetes-group-version-kind":[{"group":"privateca.cnrm.cloud.google.com","kind":"PrivateCACertificateAuthority","version":"v1beta1"}]},"com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthorityList":{"description":"PrivateCACertificateAuthorityList is a list of PrivateCACertificateAuthority","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of privatecacertificateauthorities. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"$ref":"#/components/schemas/com.google.cloud.cnrm.privateca.v1beta1.PrivateCACertificateAuthority"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"privateca.cnrm.cloud.google.com","kind":"PrivateCACertificateAuthorityList","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"}]},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"creationTimestamp":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}]}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"}]},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"}}}}storagetransfer_v1beta1_storagetransferjob.json000066400000000000000000001005071453663023200413340ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv3{"openapi":"3.0.0","info":{"title":"Kubernetes CRD Swagger","version":"v0.1.0"},"components":{"schemas":{"com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJob":{"type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}]},"spec":{"type":"object","required":["description","transferSpec"],"properties":{"description":{"description":"Unique description to identify the Transfer Job.","type":"string"},"notificationConfig":{"description":"Notification configuration.","type":"object","required":["payloadFormat","topicRef"],"properties":{"eventTypes":{"description":"Event types for which a notification is desired. If empty, send notifications for all event types. The valid types are \"TRANSFER_OPERATION_SUCCESS\", \"TRANSFER_OPERATION_FAILED\", \"TRANSFER_OPERATION_ABORTED\".","type":"array","items":{"type":"string"}},"payloadFormat":{"description":"The desired format of the notification message payloads. One of \"NONE\" or \"JSON\".","type":"string"},"topicRef":{"description":"The PubSubTopic to which to publish notifications.","type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: string of the format `projects/{{project}}/topics/{{value}}`, where {{value}} is the `name` field of a `PubSubTopic` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}}}},"resourceID":{"description":"Immutable. Optional. The service-generated name of the resource. Used for acquisition only. Leave unset to create a new resource.","type":"string"},"schedule":{"description":"Schedule specification defining when the Transfer Job should be scheduled to start, end and what time to run.","type":"object","required":["scheduleStartDate"],"properties":{"repeatInterval":{"description":"Interval between the start of each scheduled transfer. If unspecified, the default value is 24 hours. This value may not be less than 1 hour. A duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".","type":"string"},"scheduleEndDate":{"description":"Immutable. The last day the recurring transfer will be run. If schedule_end_date is the same as schedule_start_date, the transfer will be executed only once.","type":"object","required":["day","month","year"],"properties":{"day":{"description":"Immutable. Day of month. Must be from 1 to 31 and valid for the year and month.","type":"integer"},"month":{"description":"Immutable. Month of year. Must be from 1 to 12.","type":"integer"},"year":{"description":"Immutable. Year of date. Must be from 1 to 9999.","type":"integer"}}},"scheduleStartDate":{"description":"Immutable. The first day the recurring transfer is scheduled to run. If schedule_start_date is in the past, the transfer will run for the first time on the following day.","type":"object","required":["day","month","year"],"properties":{"day":{"description":"Immutable. Day of month. Must be from 1 to 31 and valid for the year and month.","type":"integer"},"month":{"description":"Immutable. Month of year. Must be from 1 to 12.","type":"integer"},"year":{"description":"Immutable. Year of date. Must be from 1 to 9999.","type":"integer"}}},"startTimeOfDay":{"description":"Immutable. The time in UTC at which the transfer will be scheduled to start in a day. Transfers may start later than this time. If not specified, recurring and one-time transfers that are scheduled to run today will run immediately; recurring transfers that are scheduled to run on a future date will start at approximately midnight UTC on that date. Note that when configuring a transfer with the Cloud Platform Console, the transfer's start time in a day is specified in your local timezone.","type":"object","required":["hours","minutes","nanos","seconds"],"properties":{"hours":{"description":"Immutable. Hours of day in 24 hour format. Should be from 0 to 23.","type":"integer"},"minutes":{"description":"Immutable. Minutes of hour of day. Must be from 0 to 59.","type":"integer"},"nanos":{"description":"Immutable. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.","type":"integer"},"seconds":{"description":"Immutable. Seconds of minutes of the time. Must normally be from 0 to 59.","type":"integer"}}}}},"status":{"description":"Status of the job. Default: ENABLED. NOTE: The effect of the new job status takes place during a subsequent job run. For example, if you change the job status from ENABLED to DISABLED, and an operation spawned by the transfer is running, the status change would not affect the current operation.","type":"string"},"transferSpec":{"description":"Transfer specification.","type":"object","properties":{"awsS3DataSource":{"description":"An AWS S3 data source.","type":"object","required":["bucketName"],"properties":{"awsAccessKey":{"description":"AWS credentials block.","type":"object","required":["accessKeyId","secretAccessKey"],"properties":{"accessKeyId":{"description":"AWS Key ID.","type":"object","oneOf":[{"required":["value"],"not":{"required":["valueFrom"]}},{"required":["valueFrom"],"not":{"required":["value"]}}],"properties":{"value":{"description":"Value of the field. Cannot be used if 'valueFrom' is specified.","type":"string"},"valueFrom":{"description":"Source for the field's value. Cannot be used if 'value' is specified.","type":"object","properties":{"secretKeyRef":{"description":"Reference to a value with the given key in the given Secret in the resource's namespace.","type":"object","required":["name","key"],"properties":{"key":{"description":"Key that identifies the value to be extracted.","type":"string"},"name":{"description":"Name of the Secret to extract a value from.","type":"string"}}}}}}},"secretAccessKey":{"description":"AWS Secret Access Key.","type":"object","oneOf":[{"required":["value"],"not":{"required":["valueFrom"]}},{"required":["valueFrom"],"not":{"required":["value"]}}],"properties":{"value":{"description":"Value of the field. Cannot be used if 'valueFrom' is specified.","type":"string"},"valueFrom":{"description":"Source for the field's value. Cannot be used if 'value' is specified.","type":"object","properties":{"secretKeyRef":{"description":"Reference to a value with the given key in the given Secret in the resource's namespace.","type":"object","required":["name","key"],"properties":{"key":{"description":"Key that identifies the value to be extracted.","type":"string"},"name":{"description":"Name of the Secret to extract a value from.","type":"string"}}}}}}}}},"bucketName":{"description":"S3 Bucket name.","type":"string"},"roleArn":{"description":"The Amazon Resource Name (ARN) of the role to support temporary credentials via 'AssumeRoleWithWebIdentity'. For more information about ARNs, see [IAM ARNs](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns). When a role ARN is provided, Transfer Service fetches temporary credentials for the session using a 'AssumeRoleWithWebIdentity' call for the provided role using the [GoogleServiceAccount][] for this project.","type":"string"}}},"azureBlobStorageDataSource":{"description":"An Azure Blob Storage data source.","type":"object","required":["azureCredentials","container","storageAccount"],"properties":{"azureCredentials":{"description":" Credentials used to authenticate API requests to Azure.","type":"object","required":["sasToken"],"properties":{"sasToken":{"description":"Azure shared access signature.","type":"object","oneOf":[{"required":["value"],"not":{"required":["valueFrom"]}},{"required":["valueFrom"],"not":{"required":["value"]}}],"properties":{"value":{"description":"Value of the field. Cannot be used if 'valueFrom' is specified.","type":"string"},"valueFrom":{"description":"Source for the field's value. Cannot be used if 'value' is specified.","type":"object","properties":{"secretKeyRef":{"description":"Reference to a value with the given key in the given Secret in the resource's namespace.","type":"object","required":["name","key"],"properties":{"key":{"description":"Key that identifies the value to be extracted.","type":"string"},"name":{"description":"Name of the Secret to extract a value from.","type":"string"}}}}}}}}},"container":{"description":"The container to transfer from the Azure Storage account.","type":"string"},"path":{"description":"Root path to transfer objects. Must be an empty string or full path name that ends with a '/'. This field is treated as an object prefix. As such, it should generally not begin with a '/'.","type":"string"},"storageAccount":{"description":"The name of the Azure Storage account.","type":"string"}}},"gcsDataSink":{"description":"A Google Cloud Storage data sink.","type":"object","required":["bucketRef"],"properties":{"bucketRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: The `name` field of a `StorageBucket` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"path":{"description":"Google Cloud Storage path in bucket to transfer.","type":"string"}}},"gcsDataSource":{"description":"A Google Cloud Storage data source.","type":"object","required":["bucketRef"],"properties":{"bucketRef":{"type":"object","oneOf":[{"required":["name"],"not":{"required":["external"]}},{"required":["external"],"not":{"anyOf":[{"required":["name"]},{"required":["namespace"]}]}}],"properties":{"external":{"description":"Allowed value: The `name` field of a `StorageBucket` resource.","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"}}},"path":{"description":"Google Cloud Storage path in bucket to transfer.","type":"string"}}},"httpDataSource":{"description":"A HTTP URL data source.","type":"object","required":["listUrl"],"properties":{"listUrl":{"description":"The URL that points to the file that stores the object list entries. This file must allow public access. Currently, only URLs with HTTP and HTTPS schemes are supported.","type":"string"}}},"objectConditions":{"description":"Only objects that satisfy these object conditions are included in the set of data source and data sink objects. Object conditions based on objects' last_modification_time do not exclude objects in a data sink.","type":"object","properties":{"excludePrefixes":{"description":"exclude_prefixes must follow the requirements described for include_prefixes.","type":"array","items":{"type":"string"}},"includePrefixes":{"description":"If include_refixes is specified, objects that satisfy the object conditions must have names that start with one of the include_prefixes and that do not start with any of the exclude_prefixes. If include_prefixes is not specified, all objects except those that have names starting with one of the exclude_prefixes must satisfy the object conditions.","type":"array","items":{"type":"string"}},"maxTimeElapsedSinceLastModification":{"description":"A duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".","type":"string"},"minTimeElapsedSinceLastModification":{"description":"A duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".","type":"string"}}},"posixDataSink":{"description":"A POSIX filesystem data sink.","type":"object","required":["rootDirectory"],"properties":{"rootDirectory":{"description":"Root directory path to the filesystem.","type":"string"}}},"posixDataSource":{"description":"A POSIX filesystem data source.","type":"object","required":["rootDirectory"],"properties":{"rootDirectory":{"description":"Root directory path to the filesystem.","type":"string"}}},"transferOptions":{"description":"Characteristics of how to treat files from datasource and sink during job. If the option delete_objects_unique_in_sink is true, object conditions based on objects' last_modification_time are ignored and do not exclude objects in a data source or a data sink.","type":"object","properties":{"deleteObjectsFromSourceAfterTransfer":{"description":"Whether objects should be deleted from the source after they are transferred to the sink. Note that this option and delete_objects_unique_in_sink are mutually exclusive.","type":"boolean"},"deleteObjectsUniqueInSink":{"description":"Whether objects that exist only in the sink should be deleted. Note that this option and delete_objects_from_source_after_transfer are mutually exclusive.","type":"boolean"},"overwriteObjectsAlreadyExistingInSink":{"description":"Whether overwriting objects that already exist in the sink is allowed.","type":"boolean"},"overwriteWhen":{"description":"When to overwrite objects that already exist in the sink. If not set, overwrite behavior is determined by overwriteObjectsAlreadyExistingInSink.","type":"string"}}}}}}},"status":{"type":"object","properties":{"conditions":{"description":"Conditions represent the latest available observation of the resource's current state.","type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","type":"string"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"Status is the status of the condition. Can be True, False, Unknown.","type":"string"},"type":{"description":"Type is the type of the condition.","type":"string"}}}},"creationTime":{"description":"When the Transfer Job was created.","type":"string"},"deletionTime":{"description":"When the Transfer Job was deleted.","type":"string"},"lastModificationTime":{"description":"When the Transfer Job was last modified.","type":"string"},"name":{"description":"The name of the Transfer Job.","type":"string"},"observedGeneration":{"description":"ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.","type":"integer"}}}},"x-kubernetes-group-version-kind":[{"group":"storagetransfer.cnrm.cloud.google.com","kind":"StorageTransferJob","version":"v1beta1"}]},"com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJobList":{"description":"StorageTransferJobList is a list of StorageTransferJob","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of storagetransferjobs. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"$ref":"#/components/schemas/com.google.cloud.cnrm.storagetransfer.v1beta1.StorageTransferJob"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}]}},"x-kubernetes-group-version-kind":[{"group":"storagetransfer.cnrm.cloud.google.com","kind":"StorageTransferJobList","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"}]},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"creationTimestamp":{"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","default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}]},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}]}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"allOf":[{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"}]},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"}}}}vpcaccess_v1beta1_vpcaccessconnector.json000066400000000000000000000770131453663023200400630ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/crds/openapiv3{ "openapi": "3.0.0", "info": { "title": "Kubernetes CRD Swagger", "version": "v0.1.0" }, "components": { "schemas": { "com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnector": { "type": "object", "required": ["spec"], "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } ] }, "spec": { "type": "object", "required": ["location", "projectRef"], "properties": { "ipCidrRange": { "description": "Immutable. The range of internal addresses that follows RFC 4632 notation. Example: `10.132.0.0/28`.", "type": "string" }, "location": { "description": "Immutable. The location for the resource", "type": "string" }, "machineType": { "description": "Immutable. Machine type of VM Instance underlying connector. Default is e2-micro", "type": "string" }, "maxInstances": { "description": "Immutable. Maximum value of instances in autoscaling group underlying the connector.", "type": "integer", "format": "int64" }, "maxThroughput": { "description": "Immutable. Maximum throughput of the connector in Mbps. Default is 200, max is 1000.", "type": "integer", "format": "int64" }, "minInstances": { "description": "Immutable. Minimum value of instances in autoscaling group underlying the connector.", "type": "integer", "format": "int64" }, "minThroughput": { "description": "Immutable. Minimum throughput of the connector in Mbps. Default and min is 200.", "type": "integer", "format": "int64" }, "networkRef": { "description": "Immutable.", "type": "object", "oneOf": [ { "required": ["name"], "not": { "required": ["external"] } }, { "required": ["external"], "not": { "anyOf": [ { "required": ["name"] }, { "required": ["namespace"] } ] } } ], "properties": { "external": { "description": "Name of a VPC network.\n\nAllowed value: The Google Cloud resource name of a `ComputeNetwork` resource (format: `projects/{{project}}/global/networks/{{name}}`).", "type": "string" }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "namespace": { "description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", "type": "string" } } }, "projectRef": { "description": "Immutable. The Project that this resource belongs to.", "type": "object", "oneOf": [ { "required": ["name"], "not": { "required": ["external"] } }, { "required": ["external"], "not": { "anyOf": [ { "required": ["name"] }, { "required": ["namespace"] } ] } } ], "properties": { "external": { "description": "The project for the resource\n\nAllowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).", "type": "string" }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "namespace": { "description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", "type": "string" } } }, "resourceID": { "description": "Immutable. Optional. The name of the resource. Used for creation and acquisition. When unset, the value of `metadata.name` is used as the default.", "type": "string" }, "subnet": { "description": "Immutable. The subnet in which to house the VPC Access Connector.", "type": "object", "properties": { "nameRef": { "description": "Immutable.", "type": "object", "oneOf": [ { "required": ["name"], "not": { "required": ["external"] } }, { "required": ["external"], "not": { "anyOf": [ { "required": ["name"] }, { "required": ["namespace"] } ] } } ], "properties": { "external": { "description": "Subnet name (relative, not fully qualified). E.g. if the full subnet selfLink is https://compute.googleapis.com/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetName} the correct input for this field would be: {subnetName}\n\nAllowed value: The Google Cloud resource name of a `ComputeSubnetwork` resource (format: `projects/{{project}}/regions/{{region}}/subnetworks/{{name}}`).", "type": "string" }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "namespace": { "description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", "type": "string" } } }, "projectRef": { "description": "Immutable.", "type": "object", "oneOf": [ { "required": ["name"], "not": { "required": ["external"] } }, { "required": ["external"], "not": { "anyOf": [ { "required": ["name"] }, { "required": ["namespace"] } ] } } ], "properties": { "external": { "description": "Project in which the subnet exists. If not set, this project is assumed to be the project for which the connector create request was issued.\n\nAllowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).", "type": "string" }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "namespace": { "description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", "type": "string" } } } } } } }, "status": { "type": "object", "properties": { "conditions": { "description": "Conditions represent the latest available observation of the resource's current state.", "type": "array", "items": { "type": "object", "properties": { "lastTransitionTime": { "description": "Last time the condition transitioned from one status to another.", "type": "string" }, "message": { "description": "Human-readable message indicating details about last transition.", "type": "string" }, "reason": { "description": "Unique, one-word, CamelCase reason for the condition's last transition.", "type": "string" }, "status": { "description": "Status is the status of the condition. Can be True, False, Unknown.", "type": "string" }, "type": { "description": "Type is the type of the condition.", "type": "string" } } } }, "connectedProjects": { "description": "Output only. List of projects using the connector.", "type": "array", "items": { "type": "string" } }, "observedGeneration": { "description": "ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.", "type": "integer" }, "state": { "description": "Output only. State of the VPC access connector. Possible values: STATE_UNSPECIFIED, READY, CREATING, DELETING, ERROR, UPDATING", "type": "string" } } } }, "x-kubernetes-group-version-kind": [ { "group": "vpcaccess.cnrm.cloud.google.com", "kind": "VPCAccessConnector", "version": "v1beta1" } ] }, "com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnectorList": { "description": "VPCAccessConnectorList is a list of VPCAccessConnector", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "List of vpcaccessconnectors. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md", "type": "array", "items": { "$ref": "#/components/schemas/com.google.cloud.cnrm.vpcaccess.v1beta1.VPCAccessConnector" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } ] } }, "x-kubernetes-group-version-kind": [ { "group": "vpcaccess.cnrm.cloud.google.com", "kind": "VPCAccessConnectorList", "version": "v1beta1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1": { "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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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", "type": "object" }, "io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta": { "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", "type": "object", "properties": { "continue": { "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.", "type": "string" }, "remainingItemCount": { "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.", "type": "integer", "format": "int64" }, "resourceVersion": { "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", "type": "string" }, "selfLink": { "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry": { "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", "type": "object", "properties": { "apiVersion": { "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.", "type": "string" }, "fieldsType": { "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", "type": "string" }, "fieldsV1": { "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1" } ] }, "manager": { "description": "Manager is an identifier of the workflow managing these fields.", "type": "string" }, "operation": { "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'.", "type": "string" }, "subresource": { "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.", "type": "string" }, "time": { "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.", "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } ] } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta": { "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", "type": "object", "properties": { "annotations": { "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: http://kubernetes.io/docs/user-guide/annotations", "type": "object", "additionalProperties": { "type": "string", "default": "" } }, "creationTimestamp": { "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", "default": {}, "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } ] }, "deletionGracePeriodSeconds": { "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.", "type": "integer", "format": "int64" }, "deletionTimestamp": { "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", "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } ] }, "finalizers": { "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.", "type": "array", "items": { "type": "string", "default": "" }, "x-kubernetes-patch-strategy": "merge" }, "generateName": { "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", "type": "string" }, "generation": { "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", "type": "integer", "format": "int64" }, "labels": { "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: http://kubernetes.io/docs/user-guide/labels", "type": "object", "additionalProperties": { "type": "string", "default": "" } }, "managedFields": { "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.", "type": "array", "items": { "default": {}, "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry" } ] } }, "name": { "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: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string" }, "namespace": { "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: http://kubernetes.io/docs/user-guide/namespaces", "type": "string" }, "ownerReferences": { "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.", "type": "array", "items": { "default": {}, "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference" } ] }, "x-kubernetes-patch-merge-key": "uid", "x-kubernetes-patch-strategy": "merge" }, "resourceVersion": { "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", "type": "string" }, "selfLink": { "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", "type": "string" }, "uid": { "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: http://kubernetes.io/docs/user-guide/identifiers#uids", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference": { "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.", "type": "object", "required": ["apiVersion", "kind", "name", "uid"], "properties": { "apiVersion": { "description": "API version of the referent.", "type": "string", "default": "" }, "blockOwnerDeletion": { "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.", "type": "boolean" }, "controller": { "description": "If true, this reference points to the managing controller.", "type": "boolean" }, "kind": { "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string", "default": "" }, "name": { "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string", "default": "" }, "uid": { "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", "type": "string", "default": "" } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.apimachinery.pkg.apis.meta.v1.Time": { "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.", "type": "string", "format": "date-time" } } } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/defaults.json000066400000000000000000000011271453663023200276410ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "title": "Atomic Types", "version": "v1.0.0" }, "paths": {}, "definitions": { "List": { "type": "array", "x-kubernetes-list-type": "map", "x-kubernetes-list-map-keys": ["foo"], "default": {"foo": "bar"}, "items": { "type": "object", "properties": { "foo": { "default": "buz", "type": "string" } } } } } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/defaults.yaml000066400000000000000000000012421453663023200276300ustar00rootroot00000000000000types: - name: List list: elementType: map: fields: - name: foo type: scalar: string default: buz elementRelationship: associative keys: - foo - name: __untyped_atomic_ scalar: untyped list: elementType: namedType: __untyped_atomic_ elementRelationship: atomic map: elementType: namedType: __untyped_atomic_ elementRelationship: atomic - name: __untyped_deduced_ scalar: untyped list: elementType: namedType: __untyped_atomic_ elementRelationship: atomic map: elementType: namedType: __untyped_deduced_ elementRelationship: separable golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/field-level-annotation.json000066400000000000000000000106061453663023200323740ustar00rootroot00000000000000{ "definitions": { "io.k8s.api.core.v1.ObjectReference": { "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", "properties": { "apiVersion": { "description": "API version of the referent.", "type": "string" }, "fieldPath": { "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.", "type": "string" }, "kind": { "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "namespace": { "description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", "type": "string" }, "resourceVersion": { "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", "type": "string" }, "uid": { "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", "type": "string" } }, "type": "object" }, "io.k8s.api.core.v1.EndpointAddress": { "description": "EndpointAddress is a tuple that describes single IP address.", "properties": { "hostname": { "description": "The Hostname of this endpoint", "type": "string" }, "ip": { "description": "The IP of this endpoint. May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), or link-local multicast ((224.0.0.0/24). IPv6 is also accepted but not fully supported on all platforms. Also, certain kubernetes components, like kube-proxy, are not IPv6 ready.", "type": "string" }, "nodeName": { "description": "Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.", "type": "string" }, "targetRef": { "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference", "description": "Reference to object providing the endpoint.", "x-kubernetes-map-type": "atomic" } }, "required": [ "ip" ], "type": "object", "x-kubernetes-map-type": "atomic" } }, "info": { "title": "Kubernetes", "version": "unversioned" }, "paths": {}, "security": [ { "BearerToken": [] } ], "securityDefinitions": { "BearerToken": { "description": "Bearer Token authentication", "in": "header", "name": "authorization", "type": "apiKey" } }, "swagger": "2.0" }golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/new-schema.yaml000066400000000000000000006470321453663023200300650ustar00rootroot00000000000000types: - name: io.k8s.api.admissionregistration.v1.MutatingWebhook map: fields: - name: admissionReviewVersions type: list: elementType: scalar: string elementRelationship: atomic - name: clientConfig type: namedType: io.k8s.api.admissionregistration.v1.WebhookClientConfig - name: failurePolicy type: scalar: string - name: matchPolicy type: scalar: string - name: name type: scalar: string - name: namespaceSelector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: objectSelector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: reinvocationPolicy type: scalar: string - name: rules type: list: elementType: namedType: io.k8s.api.admissionregistration.v1.RuleWithOperations elementRelationship: atomic - name: sideEffects type: scalar: string - name: timeoutSeconds type: scalar: numeric - name: io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: webhooks type: list: elementType: namedType: io.k8s.api.admissionregistration.v1.MutatingWebhook elementRelationship: associative keys: - name - name: io.k8s.api.admissionregistration.v1.MutatingWebhookConfigurationList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.admissionregistration.v1.RuleWithOperations map: fields: - name: apiGroups type: list: elementType: scalar: string elementRelationship: atomic - name: apiVersions type: list: elementType: scalar: string elementRelationship: atomic - name: operations type: list: elementType: scalar: string elementRelationship: atomic - name: resources type: list: elementType: scalar: string elementRelationship: atomic - name: scope type: scalar: string - name: io.k8s.api.admissionregistration.v1.ServiceReference map: fields: - name: name type: scalar: string - name: namespace type: scalar: string - name: path type: scalar: string - name: port type: scalar: numeric - name: io.k8s.api.admissionregistration.v1.ValidatingWebhook map: fields: - name: admissionReviewVersions type: list: elementType: scalar: string elementRelationship: atomic - name: clientConfig type: namedType: io.k8s.api.admissionregistration.v1.WebhookClientConfig - name: failurePolicy type: scalar: string - name: matchPolicy type: scalar: string - name: name type: scalar: string - name: namespaceSelector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: objectSelector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: rules type: list: elementType: namedType: io.k8s.api.admissionregistration.v1.RuleWithOperations elementRelationship: atomic - name: sideEffects type: scalar: string - name: timeoutSeconds type: scalar: numeric - name: io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: webhooks type: list: elementType: namedType: io.k8s.api.admissionregistration.v1.ValidatingWebhook elementRelationship: associative keys: - name - name: io.k8s.api.admissionregistration.v1.ValidatingWebhookConfigurationList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.admissionregistration.v1.WebhookClientConfig map: fields: - name: caBundle type: scalar: string - name: service type: namedType: io.k8s.api.admissionregistration.v1.ServiceReference - name: url type: scalar: string - name: io.k8s.api.apps.v1.ControllerRevision map: fields: - name: apiVersion type: scalar: string - name: data type: namedType: __untyped_atomic_ - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: revision type: scalar: numeric - name: io.k8s.api.apps.v1.ControllerRevisionList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.apps.v1.ControllerRevision elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.apps.v1.DaemonSet map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.apps.v1.DaemonSetSpec - name: status type: namedType: io.k8s.api.apps.v1.DaemonSetStatus - name: io.k8s.api.apps.v1.DaemonSetCondition map: fields: - name: lastTransitionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: reason type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.api.apps.v1.DaemonSetList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.apps.v1.DaemonSet elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.apps.v1.DaemonSetSpec map: fields: - name: minReadySeconds type: scalar: numeric - name: revisionHistoryLimit type: scalar: numeric - name: selector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: template type: namedType: io.k8s.api.core.v1.PodTemplateSpec - name: updateStrategy type: namedType: io.k8s.api.apps.v1.DaemonSetUpdateStrategy - name: io.k8s.api.apps.v1.DaemonSetStatus map: fields: - name: collisionCount type: scalar: numeric - name: conditions type: list: elementType: namedType: io.k8s.api.apps.v1.DaemonSetCondition elementRelationship: associative keys: - type - name: currentNumberScheduled type: scalar: numeric - name: desiredNumberScheduled type: scalar: numeric - name: numberAvailable type: scalar: numeric - name: numberMisscheduled type: scalar: numeric - name: numberReady type: scalar: numeric - name: numberUnavailable type: scalar: numeric - name: observedGeneration type: scalar: numeric - name: updatedNumberScheduled type: scalar: numeric - name: io.k8s.api.apps.v1.DaemonSetUpdateStrategy map: fields: - name: rollingUpdate type: namedType: io.k8s.api.apps.v1.RollingUpdateDaemonSet - name: type type: scalar: string - name: io.k8s.api.apps.v1.Deployment map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.apps.v1.DeploymentSpec - name: status type: namedType: io.k8s.api.apps.v1.DeploymentStatus - name: io.k8s.api.apps.v1.DeploymentCondition map: fields: - name: lastTransitionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: lastUpdateTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: reason type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.api.apps.v1.DeploymentList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.apps.v1.Deployment elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.apps.v1.DeploymentSpec map: fields: - name: minReadySeconds type: scalar: numeric - name: paused type: scalar: boolean - name: progressDeadlineSeconds type: scalar: numeric - name: replicas type: scalar: numeric - name: revisionHistoryLimit type: scalar: numeric - name: selector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: strategy type: namedType: io.k8s.api.apps.v1.DeploymentStrategy - name: template type: namedType: io.k8s.api.core.v1.PodTemplateSpec - name: io.k8s.api.apps.v1.DeploymentStatus map: fields: - name: availableReplicas type: scalar: numeric - name: collisionCount type: scalar: numeric - name: conditions type: list: elementType: namedType: io.k8s.api.apps.v1.DeploymentCondition elementRelationship: associative keys: - type - name: observedGeneration type: scalar: numeric - name: readyReplicas type: scalar: numeric - name: replicas type: scalar: numeric - name: unavailableReplicas type: scalar: numeric - name: updatedReplicas type: scalar: numeric - name: io.k8s.api.apps.v1.DeploymentStrategy map: fields: - name: rollingUpdate type: namedType: io.k8s.api.apps.v1.RollingUpdateDeployment - name: type type: scalar: string - name: io.k8s.api.apps.v1.ReplicaSet map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.apps.v1.ReplicaSetSpec - name: status type: namedType: io.k8s.api.apps.v1.ReplicaSetStatus - name: io.k8s.api.apps.v1.ReplicaSetCondition map: fields: - name: lastTransitionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: reason type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.api.apps.v1.ReplicaSetList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.apps.v1.ReplicaSet elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.apps.v1.ReplicaSetSpec map: fields: - name: minReadySeconds type: scalar: numeric - name: replicas type: scalar: numeric - name: selector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: template type: namedType: io.k8s.api.core.v1.PodTemplateSpec - name: io.k8s.api.apps.v1.ReplicaSetStatus map: fields: - name: availableReplicas type: scalar: numeric - name: conditions type: list: elementType: namedType: io.k8s.api.apps.v1.ReplicaSetCondition elementRelationship: associative keys: - type - name: fullyLabeledReplicas type: scalar: numeric - name: observedGeneration type: scalar: numeric - name: readyReplicas type: scalar: numeric - name: replicas type: scalar: numeric - name: io.k8s.api.apps.v1.RollingUpdateDaemonSet map: fields: - name: maxSurge type: namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString - name: maxUnavailable type: namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString - name: io.k8s.api.apps.v1.RollingUpdateDeployment map: fields: - name: maxSurge type: namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString - name: maxUnavailable type: namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString - name: io.k8s.api.apps.v1.RollingUpdateStatefulSetStrategy map: fields: - name: maxUnavailable type: namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString - name: partition type: scalar: numeric - name: io.k8s.api.apps.v1.StatefulSet map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.apps.v1.StatefulSetSpec - name: status type: namedType: io.k8s.api.apps.v1.StatefulSetStatus - name: io.k8s.api.apps.v1.StatefulSetCondition map: fields: - name: lastTransitionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: reason type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.api.apps.v1.StatefulSetList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.apps.v1.StatefulSet elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.apps.v1.StatefulSetOrdinals map: fields: - name: start type: scalar: numeric - name: io.k8s.api.apps.v1.StatefulSetPersistentVolumeClaimRetentionPolicy map: fields: - name: whenDeleted type: scalar: string - name: whenScaled type: scalar: string - name: io.k8s.api.apps.v1.StatefulSetSpec map: fields: - name: minReadySeconds type: scalar: numeric - name: ordinals type: namedType: io.k8s.api.apps.v1.StatefulSetOrdinals - name: persistentVolumeClaimRetentionPolicy type: namedType: io.k8s.api.apps.v1.StatefulSetPersistentVolumeClaimRetentionPolicy - name: podManagementPolicy type: scalar: string - name: replicas type: scalar: numeric - name: revisionHistoryLimit type: scalar: numeric - name: selector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: serviceName type: scalar: string - name: template type: namedType: io.k8s.api.core.v1.PodTemplateSpec - name: updateStrategy type: namedType: io.k8s.api.apps.v1.StatefulSetUpdateStrategy - name: volumeClaimTemplates type: list: elementType: namedType: io.k8s.api.core.v1.PersistentVolumeClaim elementRelationship: atomic - name: io.k8s.api.apps.v1.StatefulSetStatus map: fields: - name: availableReplicas type: scalar: numeric - name: collisionCount type: scalar: numeric - name: conditions type: list: elementType: namedType: io.k8s.api.apps.v1.StatefulSetCondition elementRelationship: associative keys: - type - name: currentReplicas type: scalar: numeric - name: currentRevision type: scalar: string - name: observedGeneration type: scalar: numeric - name: readyReplicas type: scalar: numeric - name: replicas type: scalar: numeric - name: updateRevision type: scalar: string - name: updatedReplicas type: scalar: numeric - name: io.k8s.api.apps.v1.StatefulSetUpdateStrategy map: fields: - name: rollingUpdate type: namedType: io.k8s.api.apps.v1.RollingUpdateStatefulSetStrategy - name: type type: scalar: string - name: io.k8s.api.authentication.v1.BoundObjectReference map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: name type: scalar: string - name: uid type: scalar: string - name: io.k8s.api.authentication.v1.TokenRequest map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.authentication.v1.TokenRequestSpec - name: status type: namedType: io.k8s.api.authentication.v1.TokenRequestStatus - name: io.k8s.api.authentication.v1.TokenRequestSpec map: fields: - name: audiences type: list: elementType: scalar: string elementRelationship: atomic - name: boundObjectRef type: namedType: io.k8s.api.authentication.v1.BoundObjectReference - name: expirationSeconds type: scalar: numeric - name: io.k8s.api.authentication.v1.TokenRequestStatus map: fields: - name: expirationTimestamp type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: token type: scalar: string - name: io.k8s.api.authentication.v1.TokenReview map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.authentication.v1.TokenReviewSpec - name: status type: namedType: io.k8s.api.authentication.v1.TokenReviewStatus - name: io.k8s.api.authentication.v1.TokenReviewSpec map: fields: - name: audiences type: list: elementType: scalar: string elementRelationship: atomic - name: token type: scalar: string - name: io.k8s.api.authentication.v1.TokenReviewStatus map: fields: - name: audiences type: list: elementType: scalar: string elementRelationship: atomic - name: authenticated type: scalar: boolean - name: error type: scalar: string - name: user type: namedType: io.k8s.api.authentication.v1.UserInfo - name: io.k8s.api.authentication.v1.UserInfo map: fields: - name: extra type: map: elementType: list: elementType: scalar: string elementRelationship: atomic - name: groups type: list: elementType: scalar: string elementRelationship: atomic - name: uid type: scalar: string - name: username type: scalar: string - name: io.k8s.api.authorization.v1.LocalSubjectAccessReview map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.authorization.v1.SubjectAccessReviewSpec - name: status type: namedType: io.k8s.api.authorization.v1.SubjectAccessReviewStatus - name: io.k8s.api.authorization.v1.NonResourceAttributes map: fields: - name: path type: scalar: string - name: verb type: scalar: string - name: io.k8s.api.authorization.v1.NonResourceRule map: fields: - name: nonResourceURLs type: list: elementType: scalar: string elementRelationship: atomic - name: verbs type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.api.authorization.v1.ResourceAttributes map: fields: - name: group type: scalar: string - name: name type: scalar: string - name: namespace type: scalar: string - name: resource type: scalar: string - name: subresource type: scalar: string - name: verb type: scalar: string - name: version type: scalar: string - name: io.k8s.api.authorization.v1.ResourceRule map: fields: - name: apiGroups type: list: elementType: scalar: string elementRelationship: atomic - name: resourceNames type: list: elementType: scalar: string elementRelationship: atomic - name: resources type: list: elementType: scalar: string elementRelationship: atomic - name: verbs type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.api.authorization.v1.SelfSubjectAccessReview map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec - name: status type: namedType: io.k8s.api.authorization.v1.SubjectAccessReviewStatus - name: io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec map: fields: - name: nonResourceAttributes type: namedType: io.k8s.api.authorization.v1.NonResourceAttributes - name: resourceAttributes type: namedType: io.k8s.api.authorization.v1.ResourceAttributes - name: io.k8s.api.authorization.v1.SelfSubjectRulesReview map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.authorization.v1.SelfSubjectRulesReviewSpec - name: status type: namedType: io.k8s.api.authorization.v1.SubjectRulesReviewStatus - name: io.k8s.api.authorization.v1.SelfSubjectRulesReviewSpec map: fields: - name: namespace type: scalar: string - name: io.k8s.api.authorization.v1.SubjectAccessReview map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.authorization.v1.SubjectAccessReviewSpec - name: status type: namedType: io.k8s.api.authorization.v1.SubjectAccessReviewStatus - name: io.k8s.api.authorization.v1.SubjectAccessReviewSpec map: fields: - name: extra type: map: elementType: list: elementType: scalar: string elementRelationship: atomic - name: groups type: list: elementType: scalar: string elementRelationship: atomic - name: nonResourceAttributes type: namedType: io.k8s.api.authorization.v1.NonResourceAttributes - name: resourceAttributes type: namedType: io.k8s.api.authorization.v1.ResourceAttributes - name: uid type: scalar: string - name: user type: scalar: string - name: io.k8s.api.authorization.v1.SubjectAccessReviewStatus map: fields: - name: allowed type: scalar: boolean - name: denied type: scalar: boolean - name: evaluationError type: scalar: string - name: reason type: scalar: string - name: io.k8s.api.authorization.v1.SubjectRulesReviewStatus map: fields: - name: evaluationError type: scalar: string - name: incomplete type: scalar: boolean - name: nonResourceRules type: list: elementType: namedType: io.k8s.api.authorization.v1.NonResourceRule elementRelationship: atomic - name: resourceRules type: list: elementType: namedType: io.k8s.api.authorization.v1.ResourceRule elementRelationship: atomic - name: io.k8s.api.autoscaling.v1.CrossVersionObjectReference map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: name type: scalar: string elementRelationship: atomic - name: io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerSpec - name: status type: namedType: io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerStatus - name: io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerSpec map: fields: - name: maxReplicas type: scalar: numeric - name: minReplicas type: scalar: numeric - name: scaleTargetRef type: namedType: io.k8s.api.autoscaling.v1.CrossVersionObjectReference - name: targetCPUUtilizationPercentage type: scalar: numeric - name: io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerStatus map: fields: - name: currentCPUUtilizationPercentage type: scalar: numeric - name: currentReplicas type: scalar: numeric - name: desiredReplicas type: scalar: numeric - name: lastScaleTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: observedGeneration type: scalar: numeric - name: io.k8s.api.autoscaling.v1.Scale map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.autoscaling.v1.ScaleSpec - name: status type: namedType: io.k8s.api.autoscaling.v1.ScaleStatus - name: io.k8s.api.autoscaling.v1.ScaleSpec map: fields: - name: replicas type: scalar: numeric - name: io.k8s.api.autoscaling.v1.ScaleStatus map: fields: - name: replicas type: scalar: numeric - name: selector type: scalar: string - name: io.k8s.api.autoscaling.v2.ContainerResourceMetricSource map: fields: - name: container type: scalar: string - name: name type: scalar: string - name: target type: namedType: io.k8s.api.autoscaling.v2.MetricTarget - name: io.k8s.api.autoscaling.v2.ContainerResourceMetricStatus map: fields: - name: container type: scalar: string - name: current type: namedType: io.k8s.api.autoscaling.v2.MetricValueStatus - name: name type: scalar: string - name: io.k8s.api.autoscaling.v2.CrossVersionObjectReference map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: name type: scalar: string - name: io.k8s.api.autoscaling.v2.ExternalMetricSource map: fields: - name: metric type: namedType: io.k8s.api.autoscaling.v2.MetricIdentifier - name: target type: namedType: io.k8s.api.autoscaling.v2.MetricTarget - name: io.k8s.api.autoscaling.v2.ExternalMetricStatus map: fields: - name: current type: namedType: io.k8s.api.autoscaling.v2.MetricValueStatus - name: metric type: namedType: io.k8s.api.autoscaling.v2.MetricIdentifier - name: io.k8s.api.autoscaling.v2.HPAScalingPolicy map: fields: - name: periodSeconds type: scalar: numeric - name: type type: scalar: string - name: value type: scalar: numeric - name: io.k8s.api.autoscaling.v2.HPAScalingRules map: fields: - name: policies type: list: elementType: namedType: io.k8s.api.autoscaling.v2.HPAScalingPolicy elementRelationship: atomic - name: selectPolicy type: scalar: string - name: stabilizationWindowSeconds type: scalar: numeric - name: io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerSpec - name: status type: namedType: io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerStatus - name: io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerBehavior map: fields: - name: scaleDown type: namedType: io.k8s.api.autoscaling.v2.HPAScalingRules - name: scaleUp type: namedType: io.k8s.api.autoscaling.v2.HPAScalingRules - name: io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerCondition map: fields: - name: lastTransitionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: reason type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerSpec map: fields: - name: behavior type: namedType: io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerBehavior - name: maxReplicas type: scalar: numeric - name: metrics type: list: elementType: namedType: io.k8s.api.autoscaling.v2.MetricSpec elementRelationship: atomic - name: minReplicas type: scalar: numeric - name: scaleTargetRef type: namedType: io.k8s.api.autoscaling.v2.CrossVersionObjectReference - name: io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerStatus map: fields: - name: conditions type: list: elementType: namedType: io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerCondition elementRelationship: associative keys: - type - name: currentMetrics type: list: elementType: namedType: io.k8s.api.autoscaling.v2.MetricStatus elementRelationship: atomic - name: currentReplicas type: scalar: numeric - name: desiredReplicas type: scalar: numeric - name: lastScaleTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: observedGeneration type: scalar: numeric - name: io.k8s.api.autoscaling.v2.MetricIdentifier map: fields: - name: name type: scalar: string - name: selector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: io.k8s.api.autoscaling.v2.MetricSpec map: fields: - name: containerResource type: namedType: io.k8s.api.autoscaling.v2.ContainerResourceMetricSource - name: external type: namedType: io.k8s.api.autoscaling.v2.ExternalMetricSource - name: object type: namedType: io.k8s.api.autoscaling.v2.ObjectMetricSource - name: pods type: namedType: io.k8s.api.autoscaling.v2.PodsMetricSource - name: resource type: namedType: io.k8s.api.autoscaling.v2.ResourceMetricSource - name: type type: scalar: string - name: io.k8s.api.autoscaling.v2.MetricStatus map: fields: - name: containerResource type: namedType: io.k8s.api.autoscaling.v2.ContainerResourceMetricStatus - name: external type: namedType: io.k8s.api.autoscaling.v2.ExternalMetricStatus - name: object type: namedType: io.k8s.api.autoscaling.v2.ObjectMetricStatus - name: pods type: namedType: io.k8s.api.autoscaling.v2.PodsMetricStatus - name: resource type: namedType: io.k8s.api.autoscaling.v2.ResourceMetricStatus - name: type type: scalar: string - name: io.k8s.api.autoscaling.v2.MetricTarget map: fields: - name: averageUtilization type: scalar: numeric - name: averageValue type: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: type type: scalar: string - name: value type: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: io.k8s.api.autoscaling.v2.MetricValueStatus map: fields: - name: averageUtilization type: scalar: numeric - name: averageValue type: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: value type: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: io.k8s.api.autoscaling.v2.ObjectMetricSource map: fields: - name: describedObject type: namedType: io.k8s.api.autoscaling.v2.CrossVersionObjectReference - name: metric type: namedType: io.k8s.api.autoscaling.v2.MetricIdentifier - name: target type: namedType: io.k8s.api.autoscaling.v2.MetricTarget - name: io.k8s.api.autoscaling.v2.ObjectMetricStatus map: fields: - name: current type: namedType: io.k8s.api.autoscaling.v2.MetricValueStatus - name: describedObject type: namedType: io.k8s.api.autoscaling.v2.CrossVersionObjectReference - name: metric type: namedType: io.k8s.api.autoscaling.v2.MetricIdentifier - name: io.k8s.api.autoscaling.v2.PodsMetricSource map: fields: - name: metric type: namedType: io.k8s.api.autoscaling.v2.MetricIdentifier - name: target type: namedType: io.k8s.api.autoscaling.v2.MetricTarget - name: io.k8s.api.autoscaling.v2.PodsMetricStatus map: fields: - name: current type: namedType: io.k8s.api.autoscaling.v2.MetricValueStatus - name: metric type: namedType: io.k8s.api.autoscaling.v2.MetricIdentifier - name: io.k8s.api.autoscaling.v2.ResourceMetricSource map: fields: - name: name type: scalar: string - name: target type: namedType: io.k8s.api.autoscaling.v2.MetricTarget - name: io.k8s.api.autoscaling.v2.ResourceMetricStatus map: fields: - name: current type: namedType: io.k8s.api.autoscaling.v2.MetricValueStatus - name: name type: scalar: string - name: io.k8s.api.batch.v1.CronJob map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.batch.v1.CronJobSpec - name: status type: namedType: io.k8s.api.batch.v1.CronJobStatus - name: io.k8s.api.batch.v1.CronJobList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.batch.v1.CronJob elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.batch.v1.CronJobSpec map: fields: - name: concurrencyPolicy type: scalar: string - name: failedJobsHistoryLimit type: scalar: numeric - name: jobTemplate type: namedType: io.k8s.api.batch.v1.JobTemplateSpec - name: schedule type: scalar: string - name: startingDeadlineSeconds type: scalar: numeric - name: successfulJobsHistoryLimit type: scalar: numeric - name: suspend type: scalar: boolean - name: timeZone type: scalar: string - name: io.k8s.api.batch.v1.CronJobStatus map: fields: - name: active type: list: elementType: namedType: io.k8s.api.core.v1.ObjectReference elementRelationship: atomic - name: lastScheduleTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: lastSuccessfulTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: io.k8s.api.batch.v1.Job map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.batch.v1.JobSpec - name: status type: namedType: io.k8s.api.batch.v1.JobStatus - name: io.k8s.api.batch.v1.JobCondition map: fields: - name: lastProbeTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: lastTransitionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: reason type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.api.batch.v1.JobList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.batch.v1.Job elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.batch.v1.JobSpec map: fields: - name: activeDeadlineSeconds type: scalar: numeric - name: backoffLimit type: scalar: numeric - name: completionMode type: scalar: string - name: completions type: scalar: numeric - name: manualSelector type: scalar: boolean - name: parallelism type: scalar: numeric - name: podFailurePolicy type: namedType: io.k8s.api.batch.v1.PodFailurePolicy - name: selector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: suspend type: scalar: boolean - name: template type: namedType: io.k8s.api.core.v1.PodTemplateSpec - name: ttlSecondsAfterFinished type: scalar: numeric - name: io.k8s.api.batch.v1.JobStatus map: fields: - name: active type: scalar: numeric - name: completedIndexes type: scalar: string - name: completionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: conditions type: list: elementType: namedType: io.k8s.api.batch.v1.JobCondition elementRelationship: atomic - name: failed type: scalar: numeric - name: ready type: scalar: numeric - name: startTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: succeeded type: scalar: numeric - name: uncountedTerminatedPods type: namedType: io.k8s.api.batch.v1.UncountedTerminatedPods - name: io.k8s.api.batch.v1.JobTemplateSpec map: fields: - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.batch.v1.JobSpec - name: io.k8s.api.batch.v1.PodFailurePolicy map: fields: - name: rules type: list: elementType: namedType: io.k8s.api.batch.v1.PodFailurePolicyRule elementRelationship: atomic - name: io.k8s.api.batch.v1.PodFailurePolicyOnExitCodesRequirement map: fields: - name: containerName type: scalar: string - name: operator type: scalar: string - name: values type: list: elementType: scalar: numeric elementRelationship: associative - name: io.k8s.api.batch.v1.PodFailurePolicyOnPodConditionsPattern map: fields: - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.api.batch.v1.PodFailurePolicyRule map: fields: - name: action type: scalar: string - name: onExitCodes type: namedType: io.k8s.api.batch.v1.PodFailurePolicyOnExitCodesRequirement - name: onPodConditions type: list: elementType: namedType: io.k8s.api.batch.v1.PodFailurePolicyOnPodConditionsPattern elementRelationship: atomic - name: io.k8s.api.batch.v1.UncountedTerminatedPods map: fields: - name: failed type: list: elementType: scalar: string elementRelationship: associative - name: succeeded type: list: elementType: scalar: string elementRelationship: associative - name: io.k8s.api.certificates.v1.CertificateSigningRequest map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.certificates.v1.CertificateSigningRequestSpec - name: status type: namedType: io.k8s.api.certificates.v1.CertificateSigningRequestStatus - name: io.k8s.api.certificates.v1.CertificateSigningRequestCondition map: fields: - name: lastTransitionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: lastUpdateTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: reason type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.api.certificates.v1.CertificateSigningRequestList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.certificates.v1.CertificateSigningRequest elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.certificates.v1.CertificateSigningRequestSpec map: fields: - name: expirationSeconds type: scalar: numeric - name: extra type: map: elementType: list: elementType: scalar: string elementRelationship: atomic - name: groups type: list: elementType: scalar: string elementRelationship: atomic - name: request type: scalar: string - name: signerName type: scalar: string - name: uid type: scalar: string - name: usages type: list: elementType: scalar: string elementRelationship: atomic - name: username type: scalar: string - name: io.k8s.api.certificates.v1.CertificateSigningRequestStatus map: fields: - name: certificate type: scalar: string - name: conditions type: list: elementType: namedType: io.k8s.api.certificates.v1.CertificateSigningRequestCondition elementRelationship: associative keys: - type - name: io.k8s.api.coordination.v1.Lease map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.coordination.v1.LeaseSpec - name: io.k8s.api.coordination.v1.LeaseList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.coordination.v1.Lease elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.coordination.v1.LeaseSpec map: fields: - name: acquireTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime - name: holderIdentity type: scalar: string - name: leaseDurationSeconds type: scalar: numeric - name: leaseTransitions type: scalar: numeric - name: renewTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime - name: io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource map: fields: - name: fsType type: scalar: string - name: partition type: scalar: numeric - name: readOnly type: scalar: boolean - name: volumeID type: scalar: string - name: io.k8s.api.core.v1.Affinity map: fields: - name: nodeAffinity type: namedType: io.k8s.api.core.v1.NodeAffinity - name: podAffinity type: namedType: io.k8s.api.core.v1.PodAffinity - name: podAntiAffinity type: namedType: io.k8s.api.core.v1.PodAntiAffinity - name: io.k8s.api.core.v1.AttachedVolume map: fields: - name: devicePath type: scalar: string - name: name type: scalar: string - name: io.k8s.api.core.v1.AzureDiskVolumeSource map: fields: - name: cachingMode type: scalar: string - name: diskName type: scalar: string - name: diskURI type: scalar: string - name: fsType type: scalar: string - name: kind type: scalar: string - name: readOnly type: scalar: boolean - name: io.k8s.api.core.v1.AzureFilePersistentVolumeSource map: fields: - name: readOnly type: scalar: boolean - name: secretName type: scalar: string - name: secretNamespace type: scalar: string - name: shareName type: scalar: string - name: io.k8s.api.core.v1.AzureFileVolumeSource map: fields: - name: readOnly type: scalar: boolean - name: secretName type: scalar: string - name: shareName type: scalar: string - name: io.k8s.api.core.v1.Binding map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: target type: namedType: io.k8s.api.core.v1.ObjectReference - name: io.k8s.api.core.v1.CSIPersistentVolumeSource map: fields: - name: controllerExpandSecretRef type: namedType: io.k8s.api.core.v1.SecretReference - name: controllerPublishSecretRef type: namedType: io.k8s.api.core.v1.SecretReference - name: driver type: scalar: string - name: fsType type: scalar: string - name: nodeExpandSecretRef type: namedType: io.k8s.api.core.v1.SecretReference - name: nodePublishSecretRef type: namedType: io.k8s.api.core.v1.SecretReference - name: nodeStageSecretRef type: namedType: io.k8s.api.core.v1.SecretReference - name: readOnly type: scalar: boolean - name: volumeAttributes type: map: elementType: scalar: string - name: volumeHandle type: scalar: string - name: io.k8s.api.core.v1.CSIVolumeSource map: fields: - name: driver type: scalar: string - name: fsType type: scalar: string - name: nodePublishSecretRef type: namedType: io.k8s.api.core.v1.LocalObjectReference - name: readOnly type: scalar: boolean - name: volumeAttributes type: map: elementType: scalar: string - name: io.k8s.api.core.v1.Capabilities map: fields: - name: add type: list: elementType: scalar: string elementRelationship: atomic - name: drop type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.api.core.v1.CephFSPersistentVolumeSource map: fields: - name: monitors type: list: elementType: scalar: string elementRelationship: atomic - name: path type: scalar: string - name: readOnly type: scalar: boolean - name: secretFile type: scalar: string - name: secretRef type: namedType: io.k8s.api.core.v1.SecretReference - name: user type: scalar: string - name: io.k8s.api.core.v1.CephFSVolumeSource map: fields: - name: monitors type: list: elementType: scalar: string elementRelationship: atomic - name: path type: scalar: string - name: readOnly type: scalar: boolean - name: secretFile type: scalar: string - name: secretRef type: namedType: io.k8s.api.core.v1.LocalObjectReference - name: user type: scalar: string - name: io.k8s.api.core.v1.CinderPersistentVolumeSource map: fields: - name: fsType type: scalar: string - name: readOnly type: scalar: boolean - name: secretRef type: namedType: io.k8s.api.core.v1.SecretReference - name: volumeID type: scalar: string - name: io.k8s.api.core.v1.CinderVolumeSource map: fields: - name: fsType type: scalar: string - name: readOnly type: scalar: boolean - name: secretRef type: namedType: io.k8s.api.core.v1.LocalObjectReference - name: volumeID type: scalar: string - name: io.k8s.api.core.v1.ClaimSource map: fields: - name: resourceClaimName type: scalar: string - name: resourceClaimTemplateName type: scalar: string - name: io.k8s.api.core.v1.ClientIPConfig map: fields: - name: timeoutSeconds type: scalar: numeric - name: io.k8s.api.core.v1.ComponentCondition map: fields: - name: error type: scalar: string - name: message type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.api.core.v1.ComponentStatus map: fields: - name: apiVersion type: scalar: string - name: conditions type: list: elementType: namedType: io.k8s.api.core.v1.ComponentCondition elementRelationship: associative keys: - type - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: io.k8s.api.core.v1.ComponentStatusList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.core.v1.ComponentStatus elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.core.v1.ConfigMap map: fields: - name: apiVersion type: scalar: string - name: binaryData type: map: elementType: scalar: string - name: data type: map: elementType: scalar: string - name: immutable type: scalar: boolean - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: io.k8s.api.core.v1.ConfigMapEnvSource map: fields: - name: name type: scalar: string - name: optional type: scalar: boolean - name: io.k8s.api.core.v1.ConfigMapKeySelector map: fields: - name: key type: scalar: string - name: name type: scalar: string - name: optional type: scalar: boolean elementRelationship: atomic - name: io.k8s.api.core.v1.ConfigMapList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.core.v1.ConfigMap elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.core.v1.ConfigMapNodeConfigSource map: fields: - name: kubeletConfigKey type: scalar: string - name: name type: scalar: string - name: namespace type: scalar: string - name: resourceVersion type: scalar: string - name: uid type: scalar: string - name: io.k8s.api.core.v1.ConfigMapProjection map: fields: - name: items type: list: elementType: namedType: io.k8s.api.core.v1.KeyToPath elementRelationship: atomic - name: name type: scalar: string - name: optional type: scalar: boolean - name: io.k8s.api.core.v1.ConfigMapVolumeSource map: fields: - name: defaultMode type: scalar: numeric - name: items type: list: elementType: namedType: io.k8s.api.core.v1.KeyToPath elementRelationship: atomic - name: name type: scalar: string - name: optional type: scalar: boolean - name: io.k8s.api.core.v1.Container map: fields: - name: args type: list: elementType: scalar: string elementRelationship: atomic - name: command type: list: elementType: scalar: string elementRelationship: atomic - name: env type: list: elementType: namedType: io.k8s.api.core.v1.EnvVar elementRelationship: associative keys: - name - name: envFrom type: list: elementType: namedType: io.k8s.api.core.v1.EnvFromSource elementRelationship: atomic - name: image type: scalar: string - name: imagePullPolicy type: scalar: string - name: lifecycle type: namedType: io.k8s.api.core.v1.Lifecycle - name: livenessProbe type: namedType: io.k8s.api.core.v1.Probe - name: name type: scalar: string - name: ports type: list: elementType: namedType: io.k8s.api.core.v1.ContainerPort elementRelationship: associative keys: - containerPort - protocol - name: readinessProbe type: namedType: io.k8s.api.core.v1.Probe - name: resources type: namedType: io.k8s.api.core.v1.ResourceRequirements - name: securityContext type: namedType: io.k8s.api.core.v1.SecurityContext - name: startupProbe type: namedType: io.k8s.api.core.v1.Probe - name: stdin type: scalar: boolean - name: stdinOnce type: scalar: boolean - name: terminationMessagePath type: scalar: string - name: terminationMessagePolicy type: scalar: string - name: tty type: scalar: boolean - name: volumeDevices type: list: elementType: namedType: io.k8s.api.core.v1.VolumeDevice elementRelationship: associative keys: - devicePath - name: volumeMounts type: list: elementType: namedType: io.k8s.api.core.v1.VolumeMount elementRelationship: associative keys: - mountPath - name: workingDir type: scalar: string - name: io.k8s.api.core.v1.ContainerImage map: fields: - name: names type: list: elementType: scalar: string elementRelationship: atomic - name: sizeBytes type: scalar: numeric - name: io.k8s.api.core.v1.ContainerPort map: fields: - name: containerPort type: scalar: numeric - name: hostIP type: scalar: string - name: hostPort type: scalar: numeric - name: name type: scalar: string - name: protocol type: scalar: string - name: io.k8s.api.core.v1.ContainerState map: fields: - name: running type: namedType: io.k8s.api.core.v1.ContainerStateRunning - name: terminated type: namedType: io.k8s.api.core.v1.ContainerStateTerminated - name: waiting type: namedType: io.k8s.api.core.v1.ContainerStateWaiting - name: io.k8s.api.core.v1.ContainerStateRunning map: fields: - name: startedAt type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: io.k8s.api.core.v1.ContainerStateTerminated map: fields: - name: containerID type: scalar: string - name: exitCode type: scalar: numeric - name: finishedAt type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: reason type: scalar: string - name: signal type: scalar: numeric - name: startedAt type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: io.k8s.api.core.v1.ContainerStateWaiting map: fields: - name: message type: scalar: string - name: reason type: scalar: string - name: io.k8s.api.core.v1.ContainerStatus map: fields: - name: containerID type: scalar: string - name: image type: scalar: string - name: imageID type: scalar: string - name: lastState type: namedType: io.k8s.api.core.v1.ContainerState - name: name type: scalar: string - name: ready type: scalar: boolean - name: restartCount type: scalar: numeric - name: started type: scalar: boolean - name: state type: namedType: io.k8s.api.core.v1.ContainerState - name: io.k8s.api.core.v1.DaemonEndpoint map: fields: - name: Port type: scalar: numeric - name: io.k8s.api.core.v1.DownwardAPIProjection map: fields: - name: items type: list: elementType: namedType: io.k8s.api.core.v1.DownwardAPIVolumeFile elementRelationship: atomic - name: io.k8s.api.core.v1.DownwardAPIVolumeFile map: fields: - name: fieldRef type: namedType: io.k8s.api.core.v1.ObjectFieldSelector - name: mode type: scalar: numeric - name: path type: scalar: string - name: resourceFieldRef type: namedType: io.k8s.api.core.v1.ResourceFieldSelector - name: io.k8s.api.core.v1.DownwardAPIVolumeSource map: fields: - name: defaultMode type: scalar: numeric - name: items type: list: elementType: namedType: io.k8s.api.core.v1.DownwardAPIVolumeFile elementRelationship: atomic - name: io.k8s.api.core.v1.EmptyDirVolumeSource map: fields: - name: medium type: scalar: string - name: sizeLimit type: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: io.k8s.api.core.v1.EndpointAddress map: fields: - name: hostname type: scalar: string - name: ip type: scalar: string - name: nodeName type: scalar: string - name: targetRef type: namedType: io.k8s.api.core.v1.ObjectReference elementRelationship: atomic - name: io.k8s.api.core.v1.EndpointPort map: fields: - name: appProtocol type: scalar: string - name: name type: scalar: string - name: port type: scalar: numeric - name: protocol type: scalar: string elementRelationship: atomic - name: io.k8s.api.core.v1.EndpointSubset map: fields: - name: addresses type: list: elementType: namedType: io.k8s.api.core.v1.EndpointAddress elementRelationship: atomic - name: notReadyAddresses type: list: elementType: namedType: io.k8s.api.core.v1.EndpointAddress elementRelationship: atomic - name: ports type: list: elementType: namedType: io.k8s.api.core.v1.EndpointPort elementRelationship: atomic - name: io.k8s.api.core.v1.Endpoints map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: subsets type: list: elementType: namedType: io.k8s.api.core.v1.EndpointSubset elementRelationship: atomic - name: io.k8s.api.core.v1.EndpointsList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.core.v1.Endpoints elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.core.v1.EnvFromSource map: fields: - name: configMapRef type: namedType: io.k8s.api.core.v1.ConfigMapEnvSource - name: prefix type: scalar: string - name: secretRef type: namedType: io.k8s.api.core.v1.SecretEnvSource - name: io.k8s.api.core.v1.EnvVar map: fields: - name: name type: scalar: string - name: value type: scalar: string - name: valueFrom type: namedType: io.k8s.api.core.v1.EnvVarSource - name: io.k8s.api.core.v1.EnvVarSource map: fields: - name: configMapKeyRef type: namedType: io.k8s.api.core.v1.ConfigMapKeySelector - name: fieldRef type: namedType: io.k8s.api.core.v1.ObjectFieldSelector - name: resourceFieldRef type: namedType: io.k8s.api.core.v1.ResourceFieldSelector - name: secretKeyRef type: namedType: io.k8s.api.core.v1.SecretKeySelector - name: io.k8s.api.core.v1.EphemeralContainer map: fields: - name: args type: list: elementType: scalar: string elementRelationship: atomic - name: command type: list: elementType: scalar: string elementRelationship: atomic - name: env type: list: elementType: namedType: io.k8s.api.core.v1.EnvVar elementRelationship: associative keys: - name - name: envFrom type: list: elementType: namedType: io.k8s.api.core.v1.EnvFromSource elementRelationship: atomic - name: image type: scalar: string - name: imagePullPolicy type: scalar: string - name: lifecycle type: namedType: io.k8s.api.core.v1.Lifecycle - name: livenessProbe type: namedType: io.k8s.api.core.v1.Probe - name: name type: scalar: string - name: ports type: list: elementType: namedType: io.k8s.api.core.v1.ContainerPort elementRelationship: associative keys: - containerPort - protocol - name: readinessProbe type: namedType: io.k8s.api.core.v1.Probe - name: resources type: namedType: io.k8s.api.core.v1.ResourceRequirements - name: securityContext type: namedType: io.k8s.api.core.v1.SecurityContext - name: startupProbe type: namedType: io.k8s.api.core.v1.Probe - name: stdin type: scalar: boolean - name: stdinOnce type: scalar: boolean - name: targetContainerName type: scalar: string - name: terminationMessagePath type: scalar: string - name: terminationMessagePolicy type: scalar: string - name: tty type: scalar: boolean - name: volumeDevices type: list: elementType: namedType: io.k8s.api.core.v1.VolumeDevice elementRelationship: associative keys: - devicePath - name: volumeMounts type: list: elementType: namedType: io.k8s.api.core.v1.VolumeMount elementRelationship: associative keys: - mountPath - name: workingDir type: scalar: string - name: io.k8s.api.core.v1.EphemeralVolumeSource map: fields: - name: volumeClaimTemplate type: namedType: io.k8s.api.core.v1.PersistentVolumeClaimTemplate - name: io.k8s.api.core.v1.Event map: fields: - name: action type: scalar: string - name: apiVersion type: scalar: string - name: count type: scalar: numeric - name: eventTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime - name: firstTimestamp type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: involvedObject type: namedType: io.k8s.api.core.v1.ObjectReference - name: kind type: scalar: string - name: lastTimestamp type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: reason type: scalar: string - name: related type: namedType: io.k8s.api.core.v1.ObjectReference - name: reportingComponent type: scalar: string - name: reportingInstance type: scalar: string - name: series type: namedType: io.k8s.api.core.v1.EventSeries - name: source type: namedType: io.k8s.api.core.v1.EventSource - name: type type: scalar: string - name: io.k8s.api.core.v1.EventList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.core.v1.Event elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.core.v1.EventSeries map: fields: - name: count type: scalar: numeric - name: lastObservedTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime - name: io.k8s.api.core.v1.EventSource map: fields: - name: component type: scalar: string - name: host type: scalar: string - name: io.k8s.api.core.v1.ExecAction map: fields: - name: command type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.api.core.v1.FCVolumeSource map: fields: - name: fsType type: scalar: string - name: lun type: scalar: numeric - name: readOnly type: scalar: boolean - name: targetWWNs type: list: elementType: scalar: string elementRelationship: atomic - name: wwids type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.api.core.v1.FlexPersistentVolumeSource map: fields: - name: driver type: scalar: string - name: fsType type: scalar: string - name: options type: map: elementType: scalar: string - name: readOnly type: scalar: boolean - name: secretRef type: namedType: io.k8s.api.core.v1.SecretReference - name: io.k8s.api.core.v1.FlexVolumeSource map: fields: - name: driver type: scalar: string - name: fsType type: scalar: string - name: options type: map: elementType: scalar: string - name: readOnly type: scalar: boolean - name: secretRef type: namedType: io.k8s.api.core.v1.LocalObjectReference - name: io.k8s.api.core.v1.FlockerVolumeSource map: fields: - name: datasetName type: scalar: string - name: datasetUUID type: scalar: string - name: io.k8s.api.core.v1.GCEPersistentDiskVolumeSource map: fields: - name: fsType type: scalar: string - name: partition type: scalar: numeric - name: pdName type: scalar: string - name: readOnly type: scalar: boolean - name: io.k8s.api.core.v1.GRPCAction map: fields: - name: port type: scalar: numeric - name: service type: scalar: string - name: io.k8s.api.core.v1.GitRepoVolumeSource map: fields: - name: directory type: scalar: string - name: repository type: scalar: string - name: revision type: scalar: string - name: io.k8s.api.core.v1.GlusterfsPersistentVolumeSource map: fields: - name: endpoints type: scalar: string - name: endpointsNamespace type: scalar: string - name: path type: scalar: string - name: readOnly type: scalar: boolean - name: io.k8s.api.core.v1.GlusterfsVolumeSource map: fields: - name: endpoints type: scalar: string - name: path type: scalar: string - name: readOnly type: scalar: boolean - name: io.k8s.api.core.v1.HTTPGetAction map: fields: - name: host type: scalar: string - name: httpHeaders type: list: elementType: namedType: io.k8s.api.core.v1.HTTPHeader elementRelationship: atomic - name: path type: scalar: string - name: port type: namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString - name: scheme type: scalar: string - name: io.k8s.api.core.v1.HTTPHeader map: fields: - name: name type: scalar: string - name: value type: scalar: string - name: io.k8s.api.core.v1.HostAlias map: fields: - name: hostnames type: list: elementType: scalar: string elementRelationship: atomic - name: ip type: scalar: string - name: io.k8s.api.core.v1.HostPathVolumeSource map: fields: - name: path type: scalar: string - name: type type: scalar: string - name: io.k8s.api.core.v1.ISCSIPersistentVolumeSource map: fields: - name: chapAuthDiscovery type: scalar: boolean - name: chapAuthSession type: scalar: boolean - name: fsType type: scalar: string - name: initiatorName type: scalar: string - name: iqn type: scalar: string - name: iscsiInterface type: scalar: string - name: lun type: scalar: numeric - name: portals type: list: elementType: scalar: string elementRelationship: atomic - name: readOnly type: scalar: boolean - name: secretRef type: namedType: io.k8s.api.core.v1.SecretReference - name: targetPortal type: scalar: string - name: io.k8s.api.core.v1.ISCSIVolumeSource map: fields: - name: chapAuthDiscovery type: scalar: boolean - name: chapAuthSession type: scalar: boolean - name: fsType type: scalar: string - name: initiatorName type: scalar: string - name: iqn type: scalar: string - name: iscsiInterface type: scalar: string - name: lun type: scalar: numeric - name: portals type: list: elementType: scalar: string elementRelationship: atomic - name: readOnly type: scalar: boolean - name: secretRef type: namedType: io.k8s.api.core.v1.LocalObjectReference - name: targetPortal type: scalar: string - name: io.k8s.api.core.v1.KeyToPath map: fields: - name: key type: scalar: string - name: mode type: scalar: numeric - name: path type: scalar: string - name: io.k8s.api.core.v1.Lifecycle map: fields: - name: postStart type: namedType: io.k8s.api.core.v1.LifecycleHandler - name: preStop type: namedType: io.k8s.api.core.v1.LifecycleHandler - name: io.k8s.api.core.v1.LifecycleHandler map: fields: - name: exec type: namedType: io.k8s.api.core.v1.ExecAction - name: httpGet type: namedType: io.k8s.api.core.v1.HTTPGetAction - name: tcpSocket type: namedType: io.k8s.api.core.v1.TCPSocketAction - name: io.k8s.api.core.v1.LimitRange map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.core.v1.LimitRangeSpec - name: io.k8s.api.core.v1.LimitRangeItem map: fields: - name: default type: map: elementType: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: defaultRequest type: map: elementType: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: max type: map: elementType: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: maxLimitRequestRatio type: map: elementType: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: min type: map: elementType: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: type type: scalar: string - name: io.k8s.api.core.v1.LimitRangeList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.core.v1.LimitRange elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.core.v1.LimitRangeSpec map: fields: - name: limits type: list: elementType: namedType: io.k8s.api.core.v1.LimitRangeItem elementRelationship: atomic - name: io.k8s.api.core.v1.LoadBalancerIngress map: fields: - name: hostname type: scalar: string - name: ip type: scalar: string - name: ports type: list: elementType: namedType: io.k8s.api.core.v1.PortStatus elementRelationship: atomic - name: io.k8s.api.core.v1.LoadBalancerStatus map: fields: - name: ingress type: list: elementType: namedType: io.k8s.api.core.v1.LoadBalancerIngress elementRelationship: atomic - name: io.k8s.api.core.v1.LocalObjectReference map: fields: - name: name type: scalar: string elementRelationship: atomic - name: io.k8s.api.core.v1.LocalVolumeSource map: fields: - name: fsType type: scalar: string - name: path type: scalar: string - name: io.k8s.api.core.v1.NFSVolumeSource map: fields: - name: path type: scalar: string - name: readOnly type: scalar: boolean - name: server type: scalar: string - name: io.k8s.api.core.v1.Namespace map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.core.v1.NamespaceSpec - name: status type: namedType: io.k8s.api.core.v1.NamespaceStatus - name: io.k8s.api.core.v1.NamespaceCondition map: fields: - name: lastTransitionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: reason type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.api.core.v1.NamespaceList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.core.v1.Namespace elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.core.v1.NamespaceSpec map: fields: - name: finalizers type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.api.core.v1.NamespaceStatus map: fields: - name: conditions type: list: elementType: namedType: io.k8s.api.core.v1.NamespaceCondition elementRelationship: associative keys: - type - name: phase type: scalar: string - name: io.k8s.api.core.v1.Node map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.core.v1.NodeSpec - name: status type: namedType: io.k8s.api.core.v1.NodeStatus - name: io.k8s.api.core.v1.NodeAddress map: fields: - name: address type: scalar: string - name: type type: scalar: string - name: io.k8s.api.core.v1.NodeAffinity map: fields: - name: preferredDuringSchedulingIgnoredDuringExecution type: list: elementType: namedType: io.k8s.api.core.v1.PreferredSchedulingTerm elementRelationship: atomic - name: requiredDuringSchedulingIgnoredDuringExecution type: namedType: io.k8s.api.core.v1.NodeSelector - name: io.k8s.api.core.v1.NodeCondition map: fields: - name: lastHeartbeatTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: lastTransitionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: reason type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.api.core.v1.NodeConfigSource map: fields: - name: configMap type: namedType: io.k8s.api.core.v1.ConfigMapNodeConfigSource - name: io.k8s.api.core.v1.NodeConfigStatus map: fields: - name: active type: namedType: io.k8s.api.core.v1.NodeConfigSource - name: assigned type: namedType: io.k8s.api.core.v1.NodeConfigSource - name: error type: scalar: string - name: lastKnownGood type: namedType: io.k8s.api.core.v1.NodeConfigSource - name: io.k8s.api.core.v1.NodeDaemonEndpoints map: fields: - name: kubeletEndpoint type: namedType: io.k8s.api.core.v1.DaemonEndpoint - name: io.k8s.api.core.v1.NodeList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.core.v1.Node elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.core.v1.NodeSelector map: fields: - name: nodeSelectorTerms type: list: elementType: namedType: io.k8s.api.core.v1.NodeSelectorTerm elementRelationship: atomic elementRelationship: atomic - name: io.k8s.api.core.v1.NodeSelectorRequirement map: fields: - name: key type: scalar: string - name: operator type: scalar: string - name: values type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.api.core.v1.NodeSelectorTerm map: fields: - name: matchExpressions type: list: elementType: namedType: io.k8s.api.core.v1.NodeSelectorRequirement elementRelationship: atomic - name: matchFields type: list: elementType: namedType: io.k8s.api.core.v1.NodeSelectorRequirement elementRelationship: atomic elementRelationship: atomic - name: io.k8s.api.core.v1.NodeSpec map: fields: - name: configSource type: namedType: io.k8s.api.core.v1.NodeConfigSource - name: externalID type: scalar: string - name: podCIDR type: scalar: string - name: podCIDRs type: list: elementType: scalar: string elementRelationship: associative - name: providerID type: scalar: string - name: taints type: list: elementType: namedType: io.k8s.api.core.v1.Taint elementRelationship: atomic - name: unschedulable type: scalar: boolean - name: io.k8s.api.core.v1.NodeStatus map: fields: - name: addresses type: list: elementType: namedType: io.k8s.api.core.v1.NodeAddress elementRelationship: associative keys: - type - name: allocatable type: map: elementType: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: capacity type: map: elementType: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: conditions type: list: elementType: namedType: io.k8s.api.core.v1.NodeCondition elementRelationship: associative keys: - type - name: config type: namedType: io.k8s.api.core.v1.NodeConfigStatus - name: daemonEndpoints type: namedType: io.k8s.api.core.v1.NodeDaemonEndpoints - name: images type: list: elementType: namedType: io.k8s.api.core.v1.ContainerImage elementRelationship: atomic - name: nodeInfo type: namedType: io.k8s.api.core.v1.NodeSystemInfo - name: phase type: scalar: string - name: volumesAttached type: list: elementType: namedType: io.k8s.api.core.v1.AttachedVolume elementRelationship: atomic - name: volumesInUse type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.api.core.v1.NodeSystemInfo map: fields: - name: architecture type: scalar: string - name: bootID type: scalar: string - name: containerRuntimeVersion type: scalar: string - name: kernelVersion type: scalar: string - name: kubeProxyVersion type: scalar: string - name: kubeletVersion type: scalar: string - name: machineID type: scalar: string - name: operatingSystem type: scalar: string - name: osImage type: scalar: string - name: systemUUID type: scalar: string - name: io.k8s.api.core.v1.ObjectFieldSelector map: fields: - name: apiVersion type: scalar: string - name: fieldPath type: scalar: string elementRelationship: atomic - name: io.k8s.api.core.v1.ObjectReference map: fields: - name: apiVersion type: scalar: string - name: fieldPath type: scalar: string - name: kind type: scalar: string - name: name type: scalar: string - name: namespace type: scalar: string - name: resourceVersion type: scalar: string - name: uid type: scalar: string elementRelationship: atomic - name: io.k8s.api.core.v1.PersistentVolume map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.core.v1.PersistentVolumeSpec - name: status type: namedType: io.k8s.api.core.v1.PersistentVolumeStatus - name: io.k8s.api.core.v1.PersistentVolumeClaim map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.core.v1.PersistentVolumeClaimSpec - name: status type: namedType: io.k8s.api.core.v1.PersistentVolumeClaimStatus - name: io.k8s.api.core.v1.PersistentVolumeClaimCondition map: fields: - name: lastProbeTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: lastTransitionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: reason type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.api.core.v1.PersistentVolumeClaimList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.core.v1.PersistentVolumeClaim elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.core.v1.PersistentVolumeClaimSpec map: fields: - name: accessModes type: list: elementType: scalar: string elementRelationship: atomic - name: dataSource type: namedType: io.k8s.api.core.v1.TypedLocalObjectReference - name: dataSourceRef type: namedType: io.k8s.api.core.v1.TypedObjectReference - name: resources type: namedType: io.k8s.api.core.v1.ResourceRequirements - name: selector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: storageClassName type: scalar: string - name: volumeMode type: scalar: string - name: volumeName type: scalar: string - name: io.k8s.api.core.v1.PersistentVolumeClaimStatus map: fields: - name: accessModes type: list: elementType: scalar: string elementRelationship: atomic - name: allocatedResources type: map: elementType: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: capacity type: map: elementType: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: conditions type: list: elementType: namedType: io.k8s.api.core.v1.PersistentVolumeClaimCondition elementRelationship: associative keys: - type - name: phase type: scalar: string - name: resizeStatus type: scalar: string - name: io.k8s.api.core.v1.PersistentVolumeClaimTemplate map: fields: - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.core.v1.PersistentVolumeClaimSpec - name: io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource map: fields: - name: claimName type: scalar: string - name: readOnly type: scalar: boolean - name: io.k8s.api.core.v1.PersistentVolumeList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.core.v1.PersistentVolume elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.core.v1.PersistentVolumeSpec map: fields: - name: accessModes type: list: elementType: scalar: string elementRelationship: atomic - name: awsElasticBlockStore type: namedType: io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource - name: azureDisk type: namedType: io.k8s.api.core.v1.AzureDiskVolumeSource - name: azureFile type: namedType: io.k8s.api.core.v1.AzureFilePersistentVolumeSource - name: capacity type: map: elementType: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: cephfs type: namedType: io.k8s.api.core.v1.CephFSPersistentVolumeSource - name: cinder type: namedType: io.k8s.api.core.v1.CinderPersistentVolumeSource - name: claimRef type: namedType: io.k8s.api.core.v1.ObjectReference elementRelationship: separable - name: csi type: namedType: io.k8s.api.core.v1.CSIPersistentVolumeSource - name: fc type: namedType: io.k8s.api.core.v1.FCVolumeSource - name: flexVolume type: namedType: io.k8s.api.core.v1.FlexPersistentVolumeSource - name: flocker type: namedType: io.k8s.api.core.v1.FlockerVolumeSource - name: gcePersistentDisk type: namedType: io.k8s.api.core.v1.GCEPersistentDiskVolumeSource - name: glusterfs type: namedType: io.k8s.api.core.v1.GlusterfsPersistentVolumeSource - name: hostPath type: namedType: io.k8s.api.core.v1.HostPathVolumeSource - name: iscsi type: namedType: io.k8s.api.core.v1.ISCSIPersistentVolumeSource - name: local type: namedType: io.k8s.api.core.v1.LocalVolumeSource - name: mountOptions type: list: elementType: scalar: string elementRelationship: atomic - name: nfs type: namedType: io.k8s.api.core.v1.NFSVolumeSource - name: nodeAffinity type: namedType: io.k8s.api.core.v1.VolumeNodeAffinity - name: persistentVolumeReclaimPolicy type: scalar: string - name: photonPersistentDisk type: namedType: io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource - name: portworxVolume type: namedType: io.k8s.api.core.v1.PortworxVolumeSource - name: quobyte type: namedType: io.k8s.api.core.v1.QuobyteVolumeSource - name: rbd type: namedType: io.k8s.api.core.v1.RBDPersistentVolumeSource - name: scaleIO type: namedType: io.k8s.api.core.v1.ScaleIOPersistentVolumeSource - name: storageClassName type: scalar: string - name: storageos type: namedType: io.k8s.api.core.v1.StorageOSPersistentVolumeSource - name: volumeMode type: scalar: string - name: vsphereVolume type: namedType: io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource - name: io.k8s.api.core.v1.PersistentVolumeStatus map: fields: - name: message type: scalar: string - name: phase type: scalar: string - name: reason type: scalar: string - name: io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource map: fields: - name: fsType type: scalar: string - name: pdID type: scalar: string - name: io.k8s.api.core.v1.Pod map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.core.v1.PodSpec - name: status type: namedType: io.k8s.api.core.v1.PodStatus - name: io.k8s.api.core.v1.PodAffinity map: fields: - name: preferredDuringSchedulingIgnoredDuringExecution type: list: elementType: namedType: io.k8s.api.core.v1.WeightedPodAffinityTerm elementRelationship: atomic - name: requiredDuringSchedulingIgnoredDuringExecution type: list: elementType: namedType: io.k8s.api.core.v1.PodAffinityTerm elementRelationship: atomic - name: io.k8s.api.core.v1.PodAffinityTerm map: fields: - name: labelSelector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: namespaceSelector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: namespaces type: list: elementType: scalar: string elementRelationship: atomic - name: topologyKey type: scalar: string - name: io.k8s.api.core.v1.PodAntiAffinity map: fields: - name: preferredDuringSchedulingIgnoredDuringExecution type: list: elementType: namedType: io.k8s.api.core.v1.WeightedPodAffinityTerm elementRelationship: atomic - name: requiredDuringSchedulingIgnoredDuringExecution type: list: elementType: namedType: io.k8s.api.core.v1.PodAffinityTerm elementRelationship: atomic - name: io.k8s.api.core.v1.PodCondition map: fields: - name: lastProbeTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: lastTransitionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: reason type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.api.core.v1.PodDNSConfig map: fields: - name: nameservers type: list: elementType: scalar: string elementRelationship: atomic - name: options type: list: elementType: namedType: io.k8s.api.core.v1.PodDNSConfigOption elementRelationship: atomic - name: searches type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.api.core.v1.PodDNSConfigOption map: fields: - name: name type: scalar: string - name: value type: scalar: string - name: io.k8s.api.core.v1.PodIP map: fields: - name: ip type: scalar: string - name: io.k8s.api.core.v1.PodList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.core.v1.Pod elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.core.v1.PodOS map: fields: - name: name type: scalar: string - name: io.k8s.api.core.v1.PodReadinessGate map: fields: - name: conditionType type: scalar: string - name: io.k8s.api.core.v1.PodResourceClaim map: fields: - name: name type: scalar: string - name: source type: namedType: io.k8s.api.core.v1.ClaimSource - name: io.k8s.api.core.v1.PodSchedulingGate map: fields: - name: name type: scalar: string - name: io.k8s.api.core.v1.PodSecurityContext map: fields: - name: fsGroup type: scalar: numeric - name: fsGroupChangePolicy type: scalar: string - name: runAsGroup type: scalar: numeric - name: runAsNonRoot type: scalar: boolean - name: runAsUser type: scalar: numeric - name: seLinuxOptions type: namedType: io.k8s.api.core.v1.SELinuxOptions - name: seccompProfile type: namedType: io.k8s.api.core.v1.SeccompProfile - name: supplementalGroups type: list: elementType: scalar: numeric elementRelationship: atomic - name: sysctls type: list: elementType: namedType: io.k8s.api.core.v1.Sysctl elementRelationship: atomic - name: windowsOptions type: namedType: io.k8s.api.core.v1.WindowsSecurityContextOptions - name: io.k8s.api.core.v1.PodSpec map: fields: - name: activeDeadlineSeconds type: scalar: numeric - name: affinity type: namedType: io.k8s.api.core.v1.Affinity - name: automountServiceAccountToken type: scalar: boolean - name: containers type: list: elementType: namedType: io.k8s.api.core.v1.Container elementRelationship: associative keys: - name - name: dnsConfig type: namedType: io.k8s.api.core.v1.PodDNSConfig - name: dnsPolicy type: scalar: string - name: enableServiceLinks type: scalar: boolean - name: ephemeralContainers type: list: elementType: namedType: io.k8s.api.core.v1.EphemeralContainer elementRelationship: associative keys: - name - name: hostAliases type: list: elementType: namedType: io.k8s.api.core.v1.HostAlias elementRelationship: associative keys: - ip - name: hostIPC type: scalar: boolean - name: hostNetwork type: scalar: boolean - name: hostPID type: scalar: boolean - name: hostUsers type: scalar: boolean - name: hostname type: scalar: string - name: imagePullSecrets type: list: elementType: namedType: io.k8s.api.core.v1.LocalObjectReference elementRelationship: associative keys: - name - name: initContainers type: list: elementType: namedType: io.k8s.api.core.v1.Container elementRelationship: associative keys: - name - name: nodeName type: scalar: string - name: nodeSelector type: map: elementType: scalar: string elementRelationship: atomic - name: os type: namedType: io.k8s.api.core.v1.PodOS - name: overhead type: map: elementType: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: preemptionPolicy type: scalar: string - name: priority type: scalar: numeric - name: priorityClassName type: scalar: string - name: readinessGates type: list: elementType: namedType: io.k8s.api.core.v1.PodReadinessGate elementRelationship: atomic - name: resourceClaims type: list: elementType: namedType: io.k8s.api.core.v1.PodResourceClaim elementRelationship: associative keys: - name - name: restartPolicy type: scalar: string - name: runtimeClassName type: scalar: string - name: schedulerName type: scalar: string - name: schedulingGates type: list: elementType: namedType: io.k8s.api.core.v1.PodSchedulingGate elementRelationship: associative keys: - name - name: securityContext type: namedType: io.k8s.api.core.v1.PodSecurityContext - name: serviceAccount type: scalar: string - name: serviceAccountName type: scalar: string - name: setHostnameAsFQDN type: scalar: boolean - name: shareProcessNamespace type: scalar: boolean - name: subdomain type: scalar: string - name: terminationGracePeriodSeconds type: scalar: numeric - name: tolerations type: list: elementType: namedType: io.k8s.api.core.v1.Toleration elementRelationship: atomic - name: topologySpreadConstraints type: list: elementType: namedType: io.k8s.api.core.v1.TopologySpreadConstraint elementRelationship: associative keys: - topologyKey - whenUnsatisfiable - name: volumes type: list: elementType: namedType: io.k8s.api.core.v1.Volume elementRelationship: associative keys: - name - name: io.k8s.api.core.v1.PodStatus map: fields: - name: conditions type: list: elementType: namedType: io.k8s.api.core.v1.PodCondition elementRelationship: associative keys: - type - name: containerStatuses type: list: elementType: namedType: io.k8s.api.core.v1.ContainerStatus elementRelationship: atomic - name: ephemeralContainerStatuses type: list: elementType: namedType: io.k8s.api.core.v1.ContainerStatus elementRelationship: atomic - name: hostIP type: scalar: string - name: initContainerStatuses type: list: elementType: namedType: io.k8s.api.core.v1.ContainerStatus elementRelationship: atomic - name: message type: scalar: string - name: nominatedNodeName type: scalar: string - name: phase type: scalar: string - name: podIP type: scalar: string - name: podIPs type: list: elementType: namedType: io.k8s.api.core.v1.PodIP elementRelationship: associative keys: - ip - name: qosClass type: scalar: string - name: reason type: scalar: string - name: startTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: io.k8s.api.core.v1.PodTemplate map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: template type: namedType: io.k8s.api.core.v1.PodTemplateSpec - name: io.k8s.api.core.v1.PodTemplateList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.core.v1.PodTemplate elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.core.v1.PodTemplateSpec map: fields: - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.core.v1.PodSpec - name: io.k8s.api.core.v1.PortStatus map: fields: - name: error type: scalar: string - name: port type: scalar: numeric - name: protocol type: scalar: string - name: io.k8s.api.core.v1.PortworxVolumeSource map: fields: - name: fsType type: scalar: string - name: readOnly type: scalar: boolean - name: volumeID type: scalar: string - name: io.k8s.api.core.v1.PreferredSchedulingTerm map: fields: - name: preference type: namedType: io.k8s.api.core.v1.NodeSelectorTerm - name: weight type: scalar: numeric - name: io.k8s.api.core.v1.Probe map: fields: - name: exec type: namedType: io.k8s.api.core.v1.ExecAction - name: failureThreshold type: scalar: numeric - name: grpc type: namedType: io.k8s.api.core.v1.GRPCAction - name: httpGet type: namedType: io.k8s.api.core.v1.HTTPGetAction - name: initialDelaySeconds type: scalar: numeric - name: periodSeconds type: scalar: numeric - name: successThreshold type: scalar: numeric - name: tcpSocket type: namedType: io.k8s.api.core.v1.TCPSocketAction - name: terminationGracePeriodSeconds type: scalar: numeric - name: timeoutSeconds type: scalar: numeric - name: io.k8s.api.core.v1.ProjectedVolumeSource map: fields: - name: defaultMode type: scalar: numeric - name: sources type: list: elementType: namedType: io.k8s.api.core.v1.VolumeProjection elementRelationship: atomic - name: io.k8s.api.core.v1.QuobyteVolumeSource map: fields: - name: group type: scalar: string - name: readOnly type: scalar: boolean - name: registry type: scalar: string - name: tenant type: scalar: string - name: user type: scalar: string - name: volume type: scalar: string - name: io.k8s.api.core.v1.RBDPersistentVolumeSource map: fields: - name: fsType type: scalar: string - name: image type: scalar: string - name: keyring type: scalar: string - name: monitors type: list: elementType: scalar: string elementRelationship: atomic - name: pool type: scalar: string - name: readOnly type: scalar: boolean - name: secretRef type: namedType: io.k8s.api.core.v1.SecretReference - name: user type: scalar: string - name: io.k8s.api.core.v1.RBDVolumeSource map: fields: - name: fsType type: scalar: string - name: image type: scalar: string - name: keyring type: scalar: string - name: monitors type: list: elementType: scalar: string elementRelationship: atomic - name: pool type: scalar: string - name: readOnly type: scalar: boolean - name: secretRef type: namedType: io.k8s.api.core.v1.LocalObjectReference - name: user type: scalar: string - name: io.k8s.api.core.v1.ReplicationController map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.core.v1.ReplicationControllerSpec - name: status type: namedType: io.k8s.api.core.v1.ReplicationControllerStatus - name: io.k8s.api.core.v1.ReplicationControllerCondition map: fields: - name: lastTransitionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: reason type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.api.core.v1.ReplicationControllerList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.core.v1.ReplicationController elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.core.v1.ReplicationControllerSpec map: fields: - name: minReadySeconds type: scalar: numeric - name: replicas type: scalar: numeric - name: selector type: map: elementType: scalar: string elementRelationship: atomic - name: template type: namedType: io.k8s.api.core.v1.PodTemplateSpec - name: io.k8s.api.core.v1.ReplicationControllerStatus map: fields: - name: availableReplicas type: scalar: numeric - name: conditions type: list: elementType: namedType: io.k8s.api.core.v1.ReplicationControllerCondition elementRelationship: associative keys: - type - name: fullyLabeledReplicas type: scalar: numeric - name: observedGeneration type: scalar: numeric - name: readyReplicas type: scalar: numeric - name: replicas type: scalar: numeric - name: io.k8s.api.core.v1.ResourceClaim map: fields: - name: name type: scalar: string - name: io.k8s.api.core.v1.ResourceFieldSelector map: fields: - name: containerName type: scalar: string - name: divisor type: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: resource type: scalar: string elementRelationship: atomic - name: io.k8s.api.core.v1.ResourceQuota map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.core.v1.ResourceQuotaSpec - name: status type: namedType: io.k8s.api.core.v1.ResourceQuotaStatus - name: io.k8s.api.core.v1.ResourceQuotaList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.core.v1.ResourceQuota elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.core.v1.ResourceQuotaSpec map: fields: - name: hard type: map: elementType: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: scopeSelector type: namedType: io.k8s.api.core.v1.ScopeSelector - name: scopes type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.api.core.v1.ResourceQuotaStatus map: fields: - name: hard type: map: elementType: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: used type: map: elementType: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: io.k8s.api.core.v1.ResourceRequirements map: fields: - name: claims type: list: elementType: namedType: io.k8s.api.core.v1.ResourceClaim elementRelationship: associative - name: limits type: map: elementType: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: requests type: map: elementType: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: io.k8s.api.core.v1.SELinuxOptions map: fields: - name: level type: scalar: string - name: role type: scalar: string - name: type type: scalar: string - name: user type: scalar: string - name: io.k8s.api.core.v1.ScaleIOPersistentVolumeSource map: fields: - name: fsType type: scalar: string - name: gateway type: scalar: string - name: protectionDomain type: scalar: string - name: readOnly type: scalar: boolean - name: secretRef type: namedType: io.k8s.api.core.v1.SecretReference - name: sslEnabled type: scalar: boolean - name: storageMode type: scalar: string - name: storagePool type: scalar: string - name: system type: scalar: string - name: volumeName type: scalar: string - name: io.k8s.api.core.v1.ScaleIOVolumeSource map: fields: - name: fsType type: scalar: string - name: gateway type: scalar: string - name: protectionDomain type: scalar: string - name: readOnly type: scalar: boolean - name: secretRef type: namedType: io.k8s.api.core.v1.LocalObjectReference - name: sslEnabled type: scalar: boolean - name: storageMode type: scalar: string - name: storagePool type: scalar: string - name: system type: scalar: string - name: volumeName type: scalar: string - name: io.k8s.api.core.v1.ScopeSelector map: fields: - name: matchExpressions type: list: elementType: namedType: io.k8s.api.core.v1.ScopedResourceSelectorRequirement elementRelationship: atomic elementRelationship: atomic - name: io.k8s.api.core.v1.ScopedResourceSelectorRequirement map: fields: - name: operator type: scalar: string - name: scopeName type: scalar: string - name: values type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.api.core.v1.SeccompProfile map: fields: - name: localhostProfile type: scalar: string - name: type type: scalar: string unions: - discriminator: type fields: - fieldName: localhostProfile discriminatorValue: LocalhostProfile - name: io.k8s.api.core.v1.Secret map: fields: - name: apiVersion type: scalar: string - name: data type: map: elementType: scalar: string - name: immutable type: scalar: boolean - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: stringData type: map: elementType: scalar: string - name: type type: scalar: string - name: io.k8s.api.core.v1.SecretEnvSource map: fields: - name: name type: scalar: string - name: optional type: scalar: boolean - name: io.k8s.api.core.v1.SecretKeySelector map: fields: - name: key type: scalar: string - name: name type: scalar: string - name: optional type: scalar: boolean elementRelationship: atomic - name: io.k8s.api.core.v1.SecretList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.core.v1.Secret elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.core.v1.SecretProjection map: fields: - name: items type: list: elementType: namedType: io.k8s.api.core.v1.KeyToPath elementRelationship: atomic - name: name type: scalar: string - name: optional type: scalar: boolean - name: io.k8s.api.core.v1.SecretReference map: fields: - name: name type: scalar: string - name: namespace type: scalar: string elementRelationship: atomic - name: io.k8s.api.core.v1.SecretVolumeSource map: fields: - name: defaultMode type: scalar: numeric - name: items type: list: elementType: namedType: io.k8s.api.core.v1.KeyToPath elementRelationship: atomic - name: optional type: scalar: boolean - name: secretName type: scalar: string - name: io.k8s.api.core.v1.SecurityContext map: fields: - name: allowPrivilegeEscalation type: scalar: boolean - name: capabilities type: namedType: io.k8s.api.core.v1.Capabilities - name: privileged type: scalar: boolean - name: procMount type: scalar: string - name: readOnlyRootFilesystem type: scalar: boolean - name: runAsGroup type: scalar: numeric - name: runAsNonRoot type: scalar: boolean - name: runAsUser type: scalar: numeric - name: seLinuxOptions type: namedType: io.k8s.api.core.v1.SELinuxOptions - name: seccompProfile type: namedType: io.k8s.api.core.v1.SeccompProfile - name: windowsOptions type: namedType: io.k8s.api.core.v1.WindowsSecurityContextOptions - name: io.k8s.api.core.v1.Service map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.core.v1.ServiceSpec - name: status type: namedType: io.k8s.api.core.v1.ServiceStatus - name: io.k8s.api.core.v1.ServiceAccount map: fields: - name: apiVersion type: scalar: string - name: automountServiceAccountToken type: scalar: boolean - name: imagePullSecrets type: list: elementType: namedType: io.k8s.api.core.v1.LocalObjectReference elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: secrets type: list: elementType: namedType: io.k8s.api.core.v1.ObjectReference elementRelationship: associative keys: - name - name: io.k8s.api.core.v1.ServiceAccountList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.core.v1.ServiceAccount elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.core.v1.ServiceAccountTokenProjection map: fields: - name: audience type: scalar: string - name: expirationSeconds type: scalar: numeric - name: path type: scalar: string - name: io.k8s.api.core.v1.ServiceList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.core.v1.Service elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.core.v1.ServicePort map: fields: - name: appProtocol type: scalar: string - name: name type: scalar: string - name: nodePort type: scalar: numeric - name: port type: scalar: numeric - name: protocol type: scalar: string - name: targetPort type: namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString - name: io.k8s.api.core.v1.ServiceSpec map: fields: - name: allocateLoadBalancerNodePorts type: scalar: boolean - name: clusterIP type: scalar: string - name: clusterIPs type: list: elementType: scalar: string elementRelationship: atomic - name: externalIPs type: list: elementType: scalar: string elementRelationship: atomic - name: externalName type: scalar: string - name: externalTrafficPolicy type: scalar: string - name: healthCheckNodePort type: scalar: numeric - name: internalTrafficPolicy type: scalar: string - name: ipFamilies type: list: elementType: scalar: string elementRelationship: atomic - name: ipFamilyPolicy type: scalar: string - name: loadBalancerClass type: scalar: string - name: loadBalancerIP type: scalar: string - name: loadBalancerSourceRanges type: list: elementType: scalar: string elementRelationship: atomic - name: ports type: list: elementType: namedType: io.k8s.api.core.v1.ServicePort elementRelationship: associative keys: - port - protocol - name: publishNotReadyAddresses type: scalar: boolean - name: selector type: map: elementType: scalar: string elementRelationship: atomic - name: sessionAffinity type: scalar: string - name: sessionAffinityConfig type: namedType: io.k8s.api.core.v1.SessionAffinityConfig - name: type type: scalar: string - name: io.k8s.api.core.v1.ServiceStatus map: fields: - name: conditions type: list: elementType: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Condition elementRelationship: associative keys: - type - name: loadBalancer type: namedType: io.k8s.api.core.v1.LoadBalancerStatus - name: io.k8s.api.core.v1.SessionAffinityConfig map: fields: - name: clientIP type: namedType: io.k8s.api.core.v1.ClientIPConfig - name: io.k8s.api.core.v1.StorageOSPersistentVolumeSource map: fields: - name: fsType type: scalar: string - name: readOnly type: scalar: boolean - name: secretRef type: namedType: io.k8s.api.core.v1.ObjectReference - name: volumeName type: scalar: string - name: volumeNamespace type: scalar: string - name: io.k8s.api.core.v1.StorageOSVolumeSource map: fields: - name: fsType type: scalar: string - name: readOnly type: scalar: boolean - name: secretRef type: namedType: io.k8s.api.core.v1.LocalObjectReference - name: volumeName type: scalar: string - name: volumeNamespace type: scalar: string - name: io.k8s.api.core.v1.Sysctl map: fields: - name: name type: scalar: string - name: value type: scalar: string - name: io.k8s.api.core.v1.TCPSocketAction map: fields: - name: host type: scalar: string - name: port type: namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString - name: io.k8s.api.core.v1.Taint map: fields: - name: effect type: scalar: string - name: key type: scalar: string - name: timeAdded type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: value type: scalar: string - name: io.k8s.api.core.v1.Toleration map: fields: - name: effect type: scalar: string - name: key type: scalar: string - name: operator type: scalar: string - name: tolerationSeconds type: scalar: numeric - name: value type: scalar: string - name: io.k8s.api.core.v1.TopologySelectorLabelRequirement map: fields: - name: key type: scalar: string - name: values type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.api.core.v1.TopologySelectorTerm map: fields: - name: matchLabelExpressions type: list: elementType: namedType: io.k8s.api.core.v1.TopologySelectorLabelRequirement elementRelationship: atomic elementRelationship: atomic - name: io.k8s.api.core.v1.TopologySpreadConstraint map: fields: - name: labelSelector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: matchLabelKeys type: list: elementType: scalar: string elementRelationship: atomic - name: maxSkew type: scalar: numeric - name: minDomains type: scalar: numeric - name: nodeAffinityPolicy type: scalar: string - name: nodeTaintsPolicy type: scalar: string - name: topologyKey type: scalar: string - name: whenUnsatisfiable type: scalar: string - name: io.k8s.api.core.v1.TypedLocalObjectReference map: fields: - name: apiGroup type: scalar: string - name: kind type: scalar: string - name: name type: scalar: string elementRelationship: atomic - name: io.k8s.api.core.v1.TypedObjectReference map: fields: - name: apiGroup type: scalar: string - name: kind type: scalar: string - name: name type: scalar: string - name: namespace type: scalar: string - name: io.k8s.api.core.v1.Volume map: fields: - name: awsElasticBlockStore type: namedType: io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource - name: azureDisk type: namedType: io.k8s.api.core.v1.AzureDiskVolumeSource - name: azureFile type: namedType: io.k8s.api.core.v1.AzureFileVolumeSource - name: cephfs type: namedType: io.k8s.api.core.v1.CephFSVolumeSource - name: cinder type: namedType: io.k8s.api.core.v1.CinderVolumeSource - name: configMap type: namedType: io.k8s.api.core.v1.ConfigMapVolumeSource - name: csi type: namedType: io.k8s.api.core.v1.CSIVolumeSource - name: downwardAPI type: namedType: io.k8s.api.core.v1.DownwardAPIVolumeSource - name: emptyDir type: namedType: io.k8s.api.core.v1.EmptyDirVolumeSource - name: ephemeral type: namedType: io.k8s.api.core.v1.EphemeralVolumeSource - name: fc type: namedType: io.k8s.api.core.v1.FCVolumeSource - name: flexVolume type: namedType: io.k8s.api.core.v1.FlexVolumeSource - name: flocker type: namedType: io.k8s.api.core.v1.FlockerVolumeSource - name: gcePersistentDisk type: namedType: io.k8s.api.core.v1.GCEPersistentDiskVolumeSource - name: gitRepo type: namedType: io.k8s.api.core.v1.GitRepoVolumeSource - name: glusterfs type: namedType: io.k8s.api.core.v1.GlusterfsVolumeSource - name: hostPath type: namedType: io.k8s.api.core.v1.HostPathVolumeSource - name: iscsi type: namedType: io.k8s.api.core.v1.ISCSIVolumeSource - name: name type: scalar: string - name: nfs type: namedType: io.k8s.api.core.v1.NFSVolumeSource - name: persistentVolumeClaim type: namedType: io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource - name: photonPersistentDisk type: namedType: io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource - name: portworxVolume type: namedType: io.k8s.api.core.v1.PortworxVolumeSource - name: projected type: namedType: io.k8s.api.core.v1.ProjectedVolumeSource - name: quobyte type: namedType: io.k8s.api.core.v1.QuobyteVolumeSource - name: rbd type: namedType: io.k8s.api.core.v1.RBDVolumeSource - name: scaleIO type: namedType: io.k8s.api.core.v1.ScaleIOVolumeSource - name: secret type: namedType: io.k8s.api.core.v1.SecretVolumeSource - name: storageos type: namedType: io.k8s.api.core.v1.StorageOSVolumeSource - name: vsphereVolume type: namedType: io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource - name: io.k8s.api.core.v1.VolumeDevice map: fields: - name: devicePath type: scalar: string - name: name type: scalar: string - name: io.k8s.api.core.v1.VolumeMount map: fields: - name: mountPath type: scalar: string - name: mountPropagation type: scalar: string - name: name type: scalar: string - name: readOnly type: scalar: boolean - name: subPath type: scalar: string - name: subPathExpr type: scalar: string - name: io.k8s.api.core.v1.VolumeNodeAffinity map: fields: - name: required type: namedType: io.k8s.api.core.v1.NodeSelector - name: io.k8s.api.core.v1.VolumeProjection map: fields: - name: configMap type: namedType: io.k8s.api.core.v1.ConfigMapProjection - name: downwardAPI type: namedType: io.k8s.api.core.v1.DownwardAPIProjection - name: secret type: namedType: io.k8s.api.core.v1.SecretProjection - name: serviceAccountToken type: namedType: io.k8s.api.core.v1.ServiceAccountTokenProjection - name: io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource map: fields: - name: fsType type: scalar: string - name: storagePolicyID type: scalar: string - name: storagePolicyName type: scalar: string - name: volumePath type: scalar: string - name: io.k8s.api.core.v1.WeightedPodAffinityTerm map: fields: - name: podAffinityTerm type: namedType: io.k8s.api.core.v1.PodAffinityTerm - name: weight type: scalar: numeric - name: io.k8s.api.core.v1.WindowsSecurityContextOptions map: fields: - name: gmsaCredentialSpec type: scalar: string - name: gmsaCredentialSpecName type: scalar: string - name: hostProcess type: scalar: boolean - name: runAsUserName type: scalar: string - name: io.k8s.api.discovery.v1.Endpoint map: fields: - name: addresses type: list: elementType: scalar: string elementRelationship: associative - name: conditions type: namedType: io.k8s.api.discovery.v1.EndpointConditions - name: deprecatedTopology type: map: elementType: scalar: string - name: hints type: namedType: io.k8s.api.discovery.v1.EndpointHints - name: hostname type: scalar: string - name: nodeName type: scalar: string - name: targetRef type: namedType: io.k8s.api.core.v1.ObjectReference - name: zone type: scalar: string - name: io.k8s.api.discovery.v1.EndpointConditions map: fields: - name: ready type: scalar: boolean - name: serving type: scalar: boolean - name: terminating type: scalar: boolean - name: io.k8s.api.discovery.v1.EndpointHints map: fields: - name: forZones type: list: elementType: namedType: io.k8s.api.discovery.v1.ForZone elementRelationship: atomic - name: io.k8s.api.discovery.v1.EndpointPort map: fields: - name: appProtocol type: scalar: string - name: name type: scalar: string - name: port type: scalar: numeric - name: protocol type: scalar: string elementRelationship: atomic - name: io.k8s.api.discovery.v1.EndpointSlice map: fields: - name: addressType type: scalar: string - name: apiVersion type: scalar: string - name: endpoints type: list: elementType: namedType: io.k8s.api.discovery.v1.Endpoint elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: ports type: list: elementType: namedType: io.k8s.api.discovery.v1.EndpointPort elementRelationship: atomic - name: io.k8s.api.discovery.v1.EndpointSliceList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.discovery.v1.EndpointSlice elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.discovery.v1.ForZone map: fields: - name: name type: scalar: string - name: io.k8s.api.events.v1.Event map: fields: - name: action type: scalar: string - name: apiVersion type: scalar: string - name: deprecatedCount type: scalar: numeric - name: deprecatedFirstTimestamp type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: deprecatedLastTimestamp type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: deprecatedSource type: namedType: io.k8s.api.core.v1.EventSource - name: eventTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: note type: scalar: string - name: reason type: scalar: string - name: regarding type: namedType: io.k8s.api.core.v1.ObjectReference - name: related type: namedType: io.k8s.api.core.v1.ObjectReference - name: reportingController type: scalar: string - name: reportingInstance type: scalar: string - name: series type: namedType: io.k8s.api.events.v1.EventSeries - name: type type: scalar: string - name: io.k8s.api.events.v1.EventList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.events.v1.Event elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.events.v1.EventSeries map: fields: - name: count type: scalar: numeric - name: lastObservedTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime - name: io.k8s.api.flowcontrol.v1beta2.FlowDistinguisherMethod map: fields: - name: type type: scalar: string - name: io.k8s.api.flowcontrol.v1beta2.FlowSchema map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.flowcontrol.v1beta2.FlowSchemaSpec - name: status type: namedType: io.k8s.api.flowcontrol.v1beta2.FlowSchemaStatus - name: io.k8s.api.flowcontrol.v1beta2.FlowSchemaCondition map: fields: - name: lastTransitionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: reason type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.api.flowcontrol.v1beta2.FlowSchemaList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.flowcontrol.v1beta2.FlowSchema elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.flowcontrol.v1beta2.FlowSchemaSpec map: fields: - name: distinguisherMethod type: namedType: io.k8s.api.flowcontrol.v1beta2.FlowDistinguisherMethod - name: matchingPrecedence type: scalar: numeric - name: priorityLevelConfiguration type: namedType: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationReference - name: rules type: list: elementType: namedType: io.k8s.api.flowcontrol.v1beta2.PolicyRulesWithSubjects elementRelationship: atomic - name: io.k8s.api.flowcontrol.v1beta2.FlowSchemaStatus map: fields: - name: conditions type: list: elementType: namedType: io.k8s.api.flowcontrol.v1beta2.FlowSchemaCondition elementRelationship: associative keys: - type - name: io.k8s.api.flowcontrol.v1beta2.GroupSubject map: fields: - name: name type: scalar: string - name: io.k8s.api.flowcontrol.v1beta2.LimitResponse map: fields: - name: queuing type: namedType: io.k8s.api.flowcontrol.v1beta2.QueuingConfiguration - name: type type: scalar: string unions: - discriminator: type fields: - fieldName: queuing discriminatorValue: Queuing - name: io.k8s.api.flowcontrol.v1beta2.LimitedPriorityLevelConfiguration map: fields: - name: assuredConcurrencyShares type: scalar: numeric - name: borrowingLimitPercent type: scalar: numeric - name: lendablePercent type: scalar: numeric - name: limitResponse type: namedType: io.k8s.api.flowcontrol.v1beta2.LimitResponse - name: io.k8s.api.flowcontrol.v1beta2.NonResourcePolicyRule map: fields: - name: nonResourceURLs type: list: elementType: scalar: string elementRelationship: associative - name: verbs type: list: elementType: scalar: string elementRelationship: associative - name: io.k8s.api.flowcontrol.v1beta2.PolicyRulesWithSubjects map: fields: - name: nonResourceRules type: list: elementType: namedType: io.k8s.api.flowcontrol.v1beta2.NonResourcePolicyRule elementRelationship: atomic - name: resourceRules type: list: elementType: namedType: io.k8s.api.flowcontrol.v1beta2.ResourcePolicyRule elementRelationship: atomic - name: subjects type: list: elementType: namedType: io.k8s.api.flowcontrol.v1beta2.Subject elementRelationship: atomic - name: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationSpec - name: status type: namedType: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationStatus - name: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationCondition map: fields: - name: lastTransitionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: reason type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationReference map: fields: - name: name type: scalar: string - name: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationSpec map: fields: - name: limited type: namedType: io.k8s.api.flowcontrol.v1beta2.LimitedPriorityLevelConfiguration - name: type type: scalar: string unions: - discriminator: type fields: - fieldName: limited discriminatorValue: Limited - name: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationStatus map: fields: - name: conditions type: list: elementType: namedType: io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationCondition elementRelationship: associative keys: - type - name: io.k8s.api.flowcontrol.v1beta2.QueuingConfiguration map: fields: - name: handSize type: scalar: numeric - name: queueLengthLimit type: scalar: numeric - name: queues type: scalar: numeric - name: io.k8s.api.flowcontrol.v1beta2.ResourcePolicyRule map: fields: - name: apiGroups type: list: elementType: scalar: string elementRelationship: associative - name: clusterScope type: scalar: boolean - name: namespaces type: list: elementType: scalar: string elementRelationship: associative - name: resources type: list: elementType: scalar: string elementRelationship: associative - name: verbs type: list: elementType: scalar: string elementRelationship: associative - name: io.k8s.api.flowcontrol.v1beta2.ServiceAccountSubject map: fields: - name: name type: scalar: string - name: namespace type: scalar: string - name: io.k8s.api.flowcontrol.v1beta2.Subject map: fields: - name: group type: namedType: io.k8s.api.flowcontrol.v1beta2.GroupSubject - name: kind type: scalar: string - name: serviceAccount type: namedType: io.k8s.api.flowcontrol.v1beta2.ServiceAccountSubject - name: user type: namedType: io.k8s.api.flowcontrol.v1beta2.UserSubject unions: - discriminator: kind fields: - fieldName: group discriminatorValue: Group - fieldName: serviceAccount discriminatorValue: ServiceAccount - fieldName: user discriminatorValue: User - name: io.k8s.api.flowcontrol.v1beta2.UserSubject map: fields: - name: name type: scalar: string - name: io.k8s.api.flowcontrol.v1beta3.FlowDistinguisherMethod map: fields: - name: type type: scalar: string - name: io.k8s.api.flowcontrol.v1beta3.FlowSchema map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.flowcontrol.v1beta3.FlowSchemaSpec - name: status type: namedType: io.k8s.api.flowcontrol.v1beta3.FlowSchemaStatus - name: io.k8s.api.flowcontrol.v1beta3.FlowSchemaCondition map: fields: - name: lastTransitionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: reason type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.api.flowcontrol.v1beta3.FlowSchemaList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.flowcontrol.v1beta3.FlowSchema elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.flowcontrol.v1beta3.FlowSchemaSpec map: fields: - name: distinguisherMethod type: namedType: io.k8s.api.flowcontrol.v1beta3.FlowDistinguisherMethod - name: matchingPrecedence type: scalar: numeric - name: priorityLevelConfiguration type: namedType: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationReference - name: rules type: list: elementType: namedType: io.k8s.api.flowcontrol.v1beta3.PolicyRulesWithSubjects elementRelationship: atomic - name: io.k8s.api.flowcontrol.v1beta3.FlowSchemaStatus map: fields: - name: conditions type: list: elementType: namedType: io.k8s.api.flowcontrol.v1beta3.FlowSchemaCondition elementRelationship: associative keys: - type - name: io.k8s.api.flowcontrol.v1beta3.GroupSubject map: fields: - name: name type: scalar: string - name: io.k8s.api.flowcontrol.v1beta3.LimitResponse map: fields: - name: queuing type: namedType: io.k8s.api.flowcontrol.v1beta3.QueuingConfiguration - name: type type: scalar: string unions: - discriminator: type fields: - fieldName: queuing discriminatorValue: Queuing - name: io.k8s.api.flowcontrol.v1beta3.LimitedPriorityLevelConfiguration map: fields: - name: borrowingLimitPercent type: scalar: numeric - name: lendablePercent type: scalar: numeric - name: limitResponse type: namedType: io.k8s.api.flowcontrol.v1beta3.LimitResponse - name: nominalConcurrencyShares type: scalar: numeric - name: io.k8s.api.flowcontrol.v1beta3.NonResourcePolicyRule map: fields: - name: nonResourceURLs type: list: elementType: scalar: string elementRelationship: associative - name: verbs type: list: elementType: scalar: string elementRelationship: associative - name: io.k8s.api.flowcontrol.v1beta3.PolicyRulesWithSubjects map: fields: - name: nonResourceRules type: list: elementType: namedType: io.k8s.api.flowcontrol.v1beta3.NonResourcePolicyRule elementRelationship: atomic - name: resourceRules type: list: elementType: namedType: io.k8s.api.flowcontrol.v1beta3.ResourcePolicyRule elementRelationship: atomic - name: subjects type: list: elementType: namedType: io.k8s.api.flowcontrol.v1beta3.Subject elementRelationship: atomic - name: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationSpec - name: status type: namedType: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationStatus - name: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationCondition map: fields: - name: lastTransitionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: reason type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationReference map: fields: - name: name type: scalar: string - name: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationSpec map: fields: - name: limited type: namedType: io.k8s.api.flowcontrol.v1beta3.LimitedPriorityLevelConfiguration - name: type type: scalar: string unions: - discriminator: type fields: - fieldName: limited discriminatorValue: Limited - name: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationStatus map: fields: - name: conditions type: list: elementType: namedType: io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationCondition elementRelationship: associative keys: - type - name: io.k8s.api.flowcontrol.v1beta3.QueuingConfiguration map: fields: - name: handSize type: scalar: numeric - name: queueLengthLimit type: scalar: numeric - name: queues type: scalar: numeric - name: io.k8s.api.flowcontrol.v1beta3.ResourcePolicyRule map: fields: - name: apiGroups type: list: elementType: scalar: string elementRelationship: associative - name: clusterScope type: scalar: boolean - name: namespaces type: list: elementType: scalar: string elementRelationship: associative - name: resources type: list: elementType: scalar: string elementRelationship: associative - name: verbs type: list: elementType: scalar: string elementRelationship: associative - name: io.k8s.api.flowcontrol.v1beta3.ServiceAccountSubject map: fields: - name: name type: scalar: string - name: namespace type: scalar: string - name: io.k8s.api.flowcontrol.v1beta3.Subject map: fields: - name: group type: namedType: io.k8s.api.flowcontrol.v1beta3.GroupSubject - name: kind type: scalar: string - name: serviceAccount type: namedType: io.k8s.api.flowcontrol.v1beta3.ServiceAccountSubject - name: user type: namedType: io.k8s.api.flowcontrol.v1beta3.UserSubject unions: - discriminator: kind fields: - fieldName: group discriminatorValue: Group - fieldName: serviceAccount discriminatorValue: ServiceAccount - fieldName: user discriminatorValue: User - name: io.k8s.api.flowcontrol.v1beta3.UserSubject map: fields: - name: name type: scalar: string - name: io.k8s.api.networking.v1.HTTPIngressPath map: fields: - name: backend type: namedType: io.k8s.api.networking.v1.IngressBackend - name: path type: scalar: string - name: pathType type: scalar: string - name: io.k8s.api.networking.v1.HTTPIngressRuleValue map: fields: - name: paths type: list: elementType: namedType: io.k8s.api.networking.v1.HTTPIngressPath elementRelationship: atomic - name: io.k8s.api.networking.v1.IPBlock map: fields: - name: cidr type: scalar: string - name: except type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.api.networking.v1.Ingress map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.networking.v1.IngressSpec - name: status type: namedType: io.k8s.api.networking.v1.IngressStatus - name: io.k8s.api.networking.v1.IngressBackend map: fields: - name: resource type: namedType: io.k8s.api.core.v1.TypedLocalObjectReference - name: service type: namedType: io.k8s.api.networking.v1.IngressServiceBackend - name: io.k8s.api.networking.v1.IngressClass map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.networking.v1.IngressClassSpec - name: io.k8s.api.networking.v1.IngressClassList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.networking.v1.IngressClass elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.networking.v1.IngressClassParametersReference map: fields: - name: apiGroup type: scalar: string - name: kind type: scalar: string - name: name type: scalar: string - name: namespace type: scalar: string - name: scope type: scalar: string - name: io.k8s.api.networking.v1.IngressClassSpec map: fields: - name: controller type: scalar: string - name: parameters type: namedType: io.k8s.api.networking.v1.IngressClassParametersReference - name: io.k8s.api.networking.v1.IngressList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.networking.v1.Ingress elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.networking.v1.IngressLoadBalancerIngress map: fields: - name: hostname type: scalar: string - name: ip type: scalar: string - name: ports type: list: elementType: namedType: io.k8s.api.networking.v1.IngressPortStatus elementRelationship: atomic - name: io.k8s.api.networking.v1.IngressLoadBalancerStatus map: fields: - name: ingress type: list: elementType: namedType: io.k8s.api.networking.v1.IngressLoadBalancerIngress elementRelationship: atomic - name: io.k8s.api.networking.v1.IngressPortStatus map: fields: - name: error type: scalar: string - name: port type: scalar: numeric - name: protocol type: scalar: string - name: io.k8s.api.networking.v1.IngressRule map: fields: - name: host type: scalar: string - name: http type: namedType: io.k8s.api.networking.v1.HTTPIngressRuleValue - name: io.k8s.api.networking.v1.IngressServiceBackend map: fields: - name: name type: scalar: string - name: port type: namedType: io.k8s.api.networking.v1.ServiceBackendPort - name: io.k8s.api.networking.v1.IngressSpec map: fields: - name: defaultBackend type: namedType: io.k8s.api.networking.v1.IngressBackend - name: ingressClassName type: scalar: string - name: rules type: list: elementType: namedType: io.k8s.api.networking.v1.IngressRule elementRelationship: atomic - name: tls type: list: elementType: namedType: io.k8s.api.networking.v1.IngressTLS elementRelationship: atomic - name: io.k8s.api.networking.v1.IngressStatus map: fields: - name: loadBalancer type: namedType: io.k8s.api.networking.v1.IngressLoadBalancerStatus - name: io.k8s.api.networking.v1.IngressTLS map: fields: - name: hosts type: list: elementType: scalar: string elementRelationship: atomic - name: secretName type: scalar: string - name: io.k8s.api.networking.v1.NetworkPolicy map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.networking.v1.NetworkPolicySpec - name: status type: namedType: io.k8s.api.networking.v1.NetworkPolicyStatus - name: io.k8s.api.networking.v1.NetworkPolicyEgressRule map: fields: - name: ports type: list: elementType: namedType: io.k8s.api.networking.v1.NetworkPolicyPort elementRelationship: atomic - name: to type: list: elementType: namedType: io.k8s.api.networking.v1.NetworkPolicyPeer elementRelationship: atomic - name: io.k8s.api.networking.v1.NetworkPolicyIngressRule map: fields: - name: from type: list: elementType: namedType: io.k8s.api.networking.v1.NetworkPolicyPeer elementRelationship: atomic - name: ports type: list: elementType: namedType: io.k8s.api.networking.v1.NetworkPolicyPort elementRelationship: atomic - name: io.k8s.api.networking.v1.NetworkPolicyList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.networking.v1.NetworkPolicy elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.networking.v1.NetworkPolicyPeer map: fields: - name: ipBlock type: namedType: io.k8s.api.networking.v1.IPBlock - name: namespaceSelector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: podSelector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: io.k8s.api.networking.v1.NetworkPolicyPort map: fields: - name: endPort type: scalar: numeric - name: port type: namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString - name: protocol type: scalar: string - name: io.k8s.api.networking.v1.NetworkPolicySpec map: fields: - name: egress type: list: elementType: namedType: io.k8s.api.networking.v1.NetworkPolicyEgressRule elementRelationship: atomic - name: ingress type: list: elementType: namedType: io.k8s.api.networking.v1.NetworkPolicyIngressRule elementRelationship: atomic - name: podSelector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: policyTypes type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.api.networking.v1.NetworkPolicyStatus map: fields: - name: conditions type: list: elementType: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Condition elementRelationship: associative keys: - type - name: io.k8s.api.networking.v1.ServiceBackendPort map: fields: - name: name type: scalar: string - name: number type: scalar: numeric - name: io.k8s.api.node.v1.Overhead map: fields: - name: podFixed type: map: elementType: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: io.k8s.api.node.v1.RuntimeClass map: fields: - name: apiVersion type: scalar: string - name: handler type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: overhead type: namedType: io.k8s.api.node.v1.Overhead - name: scheduling type: namedType: io.k8s.api.node.v1.Scheduling - name: io.k8s.api.node.v1.RuntimeClassList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.node.v1.RuntimeClass elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.node.v1.Scheduling map: fields: - name: nodeSelector type: map: elementType: scalar: string elementRelationship: atomic - name: tolerations type: list: elementType: namedType: io.k8s.api.core.v1.Toleration elementRelationship: atomic - name: io.k8s.api.policy.v1.Eviction map: fields: - name: apiVersion type: scalar: string - name: deleteOptions type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: io.k8s.api.policy.v1.PodDisruptionBudget map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.policy.v1.PodDisruptionBudgetSpec - name: status type: namedType: io.k8s.api.policy.v1.PodDisruptionBudgetStatus - name: io.k8s.api.policy.v1.PodDisruptionBudgetList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.policy.v1.PodDisruptionBudget elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.policy.v1.PodDisruptionBudgetSpec map: fields: - name: maxUnavailable type: namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString - name: minAvailable type: namedType: io.k8s.apimachinery.pkg.util.intstr.IntOrString - name: selector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: unhealthyPodEvictionPolicy type: scalar: string - name: io.k8s.api.policy.v1.PodDisruptionBudgetStatus map: fields: - name: conditions type: list: elementType: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Condition elementRelationship: associative keys: - type - name: currentHealthy type: scalar: numeric - name: desiredHealthy type: scalar: numeric - name: disruptedPods type: map: elementType: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: disruptionsAllowed type: scalar: numeric - name: expectedPods type: scalar: numeric - name: observedGeneration type: scalar: numeric - name: io.k8s.api.rbac.v1.AggregationRule map: fields: - name: clusterRoleSelectors type: list: elementType: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector elementRelationship: atomic - name: io.k8s.api.rbac.v1.ClusterRole map: fields: - name: aggregationRule type: namedType: io.k8s.api.rbac.v1.AggregationRule - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: rules type: list: elementType: namedType: io.k8s.api.rbac.v1.PolicyRule elementRelationship: atomic - name: io.k8s.api.rbac.v1.ClusterRoleBinding map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: roleRef type: namedType: io.k8s.api.rbac.v1.RoleRef - name: subjects type: list: elementType: namedType: io.k8s.api.rbac.v1.Subject elementRelationship: atomic - name: io.k8s.api.rbac.v1.ClusterRoleBindingList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.rbac.v1.ClusterRoleBinding elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.rbac.v1.ClusterRoleList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.rbac.v1.ClusterRole elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.rbac.v1.PolicyRule map: fields: - name: apiGroups type: list: elementType: scalar: string elementRelationship: atomic - name: nonResourceURLs type: list: elementType: scalar: string elementRelationship: atomic - name: resourceNames type: list: elementType: scalar: string elementRelationship: atomic - name: resources type: list: elementType: scalar: string elementRelationship: atomic - name: verbs type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.api.rbac.v1.Role map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: rules type: list: elementType: namedType: io.k8s.api.rbac.v1.PolicyRule elementRelationship: atomic - name: io.k8s.api.rbac.v1.RoleBinding map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: roleRef type: namedType: io.k8s.api.rbac.v1.RoleRef - name: subjects type: list: elementType: namedType: io.k8s.api.rbac.v1.Subject elementRelationship: atomic - name: io.k8s.api.rbac.v1.RoleBindingList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.rbac.v1.RoleBinding elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.rbac.v1.RoleList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.rbac.v1.Role elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.rbac.v1.RoleRef map: fields: - name: apiGroup type: scalar: string - name: kind type: scalar: string - name: name type: scalar: string elementRelationship: atomic - name: io.k8s.api.rbac.v1.Subject map: fields: - name: apiGroup type: scalar: string - name: kind type: scalar: string - name: name type: scalar: string - name: namespace type: scalar: string elementRelationship: atomic - name: io.k8s.api.scheduling.v1.PriorityClass map: fields: - name: apiVersion type: scalar: string - name: description type: scalar: string - name: globalDefault type: scalar: boolean - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: preemptionPolicy type: scalar: string - name: value type: scalar: numeric - name: io.k8s.api.scheduling.v1.PriorityClassList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.scheduling.v1.PriorityClass elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.storage.v1.CSIDriver map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.storage.v1.CSIDriverSpec - name: io.k8s.api.storage.v1.CSIDriverList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.storage.v1.CSIDriver elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.storage.v1.CSIDriverSpec map: fields: - name: attachRequired type: scalar: boolean - name: fsGroupPolicy type: scalar: string - name: podInfoOnMount type: scalar: boolean - name: requiresRepublish type: scalar: boolean - name: seLinuxMount type: scalar: boolean - name: storageCapacity type: scalar: boolean - name: tokenRequests type: list: elementType: namedType: io.k8s.api.storage.v1.TokenRequest elementRelationship: atomic - name: volumeLifecycleModes type: list: elementType: scalar: string elementRelationship: associative - name: io.k8s.api.storage.v1.CSINode map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.storage.v1.CSINodeSpec - name: io.k8s.api.storage.v1.CSINodeDriver map: fields: - name: allocatable type: namedType: io.k8s.api.storage.v1.VolumeNodeResources - name: name type: scalar: string - name: nodeID type: scalar: string - name: topologyKeys type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.api.storage.v1.CSINodeList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.storage.v1.CSINode elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.storage.v1.CSINodeSpec map: fields: - name: drivers type: list: elementType: namedType: io.k8s.api.storage.v1.CSINodeDriver elementRelationship: associative keys: - name - name: io.k8s.api.storage.v1.CSIStorageCapacity map: fields: - name: apiVersion type: scalar: string - name: capacity type: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: kind type: scalar: string - name: maximumVolumeSize type: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: nodeTopology type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: storageClassName type: scalar: string - name: io.k8s.api.storage.v1.CSIStorageCapacityList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.storage.v1.CSIStorageCapacity elementRelationship: associative keys: - name - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.storage.v1.StorageClass map: fields: - name: allowVolumeExpansion type: scalar: boolean - name: allowedTopologies type: list: elementType: namedType: io.k8s.api.core.v1.TopologySelectorTerm elementRelationship: atomic - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: mountOptions type: list: elementType: scalar: string elementRelationship: atomic - name: parameters type: map: elementType: scalar: string - name: provisioner type: scalar: string - name: reclaimPolicy type: scalar: string - name: volumeBindingMode type: scalar: string - name: io.k8s.api.storage.v1.StorageClassList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.storage.v1.StorageClass elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.storage.v1.TokenRequest map: fields: - name: audience type: scalar: string - name: expirationSeconds type: scalar: numeric - name: io.k8s.api.storage.v1.VolumeAttachment map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.api.storage.v1.VolumeAttachmentSpec - name: status type: namedType: io.k8s.api.storage.v1.VolumeAttachmentStatus - name: io.k8s.api.storage.v1.VolumeAttachmentList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.storage.v1.VolumeAttachment elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.api.storage.v1.VolumeAttachmentSource map: fields: - name: inlineVolumeSpec type: namedType: io.k8s.api.core.v1.PersistentVolumeSpec - name: persistentVolumeName type: scalar: string - name: io.k8s.api.storage.v1.VolumeAttachmentSpec map: fields: - name: attacher type: scalar: string - name: nodeName type: scalar: string - name: source type: namedType: io.k8s.api.storage.v1.VolumeAttachmentSource - name: io.k8s.api.storage.v1.VolumeAttachmentStatus map: fields: - name: attachError type: namedType: io.k8s.api.storage.v1.VolumeError - name: attached type: scalar: boolean - name: attachmentMetadata type: map: elementType: scalar: string - name: detachError type: namedType: io.k8s.api.storage.v1.VolumeError - name: io.k8s.api.storage.v1.VolumeError map: fields: - name: message type: scalar: string - name: time type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: io.k8s.api.storage.v1.VolumeNodeResources map: fields: - name: count type: scalar: numeric - name: io.k8s.api.storage.v1beta1.CSIStorageCapacity map: fields: - name: apiVersion type: scalar: string - name: capacity type: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: kind type: scalar: string - name: maximumVolumeSize type: namedType: io.k8s.apimachinery.pkg.api.resource.Quantity - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: nodeTopology type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector - name: storageClassName type: scalar: string - name: io.k8s.api.storage.v1beta1.CSIStorageCapacityList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.api.storage.v1beta1.CSIStorageCapacity elementRelationship: associative keys: - name - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition map: fields: - name: description type: scalar: string - name: format type: scalar: string - name: jsonPath type: scalar: string - name: name type: scalar: string - name: priority type: scalar: numeric - name: type type: scalar: string - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion map: fields: - name: strategy type: scalar: string - name: webhook type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec - name: status type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition map: fields: - name: lastTransitionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: reason type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames map: fields: - name: categories type: list: elementType: scalar: string elementRelationship: atomic - name: kind type: scalar: string - name: listKind type: scalar: string - name: plural type: scalar: string - name: shortNames type: list: elementType: scalar: string elementRelationship: atomic - name: singular type: scalar: string - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec map: fields: - name: conversion type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion - name: group type: scalar: string - name: names type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames - name: preserveUnknownFields type: scalar: boolean - name: scope type: scalar: string - name: versions type: list: elementType: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion elementRelationship: atomic - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus map: fields: - name: acceptedNames type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames - name: conditions type: list: elementType: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition elementRelationship: associative keys: - type - name: storedVersions type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion map: fields: - name: additionalPrinterColumns type: list: elementType: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition elementRelationship: atomic - name: deprecated type: scalar: boolean - name: deprecationWarning type: scalar: string - name: name type: scalar: string - name: schema type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation - name: served type: scalar: boolean - name: storage type: scalar: boolean - name: subresources type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale map: fields: - name: labelSelectorPath type: scalar: string - name: specReplicasPath type: scalar: string - name: statusReplicasPath type: scalar: string - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus map: elementType: scalar: untyped list: elementType: namedType: __untyped_atomic_ elementRelationship: atomic map: elementType: namedType: __untyped_deduced_ elementRelationship: separable - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources map: fields: - name: scale type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale - name: status type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation map: fields: - name: openAPIV3Schema type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation map: fields: - name: description type: scalar: string - name: url type: scalar: string - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON scalar: untyped list: elementType: namedType: __untyped_atomic_ elementRelationship: atomic map: elementType: namedType: __untyped_deduced_ elementRelationship: separable - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps map: fields: - name: $ref type: scalar: string - name: $schema type: scalar: string - name: additionalItems type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool - name: additionalProperties type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool - name: allOf type: list: elementType: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps elementRelationship: atomic - name: anyOf type: list: elementType: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps elementRelationship: atomic - name: default type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON - name: definitions type: map: elementType: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps - name: dependencies type: map: elementType: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray - name: description type: scalar: string - name: enum type: list: elementType: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON elementRelationship: atomic - name: example type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON - name: exclusiveMaximum type: scalar: boolean - name: exclusiveMinimum type: scalar: boolean - name: externalDocs type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation - name: format type: scalar: string - name: id type: scalar: string - name: items type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray - name: maxItems type: scalar: numeric - name: maxLength type: scalar: numeric - name: maxProperties type: scalar: numeric - name: maximum type: scalar: numeric - name: minItems type: scalar: numeric - name: minLength type: scalar: numeric - name: minProperties type: scalar: numeric - name: minimum type: scalar: numeric - name: multipleOf type: scalar: numeric - name: not type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps - name: nullable type: scalar: boolean - name: oneOf type: list: elementType: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps elementRelationship: atomic - name: pattern type: scalar: string - name: patternProperties type: map: elementType: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps - name: properties type: map: elementType: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps - name: required type: list: elementType: scalar: string elementRelationship: atomic - name: title type: scalar: string - name: type type: scalar: string - name: uniqueItems type: scalar: boolean - name: x-kubernetes-embedded-resource type: scalar: boolean - name: x-kubernetes-int-or-string type: scalar: boolean - name: x-kubernetes-list-map-keys type: list: elementType: scalar: string elementRelationship: atomic - name: x-kubernetes-list-type type: scalar: string - name: x-kubernetes-map-type type: scalar: string - name: x-kubernetes-preserve-unknown-fields type: scalar: boolean - name: x-kubernetes-validations type: list: elementType: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule elementRelationship: associative keys: - rule - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray scalar: untyped list: elementType: namedType: __untyped_atomic_ elementRelationship: atomic map: elementType: namedType: __untyped_deduced_ elementRelationship: separable - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool scalar: untyped list: elementType: namedType: __untyped_atomic_ elementRelationship: atomic map: elementType: namedType: __untyped_deduced_ elementRelationship: separable - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray scalar: untyped list: elementType: namedType: __untyped_atomic_ elementRelationship: atomic map: elementType: namedType: __untyped_deduced_ elementRelationship: separable - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference map: fields: - name: name type: scalar: string - name: namespace type: scalar: string - name: path type: scalar: string - name: port type: scalar: numeric - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule map: fields: - name: message type: scalar: string - name: rule type: scalar: string - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig map: fields: - name: caBundle type: scalar: string - name: service type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference - name: url type: scalar: string - name: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion map: fields: - name: clientConfig type: namedType: io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig - name: conversionReviewVersions type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.apimachinery.pkg.api.resource.Quantity scalar: untyped - name: io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: name type: scalar: string - name: preferredVersion type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery - name: serverAddressByClientCIDRs type: list: elementType: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR elementRelationship: atomic - name: versions type: list: elementType: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery elementRelationship: atomic - name: io.k8s.apimachinery.pkg.apis.meta.v1.APIGroupList map: fields: - name: apiVersion type: scalar: string - name: groups type: list: elementType: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup elementRelationship: atomic - name: kind type: scalar: string - name: io.k8s.apimachinery.pkg.apis.meta.v1.APIResource map: fields: - name: categories type: list: elementType: scalar: string elementRelationship: atomic - name: group type: scalar: string - name: kind type: scalar: string - name: name type: scalar: string - name: namespaced type: scalar: boolean - name: shortNames type: list: elementType: scalar: string elementRelationship: atomic - name: singularName type: scalar: string - name: storageVersionHash type: scalar: string - name: verbs type: list: elementType: scalar: string elementRelationship: atomic - name: version type: scalar: string - name: io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList map: fields: - name: apiVersion type: scalar: string - name: groupVersion type: scalar: string - name: kind type: scalar: string - name: resources type: list: elementType: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.APIResource elementRelationship: atomic - name: io.k8s.apimachinery.pkg.apis.meta.v1.APIVersions map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: serverAddressByClientCIDRs type: list: elementType: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR elementRelationship: atomic - name: versions type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.apimachinery.pkg.apis.meta.v1.Condition map: fields: - name: lastTransitionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: observedGeneration type: scalar: numeric - name: reason type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions map: fields: - name: apiVersion type: scalar: string - name: dryRun type: list: elementType: scalar: string elementRelationship: atomic - name: gracePeriodSeconds type: scalar: numeric - name: kind type: scalar: string - name: orphanDependents type: scalar: boolean - name: preconditions type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions - name: propagationPolicy type: scalar: string - name: io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1 map: elementType: scalar: untyped list: elementType: namedType: __untyped_atomic_ elementRelationship: atomic map: elementType: namedType: __untyped_deduced_ elementRelationship: separable - name: io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery map: fields: - name: groupVersion type: scalar: string - name: version type: scalar: string - name: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector map: fields: - name: matchExpressions type: list: elementType: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement elementRelationship: atomic - name: matchLabels type: map: elementType: scalar: string elementRelationship: atomic - name: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement map: fields: - name: key type: scalar: string - name: operator type: scalar: string - name: values type: list: elementType: scalar: string elementRelationship: atomic - name: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta map: fields: - name: continue type: scalar: string - name: remainingItemCount type: scalar: numeric - name: resourceVersion type: scalar: string - name: selfLink type: scalar: string - name: io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry map: fields: - name: apiVersion type: scalar: string - name: fieldsType type: scalar: string - name: fieldsV1 type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1 - name: manager type: scalar: string - name: operation type: scalar: string - name: subresource type: scalar: string - name: time type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime scalar: untyped - name: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta map: fields: - name: annotations type: map: elementType: scalar: string - name: creationTimestamp type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: deletionGracePeriodSeconds type: scalar: numeric - name: deletionTimestamp type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: finalizers type: list: elementType: scalar: string elementRelationship: associative - name: generateName type: scalar: string - name: generation type: scalar: numeric - name: labels type: map: elementType: scalar: string - name: managedFields type: list: elementType: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry elementRelationship: atomic - name: name type: scalar: string - name: namespace type: scalar: string - name: ownerReferences type: list: elementType: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference elementRelationship: associative keys: - uid - name: resourceVersion type: scalar: string - name: selfLink type: scalar: string - name: uid type: scalar: string - name: io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference map: fields: - name: apiVersion type: scalar: string - name: blockOwnerDeletion type: scalar: boolean - name: controller type: scalar: boolean - name: kind type: scalar: string - name: name type: scalar: string - name: uid type: scalar: string elementRelationship: atomic - name: io.k8s.apimachinery.pkg.apis.meta.v1.Patch map: elementType: scalar: untyped list: elementType: namedType: __untyped_atomic_ elementRelationship: atomic map: elementType: namedType: __untyped_deduced_ elementRelationship: separable - name: io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions map: fields: - name: resourceVersion type: scalar: string - name: uid type: scalar: string - name: io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR map: fields: - name: clientCIDR type: scalar: string - name: serverAddress type: scalar: string - name: io.k8s.apimachinery.pkg.apis.meta.v1.Status map: fields: - name: apiVersion type: scalar: string - name: code type: scalar: numeric - name: details type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails - name: kind type: scalar: string - name: message type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: reason type: scalar: string - name: status type: scalar: string - name: io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause map: fields: - name: field type: scalar: string - name: message type: scalar: string - name: reason type: scalar: string - name: io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails map: fields: - name: causes type: list: elementType: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause elementRelationship: atomic - name: group type: scalar: string - name: kind type: scalar: string - name: name type: scalar: string - name: retryAfterSeconds type: scalar: numeric - name: uid type: scalar: string - name: io.k8s.apimachinery.pkg.apis.meta.v1.Time scalar: untyped - name: io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent map: fields: - name: object type: namedType: __untyped_atomic_ - name: type type: scalar: string - name: io.k8s.apimachinery.pkg.runtime.RawExtension map: elementType: scalar: untyped list: elementType: namedType: __untyped_atomic_ elementRelationship: atomic map: elementType: namedType: __untyped_deduced_ elementRelationship: separable - name: io.k8s.apimachinery.pkg.util.intstr.IntOrString scalar: untyped - name: io.k8s.apimachinery.pkg.version.Info map: fields: - name: buildDate type: scalar: string - name: compiler type: scalar: string - name: gitCommit type: scalar: string - name: gitTreeState type: scalar: string - name: gitVersion type: scalar: string - name: goVersion type: scalar: string - name: major type: scalar: string - name: minor type: scalar: string - name: platform type: scalar: string - name: io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService map: fields: - name: apiVersion type: scalar: string - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta - name: spec type: namedType: io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceSpec - name: status type: namedType: io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceStatus - name: io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceCondition map: fields: - name: lastTransitionTime type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time - name: message type: scalar: string - name: reason type: scalar: string - name: status type: scalar: string - name: type type: scalar: string - name: io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceList map: fields: - name: apiVersion type: scalar: string - name: items type: list: elementType: namedType: io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService elementRelationship: atomic - name: kind type: scalar: string - name: metadata type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta - name: io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceSpec map: fields: - name: caBundle type: scalar: string - name: group type: scalar: string - name: groupPriorityMinimum type: scalar: numeric - name: insecureSkipTLSVerify type: scalar: boolean - name: service type: namedType: io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.ServiceReference - name: version type: scalar: string - name: versionPriority type: scalar: numeric - name: io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceStatus map: fields: - name: conditions type: list: elementType: namedType: io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceCondition elementRelationship: associative keys: - type - name: io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.ServiceReference map: fields: - name: name type: scalar: string - name: namespace type: scalar: string - name: port type: scalar: numeric - name: __untyped_atomic_ scalar: untyped list: elementType: namedType: __untyped_atomic_ elementRelationship: atomic map: elementType: namedType: __untyped_atomic_ elementRelationship: atomic - name: __untyped_deduced_ scalar: untyped list: elementType: namedType: __untyped_atomic_ elementRelationship: atomic map: elementType: namedType: __untyped_deduced_ elementRelationship: separable golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/preserve-unknown.json000066400000000000000000000015101453663023200313560ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "title": "Atomic Types", "version": "v1.0.0" }, "paths": { }, "definitions": { "io.k8s.testcase.Empty": { "description": "", "type": "object", }, "io.k8s.testcase.EmptyPreserveUnknownFieldsObject": { "description": "", "properties": { "preserveField": { "description": "", "type": "object", "x-kubernetes-preserve-unknown-fields": true } } }, "io.k8s.testcase.PopulatedPreserveUnknownFieldsObject": { "description": "", "properties": { "preserveField": { "description": "", "type": "object", "x-kubernetes-preserve-unknown-fields": true, "properties": { "innerField": { "type": "string" } } } } } } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/preserve-unknown.yaml000066400000000000000000000027301453663023200313540ustar00rootroot00000000000000types: - name: io.k8s.testcase.Empty map: elementType: scalar: untyped list: elementType: namedType: __untyped_atomic_ elementRelationship: atomic map: elementType: namedType: __untyped_deduced_ elementRelationship: separable - name: io.k8s.testcase.EmptyPreserveUnknownFieldsObject map: fields: - name: preserveField type: map: elementType: scalar: untyped list: elementType: namedType: __untyped_atomic_ elementRelationship: atomic map: elementType: namedType: __untyped_deduced_ elementRelationship: separable - name: io.k8s.testcase.PopulatedPreserveUnknownFieldsObject map: fields: - name: preserveField type: map: fields: - name: innerField type: scalar: string elementType: namedType: __untyped_deduced_ - name: __untyped_atomic_ scalar: untyped list: elementType: namedType: __untyped_atomic_ elementRelationship: atomic map: elementType: namedType: __untyped_atomic_ elementRelationship: atomic - name: __untyped_deduced_ scalar: untyped list: elementType: namedType: __untyped_atomic_ elementRelationship: atomic map: elementType: namedType: __untyped_deduced_ elementRelationship: separable golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemaconv/testdata/swagger.json000066400000000000000000173172261453663023200275130ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "title": "Kubernetes", "version": "v1.27.0" }, "paths": { "/.well-known/openid-configuration/": { "get": { "description": "get service account issuer OpenID configuration, also known as the 'OIDC discovery doc'", "produces": ["application/json"], "schemes": ["https"], "tags": ["WellKnown"], "operationId": "getServiceAccountIssuerOpenIDConfiguration", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } } } }, "/api/": { "get": { "description": "get available API versions", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core"], "operationId": "getCoreAPIVersions", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIVersions" } }, "401": { "description": "Unauthorized" } } } }, "/api/v1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "getCoreV1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/api/v1/componentstatuses": { "get": { "description": "list objects of kind ComponentStatus", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1ComponentStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ComponentStatusList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "ComponentStatus", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/componentstatuses/{name}": { "get": { "description": "read the specified ComponentStatus", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1ComponentStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ComponentStatus" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "ComponentStatus", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the ComponentStatus", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/configmaps": { "get": { "description": "list or watch objects of kind ConfigMap", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1ConfigMapForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "ConfigMap", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/endpoints": { "get": { "description": "list or watch objects of kind Endpoints", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1EndpointsForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.EndpointsList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "Endpoints", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/events": { "get": { "description": "list or watch objects of kind Event", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1EventForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.EventList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "Event", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/limitranges": { "get": { "description": "list or watch objects of kind LimitRange", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1LimitRangeForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.LimitRangeList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "LimitRange", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/namespaces": { "get": { "description": "list or watch objects of kind Namespace", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1Namespace", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.NamespaceList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "Namespace", "version": "v1" } }, "post": { "description": "create a Namespace", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "createCoreV1Namespace", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "", "kind": "Namespace", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/bindings": { "post": { "description": "create a Binding", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "createCoreV1NamespacedBinding", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Binding" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Binding" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Binding" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Binding" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "", "kind": "Binding", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/configmaps": { "get": { "description": "list or watch objects of kind ConfigMap", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1NamespacedConfigMap", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "ConfigMap", "version": "v1" } }, "post": { "description": "create a ConfigMap", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "createCoreV1NamespacedConfigMap", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMap" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMap" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMap" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMap" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "", "kind": "ConfigMap", "version": "v1" } }, "delete": { "description": "delete collection of ConfigMap", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1CollectionNamespacedConfigMap", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "", "kind": "ConfigMap", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/configmaps/{name}": { "get": { "description": "read the specified ConfigMap", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedConfigMap", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMap" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "ConfigMap", "version": "v1" } }, "put": { "description": "replace the specified ConfigMap", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespacedConfigMap", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMap" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMap" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMap" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "ConfigMap", "version": "v1" } }, "delete": { "description": "delete a ConfigMap", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1NamespacedConfigMap", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "", "kind": "ConfigMap", "version": "v1" } }, "patch": { "description": "partially update the specified ConfigMap", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespacedConfigMap", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMap" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMap" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "ConfigMap", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the ConfigMap", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/endpoints": { "get": { "description": "list or watch objects of kind Endpoints", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1NamespacedEndpoints", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.EndpointsList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "Endpoints", "version": "v1" } }, "post": { "description": "create Endpoints", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "createCoreV1NamespacedEndpoints", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Endpoints" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Endpoints" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Endpoints" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Endpoints" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "", "kind": "Endpoints", "version": "v1" } }, "delete": { "description": "delete collection of Endpoints", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1CollectionNamespacedEndpoints", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "", "kind": "Endpoints", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/endpoints/{name}": { "get": { "description": "read the specified Endpoints", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedEndpoints", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Endpoints" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "Endpoints", "version": "v1" } }, "put": { "description": "replace the specified Endpoints", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespacedEndpoints", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Endpoints" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Endpoints" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Endpoints" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "Endpoints", "version": "v1" } }, "delete": { "description": "delete Endpoints", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1NamespacedEndpoints", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "", "kind": "Endpoints", "version": "v1" } }, "patch": { "description": "partially update the specified Endpoints", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespacedEndpoints", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Endpoints" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Endpoints" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "Endpoints", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Endpoints", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/events": { "get": { "description": "list or watch objects of kind Event", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1NamespacedEvent", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.EventList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "Event", "version": "v1" } }, "post": { "description": "create an Event", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "createCoreV1NamespacedEvent", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Event" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Event" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Event" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Event" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "", "kind": "Event", "version": "v1" } }, "delete": { "description": "delete collection of Event", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1CollectionNamespacedEvent", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "", "kind": "Event", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/events/{name}": { "get": { "description": "read the specified Event", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedEvent", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Event" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "Event", "version": "v1" } }, "put": { "description": "replace the specified Event", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespacedEvent", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Event" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Event" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Event" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "Event", "version": "v1" } }, "delete": { "description": "delete an Event", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1NamespacedEvent", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "", "kind": "Event", "version": "v1" } }, "patch": { "description": "partially update the specified Event", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespacedEvent", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Event" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Event" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "Event", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Event", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/limitranges": { "get": { "description": "list or watch objects of kind LimitRange", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1NamespacedLimitRange", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.LimitRangeList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "LimitRange", "version": "v1" } }, "post": { "description": "create a LimitRange", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "createCoreV1NamespacedLimitRange", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.LimitRange" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.LimitRange" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.LimitRange" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.LimitRange" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "", "kind": "LimitRange", "version": "v1" } }, "delete": { "description": "delete collection of LimitRange", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1CollectionNamespacedLimitRange", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "", "kind": "LimitRange", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/limitranges/{name}": { "get": { "description": "read the specified LimitRange", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedLimitRange", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.LimitRange" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "LimitRange", "version": "v1" } }, "put": { "description": "replace the specified LimitRange", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespacedLimitRange", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.LimitRange" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.LimitRange" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.LimitRange" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "LimitRange", "version": "v1" } }, "delete": { "description": "delete a LimitRange", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1NamespacedLimitRange", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "", "kind": "LimitRange", "version": "v1" } }, "patch": { "description": "partially update the specified LimitRange", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespacedLimitRange", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.LimitRange" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.LimitRange" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "LimitRange", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the LimitRange", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/persistentvolumeclaims": { "get": { "description": "list or watch objects of kind PersistentVolumeClaim", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1NamespacedPersistentVolumeClaim", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolumeClaim", "version": "v1" } }, "post": { "description": "create a PersistentVolumeClaim", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "createCoreV1NamespacedPersistentVolumeClaim", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolumeClaim", "version": "v1" } }, "delete": { "description": "delete collection of PersistentVolumeClaim", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1CollectionNamespacedPersistentVolumeClaim", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolumeClaim", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}": { "get": { "description": "read the specified PersistentVolumeClaim", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedPersistentVolumeClaim", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolumeClaim", "version": "v1" } }, "put": { "description": "replace the specified PersistentVolumeClaim", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespacedPersistentVolumeClaim", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolumeClaim", "version": "v1" } }, "delete": { "description": "delete a PersistentVolumeClaim", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1NamespacedPersistentVolumeClaim", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolumeClaim", "version": "v1" } }, "patch": { "description": "partially update the specified PersistentVolumeClaim", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespacedPersistentVolumeClaim", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolumeClaim", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the PersistentVolumeClaim", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status": { "get": { "description": "read status of the specified PersistentVolumeClaim", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedPersistentVolumeClaimStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolumeClaim", "version": "v1" } }, "put": { "description": "replace status of the specified PersistentVolumeClaim", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespacedPersistentVolumeClaimStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolumeClaim", "version": "v1" } }, "patch": { "description": "partially update status of the specified PersistentVolumeClaim", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespacedPersistentVolumeClaimStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolumeClaim", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the PersistentVolumeClaim", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/pods": { "get": { "description": "list or watch objects of kind Pod", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1NamespacedPod", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PodList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "Pod", "version": "v1" } }, "post": { "description": "create a Pod", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "createCoreV1NamespacedPod", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "", "kind": "Pod", "version": "v1" } }, "delete": { "description": "delete collection of Pod", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1CollectionNamespacedPod", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "", "kind": "Pod", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/pods/{name}": { "get": { "description": "read the specified Pod", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedPod", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "Pod", "version": "v1" } }, "put": { "description": "replace the specified Pod", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespacedPod", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "Pod", "version": "v1" } }, "delete": { "description": "delete a Pod", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1NamespacedPod", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "", "kind": "Pod", "version": "v1" } }, "patch": { "description": "partially update the specified Pod", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespacedPod", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "Pod", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Pod", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/pods/{name}/attach": { "get": { "description": "connect GET requests to attach of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1GetNamespacedPodAttach", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodAttachOptions", "version": "v1" } }, "post": { "description": "connect POST requests to attach of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PostNamespacedPodAttach", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodAttachOptions", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "The container in which to execute the command. Defaults to only container if there is only one container in the pod.", "name": "container", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the PodAttachOptions", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "boolean", "description": "Stderr if true indicates that stderr is to be redirected for the attach call. Defaults to true.", "name": "stderr", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Stdin if true, redirects the standard input stream of the pod for this call. Defaults to false.", "name": "stdin", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Stdout if true indicates that stdout is to be redirected for the attach call. Defaults to true.", "name": "stdout", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "tty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/pods/{name}/binding": { "post": { "description": "create binding of a Pod", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "createCoreV1NamespacedPodBinding", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Binding" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Binding" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Binding" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Binding" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "", "kind": "Binding", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the Binding", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers": { "get": { "description": "read ephemeralcontainers of the specified Pod", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedPodEphemeralcontainers", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "Pod", "version": "v1" } }, "put": { "description": "replace ephemeralcontainers of the specified Pod", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespacedPodEphemeralcontainers", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "Pod", "version": "v1" } }, "patch": { "description": "partially update ephemeralcontainers of the specified Pod", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespacedPodEphemeralcontainers", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "Pod", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Pod", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/pods/{name}/eviction": { "post": { "description": "create eviction of a Pod", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "createCoreV1NamespacedPodEviction", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.Eviction" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.Eviction" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.Eviction" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.Eviction" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "policy", "kind": "Eviction", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the Eviction", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/pods/{name}/exec": { "get": { "description": "connect GET requests to exec of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1GetNamespacedPodExec", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodExecOptions", "version": "v1" } }, "post": { "description": "connect POST requests to exec of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PostNamespacedPodExec", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodExecOptions", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "Command is the remote command to execute. argv array. Not executed within a shell.", "name": "command", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "Container in which to execute the command. Defaults to only container if there is only one container in the pod.", "name": "container", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the PodExecOptions", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "boolean", "description": "Redirect the standard error stream of the pod for this call.", "name": "stderr", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Redirect the standard input stream of the pod for this call. Defaults to false.", "name": "stdin", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Redirect the standard output stream of the pod for this call.", "name": "stdout", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "TTY if true indicates that a tty will be allocated for the exec call. Defaults to false.", "name": "tty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/pods/{name}/log": { "get": { "description": "read log of the specified Pod", "consumes": ["*/*"], "produces": [ "text/plain", "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedPodLog", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "Pod", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "The container for which to stream logs. Defaults to only container if there is one container in the pod.", "name": "container", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Follow the log stream of the pod. Defaults to false.", "name": "follow", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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).", "name": "insecureSkipTLSVerifyBackend", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limitBytes", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the Pod", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Return previous terminated container logs. Defaults to false.", "name": "previous", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "sinceSeconds", "in": "query" }, { "uniqueItems": true, "type": "integer", "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", "name": "tailLines", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line of log output. Defaults to false.", "name": "timestamps", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/pods/{name}/portforward": { "get": { "description": "connect GET requests to portforward of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1GetNamespacedPodPortforward", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodPortForwardOptions", "version": "v1" } }, "post": { "description": "connect POST requests to portforward of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PostNamespacedPodPortforward", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodPortForwardOptions", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the PodPortForwardOptions", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "integer", "description": "List of ports to forward Required when using WebSockets", "name": "ports", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/pods/{name}/proxy": { "get": { "description": "connect GET requests to proxy of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1GetNamespacedPodProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodProxyOptions", "version": "v1" } }, "put": { "description": "connect PUT requests to proxy of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PutNamespacedPodProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodProxyOptions", "version": "v1" } }, "post": { "description": "connect POST requests to proxy of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PostNamespacedPodProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodProxyOptions", "version": "v1" } }, "delete": { "description": "connect DELETE requests to proxy of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1DeleteNamespacedPodProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodProxyOptions", "version": "v1" } }, "options": { "description": "connect OPTIONS requests to proxy of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1OptionsNamespacedPodProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodProxyOptions", "version": "v1" } }, "head": { "description": "connect HEAD requests to proxy of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1HeadNamespacedPodProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodProxyOptions", "version": "v1" } }, "patch": { "description": "connect PATCH requests to proxy of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PatchNamespacedPodProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodProxyOptions", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the PodProxyOptions", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "Path is the URL path to use for the current proxy request to pod.", "name": "path", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}": { "get": { "description": "connect GET requests to proxy of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1GetNamespacedPodProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodProxyOptions", "version": "v1" } }, "put": { "description": "connect PUT requests to proxy of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PutNamespacedPodProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodProxyOptions", "version": "v1" } }, "post": { "description": "connect POST requests to proxy of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PostNamespacedPodProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodProxyOptions", "version": "v1" } }, "delete": { "description": "connect DELETE requests to proxy of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1DeleteNamespacedPodProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodProxyOptions", "version": "v1" } }, "options": { "description": "connect OPTIONS requests to proxy of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1OptionsNamespacedPodProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodProxyOptions", "version": "v1" } }, "head": { "description": "connect HEAD requests to proxy of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1HeadNamespacedPodProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodProxyOptions", "version": "v1" } }, "patch": { "description": "connect PATCH requests to proxy of Pod", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PatchNamespacedPodProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodProxyOptions", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the PodProxyOptions", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "path to the resource", "name": "path", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "Path is the URL path to use for the current proxy request to pod.", "name": "path", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/pods/{name}/status": { "get": { "description": "read status of the specified Pod", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedPodStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "Pod", "version": "v1" } }, "put": { "description": "replace status of the specified Pod", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespacedPodStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "Pod", "version": "v1" } }, "patch": { "description": "partially update status of the specified Pod", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespacedPodStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "Pod", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Pod", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/podtemplates": { "get": { "description": "list or watch objects of kind PodTemplate", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1NamespacedPodTemplate", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplateList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodTemplate", "version": "v1" } }, "post": { "description": "create a PodTemplate", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "createCoreV1NamespacedPodTemplate", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplate" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplate" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplate" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplate" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodTemplate", "version": "v1" } }, "delete": { "description": "delete collection of PodTemplate", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1CollectionNamespacedPodTemplate", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodTemplate", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/podtemplates/{name}": { "get": { "description": "read the specified PodTemplate", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedPodTemplate", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplate" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodTemplate", "version": "v1" } }, "put": { "description": "replace the specified PodTemplate", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespacedPodTemplate", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplate" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplate" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplate" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodTemplate", "version": "v1" } }, "delete": { "description": "delete a PodTemplate", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1NamespacedPodTemplate", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplate" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplate" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodTemplate", "version": "v1" } }, "patch": { "description": "partially update the specified PodTemplate", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespacedPodTemplate", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplate" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplate" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodTemplate", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the PodTemplate", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/replicationcontrollers": { "get": { "description": "list or watch objects of kind ReplicationController", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1NamespacedReplicationController", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationControllerList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "ReplicationController", "version": "v1" } }, "post": { "description": "create a ReplicationController", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "createCoreV1NamespacedReplicationController", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "", "kind": "ReplicationController", "version": "v1" } }, "delete": { "description": "delete collection of ReplicationController", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1CollectionNamespacedReplicationController", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "", "kind": "ReplicationController", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/replicationcontrollers/{name}": { "get": { "description": "read the specified ReplicationController", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedReplicationController", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "ReplicationController", "version": "v1" } }, "put": { "description": "replace the specified ReplicationController", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespacedReplicationController", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "ReplicationController", "version": "v1" } }, "delete": { "description": "delete a ReplicationController", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1NamespacedReplicationController", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "", "kind": "ReplicationController", "version": "v1" } }, "patch": { "description": "partially update the specified ReplicationController", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespacedReplicationController", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "ReplicationController", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the ReplicationController", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/scale": { "get": { "description": "read scale of the specified ReplicationController", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedReplicationControllerScale", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } }, "put": { "description": "replace scale of the specified ReplicationController", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespacedReplicationControllerScale", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } }, "patch": { "description": "partially update scale of the specified ReplicationController", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespacedReplicationControllerScale", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Scale", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status": { "get": { "description": "read status of the specified ReplicationController", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedReplicationControllerStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "ReplicationController", "version": "v1" } }, "put": { "description": "replace status of the specified ReplicationController", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespacedReplicationControllerStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "ReplicationController", "version": "v1" } }, "patch": { "description": "partially update status of the specified ReplicationController", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespacedReplicationControllerStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "ReplicationController", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the ReplicationController", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/resourcequotas": { "get": { "description": "list or watch objects of kind ResourceQuota", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1NamespacedResourceQuota", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuotaList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "ResourceQuota", "version": "v1" } }, "post": { "description": "create a ResourceQuota", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "createCoreV1NamespacedResourceQuota", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "", "kind": "ResourceQuota", "version": "v1" } }, "delete": { "description": "delete collection of ResourceQuota", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1CollectionNamespacedResourceQuota", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "", "kind": "ResourceQuota", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/resourcequotas/{name}": { "get": { "description": "read the specified ResourceQuota", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedResourceQuota", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "ResourceQuota", "version": "v1" } }, "put": { "description": "replace the specified ResourceQuota", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespacedResourceQuota", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "ResourceQuota", "version": "v1" } }, "delete": { "description": "delete a ResourceQuota", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1NamespacedResourceQuota", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "", "kind": "ResourceQuota", "version": "v1" } }, "patch": { "description": "partially update the specified ResourceQuota", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespacedResourceQuota", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "ResourceQuota", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the ResourceQuota", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/resourcequotas/{name}/status": { "get": { "description": "read status of the specified ResourceQuota", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedResourceQuotaStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "ResourceQuota", "version": "v1" } }, "put": { "description": "replace status of the specified ResourceQuota", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespacedResourceQuotaStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "ResourceQuota", "version": "v1" } }, "patch": { "description": "partially update status of the specified ResourceQuota", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespacedResourceQuotaStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "ResourceQuota", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the ResourceQuota", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/secrets": { "get": { "description": "list or watch objects of kind Secret", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1NamespacedSecret", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.SecretList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "Secret", "version": "v1" } }, "post": { "description": "create a Secret", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "createCoreV1NamespacedSecret", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Secret" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Secret" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Secret" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Secret" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "", "kind": "Secret", "version": "v1" } }, "delete": { "description": "delete collection of Secret", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1CollectionNamespacedSecret", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "", "kind": "Secret", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/secrets/{name}": { "get": { "description": "read the specified Secret", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedSecret", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Secret" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "Secret", "version": "v1" } }, "put": { "description": "replace the specified Secret", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespacedSecret", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Secret" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Secret" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Secret" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "Secret", "version": "v1" } }, "delete": { "description": "delete a Secret", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1NamespacedSecret", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "", "kind": "Secret", "version": "v1" } }, "patch": { "description": "partially update the specified Secret", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespacedSecret", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Secret" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Secret" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "Secret", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Secret", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/serviceaccounts": { "get": { "description": "list or watch objects of kind ServiceAccount", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1NamespacedServiceAccount", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccountList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceAccount", "version": "v1" } }, "post": { "description": "create a ServiceAccount", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "createCoreV1NamespacedServiceAccount", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccount" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccount" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccount" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccount" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceAccount", "version": "v1" } }, "delete": { "description": "delete collection of ServiceAccount", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1CollectionNamespacedServiceAccount", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceAccount", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/serviceaccounts/{name}": { "get": { "description": "read the specified ServiceAccount", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedServiceAccount", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccount" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceAccount", "version": "v1" } }, "put": { "description": "replace the specified ServiceAccount", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespacedServiceAccount", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccount" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccount" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccount" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceAccount", "version": "v1" } }, "delete": { "description": "delete a ServiceAccount", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1NamespacedServiceAccount", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccount" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccount" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceAccount", "version": "v1" } }, "patch": { "description": "partially update the specified ServiceAccount", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespacedServiceAccount", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccount" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccount" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceAccount", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the ServiceAccount", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/serviceaccounts/{name}/token": { "post": { "description": "create token of a ServiceAccount", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "createCoreV1NamespacedServiceAccountToken", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.authentication.v1.TokenRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.authentication.v1.TokenRequest" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.authentication.v1.TokenRequest" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.authentication.v1.TokenRequest" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "authentication.k8s.io", "kind": "TokenRequest", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the TokenRequest", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/services": { "get": { "description": "list or watch objects of kind Service", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1NamespacedService", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ServiceList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "Service", "version": "v1" } }, "post": { "description": "create a Service", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "createCoreV1NamespacedService", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "", "kind": "Service", "version": "v1" } }, "delete": { "description": "delete collection of Service", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1CollectionNamespacedService", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "", "kind": "Service", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/services/{name}": { "get": { "description": "read the specified Service", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedService", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "Service", "version": "v1" } }, "put": { "description": "replace the specified Service", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespacedService", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "Service", "version": "v1" } }, "delete": { "description": "delete a Service", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1NamespacedService", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "", "kind": "Service", "version": "v1" } }, "patch": { "description": "partially update the specified Service", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespacedService", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "Service", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Service", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/services/{name}/proxy": { "get": { "description": "connect GET requests to proxy of Service", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1GetNamespacedServiceProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceProxyOptions", "version": "v1" } }, "put": { "description": "connect PUT requests to proxy of Service", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PutNamespacedServiceProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceProxyOptions", "version": "v1" } }, "post": { "description": "connect POST requests to proxy of Service", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PostNamespacedServiceProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceProxyOptions", "version": "v1" } }, "delete": { "description": "connect DELETE requests to proxy of Service", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1DeleteNamespacedServiceProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceProxyOptions", "version": "v1" } }, "options": { "description": "connect OPTIONS requests to proxy of Service", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1OptionsNamespacedServiceProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceProxyOptions", "version": "v1" } }, "head": { "description": "connect HEAD requests to proxy of Service", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1HeadNamespacedServiceProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceProxyOptions", "version": "v1" } }, "patch": { "description": "connect PATCH requests to proxy of Service", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PatchNamespacedServiceProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceProxyOptions", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the ServiceProxyOptions", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "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.", "name": "path", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/services/{name}/proxy/{path}": { "get": { "description": "connect GET requests to proxy of Service", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1GetNamespacedServiceProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceProxyOptions", "version": "v1" } }, "put": { "description": "connect PUT requests to proxy of Service", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PutNamespacedServiceProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceProxyOptions", "version": "v1" } }, "post": { "description": "connect POST requests to proxy of Service", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PostNamespacedServiceProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceProxyOptions", "version": "v1" } }, "delete": { "description": "connect DELETE requests to proxy of Service", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1DeleteNamespacedServiceProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceProxyOptions", "version": "v1" } }, "options": { "description": "connect OPTIONS requests to proxy of Service", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1OptionsNamespacedServiceProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceProxyOptions", "version": "v1" } }, "head": { "description": "connect HEAD requests to proxy of Service", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1HeadNamespacedServiceProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceProxyOptions", "version": "v1" } }, "patch": { "description": "connect PATCH requests to proxy of Service", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PatchNamespacedServiceProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceProxyOptions", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the ServiceProxyOptions", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "path to the resource", "name": "path", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "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.", "name": "path", "in": "query" } ] }, "/api/v1/namespaces/{namespace}/services/{name}/status": { "get": { "description": "read status of the specified Service", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespacedServiceStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "Service", "version": "v1" } }, "put": { "description": "replace status of the specified Service", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespacedServiceStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "Service", "version": "v1" } }, "patch": { "description": "partially update status of the specified Service", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespacedServiceStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "Service", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Service", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{name}": { "get": { "description": "read the specified Namespace", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1Namespace", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "Namespace", "version": "v1" } }, "put": { "description": "replace the specified Namespace", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1Namespace", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "Namespace", "version": "v1" } }, "delete": { "description": "delete a Namespace", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1Namespace", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "", "kind": "Namespace", "version": "v1" } }, "patch": { "description": "partially update the specified Namespace", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1Namespace", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "Namespace", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Namespace", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{name}/finalize": { "put": { "description": "replace finalize of the specified Namespace", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespaceFinalize", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "Namespace", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the Namespace", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/namespaces/{name}/status": { "get": { "description": "read status of the specified Namespace", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NamespaceStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "Namespace", "version": "v1" } }, "put": { "description": "replace status of the specified Namespace", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NamespaceStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "Namespace", "version": "v1" } }, "patch": { "description": "partially update status of the specified Namespace", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NamespaceStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "Namespace", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Namespace", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/nodes": { "get": { "description": "list or watch objects of kind Node", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1Node", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.NodeList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "Node", "version": "v1" } }, "post": { "description": "create a Node", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "createCoreV1Node", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Node" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Node" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Node" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Node" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "", "kind": "Node", "version": "v1" } }, "delete": { "description": "delete collection of Node", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1CollectionNode", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "", "kind": "Node", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/nodes/{name}": { "get": { "description": "read the specified Node", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1Node", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Node" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "Node", "version": "v1" } }, "put": { "description": "replace the specified Node", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1Node", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Node" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Node" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Node" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "Node", "version": "v1" } }, "delete": { "description": "delete a Node", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1Node", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "", "kind": "Node", "version": "v1" } }, "patch": { "description": "partially update the specified Node", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1Node", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Node" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Node" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "Node", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Node", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/nodes/{name}/proxy": { "get": { "description": "connect GET requests to proxy of Node", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1GetNodeProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "NodeProxyOptions", "version": "v1" } }, "put": { "description": "connect PUT requests to proxy of Node", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PutNodeProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "NodeProxyOptions", "version": "v1" } }, "post": { "description": "connect POST requests to proxy of Node", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PostNodeProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "NodeProxyOptions", "version": "v1" } }, "delete": { "description": "connect DELETE requests to proxy of Node", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1DeleteNodeProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "NodeProxyOptions", "version": "v1" } }, "options": { "description": "connect OPTIONS requests to proxy of Node", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1OptionsNodeProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "NodeProxyOptions", "version": "v1" } }, "head": { "description": "connect HEAD requests to proxy of Node", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1HeadNodeProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "NodeProxyOptions", "version": "v1" } }, "patch": { "description": "connect PATCH requests to proxy of Node", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PatchNodeProxy", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "NodeProxyOptions", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the NodeProxyOptions", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "Path is the URL path to use for the current proxy request to node.", "name": "path", "in": "query" } ] }, "/api/v1/nodes/{name}/proxy/{path}": { "get": { "description": "connect GET requests to proxy of Node", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1GetNodeProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "NodeProxyOptions", "version": "v1" } }, "put": { "description": "connect PUT requests to proxy of Node", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PutNodeProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "NodeProxyOptions", "version": "v1" } }, "post": { "description": "connect POST requests to proxy of Node", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PostNodeProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "NodeProxyOptions", "version": "v1" } }, "delete": { "description": "connect DELETE requests to proxy of Node", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1DeleteNodeProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "NodeProxyOptions", "version": "v1" } }, "options": { "description": "connect OPTIONS requests to proxy of Node", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1OptionsNodeProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "NodeProxyOptions", "version": "v1" } }, "head": { "description": "connect HEAD requests to proxy of Node", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1HeadNodeProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "NodeProxyOptions", "version": "v1" } }, "patch": { "description": "connect PATCH requests to proxy of Node", "consumes": ["*/*"], "produces": ["*/*"], "schemes": ["https"], "tags": ["core_v1"], "operationId": "connectCoreV1PatchNodeProxyWithPath", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", "kind": "NodeProxyOptions", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the NodeProxyOptions", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "path to the resource", "name": "path", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "Path is the URL path to use for the current proxy request to node.", "name": "path", "in": "query" } ] }, "/api/v1/nodes/{name}/status": { "get": { "description": "read status of the specified Node", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1NodeStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Node" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "Node", "version": "v1" } }, "put": { "description": "replace status of the specified Node", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1NodeStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Node" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Node" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Node" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "Node", "version": "v1" } }, "patch": { "description": "partially update status of the specified Node", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1NodeStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Node" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.Node" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "Node", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Node", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/persistentvolumeclaims": { "get": { "description": "list or watch objects of kind PersistentVolumeClaim", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1PersistentVolumeClaimForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolumeClaim", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/persistentvolumes": { "get": { "description": "list or watch objects of kind PersistentVolume", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1PersistentVolume", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolume", "version": "v1" } }, "post": { "description": "create a PersistentVolume", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "createCoreV1PersistentVolume", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolume", "version": "v1" } }, "delete": { "description": "delete collection of PersistentVolume", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1CollectionPersistentVolume", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolume", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/persistentvolumes/{name}": { "get": { "description": "read the specified PersistentVolume", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1PersistentVolume", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolume", "version": "v1" } }, "put": { "description": "replace the specified PersistentVolume", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1PersistentVolume", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolume", "version": "v1" } }, "delete": { "description": "delete a PersistentVolume", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "deleteCoreV1PersistentVolume", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolume", "version": "v1" } }, "patch": { "description": "partially update the specified PersistentVolume", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1PersistentVolume", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolume", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the PersistentVolume", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/persistentvolumes/{name}/status": { "get": { "description": "read status of the specified PersistentVolume", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "readCoreV1PersistentVolumeStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolume", "version": "v1" } }, "put": { "description": "replace status of the specified PersistentVolume", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "replaceCoreV1PersistentVolumeStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolume", "version": "v1" } }, "patch": { "description": "partially update status of the specified PersistentVolume", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "patchCoreV1PersistentVolumeStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolume", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the PersistentVolume", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/api/v1/pods": { "get": { "description": "list or watch objects of kind Pod", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1PodForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PodList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "Pod", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/podtemplates": { "get": { "description": "list or watch objects of kind PodTemplate", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1PodTemplateForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplateList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodTemplate", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/replicationcontrollers": { "get": { "description": "list or watch objects of kind ReplicationController", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1ReplicationControllerForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationControllerList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "ReplicationController", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/resourcequotas": { "get": { "description": "list or watch objects of kind ResourceQuota", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1ResourceQuotaForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuotaList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "ResourceQuota", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/secrets": { "get": { "description": "list or watch objects of kind Secret", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1SecretForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.SecretList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "Secret", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/serviceaccounts": { "get": { "description": "list or watch objects of kind ServiceAccount", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1ServiceAccountForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccountList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceAccount", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/services": { "get": { "description": "list or watch objects of kind Service", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "listCoreV1ServiceForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.core.v1.ServiceList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "", "kind": "Service", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/configmaps": { "get": { "description": "watch individual changes to a list of ConfigMap. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1ConfigMapListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "ConfigMap", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/endpoints": { "get": { "description": "watch individual changes to a list of Endpoints. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1EndpointsListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "Endpoints", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/events": { "get": { "description": "watch individual changes to a list of Event. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1EventListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "Event", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/limitranges": { "get": { "description": "watch individual changes to a list of LimitRange. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1LimitRangeListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "LimitRange", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces": { "get": { "description": "watch individual changes to a list of Namespace. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespaceList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "Namespace", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/configmaps": { "get": { "description": "watch individual changes to a list of ConfigMap. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedConfigMapList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "ConfigMap", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/configmaps/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedConfigMap", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "", "kind": "ConfigMap", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the ConfigMap", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/endpoints": { "get": { "description": "watch individual changes to a list of Endpoints. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedEndpointsList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "Endpoints", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/endpoints/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedEndpoints", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "", "kind": "Endpoints", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the Endpoints", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/events": { "get": { "description": "watch individual changes to a list of Event. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedEventList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "Event", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/events/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedEvent", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "", "kind": "Event", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the Event", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/limitranges": { "get": { "description": "watch individual changes to a list of LimitRange. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedLimitRangeList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "LimitRange", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/limitranges/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedLimitRange", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "", "kind": "LimitRange", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the LimitRange", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/persistentvolumeclaims": { "get": { "description": "watch individual changes to a list of PersistentVolumeClaim. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedPersistentVolumeClaimList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolumeClaim", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/persistentvolumeclaims/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedPersistentVolumeClaim", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolumeClaim", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the PersistentVolumeClaim", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/pods": { "get": { "description": "watch individual changes to a list of Pod. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedPodList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "Pod", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/pods/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedPod", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "", "kind": "Pod", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the Pod", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/podtemplates": { "get": { "description": "watch individual changes to a list of PodTemplate. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedPodTemplateList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodTemplate", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/podtemplates/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedPodTemplate", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodTemplate", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the PodTemplate", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/replicationcontrollers": { "get": { "description": "watch individual changes to a list of ReplicationController. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedReplicationControllerList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "ReplicationController", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/replicationcontrollers/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedReplicationController", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "", "kind": "ReplicationController", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the ReplicationController", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/resourcequotas": { "get": { "description": "watch individual changes to a list of ResourceQuota. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedResourceQuotaList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "ResourceQuota", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/resourcequotas/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedResourceQuota", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "", "kind": "ResourceQuota", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the ResourceQuota", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/secrets": { "get": { "description": "watch individual changes to a list of Secret. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedSecretList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "Secret", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/secrets/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedSecret", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "", "kind": "Secret", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the Secret", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/serviceaccounts": { "get": { "description": "watch individual changes to a list of ServiceAccount. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedServiceAccountList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceAccount", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/serviceaccounts/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedServiceAccount", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceAccount", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the ServiceAccount", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/services": { "get": { "description": "watch individual changes to a list of Service. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedServiceList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "Service", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{namespace}/services/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NamespacedService", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "", "kind": "Service", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the Service", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/namespaces/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1Namespace", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "", "kind": "Namespace", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the Namespace", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/nodes": { "get": { "description": "watch individual changes to a list of Node. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1NodeList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "Node", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/nodes/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1Node", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "", "kind": "Node", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the Node", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/persistentvolumeclaims": { "get": { "description": "watch individual changes to a list of PersistentVolumeClaim. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1PersistentVolumeClaimListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolumeClaim", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/persistentvolumes": { "get": { "description": "watch individual changes to a list of PersistentVolume. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1PersistentVolumeList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolume", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/persistentvolumes/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1PersistentVolume", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "", "kind": "PersistentVolume", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the PersistentVolume", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/pods": { "get": { "description": "watch individual changes to a list of Pod. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1PodListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "Pod", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/podtemplates": { "get": { "description": "watch individual changes to a list of PodTemplate. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1PodTemplateListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "PodTemplate", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/replicationcontrollers": { "get": { "description": "watch individual changes to a list of ReplicationController. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1ReplicationControllerListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "ReplicationController", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/resourcequotas": { "get": { "description": "watch individual changes to a list of ResourceQuota. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1ResourceQuotaListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "ResourceQuota", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/secrets": { "get": { "description": "watch individual changes to a list of Secret. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1SecretListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "Secret", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/serviceaccounts": { "get": { "description": "watch individual changes to a list of ServiceAccount. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1ServiceAccountListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "ServiceAccount", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/api/v1/watch/services": { "get": { "description": "watch individual changes to a list of Service. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["core_v1"], "operationId": "watchCoreV1ServiceListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "", "kind": "Service", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/": { "get": { "description": "get available API versions", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apis"], "operationId": "getAPIVersions", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroupList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/admissionregistration.k8s.io/": { "get": { "description": "get information of a group", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["admissionregistration"], "operationId": "getAdmissionregistrationAPIGroup", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "401": { "description": "Unauthorized" } } } }, "/apis/admissionregistration.k8s.io/v1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["admissionregistration_v1"], "operationId": "getAdmissionregistrationV1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations": { "get": { "description": "list or watch objects of kind MutatingWebhookConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["admissionregistration_v1"], "operationId": "listAdmissionregistrationV1MutatingWebhookConfiguration", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfigurationList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "admissionregistration.k8s.io", "kind": "MutatingWebhookConfiguration", "version": "v1" } }, "post": { "description": "create a MutatingWebhookConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["admissionregistration_v1"], "operationId": "createAdmissionregistrationV1MutatingWebhookConfiguration", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "admissionregistration.k8s.io", "kind": "MutatingWebhookConfiguration", "version": "v1" } }, "delete": { "description": "delete collection of MutatingWebhookConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["admissionregistration_v1"], "operationId": "deleteAdmissionregistrationV1CollectionMutatingWebhookConfiguration", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "admissionregistration.k8s.io", "kind": "MutatingWebhookConfiguration", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations/{name}": { "get": { "description": "read the specified MutatingWebhookConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["admissionregistration_v1"], "operationId": "readAdmissionregistrationV1MutatingWebhookConfiguration", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "admissionregistration.k8s.io", "kind": "MutatingWebhookConfiguration", "version": "v1" } }, "put": { "description": "replace the specified MutatingWebhookConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["admissionregistration_v1"], "operationId": "replaceAdmissionregistrationV1MutatingWebhookConfiguration", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "admissionregistration.k8s.io", "kind": "MutatingWebhookConfiguration", "version": "v1" } }, "delete": { "description": "delete a MutatingWebhookConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["admissionregistration_v1"], "operationId": "deleteAdmissionregistrationV1MutatingWebhookConfiguration", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "admissionregistration.k8s.io", "kind": "MutatingWebhookConfiguration", "version": "v1" } }, "patch": { "description": "partially update the specified MutatingWebhookConfiguration", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["admissionregistration_v1"], "operationId": "patchAdmissionregistrationV1MutatingWebhookConfiguration", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "admissionregistration.k8s.io", "kind": "MutatingWebhookConfiguration", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the MutatingWebhookConfiguration", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations": { "get": { "description": "list or watch objects of kind ValidatingWebhookConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["admissionregistration_v1"], "operationId": "listAdmissionregistrationV1ValidatingWebhookConfiguration", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfigurationList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "admissionregistration.k8s.io", "kind": "ValidatingWebhookConfiguration", "version": "v1" } }, "post": { "description": "create a ValidatingWebhookConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["admissionregistration_v1"], "operationId": "createAdmissionregistrationV1ValidatingWebhookConfiguration", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "admissionregistration.k8s.io", "kind": "ValidatingWebhookConfiguration", "version": "v1" } }, "delete": { "description": "delete collection of ValidatingWebhookConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["admissionregistration_v1"], "operationId": "deleteAdmissionregistrationV1CollectionValidatingWebhookConfiguration", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "admissionregistration.k8s.io", "kind": "ValidatingWebhookConfiguration", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations/{name}": { "get": { "description": "read the specified ValidatingWebhookConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["admissionregistration_v1"], "operationId": "readAdmissionregistrationV1ValidatingWebhookConfiguration", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "admissionregistration.k8s.io", "kind": "ValidatingWebhookConfiguration", "version": "v1" } }, "put": { "description": "replace the specified ValidatingWebhookConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["admissionregistration_v1"], "operationId": "replaceAdmissionregistrationV1ValidatingWebhookConfiguration", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "admissionregistration.k8s.io", "kind": "ValidatingWebhookConfiguration", "version": "v1" } }, "delete": { "description": "delete a ValidatingWebhookConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["admissionregistration_v1"], "operationId": "deleteAdmissionregistrationV1ValidatingWebhookConfiguration", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "admissionregistration.k8s.io", "kind": "ValidatingWebhookConfiguration", "version": "v1" } }, "patch": { "description": "partially update the specified ValidatingWebhookConfiguration", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["admissionregistration_v1"], "operationId": "patchAdmissionregistrationV1ValidatingWebhookConfiguration", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "admissionregistration.k8s.io", "kind": "ValidatingWebhookConfiguration", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the ValidatingWebhookConfiguration", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/admissionregistration.k8s.io/v1/watch/mutatingwebhookconfigurations": { "get": { "description": "watch individual changes to a list of MutatingWebhookConfiguration. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["admissionregistration_v1"], "operationId": "watchAdmissionregistrationV1MutatingWebhookConfigurationList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "admissionregistration.k8s.io", "kind": "MutatingWebhookConfiguration", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/admissionregistration.k8s.io/v1/watch/mutatingwebhookconfigurations/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["admissionregistration_v1"], "operationId": "watchAdmissionregistrationV1MutatingWebhookConfiguration", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "admissionregistration.k8s.io", "kind": "MutatingWebhookConfiguration", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the MutatingWebhookConfiguration", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/admissionregistration.k8s.io/v1/watch/validatingwebhookconfigurations": { "get": { "description": "watch individual changes to a list of ValidatingWebhookConfiguration. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["admissionregistration_v1"], "operationId": "watchAdmissionregistrationV1ValidatingWebhookConfigurationList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "admissionregistration.k8s.io", "kind": "ValidatingWebhookConfiguration", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/admissionregistration.k8s.io/v1/watch/validatingwebhookconfigurations/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["admissionregistration_v1"], "operationId": "watchAdmissionregistrationV1ValidatingWebhookConfiguration", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "admissionregistration.k8s.io", "kind": "ValidatingWebhookConfiguration", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the ValidatingWebhookConfiguration", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apiextensions.k8s.io/": { "get": { "description": "get information of a group", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiextensions"], "operationId": "getApiextensionsAPIGroup", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "401": { "description": "Unauthorized" } } } }, "/apis/apiextensions.k8s.io/v1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiextensions_v1"], "operationId": "getApiextensionsV1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/apiextensions.k8s.io/v1/customresourcedefinitions": { "get": { "description": "list or watch objects of kind CustomResourceDefinition", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apiextensions_v1"], "operationId": "listApiextensionsV1CustomResourceDefinition", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apiextensions.k8s.io", "kind": "CustomResourceDefinition", "version": "v1" } }, "post": { "description": "create a CustomResourceDefinition", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiextensions_v1"], "operationId": "createApiextensionsV1CustomResourceDefinition", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "apiextensions.k8s.io", "kind": "CustomResourceDefinition", "version": "v1" } }, "delete": { "description": "delete collection of CustomResourceDefinition", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiextensions_v1"], "operationId": "deleteApiextensionsV1CollectionCustomResourceDefinition", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "apiextensions.k8s.io", "kind": "CustomResourceDefinition", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}": { "get": { "description": "read the specified CustomResourceDefinition", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiextensions_v1"], "operationId": "readApiextensionsV1CustomResourceDefinition", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apiextensions.k8s.io", "kind": "CustomResourceDefinition", "version": "v1" } }, "put": { "description": "replace the specified CustomResourceDefinition", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiextensions_v1"], "operationId": "replaceApiextensionsV1CustomResourceDefinition", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apiextensions.k8s.io", "kind": "CustomResourceDefinition", "version": "v1" } }, "delete": { "description": "delete a CustomResourceDefinition", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiextensions_v1"], "operationId": "deleteApiextensionsV1CustomResourceDefinition", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "apiextensions.k8s.io", "kind": "CustomResourceDefinition", "version": "v1" } }, "patch": { "description": "partially update the specified CustomResourceDefinition", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiextensions_v1"], "operationId": "patchApiextensionsV1CustomResourceDefinition", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apiextensions.k8s.io", "kind": "CustomResourceDefinition", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the CustomResourceDefinition", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}/status": { "get": { "description": "read status of the specified CustomResourceDefinition", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiextensions_v1"], "operationId": "readApiextensionsV1CustomResourceDefinitionStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apiextensions.k8s.io", "kind": "CustomResourceDefinition", "version": "v1" } }, "put": { "description": "replace status of the specified CustomResourceDefinition", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiextensions_v1"], "operationId": "replaceApiextensionsV1CustomResourceDefinitionStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apiextensions.k8s.io", "kind": "CustomResourceDefinition", "version": "v1" } }, "patch": { "description": "partially update status of the specified CustomResourceDefinition", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiextensions_v1"], "operationId": "patchApiextensionsV1CustomResourceDefinitionStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apiextensions.k8s.io", "kind": "CustomResourceDefinition", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the CustomResourceDefinition", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apiextensions.k8s.io/v1/watch/customresourcedefinitions": { "get": { "description": "watch individual changes to a list of CustomResourceDefinition. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apiextensions_v1"], "operationId": "watchApiextensionsV1CustomResourceDefinitionList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apiextensions.k8s.io", "kind": "CustomResourceDefinition", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apiextensions.k8s.io/v1/watch/customresourcedefinitions/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apiextensions_v1"], "operationId": "watchApiextensionsV1CustomResourceDefinition", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "apiextensions.k8s.io", "kind": "CustomResourceDefinition", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the CustomResourceDefinition", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apiregistration.k8s.io/": { "get": { "description": "get information of a group", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiregistration"], "operationId": "getApiregistrationAPIGroup", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "401": { "description": "Unauthorized" } } } }, "/apis/apiregistration.k8s.io/v1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiregistration_v1"], "operationId": "getApiregistrationV1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/apiregistration.k8s.io/v1/apiservices": { "get": { "description": "list or watch objects of kind APIService", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apiregistration_v1"], "operationId": "listApiregistrationV1APIService", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apiregistration.k8s.io", "version": "v1", "kind": "APIService" } }, "post": { "description": "create an APIService", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiregistration_v1"], "operationId": "createApiregistrationV1APIService", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "apiregistration.k8s.io", "version": "v1", "kind": "APIService" } }, "delete": { "description": "delete collection of APIService", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiregistration_v1"], "operationId": "deleteApiregistrationV1CollectionAPIService", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "apiregistration.k8s.io", "version": "v1", "kind": "APIService" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apiregistration.k8s.io/v1/apiservices/{name}": { "get": { "description": "read the specified APIService", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiregistration_v1"], "operationId": "readApiregistrationV1APIService", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apiregistration.k8s.io", "version": "v1", "kind": "APIService" } }, "put": { "description": "replace the specified APIService", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiregistration_v1"], "operationId": "replaceApiregistrationV1APIService", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apiregistration.k8s.io", "version": "v1", "kind": "APIService" } }, "delete": { "description": "delete an APIService", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiregistration_v1"], "operationId": "deleteApiregistrationV1APIService", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "apiregistration.k8s.io", "version": "v1", "kind": "APIService" } }, "patch": { "description": "partially update the specified APIService", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiregistration_v1"], "operationId": "patchApiregistrationV1APIService", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apiregistration.k8s.io", "version": "v1", "kind": "APIService" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the APIService", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apiregistration.k8s.io/v1/apiservices/{name}/status": { "get": { "description": "read status of the specified APIService", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiregistration_v1"], "operationId": "readApiregistrationV1APIServiceStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apiregistration.k8s.io", "version": "v1", "kind": "APIService" } }, "put": { "description": "replace status of the specified APIService", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiregistration_v1"], "operationId": "replaceApiregistrationV1APIServiceStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apiregistration.k8s.io", "version": "v1", "kind": "APIService" } }, "patch": { "description": "partially update status of the specified APIService", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apiregistration_v1"], "operationId": "patchApiregistrationV1APIServiceStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apiregistration.k8s.io", "version": "v1", "kind": "APIService" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the APIService", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apiregistration.k8s.io/v1/watch/apiservices": { "get": { "description": "watch individual changes to a list of APIService. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apiregistration_v1"], "operationId": "watchApiregistrationV1APIServiceList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apiregistration.k8s.io", "version": "v1", "kind": "APIService" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apiregistration.k8s.io/v1/watch/apiservices/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apiregistration_v1"], "operationId": "watchApiregistrationV1APIService", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "apiregistration.k8s.io", "version": "v1", "kind": "APIService" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the APIService", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/": { "get": { "description": "get information of a group", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps"], "operationId": "getAppsAPIGroup", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "401": { "description": "Unauthorized" } } } }, "/apis/apps/v1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "getAppsV1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/apps/v1/controllerrevisions": { "get": { "description": "list or watch objects of kind ControllerRevision", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "listAppsV1ControllerRevisionForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ControllerRevisionList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/v1/daemonsets": { "get": { "description": "list or watch objects of kind DaemonSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "listAppsV1DaemonSetForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSetList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/v1/deployments": { "get": { "description": "list or watch objects of kind Deployment", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "listAppsV1DeploymentForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DeploymentList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/v1/namespaces/{namespace}/controllerrevisions": { "get": { "description": "list or watch objects of kind ControllerRevision", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "listAppsV1NamespacedControllerRevision", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ControllerRevisionList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "post": { "description": "create a ControllerRevision", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "createAppsV1NamespacedControllerRevision", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ControllerRevision" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ControllerRevision" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ControllerRevision" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ControllerRevision" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "delete": { "description": "delete collection of ControllerRevision", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "deleteAppsV1CollectionNamespacedControllerRevision", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}": { "get": { "description": "read the specified ControllerRevision", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "readAppsV1NamespacedControllerRevision", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ControllerRevision" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "put": { "description": "replace the specified ControllerRevision", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "replaceAppsV1NamespacedControllerRevision", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ControllerRevision" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ControllerRevision" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ControllerRevision" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "delete": { "description": "delete a ControllerRevision", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "deleteAppsV1NamespacedControllerRevision", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "patch": { "description": "partially update the specified ControllerRevision", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "patchAppsV1NamespacedControllerRevision", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ControllerRevision" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ControllerRevision" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the ControllerRevision", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apps/v1/namespaces/{namespace}/daemonsets": { "get": { "description": "list or watch objects of kind DaemonSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "listAppsV1NamespacedDaemonSet", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSetList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "post": { "description": "create a DaemonSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "createAppsV1NamespacedDaemonSet", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSet" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSet" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSet" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "delete": { "description": "delete collection of DaemonSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "deleteAppsV1CollectionNamespacedDaemonSet", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apps/v1/namespaces/{namespace}/daemonsets/{name}": { "get": { "description": "read the specified DaemonSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "readAppsV1NamespacedDaemonSet", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "put": { "description": "replace the specified DaemonSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "replaceAppsV1NamespacedDaemonSet", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSet" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSet" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "delete": { "description": "delete a DaemonSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "deleteAppsV1NamespacedDaemonSet", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "patch": { "description": "partially update the specified DaemonSet", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "patchAppsV1NamespacedDaemonSet", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSet" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the DaemonSet", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status": { "get": { "description": "read status of the specified DaemonSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "readAppsV1NamespacedDaemonSetStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "put": { "description": "replace status of the specified DaemonSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "replaceAppsV1NamespacedDaemonSetStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSet" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSet" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "patch": { "description": "partially update status of the specified DaemonSet", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "patchAppsV1NamespacedDaemonSetStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSet" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the DaemonSet", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apps/v1/namespaces/{namespace}/deployments": { "get": { "description": "list or watch objects of kind Deployment", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "listAppsV1NamespacedDeployment", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.DeploymentList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "post": { "description": "create a Deployment", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "createAppsV1NamespacedDeployment", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.Deployment" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.Deployment" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.Deployment" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.Deployment" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "delete": { "description": "delete collection of Deployment", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "deleteAppsV1CollectionNamespacedDeployment", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apps/v1/namespaces/{namespace}/deployments/{name}": { "get": { "description": "read the specified Deployment", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "readAppsV1NamespacedDeployment", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.Deployment" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "put": { "description": "replace the specified Deployment", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "replaceAppsV1NamespacedDeployment", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.Deployment" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.Deployment" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.Deployment" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "delete": { "description": "delete a Deployment", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "deleteAppsV1NamespacedDeployment", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "patch": { "description": "partially update the specified Deployment", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "patchAppsV1NamespacedDeployment", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.Deployment" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.Deployment" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Deployment", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apps/v1/namespaces/{namespace}/deployments/{name}/scale": { "get": { "description": "read scale of the specified Deployment", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "readAppsV1NamespacedDeploymentScale", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } }, "put": { "description": "replace scale of the specified Deployment", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "replaceAppsV1NamespacedDeploymentScale", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } }, "patch": { "description": "partially update scale of the specified Deployment", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "patchAppsV1NamespacedDeploymentScale", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Scale", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apps/v1/namespaces/{namespace}/deployments/{name}/status": { "get": { "description": "read status of the specified Deployment", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "readAppsV1NamespacedDeploymentStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.Deployment" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "put": { "description": "replace status of the specified Deployment", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "replaceAppsV1NamespacedDeploymentStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.Deployment" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.Deployment" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.Deployment" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "patch": { "description": "partially update status of the specified Deployment", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "patchAppsV1NamespacedDeploymentStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.Deployment" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.Deployment" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Deployment", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apps/v1/namespaces/{namespace}/replicasets": { "get": { "description": "list or watch objects of kind ReplicaSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "listAppsV1NamespacedReplicaSet", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSetList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "post": { "description": "create a ReplicaSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "createAppsV1NamespacedReplicaSet", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSet" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSet" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSet" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "delete": { "description": "delete collection of ReplicaSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "deleteAppsV1CollectionNamespacedReplicaSet", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apps/v1/namespaces/{namespace}/replicasets/{name}": { "get": { "description": "read the specified ReplicaSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "readAppsV1NamespacedReplicaSet", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "put": { "description": "replace the specified ReplicaSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "replaceAppsV1NamespacedReplicaSet", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSet" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSet" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "delete": { "description": "delete a ReplicaSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "deleteAppsV1NamespacedReplicaSet", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "patch": { "description": "partially update the specified ReplicaSet", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "patchAppsV1NamespacedReplicaSet", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSet" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the ReplicaSet", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apps/v1/namespaces/{namespace}/replicasets/{name}/scale": { "get": { "description": "read scale of the specified ReplicaSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "readAppsV1NamespacedReplicaSetScale", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } }, "put": { "description": "replace scale of the specified ReplicaSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "replaceAppsV1NamespacedReplicaSetScale", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } }, "patch": { "description": "partially update scale of the specified ReplicaSet", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "patchAppsV1NamespacedReplicaSetScale", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Scale", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status": { "get": { "description": "read status of the specified ReplicaSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "readAppsV1NamespacedReplicaSetStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "put": { "description": "replace status of the specified ReplicaSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "replaceAppsV1NamespacedReplicaSetStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSet" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSet" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "patch": { "description": "partially update status of the specified ReplicaSet", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "patchAppsV1NamespacedReplicaSetStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSet" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the ReplicaSet", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apps/v1/namespaces/{namespace}/statefulsets": { "get": { "description": "list or watch objects of kind StatefulSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "listAppsV1NamespacedStatefulSet", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSetList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "post": { "description": "create a StatefulSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "createAppsV1NamespacedStatefulSet", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSet" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSet" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSet" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "delete": { "description": "delete collection of StatefulSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "deleteAppsV1CollectionNamespacedStatefulSet", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}": { "get": { "description": "read the specified StatefulSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "readAppsV1NamespacedStatefulSet", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "put": { "description": "replace the specified StatefulSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "replaceAppsV1NamespacedStatefulSet", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSet" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSet" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "delete": { "description": "delete a StatefulSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "deleteAppsV1NamespacedStatefulSet", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "patch": { "description": "partially update the specified StatefulSet", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "patchAppsV1NamespacedStatefulSet", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSet" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the StatefulSet", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/scale": { "get": { "description": "read scale of the specified StatefulSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "readAppsV1NamespacedStatefulSetScale", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } }, "put": { "description": "replace scale of the specified StatefulSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "replaceAppsV1NamespacedStatefulSetScale", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } }, "patch": { "description": "partially update scale of the specified StatefulSet", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "patchAppsV1NamespacedStatefulSetScale", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.Scale" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Scale", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status": { "get": { "description": "read status of the specified StatefulSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "readAppsV1NamespacedStatefulSetStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "put": { "description": "replace status of the specified StatefulSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "replaceAppsV1NamespacedStatefulSetStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSet" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSet" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "patch": { "description": "partially update status of the specified StatefulSet", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "patchAppsV1NamespacedStatefulSetStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSet" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSet" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the StatefulSet", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/apps/v1/replicasets": { "get": { "description": "list or watch objects of kind ReplicaSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "listAppsV1ReplicaSetForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSetList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/v1/statefulsets": { "get": { "description": "list or watch objects of kind StatefulSet", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "listAppsV1StatefulSetForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSetList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/v1/watch/controllerrevisions": { "get": { "description": "watch individual changes to a list of ControllerRevision. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "watchAppsV1ControllerRevisionListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/v1/watch/daemonsets": { "get": { "description": "watch individual changes to a list of DaemonSet. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "watchAppsV1DaemonSetListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/v1/watch/deployments": { "get": { "description": "watch individual changes to a list of Deployment. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "watchAppsV1DeploymentListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/controllerrevisions": { "get": { "description": "watch individual changes to a list of ControllerRevision. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "watchAppsV1NamespacedControllerRevisionList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/controllerrevisions/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "watchAppsV1NamespacedControllerRevision", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the ControllerRevision", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/daemonsets": { "get": { "description": "watch individual changes to a list of DaemonSet. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "watchAppsV1NamespacedDaemonSetList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/daemonsets/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "watchAppsV1NamespacedDaemonSet", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the DaemonSet", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/deployments": { "get": { "description": "watch individual changes to a list of Deployment. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "watchAppsV1NamespacedDeploymentList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/deployments/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "watchAppsV1NamespacedDeployment", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the Deployment", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/replicasets": { "get": { "description": "watch individual changes to a list of ReplicaSet. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "watchAppsV1NamespacedReplicaSetList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/replicasets/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "watchAppsV1NamespacedReplicaSet", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the ReplicaSet", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/statefulsets": { "get": { "description": "watch individual changes to a list of StatefulSet. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "watchAppsV1NamespacedStatefulSetList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/statefulsets/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "watchAppsV1NamespacedStatefulSet", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the StatefulSet", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/v1/watch/replicasets": { "get": { "description": "watch individual changes to a list of ReplicaSet. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "watchAppsV1ReplicaSetListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/apps/v1/watch/statefulsets": { "get": { "description": "watch individual changes to a list of StatefulSet. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["apps_v1"], "operationId": "watchAppsV1StatefulSetListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/authentication.k8s.io/": { "get": { "description": "get information of a group", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["authentication"], "operationId": "getAuthenticationAPIGroup", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "401": { "description": "Unauthorized" } } } }, "/apis/authentication.k8s.io/v1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["authentication_v1"], "operationId": "getAuthenticationV1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/authentication.k8s.io/v1/tokenreviews": { "post": { "description": "create a TokenReview", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["authentication_v1"], "operationId": "createAuthenticationV1TokenReview", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.authentication.v1.TokenReview" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.authentication.v1.TokenReview" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.authentication.v1.TokenReview" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.authentication.v1.TokenReview" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "authentication.k8s.io", "kind": "TokenReview", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/authorization.k8s.io/": { "get": { "description": "get information of a group", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["authorization"], "operationId": "getAuthorizationAPIGroup", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "401": { "description": "Unauthorized" } } } }, "/apis/authorization.k8s.io/v1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["authorization_v1"], "operationId": "getAuthorizationV1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/authorization.k8s.io/v1/namespaces/{namespace}/localsubjectaccessreviews": { "post": { "description": "create a LocalSubjectAccessReview", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["authorization_v1"], "operationId": "createAuthorizationV1NamespacedLocalSubjectAccessReview", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.authorization.v1.LocalSubjectAccessReview" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.authorization.v1.LocalSubjectAccessReview" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.authorization.v1.LocalSubjectAccessReview" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.authorization.v1.LocalSubjectAccessReview" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "authorization.k8s.io", "kind": "LocalSubjectAccessReview", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/authorization.k8s.io/v1/selfsubjectaccessreviews": { "post": { "description": "create a SelfSubjectAccessReview", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["authorization_v1"], "operationId": "createAuthorizationV1SelfSubjectAccessReview", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReview" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReview" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReview" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReview" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "authorization.k8s.io", "kind": "SelfSubjectAccessReview", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/authorization.k8s.io/v1/selfsubjectrulesreviews": { "post": { "description": "create a SelfSubjectRulesReview", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["authorization_v1"], "operationId": "createAuthorizationV1SelfSubjectRulesReview", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.authorization.v1.SelfSubjectRulesReview" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.authorization.v1.SelfSubjectRulesReview" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.authorization.v1.SelfSubjectRulesReview" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.authorization.v1.SelfSubjectRulesReview" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "authorization.k8s.io", "kind": "SelfSubjectRulesReview", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/authorization.k8s.io/v1/subjectaccessreviews": { "post": { "description": "create a SubjectAccessReview", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["authorization_v1"], "operationId": "createAuthorizationV1SubjectAccessReview", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReview" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReview" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReview" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReview" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "authorization.k8s.io", "kind": "SubjectAccessReview", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/autoscaling/": { "get": { "description": "get information of a group", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling"], "operationId": "getAutoscalingAPIGroup", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "401": { "description": "Unauthorized" } } } }, "/apis/autoscaling/v1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v1"], "operationId": "getAutoscalingV1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/autoscaling/v1/horizontalpodautoscalers": { "get": { "description": "list or watch objects of kind HorizontalPodAutoscaler", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["autoscaling_v1"], "operationId": "listAutoscalingV1HorizontalPodAutoscalerForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers": { "get": { "description": "list or watch objects of kind HorizontalPodAutoscaler", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["autoscaling_v1"], "operationId": "listAutoscalingV1NamespacedHorizontalPodAutoscaler", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v1" } }, "post": { "description": "create a HorizontalPodAutoscaler", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v1"], "operationId": "createAutoscalingV1NamespacedHorizontalPodAutoscaler", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v1" } }, "delete": { "description": "delete collection of HorizontalPodAutoscaler", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v1"], "operationId": "deleteAutoscalingV1CollectionNamespacedHorizontalPodAutoscaler", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}": { "get": { "description": "read the specified HorizontalPodAutoscaler", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v1"], "operationId": "readAutoscalingV1NamespacedHorizontalPodAutoscaler", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v1" } }, "put": { "description": "replace the specified HorizontalPodAutoscaler", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v1"], "operationId": "replaceAutoscalingV1NamespacedHorizontalPodAutoscaler", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v1" } }, "delete": { "description": "delete a HorizontalPodAutoscaler", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v1"], "operationId": "deleteAutoscalingV1NamespacedHorizontalPodAutoscaler", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v1" } }, "patch": { "description": "partially update the specified HorizontalPodAutoscaler", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v1"], "operationId": "patchAutoscalingV1NamespacedHorizontalPodAutoscaler", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the HorizontalPodAutoscaler", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status": { "get": { "description": "read status of the specified HorizontalPodAutoscaler", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v1"], "operationId": "readAutoscalingV1NamespacedHorizontalPodAutoscalerStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v1" } }, "put": { "description": "replace status of the specified HorizontalPodAutoscaler", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v1"], "operationId": "replaceAutoscalingV1NamespacedHorizontalPodAutoscalerStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v1" } }, "patch": { "description": "partially update status of the specified HorizontalPodAutoscaler", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v1"], "operationId": "patchAutoscalingV1NamespacedHorizontalPodAutoscalerStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the HorizontalPodAutoscaler", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/autoscaling/v1/watch/horizontalpodautoscalers": { "get": { "description": "watch individual changes to a list of HorizontalPodAutoscaler. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["autoscaling_v1"], "operationId": "watchAutoscalingV1HorizontalPodAutoscalerListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/autoscaling/v1/watch/namespaces/{namespace}/horizontalpodautoscalers": { "get": { "description": "watch individual changes to a list of HorizontalPodAutoscaler. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["autoscaling_v1"], "operationId": "watchAutoscalingV1NamespacedHorizontalPodAutoscalerList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/autoscaling/v1/watch/namespaces/{namespace}/horizontalpodautoscalers/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["autoscaling_v1"], "operationId": "watchAutoscalingV1NamespacedHorizontalPodAutoscaler", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the HorizontalPodAutoscaler", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/autoscaling/v2/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v2"], "operationId": "getAutoscalingV2APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/autoscaling/v2/horizontalpodautoscalers": { "get": { "description": "list or watch objects of kind HorizontalPodAutoscaler", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["autoscaling_v2"], "operationId": "listAutoscalingV2HorizontalPodAutoscalerForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v2" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers": { "get": { "description": "list or watch objects of kind HorizontalPodAutoscaler", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["autoscaling_v2"], "operationId": "listAutoscalingV2NamespacedHorizontalPodAutoscaler", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v2" } }, "post": { "description": "create a HorizontalPodAutoscaler", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v2"], "operationId": "createAutoscalingV2NamespacedHorizontalPodAutoscaler", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v2" } }, "delete": { "description": "delete collection of HorizontalPodAutoscaler", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v2"], "operationId": "deleteAutoscalingV2CollectionNamespacedHorizontalPodAutoscaler", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v2" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}": { "get": { "description": "read the specified HorizontalPodAutoscaler", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v2"], "operationId": "readAutoscalingV2NamespacedHorizontalPodAutoscaler", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v2" } }, "put": { "description": "replace the specified HorizontalPodAutoscaler", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v2"], "operationId": "replaceAutoscalingV2NamespacedHorizontalPodAutoscaler", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v2" } }, "delete": { "description": "delete a HorizontalPodAutoscaler", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v2"], "operationId": "deleteAutoscalingV2NamespacedHorizontalPodAutoscaler", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v2" } }, "patch": { "description": "partially update the specified HorizontalPodAutoscaler", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v2"], "operationId": "patchAutoscalingV2NamespacedHorizontalPodAutoscaler", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v2" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the HorizontalPodAutoscaler", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}/status": { "get": { "description": "read status of the specified HorizontalPodAutoscaler", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v2"], "operationId": "readAutoscalingV2NamespacedHorizontalPodAutoscalerStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v2" } }, "put": { "description": "replace status of the specified HorizontalPodAutoscaler", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v2"], "operationId": "replaceAutoscalingV2NamespacedHorizontalPodAutoscalerStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v2" } }, "patch": { "description": "partially update status of the specified HorizontalPodAutoscaler", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["autoscaling_v2"], "operationId": "patchAutoscalingV2NamespacedHorizontalPodAutoscalerStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v2" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the HorizontalPodAutoscaler", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/autoscaling/v2/watch/horizontalpodautoscalers": { "get": { "description": "watch individual changes to a list of HorizontalPodAutoscaler. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["autoscaling_v2"], "operationId": "watchAutoscalingV2HorizontalPodAutoscalerListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v2" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/autoscaling/v2/watch/namespaces/{namespace}/horizontalpodautoscalers": { "get": { "description": "watch individual changes to a list of HorizontalPodAutoscaler. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["autoscaling_v2"], "operationId": "watchAutoscalingV2NamespacedHorizontalPodAutoscalerList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v2" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/autoscaling/v2/watch/namespaces/{namespace}/horizontalpodautoscalers/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["autoscaling_v2"], "operationId": "watchAutoscalingV2NamespacedHorizontalPodAutoscaler", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v2" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the HorizontalPodAutoscaler", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/batch/": { "get": { "description": "get information of a group", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch"], "operationId": "getBatchAPIGroup", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "401": { "description": "Unauthorized" } } } }, "/apis/batch/v1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "getBatchV1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/batch/v1/cronjobs": { "get": { "description": "list or watch objects of kind CronJob", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "listBatchV1CronJobForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.CronJobList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "CronJob", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/batch/v1/jobs": { "get": { "description": "list or watch objects of kind Job", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "listBatchV1JobForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.JobList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "Job", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/batch/v1/namespaces/{namespace}/cronjobs": { "get": { "description": "list or watch objects of kind CronJob", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "listBatchV1NamespacedCronJob", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.CronJobList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "CronJob", "version": "v1" } }, "post": { "description": "create a CronJob", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "createBatchV1NamespacedCronJob", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.CronJob" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.CronJob" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.CronJob" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.CronJob" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "CronJob", "version": "v1" } }, "delete": { "description": "delete collection of CronJob", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "deleteBatchV1CollectionNamespacedCronJob", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "CronJob", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/batch/v1/namespaces/{namespace}/cronjobs/{name}": { "get": { "description": "read the specified CronJob", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "readBatchV1NamespacedCronJob", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.CronJob" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "CronJob", "version": "v1" } }, "put": { "description": "replace the specified CronJob", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "replaceBatchV1NamespacedCronJob", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.CronJob" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.CronJob" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.CronJob" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "CronJob", "version": "v1" } }, "delete": { "description": "delete a CronJob", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "deleteBatchV1NamespacedCronJob", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "CronJob", "version": "v1" } }, "patch": { "description": "partially update the specified CronJob", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "patchBatchV1NamespacedCronJob", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.CronJob" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.CronJob" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "CronJob", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the CronJob", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/batch/v1/namespaces/{namespace}/cronjobs/{name}/status": { "get": { "description": "read status of the specified CronJob", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "readBatchV1NamespacedCronJobStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.CronJob" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "CronJob", "version": "v1" } }, "put": { "description": "replace status of the specified CronJob", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "replaceBatchV1NamespacedCronJobStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.CronJob" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.CronJob" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.CronJob" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "CronJob", "version": "v1" } }, "patch": { "description": "partially update status of the specified CronJob", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "patchBatchV1NamespacedCronJobStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.CronJob" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.CronJob" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "CronJob", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the CronJob", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/batch/v1/namespaces/{namespace}/jobs": { "get": { "description": "list or watch objects of kind Job", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "listBatchV1NamespacedJob", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.JobList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "Job", "version": "v1" } }, "post": { "description": "create a Job", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "createBatchV1NamespacedJob", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.Job" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.Job" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.Job" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.Job" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "Job", "version": "v1" } }, "delete": { "description": "delete collection of Job", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "deleteBatchV1CollectionNamespacedJob", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "Job", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/batch/v1/namespaces/{namespace}/jobs/{name}": { "get": { "description": "read the specified Job", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "readBatchV1NamespacedJob", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.Job" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "Job", "version": "v1" } }, "put": { "description": "replace the specified Job", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "replaceBatchV1NamespacedJob", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.Job" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.Job" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.Job" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "Job", "version": "v1" } }, "delete": { "description": "delete a Job", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "deleteBatchV1NamespacedJob", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "Job", "version": "v1" } }, "patch": { "description": "partially update the specified Job", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "patchBatchV1NamespacedJob", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.Job" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.Job" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "Job", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Job", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/batch/v1/namespaces/{namespace}/jobs/{name}/status": { "get": { "description": "read status of the specified Job", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "readBatchV1NamespacedJobStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.Job" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "Job", "version": "v1" } }, "put": { "description": "replace status of the specified Job", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "replaceBatchV1NamespacedJobStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.Job" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.Job" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.Job" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "Job", "version": "v1" } }, "patch": { "description": "partially update status of the specified Job", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "patchBatchV1NamespacedJobStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.Job" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.batch.v1.Job" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "Job", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Job", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/batch/v1/watch/cronjobs": { "get": { "description": "watch individual changes to a list of CronJob. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "watchBatchV1CronJobListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "CronJob", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/batch/v1/watch/jobs": { "get": { "description": "watch individual changes to a list of Job. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "watchBatchV1JobListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "Job", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/batch/v1/watch/namespaces/{namespace}/cronjobs": { "get": { "description": "watch individual changes to a list of CronJob. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "watchBatchV1NamespacedCronJobList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "CronJob", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/batch/v1/watch/namespaces/{namespace}/cronjobs/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "watchBatchV1NamespacedCronJob", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "CronJob", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the CronJob", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/batch/v1/watch/namespaces/{namespace}/jobs": { "get": { "description": "watch individual changes to a list of Job. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "watchBatchV1NamespacedJobList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "Job", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/batch/v1/watch/namespaces/{namespace}/jobs/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["batch_v1"], "operationId": "watchBatchV1NamespacedJob", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "batch", "kind": "Job", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the Job", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/certificates.k8s.io/": { "get": { "description": "get information of a group", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["certificates"], "operationId": "getCertificatesAPIGroup", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "401": { "description": "Unauthorized" } } } }, "/apis/certificates.k8s.io/v1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["certificates_v1"], "operationId": "getCertificatesV1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/certificates.k8s.io/v1/certificatesigningrequests": { "get": { "description": "list or watch objects of kind CertificateSigningRequest", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["certificates_v1"], "operationId": "listCertificatesV1CertificateSigningRequest", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequestList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "certificates.k8s.io", "kind": "CertificateSigningRequest", "version": "v1" } }, "post": { "description": "create a CertificateSigningRequest", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["certificates_v1"], "operationId": "createCertificatesV1CertificateSigningRequest", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "certificates.k8s.io", "kind": "CertificateSigningRequest", "version": "v1" } }, "delete": { "description": "delete collection of CertificateSigningRequest", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["certificates_v1"], "operationId": "deleteCertificatesV1CollectionCertificateSigningRequest", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "certificates.k8s.io", "kind": "CertificateSigningRequest", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/certificates.k8s.io/v1/certificatesigningrequests/{name}": { "get": { "description": "read the specified CertificateSigningRequest", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["certificates_v1"], "operationId": "readCertificatesV1CertificateSigningRequest", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "certificates.k8s.io", "kind": "CertificateSigningRequest", "version": "v1" } }, "put": { "description": "replace the specified CertificateSigningRequest", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["certificates_v1"], "operationId": "replaceCertificatesV1CertificateSigningRequest", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "certificates.k8s.io", "kind": "CertificateSigningRequest", "version": "v1" } }, "delete": { "description": "delete a CertificateSigningRequest", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["certificates_v1"], "operationId": "deleteCertificatesV1CertificateSigningRequest", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "certificates.k8s.io", "kind": "CertificateSigningRequest", "version": "v1" } }, "patch": { "description": "partially update the specified CertificateSigningRequest", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["certificates_v1"], "operationId": "patchCertificatesV1CertificateSigningRequest", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "certificates.k8s.io", "kind": "CertificateSigningRequest", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the CertificateSigningRequest", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/approval": { "get": { "description": "read approval of the specified CertificateSigningRequest", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["certificates_v1"], "operationId": "readCertificatesV1CertificateSigningRequestApproval", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "certificates.k8s.io", "kind": "CertificateSigningRequest", "version": "v1" } }, "put": { "description": "replace approval of the specified CertificateSigningRequest", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["certificates_v1"], "operationId": "replaceCertificatesV1CertificateSigningRequestApproval", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "certificates.k8s.io", "kind": "CertificateSigningRequest", "version": "v1" } }, "patch": { "description": "partially update approval of the specified CertificateSigningRequest", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["certificates_v1"], "operationId": "patchCertificatesV1CertificateSigningRequestApproval", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "certificates.k8s.io", "kind": "CertificateSigningRequest", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the CertificateSigningRequest", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/certificates.k8s.io/v1/certificatesigningrequests/{name}/status": { "get": { "description": "read status of the specified CertificateSigningRequest", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["certificates_v1"], "operationId": "readCertificatesV1CertificateSigningRequestStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "certificates.k8s.io", "kind": "CertificateSigningRequest", "version": "v1" } }, "put": { "description": "replace status of the specified CertificateSigningRequest", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["certificates_v1"], "operationId": "replaceCertificatesV1CertificateSigningRequestStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "certificates.k8s.io", "kind": "CertificateSigningRequest", "version": "v1" } }, "patch": { "description": "partially update status of the specified CertificateSigningRequest", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["certificates_v1"], "operationId": "patchCertificatesV1CertificateSigningRequestStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "certificates.k8s.io", "kind": "CertificateSigningRequest", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the CertificateSigningRequest", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/certificates.k8s.io/v1/watch/certificatesigningrequests": { "get": { "description": "watch individual changes to a list of CertificateSigningRequest. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["certificates_v1"], "operationId": "watchCertificatesV1CertificateSigningRequestList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "certificates.k8s.io", "kind": "CertificateSigningRequest", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/certificates.k8s.io/v1/watch/certificatesigningrequests/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["certificates_v1"], "operationId": "watchCertificatesV1CertificateSigningRequest", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "certificates.k8s.io", "kind": "CertificateSigningRequest", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the CertificateSigningRequest", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/coordination.k8s.io/": { "get": { "description": "get information of a group", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["coordination"], "operationId": "getCoordinationAPIGroup", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "401": { "description": "Unauthorized" } } } }, "/apis/coordination.k8s.io/v1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["coordination_v1"], "operationId": "getCoordinationV1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/coordination.k8s.io/v1/leases": { "get": { "description": "list or watch objects of kind Lease", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["coordination_v1"], "operationId": "listCoordinationV1LeaseForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.coordination.v1.LeaseList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "coordination.k8s.io", "kind": "Lease", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/coordination.k8s.io/v1/namespaces/{namespace}/leases": { "get": { "description": "list or watch objects of kind Lease", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["coordination_v1"], "operationId": "listCoordinationV1NamespacedLease", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.coordination.v1.LeaseList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "coordination.k8s.io", "kind": "Lease", "version": "v1" } }, "post": { "description": "create a Lease", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["coordination_v1"], "operationId": "createCoordinationV1NamespacedLease", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.coordination.v1.Lease" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.coordination.v1.Lease" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.coordination.v1.Lease" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.coordination.v1.Lease" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "coordination.k8s.io", "kind": "Lease", "version": "v1" } }, "delete": { "description": "delete collection of Lease", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["coordination_v1"], "operationId": "deleteCoordinationV1CollectionNamespacedLease", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "coordination.k8s.io", "kind": "Lease", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/coordination.k8s.io/v1/namespaces/{namespace}/leases/{name}": { "get": { "description": "read the specified Lease", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["coordination_v1"], "operationId": "readCoordinationV1NamespacedLease", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.coordination.v1.Lease" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "coordination.k8s.io", "kind": "Lease", "version": "v1" } }, "put": { "description": "replace the specified Lease", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["coordination_v1"], "operationId": "replaceCoordinationV1NamespacedLease", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.coordination.v1.Lease" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.coordination.v1.Lease" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.coordination.v1.Lease" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "coordination.k8s.io", "kind": "Lease", "version": "v1" } }, "delete": { "description": "delete a Lease", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["coordination_v1"], "operationId": "deleteCoordinationV1NamespacedLease", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "coordination.k8s.io", "kind": "Lease", "version": "v1" } }, "patch": { "description": "partially update the specified Lease", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["coordination_v1"], "operationId": "patchCoordinationV1NamespacedLease", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.coordination.v1.Lease" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.coordination.v1.Lease" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "coordination.k8s.io", "kind": "Lease", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Lease", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/coordination.k8s.io/v1/watch/leases": { "get": { "description": "watch individual changes to a list of Lease. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["coordination_v1"], "operationId": "watchCoordinationV1LeaseListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "coordination.k8s.io", "kind": "Lease", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/coordination.k8s.io/v1/watch/namespaces/{namespace}/leases": { "get": { "description": "watch individual changes to a list of Lease. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["coordination_v1"], "operationId": "watchCoordinationV1NamespacedLeaseList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "coordination.k8s.io", "kind": "Lease", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/coordination.k8s.io/v1/watch/namespaces/{namespace}/leases/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["coordination_v1"], "operationId": "watchCoordinationV1NamespacedLease", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "coordination.k8s.io", "kind": "Lease", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the Lease", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/discovery.k8s.io/": { "get": { "description": "get information of a group", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["discovery"], "operationId": "getDiscoveryAPIGroup", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "401": { "description": "Unauthorized" } } } }, "/apis/discovery.k8s.io/v1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["discovery_v1"], "operationId": "getDiscoveryV1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/discovery.k8s.io/v1/endpointslices": { "get": { "description": "list or watch objects of kind EndpointSlice", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["discovery_v1"], "operationId": "listDiscoveryV1EndpointSliceForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.discovery.v1.EndpointSliceList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "discovery.k8s.io", "kind": "EndpointSlice", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices": { "get": { "description": "list or watch objects of kind EndpointSlice", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["discovery_v1"], "operationId": "listDiscoveryV1NamespacedEndpointSlice", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.discovery.v1.EndpointSliceList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "discovery.k8s.io", "kind": "EndpointSlice", "version": "v1" } }, "post": { "description": "create an EndpointSlice", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["discovery_v1"], "operationId": "createDiscoveryV1NamespacedEndpointSlice", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.discovery.v1.EndpointSlice" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.discovery.v1.EndpointSlice" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.discovery.v1.EndpointSlice" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.discovery.v1.EndpointSlice" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "discovery.k8s.io", "kind": "EndpointSlice", "version": "v1" } }, "delete": { "description": "delete collection of EndpointSlice", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["discovery_v1"], "operationId": "deleteDiscoveryV1CollectionNamespacedEndpointSlice", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "discovery.k8s.io", "kind": "EndpointSlice", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/discovery.k8s.io/v1/namespaces/{namespace}/endpointslices/{name}": { "get": { "description": "read the specified EndpointSlice", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["discovery_v1"], "operationId": "readDiscoveryV1NamespacedEndpointSlice", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.discovery.v1.EndpointSlice" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "discovery.k8s.io", "kind": "EndpointSlice", "version": "v1" } }, "put": { "description": "replace the specified EndpointSlice", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["discovery_v1"], "operationId": "replaceDiscoveryV1NamespacedEndpointSlice", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.discovery.v1.EndpointSlice" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.discovery.v1.EndpointSlice" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.discovery.v1.EndpointSlice" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "discovery.k8s.io", "kind": "EndpointSlice", "version": "v1" } }, "delete": { "description": "delete an EndpointSlice", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["discovery_v1"], "operationId": "deleteDiscoveryV1NamespacedEndpointSlice", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "discovery.k8s.io", "kind": "EndpointSlice", "version": "v1" } }, "patch": { "description": "partially update the specified EndpointSlice", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["discovery_v1"], "operationId": "patchDiscoveryV1NamespacedEndpointSlice", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.discovery.v1.EndpointSlice" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.discovery.v1.EndpointSlice" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "discovery.k8s.io", "kind": "EndpointSlice", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the EndpointSlice", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/discovery.k8s.io/v1/watch/endpointslices": { "get": { "description": "watch individual changes to a list of EndpointSlice. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["discovery_v1"], "operationId": "watchDiscoveryV1EndpointSliceListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "discovery.k8s.io", "kind": "EndpointSlice", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/discovery.k8s.io/v1/watch/namespaces/{namespace}/endpointslices": { "get": { "description": "watch individual changes to a list of EndpointSlice. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["discovery_v1"], "operationId": "watchDiscoveryV1NamespacedEndpointSliceList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "discovery.k8s.io", "kind": "EndpointSlice", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/discovery.k8s.io/v1/watch/namespaces/{namespace}/endpointslices/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["discovery_v1"], "operationId": "watchDiscoveryV1NamespacedEndpointSlice", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "discovery.k8s.io", "kind": "EndpointSlice", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the EndpointSlice", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/events.k8s.io/": { "get": { "description": "get information of a group", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["events"], "operationId": "getEventsAPIGroup", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "401": { "description": "Unauthorized" } } } }, "/apis/events.k8s.io/v1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["events_v1"], "operationId": "getEventsV1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/events.k8s.io/v1/events": { "get": { "description": "list or watch objects of kind Event", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["events_v1"], "operationId": "listEventsV1EventForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.events.v1.EventList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "events.k8s.io", "kind": "Event", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/events.k8s.io/v1/namespaces/{namespace}/events": { "get": { "description": "list or watch objects of kind Event", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["events_v1"], "operationId": "listEventsV1NamespacedEvent", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.events.v1.EventList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "events.k8s.io", "kind": "Event", "version": "v1" } }, "post": { "description": "create an Event", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["events_v1"], "operationId": "createEventsV1NamespacedEvent", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.events.v1.Event" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.events.v1.Event" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.events.v1.Event" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.events.v1.Event" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "events.k8s.io", "kind": "Event", "version": "v1" } }, "delete": { "description": "delete collection of Event", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["events_v1"], "operationId": "deleteEventsV1CollectionNamespacedEvent", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "events.k8s.io", "kind": "Event", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/events.k8s.io/v1/namespaces/{namespace}/events/{name}": { "get": { "description": "read the specified Event", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["events_v1"], "operationId": "readEventsV1NamespacedEvent", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.events.v1.Event" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "events.k8s.io", "kind": "Event", "version": "v1" } }, "put": { "description": "replace the specified Event", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["events_v1"], "operationId": "replaceEventsV1NamespacedEvent", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.events.v1.Event" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.events.v1.Event" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.events.v1.Event" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "events.k8s.io", "kind": "Event", "version": "v1" } }, "delete": { "description": "delete an Event", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["events_v1"], "operationId": "deleteEventsV1NamespacedEvent", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "events.k8s.io", "kind": "Event", "version": "v1" } }, "patch": { "description": "partially update the specified Event", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["events_v1"], "operationId": "patchEventsV1NamespacedEvent", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.events.v1.Event" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.events.v1.Event" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "events.k8s.io", "kind": "Event", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Event", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/events.k8s.io/v1/watch/events": { "get": { "description": "watch individual changes to a list of Event. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["events_v1"], "operationId": "watchEventsV1EventListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "events.k8s.io", "kind": "Event", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/events.k8s.io/v1/watch/namespaces/{namespace}/events": { "get": { "description": "watch individual changes to a list of Event. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["events_v1"], "operationId": "watchEventsV1NamespacedEventList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "events.k8s.io", "kind": "Event", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/events.k8s.io/v1/watch/namespaces/{namespace}/events/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["events_v1"], "operationId": "watchEventsV1NamespacedEvent", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "events.k8s.io", "kind": "Event", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the Event", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/": { "get": { "description": "get information of a group", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver"], "operationId": "getFlowcontrolApiserverAPIGroup", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "401": { "description": "Unauthorized" } } } }, "/apis/flowcontrol.apiserver.k8s.io/v1beta2/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "getFlowcontrolApiserverV1beta2APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/flowcontrol.apiserver.k8s.io/v1beta2/flowschemas": { "get": { "description": "list or watch objects of kind FlowSchema", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "listFlowcontrolApiserverV1beta2FlowSchema", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchemaList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta2" } }, "post": { "description": "create a FlowSchema", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "createFlowcontrolApiserverV1beta2FlowSchema", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchema" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchema" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchema" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchema" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta2" } }, "delete": { "description": "delete collection of FlowSchema", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "deleteFlowcontrolApiserverV1beta2CollectionFlowSchema", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta2" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/v1beta2/flowschemas/{name}": { "get": { "description": "read the specified FlowSchema", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "readFlowcontrolApiserverV1beta2FlowSchema", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchema" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta2" } }, "put": { "description": "replace the specified FlowSchema", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "replaceFlowcontrolApiserverV1beta2FlowSchema", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchema" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchema" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchema" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta2" } }, "delete": { "description": "delete a FlowSchema", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "deleteFlowcontrolApiserverV1beta2FlowSchema", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta2" } }, "patch": { "description": "partially update the specified FlowSchema", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "patchFlowcontrolApiserverV1beta2FlowSchema", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchema" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchema" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta2" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the FlowSchema", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/v1beta2/flowschemas/{name}/status": { "get": { "description": "read status of the specified FlowSchema", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "readFlowcontrolApiserverV1beta2FlowSchemaStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchema" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta2" } }, "put": { "description": "replace status of the specified FlowSchema", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "replaceFlowcontrolApiserverV1beta2FlowSchemaStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchema" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchema" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchema" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta2" } }, "patch": { "description": "partially update status of the specified FlowSchema", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "patchFlowcontrolApiserverV1beta2FlowSchemaStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchema" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchema" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta2" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the FlowSchema", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/v1beta2/prioritylevelconfigurations": { "get": { "description": "list or watch objects of kind PriorityLevelConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "listFlowcontrolApiserverV1beta2PriorityLevelConfiguration", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta2" } }, "post": { "description": "create a PriorityLevelConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "createFlowcontrolApiserverV1beta2PriorityLevelConfiguration", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta2" } }, "delete": { "description": "delete collection of PriorityLevelConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "deleteFlowcontrolApiserverV1beta2CollectionPriorityLevelConfiguration", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta2" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/v1beta2/prioritylevelconfigurations/{name}": { "get": { "description": "read the specified PriorityLevelConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "readFlowcontrolApiserverV1beta2PriorityLevelConfiguration", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta2" } }, "put": { "description": "replace the specified PriorityLevelConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "replaceFlowcontrolApiserverV1beta2PriorityLevelConfiguration", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta2" } }, "delete": { "description": "delete a PriorityLevelConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "deleteFlowcontrolApiserverV1beta2PriorityLevelConfiguration", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta2" } }, "patch": { "description": "partially update the specified PriorityLevelConfiguration", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "patchFlowcontrolApiserverV1beta2PriorityLevelConfiguration", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta2" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the PriorityLevelConfiguration", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/v1beta2/prioritylevelconfigurations/{name}/status": { "get": { "description": "read status of the specified PriorityLevelConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "readFlowcontrolApiserverV1beta2PriorityLevelConfigurationStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta2" } }, "put": { "description": "replace status of the specified PriorityLevelConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "replaceFlowcontrolApiserverV1beta2PriorityLevelConfigurationStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta2" } }, "patch": { "description": "partially update status of the specified PriorityLevelConfiguration", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "patchFlowcontrolApiserverV1beta2PriorityLevelConfigurationStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta2" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the PriorityLevelConfiguration", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/v1beta2/watch/flowschemas": { "get": { "description": "watch individual changes to a list of FlowSchema. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "watchFlowcontrolApiserverV1beta2FlowSchemaList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta2" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/v1beta2/watch/flowschemas/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "watchFlowcontrolApiserverV1beta2FlowSchema", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta2" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the FlowSchema", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/v1beta2/watch/prioritylevelconfigurations": { "get": { "description": "watch individual changes to a list of PriorityLevelConfiguration. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "watchFlowcontrolApiserverV1beta2PriorityLevelConfigurationList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta2" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/v1beta2/watch/prioritylevelconfigurations/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta2"], "operationId": "watchFlowcontrolApiserverV1beta2PriorityLevelConfiguration", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta2" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the PriorityLevelConfiguration", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/v1beta3/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "getFlowcontrolApiserverV1beta3APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas": { "get": { "description": "list or watch objects of kind FlowSchema", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "listFlowcontrolApiserverV1beta3FlowSchema", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchemaList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta3" } }, "post": { "description": "create a FlowSchema", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "createFlowcontrolApiserverV1beta3FlowSchema", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta3" } }, "delete": { "description": "delete collection of FlowSchema", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "deleteFlowcontrolApiserverV1beta3CollectionFlowSchema", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta3" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas/{name}": { "get": { "description": "read the specified FlowSchema", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "readFlowcontrolApiserverV1beta3FlowSchema", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta3" } }, "put": { "description": "replace the specified FlowSchema", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "replaceFlowcontrolApiserverV1beta3FlowSchema", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta3" } }, "delete": { "description": "delete a FlowSchema", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "deleteFlowcontrolApiserverV1beta3FlowSchema", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta3" } }, "patch": { "description": "partially update the specified FlowSchema", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "patchFlowcontrolApiserverV1beta3FlowSchema", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta3" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the FlowSchema", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/v1beta3/flowschemas/{name}/status": { "get": { "description": "read status of the specified FlowSchema", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "readFlowcontrolApiserverV1beta3FlowSchemaStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta3" } }, "put": { "description": "replace status of the specified FlowSchema", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "replaceFlowcontrolApiserverV1beta3FlowSchemaStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta3" } }, "patch": { "description": "partially update status of the specified FlowSchema", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "patchFlowcontrolApiserverV1beta3FlowSchemaStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta3" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the FlowSchema", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations": { "get": { "description": "list or watch objects of kind PriorityLevelConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "listFlowcontrolApiserverV1beta3PriorityLevelConfiguration", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta3" } }, "post": { "description": "create a PriorityLevelConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "createFlowcontrolApiserverV1beta3PriorityLevelConfiguration", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta3" } }, "delete": { "description": "delete collection of PriorityLevelConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "deleteFlowcontrolApiserverV1beta3CollectionPriorityLevelConfiguration", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta3" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations/{name}": { "get": { "description": "read the specified PriorityLevelConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "readFlowcontrolApiserverV1beta3PriorityLevelConfiguration", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta3" } }, "put": { "description": "replace the specified PriorityLevelConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "replaceFlowcontrolApiserverV1beta3PriorityLevelConfiguration", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta3" } }, "delete": { "description": "delete a PriorityLevelConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "deleteFlowcontrolApiserverV1beta3PriorityLevelConfiguration", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta3" } }, "patch": { "description": "partially update the specified PriorityLevelConfiguration", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "patchFlowcontrolApiserverV1beta3PriorityLevelConfiguration", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta3" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the PriorityLevelConfiguration", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations/{name}/status": { "get": { "description": "read status of the specified PriorityLevelConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "readFlowcontrolApiserverV1beta3PriorityLevelConfigurationStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta3" } }, "put": { "description": "replace status of the specified PriorityLevelConfiguration", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "replaceFlowcontrolApiserverV1beta3PriorityLevelConfigurationStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta3" } }, "patch": { "description": "partially update status of the specified PriorityLevelConfiguration", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "patchFlowcontrolApiserverV1beta3PriorityLevelConfigurationStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta3" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the PriorityLevelConfiguration", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/v1beta3/watch/flowschemas": { "get": { "description": "watch individual changes to a list of FlowSchema. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "watchFlowcontrolApiserverV1beta3FlowSchemaList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta3" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/v1beta3/watch/flowschemas/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "watchFlowcontrolApiserverV1beta3FlowSchema", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta3" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the FlowSchema", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/v1beta3/watch/prioritylevelconfigurations": { "get": { "description": "watch individual changes to a list of PriorityLevelConfiguration. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "watchFlowcontrolApiserverV1beta3PriorityLevelConfigurationList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta3" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/flowcontrol.apiserver.k8s.io/v1beta3/watch/prioritylevelconfigurations/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["flowcontrolApiserver_v1beta3"], "operationId": "watchFlowcontrolApiserverV1beta3PriorityLevelConfiguration", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta3" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the PriorityLevelConfiguration", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/networking.k8s.io/": { "get": { "description": "get information of a group", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking"], "operationId": "getNetworkingAPIGroup", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "401": { "description": "Unauthorized" } } } }, "/apis/networking.k8s.io/v1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "getNetworkingV1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/networking.k8s.io/v1/ingressclasses": { "get": { "description": "list or watch objects of kind IngressClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "listNetworkingV1IngressClass", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.IngressClassList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "IngressClass", "version": "v1" } }, "post": { "description": "create an IngressClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "createNetworkingV1IngressClass", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.IngressClass" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.IngressClass" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.IngressClass" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.IngressClass" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "IngressClass", "version": "v1" } }, "delete": { "description": "delete collection of IngressClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "deleteNetworkingV1CollectionIngressClass", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "IngressClass", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/networking.k8s.io/v1/ingressclasses/{name}": { "get": { "description": "read the specified IngressClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "readNetworkingV1IngressClass", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.IngressClass" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "IngressClass", "version": "v1" } }, "put": { "description": "replace the specified IngressClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "replaceNetworkingV1IngressClass", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.IngressClass" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.IngressClass" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.IngressClass" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "IngressClass", "version": "v1" } }, "delete": { "description": "delete an IngressClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "deleteNetworkingV1IngressClass", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "IngressClass", "version": "v1" } }, "patch": { "description": "partially update the specified IngressClass", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "patchNetworkingV1IngressClass", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.IngressClass" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.IngressClass" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "IngressClass", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the IngressClass", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/networking.k8s.io/v1/ingresses": { "get": { "description": "list or watch objects of kind Ingress", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "listNetworkingV1IngressForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.IngressList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "Ingress", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses": { "get": { "description": "list or watch objects of kind Ingress", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "listNetworkingV1NamespacedIngress", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.IngressList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "Ingress", "version": "v1" } }, "post": { "description": "create an Ingress", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "createNetworkingV1NamespacedIngress", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.Ingress" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.Ingress" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.Ingress" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.Ingress" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "Ingress", "version": "v1" } }, "delete": { "description": "delete collection of Ingress", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "deleteNetworkingV1CollectionNamespacedIngress", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "Ingress", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}": { "get": { "description": "read the specified Ingress", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "readNetworkingV1NamespacedIngress", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.Ingress" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "Ingress", "version": "v1" } }, "put": { "description": "replace the specified Ingress", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "replaceNetworkingV1NamespacedIngress", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.Ingress" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.Ingress" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.Ingress" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "Ingress", "version": "v1" } }, "delete": { "description": "delete an Ingress", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "deleteNetworkingV1NamespacedIngress", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "Ingress", "version": "v1" } }, "patch": { "description": "partially update the specified Ingress", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "patchNetworkingV1NamespacedIngress", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.Ingress" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.Ingress" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "Ingress", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Ingress", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status": { "get": { "description": "read status of the specified Ingress", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "readNetworkingV1NamespacedIngressStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.Ingress" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "Ingress", "version": "v1" } }, "put": { "description": "replace status of the specified Ingress", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "replaceNetworkingV1NamespacedIngressStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.Ingress" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.Ingress" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.Ingress" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "Ingress", "version": "v1" } }, "patch": { "description": "partially update status of the specified Ingress", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "patchNetworkingV1NamespacedIngressStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.Ingress" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.Ingress" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "Ingress", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Ingress", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies": { "get": { "description": "list or watch objects of kind NetworkPolicy", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "listNetworkingV1NamespacedNetworkPolicy", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicyList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "NetworkPolicy", "version": "v1" } }, "post": { "description": "create a NetworkPolicy", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "createNetworkingV1NamespacedNetworkPolicy", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicy" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicy" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicy" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicy" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "NetworkPolicy", "version": "v1" } }, "delete": { "description": "delete collection of NetworkPolicy", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "deleteNetworkingV1CollectionNamespacedNetworkPolicy", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "NetworkPolicy", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}": { "get": { "description": "read the specified NetworkPolicy", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "readNetworkingV1NamespacedNetworkPolicy", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicy" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "NetworkPolicy", "version": "v1" } }, "put": { "description": "replace the specified NetworkPolicy", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "replaceNetworkingV1NamespacedNetworkPolicy", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicy" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicy" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicy" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "NetworkPolicy", "version": "v1" } }, "delete": { "description": "delete a NetworkPolicy", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "deleteNetworkingV1NamespacedNetworkPolicy", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "NetworkPolicy", "version": "v1" } }, "patch": { "description": "partially update the specified NetworkPolicy", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "patchNetworkingV1NamespacedNetworkPolicy", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicy" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicy" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "NetworkPolicy", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the NetworkPolicy", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/networking.k8s.io/v1/namespaces/{namespace}/networkpolicies/{name}/status": { "get": { "description": "read status of the specified NetworkPolicy", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "readNetworkingV1NamespacedNetworkPolicyStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicy" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "NetworkPolicy", "version": "v1" } }, "put": { "description": "replace status of the specified NetworkPolicy", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "replaceNetworkingV1NamespacedNetworkPolicyStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicy" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicy" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicy" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "NetworkPolicy", "version": "v1" } }, "patch": { "description": "partially update status of the specified NetworkPolicy", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "patchNetworkingV1NamespacedNetworkPolicyStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicy" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicy" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "NetworkPolicy", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the NetworkPolicy", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/networking.k8s.io/v1/networkpolicies": { "get": { "description": "list or watch objects of kind NetworkPolicy", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "listNetworkingV1NetworkPolicyForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicyList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "NetworkPolicy", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/networking.k8s.io/v1/watch/ingressclasses": { "get": { "description": "watch individual changes to a list of IngressClass. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "watchNetworkingV1IngressClassList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "IngressClass", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/networking.k8s.io/v1/watch/ingressclasses/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "watchNetworkingV1IngressClass", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "IngressClass", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the IngressClass", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/networking.k8s.io/v1/watch/ingresses": { "get": { "description": "watch individual changes to a list of Ingress. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "watchNetworkingV1IngressListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "Ingress", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/networking.k8s.io/v1/watch/namespaces/{namespace}/ingresses": { "get": { "description": "watch individual changes to a list of Ingress. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "watchNetworkingV1NamespacedIngressList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "Ingress", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/networking.k8s.io/v1/watch/namespaces/{namespace}/ingresses/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "watchNetworkingV1NamespacedIngress", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "Ingress", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the Ingress", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/networking.k8s.io/v1/watch/namespaces/{namespace}/networkpolicies": { "get": { "description": "watch individual changes to a list of NetworkPolicy. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "watchNetworkingV1NamespacedNetworkPolicyList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "NetworkPolicy", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/networking.k8s.io/v1/watch/namespaces/{namespace}/networkpolicies/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "watchNetworkingV1NamespacedNetworkPolicy", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "NetworkPolicy", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the NetworkPolicy", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/networking.k8s.io/v1/watch/networkpolicies": { "get": { "description": "watch individual changes to a list of NetworkPolicy. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["networking_v1"], "operationId": "watchNetworkingV1NetworkPolicyListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "networking.k8s.io", "kind": "NetworkPolicy", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/node.k8s.io/": { "get": { "description": "get information of a group", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["node"], "operationId": "getNodeAPIGroup", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "401": { "description": "Unauthorized" } } } }, "/apis/node.k8s.io/v1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["node_v1"], "operationId": "getNodeV1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/node.k8s.io/v1/runtimeclasses": { "get": { "description": "list or watch objects of kind RuntimeClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["node_v1"], "operationId": "listNodeV1RuntimeClass", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.node.v1.RuntimeClassList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "node.k8s.io", "kind": "RuntimeClass", "version": "v1" } }, "post": { "description": "create a RuntimeClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["node_v1"], "operationId": "createNodeV1RuntimeClass", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.node.v1.RuntimeClass" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.node.v1.RuntimeClass" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.node.v1.RuntimeClass" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.node.v1.RuntimeClass" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "node.k8s.io", "kind": "RuntimeClass", "version": "v1" } }, "delete": { "description": "delete collection of RuntimeClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["node_v1"], "operationId": "deleteNodeV1CollectionRuntimeClass", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "node.k8s.io", "kind": "RuntimeClass", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/node.k8s.io/v1/runtimeclasses/{name}": { "get": { "description": "read the specified RuntimeClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["node_v1"], "operationId": "readNodeV1RuntimeClass", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.node.v1.RuntimeClass" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "node.k8s.io", "kind": "RuntimeClass", "version": "v1" } }, "put": { "description": "replace the specified RuntimeClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["node_v1"], "operationId": "replaceNodeV1RuntimeClass", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.node.v1.RuntimeClass" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.node.v1.RuntimeClass" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.node.v1.RuntimeClass" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "node.k8s.io", "kind": "RuntimeClass", "version": "v1" } }, "delete": { "description": "delete a RuntimeClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["node_v1"], "operationId": "deleteNodeV1RuntimeClass", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "node.k8s.io", "kind": "RuntimeClass", "version": "v1" } }, "patch": { "description": "partially update the specified RuntimeClass", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["node_v1"], "operationId": "patchNodeV1RuntimeClass", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.node.v1.RuntimeClass" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.node.v1.RuntimeClass" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "node.k8s.io", "kind": "RuntimeClass", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the RuntimeClass", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/node.k8s.io/v1/watch/runtimeclasses": { "get": { "description": "watch individual changes to a list of RuntimeClass. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["node_v1"], "operationId": "watchNodeV1RuntimeClassList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "node.k8s.io", "kind": "RuntimeClass", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/node.k8s.io/v1/watch/runtimeclasses/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["node_v1"], "operationId": "watchNodeV1RuntimeClass", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "node.k8s.io", "kind": "RuntimeClass", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the RuntimeClass", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/policy/": { "get": { "description": "get information of a group", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["policy"], "operationId": "getPolicyAPIGroup", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "401": { "description": "Unauthorized" } } } }, "/apis/policy/v1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["policy_v1"], "operationId": "getPolicyV1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets": { "get": { "description": "list or watch objects of kind PodDisruptionBudget", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["policy_v1"], "operationId": "listPolicyV1NamespacedPodDisruptionBudget", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudgetList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "policy", "kind": "PodDisruptionBudget", "version": "v1" } }, "post": { "description": "create a PodDisruptionBudget", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["policy_v1"], "operationId": "createPolicyV1NamespacedPodDisruptionBudget", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "policy", "kind": "PodDisruptionBudget", "version": "v1" } }, "delete": { "description": "delete collection of PodDisruptionBudget", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["policy_v1"], "operationId": "deletePolicyV1CollectionNamespacedPodDisruptionBudget", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "policy", "kind": "PodDisruptionBudget", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}": { "get": { "description": "read the specified PodDisruptionBudget", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["policy_v1"], "operationId": "readPolicyV1NamespacedPodDisruptionBudget", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "policy", "kind": "PodDisruptionBudget", "version": "v1" } }, "put": { "description": "replace the specified PodDisruptionBudget", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["policy_v1"], "operationId": "replacePolicyV1NamespacedPodDisruptionBudget", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "policy", "kind": "PodDisruptionBudget", "version": "v1" } }, "delete": { "description": "delete a PodDisruptionBudget", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["policy_v1"], "operationId": "deletePolicyV1NamespacedPodDisruptionBudget", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "policy", "kind": "PodDisruptionBudget", "version": "v1" } }, "patch": { "description": "partially update the specified PodDisruptionBudget", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["policy_v1"], "operationId": "patchPolicyV1NamespacedPodDisruptionBudget", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "policy", "kind": "PodDisruptionBudget", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the PodDisruptionBudget", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status": { "get": { "description": "read status of the specified PodDisruptionBudget", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["policy_v1"], "operationId": "readPolicyV1NamespacedPodDisruptionBudgetStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "policy", "kind": "PodDisruptionBudget", "version": "v1" } }, "put": { "description": "replace status of the specified PodDisruptionBudget", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["policy_v1"], "operationId": "replacePolicyV1NamespacedPodDisruptionBudgetStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "policy", "kind": "PodDisruptionBudget", "version": "v1" } }, "patch": { "description": "partially update status of the specified PodDisruptionBudget", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["policy_v1"], "operationId": "patchPolicyV1NamespacedPodDisruptionBudgetStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "policy", "kind": "PodDisruptionBudget", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the PodDisruptionBudget", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/policy/v1/poddisruptionbudgets": { "get": { "description": "list or watch objects of kind PodDisruptionBudget", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["policy_v1"], "operationId": "listPolicyV1PodDisruptionBudgetForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudgetList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "policy", "kind": "PodDisruptionBudget", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/policy/v1/watch/namespaces/{namespace}/poddisruptionbudgets": { "get": { "description": "watch individual changes to a list of PodDisruptionBudget. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["policy_v1"], "operationId": "watchPolicyV1NamespacedPodDisruptionBudgetList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "policy", "kind": "PodDisruptionBudget", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/policy/v1/watch/namespaces/{namespace}/poddisruptionbudgets/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["policy_v1"], "operationId": "watchPolicyV1NamespacedPodDisruptionBudget", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "policy", "kind": "PodDisruptionBudget", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the PodDisruptionBudget", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/policy/v1/watch/poddisruptionbudgets": { "get": { "description": "watch individual changes to a list of PodDisruptionBudget. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["policy_v1"], "operationId": "watchPolicyV1PodDisruptionBudgetListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "policy", "kind": "PodDisruptionBudget", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/": { "get": { "description": "get information of a group", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization"], "operationId": "getRbacAuthorizationAPIGroup", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "401": { "description": "Unauthorized" } } } }, "/apis/rbac.authorization.k8s.io/v1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "getRbacAuthorizationV1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/rbac.authorization.k8s.io/v1/clusterrolebindings": { "get": { "description": "list or watch objects of kind ClusterRoleBinding", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "listRbacAuthorizationV1ClusterRoleBinding", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRoleBindingList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "ClusterRoleBinding", "version": "v1" } }, "post": { "description": "create a ClusterRoleBinding", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "createRbacAuthorizationV1ClusterRoleBinding", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "ClusterRoleBinding", "version": "v1" } }, "delete": { "description": "delete collection of ClusterRoleBinding", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "deleteRbacAuthorizationV1CollectionClusterRoleBinding", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "ClusterRoleBinding", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/v1/clusterrolebindings/{name}": { "get": { "description": "read the specified ClusterRoleBinding", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "readRbacAuthorizationV1ClusterRoleBinding", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "ClusterRoleBinding", "version": "v1" } }, "put": { "description": "replace the specified ClusterRoleBinding", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "replaceRbacAuthorizationV1ClusterRoleBinding", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "ClusterRoleBinding", "version": "v1" } }, "delete": { "description": "delete a ClusterRoleBinding", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "deleteRbacAuthorizationV1ClusterRoleBinding", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "ClusterRoleBinding", "version": "v1" } }, "patch": { "description": "partially update the specified ClusterRoleBinding", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "patchRbacAuthorizationV1ClusterRoleBinding", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "ClusterRoleBinding", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the ClusterRoleBinding", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/v1/clusterroles": { "get": { "description": "list or watch objects of kind ClusterRole", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "listRbacAuthorizationV1ClusterRole", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRoleList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "ClusterRole", "version": "v1" } }, "post": { "description": "create a ClusterRole", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "createRbacAuthorizationV1ClusterRole", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRole" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRole" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRole" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRole" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "ClusterRole", "version": "v1" } }, "delete": { "description": "delete collection of ClusterRole", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "deleteRbacAuthorizationV1CollectionClusterRole", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "ClusterRole", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/v1/clusterroles/{name}": { "get": { "description": "read the specified ClusterRole", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "readRbacAuthorizationV1ClusterRole", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRole" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "ClusterRole", "version": "v1" } }, "put": { "description": "replace the specified ClusterRole", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "replaceRbacAuthorizationV1ClusterRole", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRole" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRole" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRole" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "ClusterRole", "version": "v1" } }, "delete": { "description": "delete a ClusterRole", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "deleteRbacAuthorizationV1ClusterRole", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "ClusterRole", "version": "v1" } }, "patch": { "description": "partially update the specified ClusterRole", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "patchRbacAuthorizationV1ClusterRole", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRole" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRole" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "ClusterRole", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the ClusterRole", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings": { "get": { "description": "list or watch objects of kind RoleBinding", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "listRbacAuthorizationV1NamespacedRoleBinding", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.RoleBindingList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "RoleBinding", "version": "v1" } }, "post": { "description": "create a RoleBinding", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "createRbacAuthorizationV1NamespacedRoleBinding", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.RoleBinding" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.RoleBinding" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.RoleBinding" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.RoleBinding" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "RoleBinding", "version": "v1" } }, "delete": { "description": "delete collection of RoleBinding", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "deleteRbacAuthorizationV1CollectionNamespacedRoleBinding", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "RoleBinding", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/rolebindings/{name}": { "get": { "description": "read the specified RoleBinding", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "readRbacAuthorizationV1NamespacedRoleBinding", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.RoleBinding" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "RoleBinding", "version": "v1" } }, "put": { "description": "replace the specified RoleBinding", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "replaceRbacAuthorizationV1NamespacedRoleBinding", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.RoleBinding" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.RoleBinding" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.RoleBinding" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "RoleBinding", "version": "v1" } }, "delete": { "description": "delete a RoleBinding", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "deleteRbacAuthorizationV1NamespacedRoleBinding", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "RoleBinding", "version": "v1" } }, "patch": { "description": "partially update the specified RoleBinding", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "patchRbacAuthorizationV1NamespacedRoleBinding", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.RoleBinding" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.RoleBinding" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "RoleBinding", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the RoleBinding", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles": { "get": { "description": "list or watch objects of kind Role", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "listRbacAuthorizationV1NamespacedRole", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.RoleList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "Role", "version": "v1" } }, "post": { "description": "create a Role", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "createRbacAuthorizationV1NamespacedRole", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.Role" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.Role" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.Role" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.Role" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "Role", "version": "v1" } }, "delete": { "description": "delete collection of Role", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "deleteRbacAuthorizationV1CollectionNamespacedRole", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "Role", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/v1/namespaces/{namespace}/roles/{name}": { "get": { "description": "read the specified Role", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "readRbacAuthorizationV1NamespacedRole", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.Role" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "Role", "version": "v1" } }, "put": { "description": "replace the specified Role", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "replaceRbacAuthorizationV1NamespacedRole", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.Role" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.Role" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.Role" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "Role", "version": "v1" } }, "delete": { "description": "delete a Role", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "deleteRbacAuthorizationV1NamespacedRole", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "Role", "version": "v1" } }, "patch": { "description": "partially update the specified Role", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "patchRbacAuthorizationV1NamespacedRole", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.Role" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.Role" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "Role", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the Role", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/v1/rolebindings": { "get": { "description": "list or watch objects of kind RoleBinding", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "listRbacAuthorizationV1RoleBindingForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.RoleBindingList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "RoleBinding", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/v1/roles": { "get": { "description": "list or watch objects of kind Role", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "listRbacAuthorizationV1RoleForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.rbac.v1.RoleList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "Role", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/v1/watch/clusterrolebindings": { "get": { "description": "watch individual changes to a list of ClusterRoleBinding. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "watchRbacAuthorizationV1ClusterRoleBindingList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "ClusterRoleBinding", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/v1/watch/clusterrolebindings/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "watchRbacAuthorizationV1ClusterRoleBinding", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "ClusterRoleBinding", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the ClusterRoleBinding", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/v1/watch/clusterroles": { "get": { "description": "watch individual changes to a list of ClusterRole. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "watchRbacAuthorizationV1ClusterRoleList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "ClusterRole", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/v1/watch/clusterroles/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "watchRbacAuthorizationV1ClusterRole", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "ClusterRole", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the ClusterRole", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/v1/watch/namespaces/{namespace}/rolebindings": { "get": { "description": "watch individual changes to a list of RoleBinding. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "watchRbacAuthorizationV1NamespacedRoleBindingList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "RoleBinding", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/v1/watch/namespaces/{namespace}/rolebindings/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "watchRbacAuthorizationV1NamespacedRoleBinding", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "RoleBinding", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the RoleBinding", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/v1/watch/namespaces/{namespace}/roles": { "get": { "description": "watch individual changes to a list of Role. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "watchRbacAuthorizationV1NamespacedRoleList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "Role", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/v1/watch/namespaces/{namespace}/roles/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "watchRbacAuthorizationV1NamespacedRole", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "Role", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the Role", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/v1/watch/rolebindings": { "get": { "description": "watch individual changes to a list of RoleBinding. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "watchRbacAuthorizationV1RoleBindingListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "RoleBinding", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/rbac.authorization.k8s.io/v1/watch/roles": { "get": { "description": "watch individual changes to a list of Role. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["rbacAuthorization_v1"], "operationId": "watchRbacAuthorizationV1RoleListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "rbac.authorization.k8s.io", "kind": "Role", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/scheduling.k8s.io/": { "get": { "description": "get information of a group", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["scheduling"], "operationId": "getSchedulingAPIGroup", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "401": { "description": "Unauthorized" } } } }, "/apis/scheduling.k8s.io/v1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["scheduling_v1"], "operationId": "getSchedulingV1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/scheduling.k8s.io/v1/priorityclasses": { "get": { "description": "list or watch objects of kind PriorityClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["scheduling_v1"], "operationId": "listSchedulingV1PriorityClass", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.scheduling.v1.PriorityClassList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "scheduling.k8s.io", "kind": "PriorityClass", "version": "v1" } }, "post": { "description": "create a PriorityClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["scheduling_v1"], "operationId": "createSchedulingV1PriorityClass", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.scheduling.v1.PriorityClass" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.scheduling.v1.PriorityClass" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.scheduling.v1.PriorityClass" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.scheduling.v1.PriorityClass" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "scheduling.k8s.io", "kind": "PriorityClass", "version": "v1" } }, "delete": { "description": "delete collection of PriorityClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["scheduling_v1"], "operationId": "deleteSchedulingV1CollectionPriorityClass", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "scheduling.k8s.io", "kind": "PriorityClass", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/scheduling.k8s.io/v1/priorityclasses/{name}": { "get": { "description": "read the specified PriorityClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["scheduling_v1"], "operationId": "readSchedulingV1PriorityClass", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.scheduling.v1.PriorityClass" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "scheduling.k8s.io", "kind": "PriorityClass", "version": "v1" } }, "put": { "description": "replace the specified PriorityClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["scheduling_v1"], "operationId": "replaceSchedulingV1PriorityClass", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.scheduling.v1.PriorityClass" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.scheduling.v1.PriorityClass" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.scheduling.v1.PriorityClass" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "scheduling.k8s.io", "kind": "PriorityClass", "version": "v1" } }, "delete": { "description": "delete a PriorityClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["scheduling_v1"], "operationId": "deleteSchedulingV1PriorityClass", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "scheduling.k8s.io", "kind": "PriorityClass", "version": "v1" } }, "patch": { "description": "partially update the specified PriorityClass", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["scheduling_v1"], "operationId": "patchSchedulingV1PriorityClass", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.scheduling.v1.PriorityClass" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.scheduling.v1.PriorityClass" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "scheduling.k8s.io", "kind": "PriorityClass", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the PriorityClass", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/scheduling.k8s.io/v1/watch/priorityclasses": { "get": { "description": "watch individual changes to a list of PriorityClass. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["scheduling_v1"], "operationId": "watchSchedulingV1PriorityClassList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "scheduling.k8s.io", "kind": "PriorityClass", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/scheduling.k8s.io/v1/watch/priorityclasses/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["scheduling_v1"], "operationId": "watchSchedulingV1PriorityClass", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "scheduling.k8s.io", "kind": "PriorityClass", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the PriorityClass", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/storage.k8s.io/": { "get": { "description": "get information of a group", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage"], "operationId": "getStorageAPIGroup", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "401": { "description": "Unauthorized" } } } }, "/apis/storage.k8s.io/v1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "getStorageV1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/storage.k8s.io/v1/csidrivers": { "get": { "description": "list or watch objects of kind CSIDriver", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "listStorageV1CSIDriver", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIDriverList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIDriver", "version": "v1" } }, "post": { "description": "create a CSIDriver", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "createStorageV1CSIDriver", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIDriver" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIDriver" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIDriver" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIDriver" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIDriver", "version": "v1" } }, "delete": { "description": "delete collection of CSIDriver", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "deleteStorageV1CollectionCSIDriver", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIDriver", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/storage.k8s.io/v1/csidrivers/{name}": { "get": { "description": "read the specified CSIDriver", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "readStorageV1CSIDriver", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIDriver" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIDriver", "version": "v1" } }, "put": { "description": "replace the specified CSIDriver", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "replaceStorageV1CSIDriver", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIDriver" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIDriver" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIDriver" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIDriver", "version": "v1" } }, "delete": { "description": "delete a CSIDriver", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "deleteStorageV1CSIDriver", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIDriver" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIDriver" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIDriver", "version": "v1" } }, "patch": { "description": "partially update the specified CSIDriver", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "patchStorageV1CSIDriver", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIDriver" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIDriver" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIDriver", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the CSIDriver", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/storage.k8s.io/v1/csinodes": { "get": { "description": "list or watch objects of kind CSINode", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "listStorageV1CSINode", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSINodeList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSINode", "version": "v1" } }, "post": { "description": "create a CSINode", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "createStorageV1CSINode", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSINode" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSINode" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSINode" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSINode" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSINode", "version": "v1" } }, "delete": { "description": "delete collection of CSINode", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "deleteStorageV1CollectionCSINode", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSINode", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/storage.k8s.io/v1/csinodes/{name}": { "get": { "description": "read the specified CSINode", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "readStorageV1CSINode", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSINode" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSINode", "version": "v1" } }, "put": { "description": "replace the specified CSINode", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "replaceStorageV1CSINode", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSINode" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSINode" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSINode" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSINode", "version": "v1" } }, "delete": { "description": "delete a CSINode", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "deleteStorageV1CSINode", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSINode" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSINode" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSINode", "version": "v1" } }, "patch": { "description": "partially update the specified CSINode", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "patchStorageV1CSINode", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSINode" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSINode" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSINode", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the CSINode", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/storage.k8s.io/v1/csistoragecapacities": { "get": { "description": "list or watch objects of kind CSIStorageCapacity", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "listStorageV1CSIStorageCapacityForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIStorageCapacityList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities": { "get": { "description": "list or watch objects of kind CSIStorageCapacity", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "listStorageV1NamespacedCSIStorageCapacity", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIStorageCapacityList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1" } }, "post": { "description": "create a CSIStorageCapacity", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "createStorageV1NamespacedCSIStorageCapacity", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1" } }, "delete": { "description": "delete collection of CSIStorageCapacity", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "deleteStorageV1CollectionNamespacedCSIStorageCapacity", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/storage.k8s.io/v1/namespaces/{namespace}/csistoragecapacities/{name}": { "get": { "description": "read the specified CSIStorageCapacity", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "readStorageV1NamespacedCSIStorageCapacity", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1" } }, "put": { "description": "replace the specified CSIStorageCapacity", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "replaceStorageV1NamespacedCSIStorageCapacity", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1" } }, "delete": { "description": "delete a CSIStorageCapacity", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "deleteStorageV1NamespacedCSIStorageCapacity", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1" } }, "patch": { "description": "partially update the specified CSIStorageCapacity", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "patchStorageV1NamespacedCSIStorageCapacity", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the CSIStorageCapacity", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/storage.k8s.io/v1/storageclasses": { "get": { "description": "list or watch objects of kind StorageClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "listStorageV1StorageClass", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.StorageClassList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "StorageClass", "version": "v1" } }, "post": { "description": "create a StorageClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "createStorageV1StorageClass", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.StorageClass" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.StorageClass" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.StorageClass" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.StorageClass" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "StorageClass", "version": "v1" } }, "delete": { "description": "delete collection of StorageClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "deleteStorageV1CollectionStorageClass", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "StorageClass", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/storage.k8s.io/v1/storageclasses/{name}": { "get": { "description": "read the specified StorageClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "readStorageV1StorageClass", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.StorageClass" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "StorageClass", "version": "v1" } }, "put": { "description": "replace the specified StorageClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "replaceStorageV1StorageClass", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.StorageClass" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.StorageClass" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.StorageClass" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "StorageClass", "version": "v1" } }, "delete": { "description": "delete a StorageClass", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "deleteStorageV1StorageClass", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.StorageClass" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.StorageClass" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "StorageClass", "version": "v1" } }, "patch": { "description": "partially update the specified StorageClass", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "patchStorageV1StorageClass", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.StorageClass" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.StorageClass" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "StorageClass", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the StorageClass", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/storage.k8s.io/v1/volumeattachments": { "get": { "description": "list or watch objects of kind VolumeAttachment", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "listStorageV1VolumeAttachment", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachmentList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "VolumeAttachment", "version": "v1" } }, "post": { "description": "create a VolumeAttachment", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "createStorageV1VolumeAttachment", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "VolumeAttachment", "version": "v1" } }, "delete": { "description": "delete collection of VolumeAttachment", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "deleteStorageV1CollectionVolumeAttachment", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "VolumeAttachment", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/storage.k8s.io/v1/volumeattachments/{name}": { "get": { "description": "read the specified VolumeAttachment", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "readStorageV1VolumeAttachment", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "VolumeAttachment", "version": "v1" } }, "put": { "description": "replace the specified VolumeAttachment", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "replaceStorageV1VolumeAttachment", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "VolumeAttachment", "version": "v1" } }, "delete": { "description": "delete a VolumeAttachment", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "deleteStorageV1VolumeAttachment", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "VolumeAttachment", "version": "v1" } }, "patch": { "description": "partially update the specified VolumeAttachment", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "patchStorageV1VolumeAttachment", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "VolumeAttachment", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the VolumeAttachment", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/storage.k8s.io/v1/volumeattachments/{name}/status": { "get": { "description": "read status of the specified VolumeAttachment", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "readStorageV1VolumeAttachmentStatus", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "VolumeAttachment", "version": "v1" } }, "put": { "description": "replace status of the specified VolumeAttachment", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "replaceStorageV1VolumeAttachmentStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "VolumeAttachment", "version": "v1" } }, "patch": { "description": "partially update status of the specified VolumeAttachment", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "patchStorageV1VolumeAttachmentStatus", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "VolumeAttachment", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the VolumeAttachment", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/storage.k8s.io/v1/watch/csidrivers": { "get": { "description": "watch individual changes to a list of CSIDriver. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "watchStorageV1CSIDriverList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIDriver", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/storage.k8s.io/v1/watch/csidrivers/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "watchStorageV1CSIDriver", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIDriver", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the CSIDriver", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/storage.k8s.io/v1/watch/csinodes": { "get": { "description": "watch individual changes to a list of CSINode. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "watchStorageV1CSINodeList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSINode", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/storage.k8s.io/v1/watch/csinodes/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "watchStorageV1CSINode", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSINode", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the CSINode", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/storage.k8s.io/v1/watch/csistoragecapacities": { "get": { "description": "watch individual changes to a list of CSIStorageCapacity. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "watchStorageV1CSIStorageCapacityListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/storage.k8s.io/v1/watch/namespaces/{namespace}/csistoragecapacities": { "get": { "description": "watch individual changes to a list of CSIStorageCapacity. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "watchStorageV1NamespacedCSIStorageCapacityList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/storage.k8s.io/v1/watch/namespaces/{namespace}/csistoragecapacities/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "watchStorageV1NamespacedCSIStorageCapacity", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the CSIStorageCapacity", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/storage.k8s.io/v1/watch/storageclasses": { "get": { "description": "watch individual changes to a list of StorageClass. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "watchStorageV1StorageClassList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "StorageClass", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/storage.k8s.io/v1/watch/storageclasses/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "watchStorageV1StorageClass", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "StorageClass", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the StorageClass", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/storage.k8s.io/v1/watch/volumeattachments": { "get": { "description": "watch individual changes to a list of VolumeAttachment. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "watchStorageV1VolumeAttachmentList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "VolumeAttachment", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/storage.k8s.io/v1/watch/volumeattachments/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1"], "operationId": "watchStorageV1VolumeAttachment", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "VolumeAttachment", "version": "v1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the VolumeAttachment", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/storage.k8s.io/v1beta1/": { "get": { "description": "get available resources", "consumes": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1beta1"], "operationId": "getStorageV1beta1APIResources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "401": { "description": "Unauthorized" } } } }, "/apis/storage.k8s.io/v1beta1/csistoragecapacities": { "get": { "description": "list or watch objects of kind CSIStorageCapacity", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1beta1"], "operationId": "listStorageV1beta1CSIStorageCapacityForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1beta1.CSIStorageCapacityList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1beta1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/storage.k8s.io/v1beta1/namespaces/{namespace}/csistoragecapacities": { "get": { "description": "list or watch objects of kind CSIStorageCapacity", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1beta1"], "operationId": "listStorageV1beta1NamespacedCSIStorageCapacity", "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1beta1.CSIStorageCapacityList" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1beta1" } }, "post": { "description": "create a CSIStorageCapacity", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1beta1"], "operationId": "createStorageV1beta1NamespacedCSIStorageCapacity", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1beta1.CSIStorageCapacity" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1beta1.CSIStorageCapacity" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1beta1.CSIStorageCapacity" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1beta1.CSIStorageCapacity" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1beta1" } }, "delete": { "description": "delete collection of CSIStorageCapacity", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1beta1"], "operationId": "deleteStorageV1beta1CollectionNamespacedCSIStorageCapacity", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1beta1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/storage.k8s.io/v1beta1/namespaces/{namespace}/csistoragecapacities/{name}": { "get": { "description": "read the specified CSIStorageCapacity", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1beta1"], "operationId": "readStorageV1beta1NamespacedCSIStorageCapacity", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1beta1.CSIStorageCapacity" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1beta1" } }, "put": { "description": "replace the specified CSIStorageCapacity", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1beta1"], "operationId": "replaceStorageV1beta1NamespacedCSIStorageCapacity", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1beta1.CSIStorageCapacity" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1beta1.CSIStorageCapacity" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1beta1.CSIStorageCapacity" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1beta1" } }, "delete": { "description": "delete a CSIStorageCapacity", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1beta1"], "operationId": "deleteStorageV1beta1NamespacedCSIStorageCapacity", "parameters": [ { "name": "body", "in": "body", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "gracePeriodSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "orphanDependents", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "propagationPolicy", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1beta1" } }, "patch": { "description": "partially update the specified CSIStorageCapacity", "consumes": [ "application/json-patch+json", "application/merge-patch+json", "application/strategic-merge-patch+json", "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf" ], "schemes": ["https"], "tags": ["storage_v1beta1"], "operationId": "patchStorageV1beta1NamespacedCSIStorageCapacity", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, { "uniqueItems": true, "type": "string", "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "name": "dryRun", "in": "query" }, { "uniqueItems": true, "type": "string", "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).", "name": "fieldManager", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "name": "fieldValidation", "in": "query" }, { "uniqueItems": true, "type": "boolean", "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.", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1beta1.CSIStorageCapacity" } }, "201": { "description": "Created", "schema": { "$ref": "#/definitions/io.k8s.api.storage.v1beta1.CSIStorageCapacity" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1beta1" } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "name of the CSIStorageCapacity", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" } ] }, "/apis/storage.k8s.io/v1beta1/watch/csistoragecapacities": { "get": { "description": "watch individual changes to a list of CSIStorageCapacity. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1beta1"], "operationId": "watchStorageV1beta1CSIStorageCapacityListForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1beta1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/storage.k8s.io/v1beta1/watch/namespaces/{namespace}/csistoragecapacities": { "get": { "description": "watch individual changes to a list of CSIStorageCapacity. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1beta1"], "operationId": "watchStorageV1beta1NamespacedCSIStorageCapacityList", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1beta1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/apis/storage.k8s.io/v1beta1/watch/namespaces/{namespace}/csistoragecapacities/{name}": { "get": { "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.", "consumes": ["*/*"], "produces": [ "application/json", "application/yaml", "application/vnd.kubernetes.protobuf", "application/json;stream=watch", "application/vnd.kubernetes.protobuf;stream=watch" ], "schemes": ["https"], "tags": ["storage_v1beta1"], "operationId": "watchStorageV1beta1NamespacedCSIStorageCapacity", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "401": { "description": "Unauthorized" } }, "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1beta1" } }, "parameters": [ { "uniqueItems": true, "type": "boolean", "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.", "name": "allowWatchBookmarks", "in": "query" }, { "uniqueItems": true, "type": "string", "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.", "name": "continue", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "name": "fieldSelector", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "name": "labelSelector", "in": "query" }, { "uniqueItems": true, "type": "integer", "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.", "name": "limit", "in": "query" }, { "uniqueItems": true, "type": "string", "description": "name of the CSIStorageCapacity", "name": "name", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "object name and auth scope, such as for teams and projects", "name": "namespace", "in": "path", "required": true }, { "uniqueItems": true, "type": "string", "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersion", "in": "query" }, { "uniqueItems": true, "type": "string", "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", "name": "resourceVersionMatch", "in": "query" }, { "uniqueItems": true, "type": "integer", "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "name": "timeoutSeconds", "in": "query" }, { "uniqueItems": true, "type": "boolean", "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "name": "watch", "in": "query" } ] }, "/logs/": { "get": { "schemes": ["https"], "tags": ["logs"], "operationId": "logFileListHandler", "responses": { "401": { "description": "Unauthorized" } } } }, "/logs/{logpath}": { "get": { "schemes": ["https"], "tags": ["logs"], "operationId": "logFileHandler", "responses": { "401": { "description": "Unauthorized" } } }, "parameters": [ { "uniqueItems": true, "type": "string", "description": "path to the log", "name": "logpath", "in": "path", "required": true } ] }, "/openid/v1/jwks/": { "get": { "description": "get service account issuer OpenID JSON Web Key Set (contains public token verification keys)", "produces": ["application/jwk-set+json"], "schemes": ["https"], "tags": ["openid"], "operationId": "getServiceAccountIssuerOpenIDKeyset", "responses": { "200": { "description": "OK", "schema": { "type": "string" } }, "401": { "description": "Unauthorized" } } } }, "/version/": { "get": { "description": "get the code version", "consumes": ["application/json"], "produces": ["application/json"], "schemes": ["https"], "tags": ["version"], "operationId": "getCodeVersion", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.version.Info" } }, "401": { "description": "Unauthorized" } } } } }, "definitions": { "io.k8s.api.admissionregistration.v1.MutatingWebhook": { "description": "MutatingWebhook describes an admission webhook and the resources and operations it applies to.", "type": "object", "required": [ "name", "clientConfig", "sideEffects", "admissionReviewVersions" ], "properties": { "admissionReviewVersions": { "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.", "type": "array", "items": { "type": "string" } }, "clientConfig": { "description": "ClientConfig defines how to communicate with the hook. Required", "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.WebhookClientConfig" }, "failurePolicy": { "description": "FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Fail.", "type": "string" }, "matchPolicy": { "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\"", "type": "string" }, "name": { "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.", "type": "string" }, "namespaceSelector": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "objectSelector": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "reinvocationPolicy": { "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\".", "type": "string" }, "rules": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.RuleWithOperations" } }, "sideEffects": { "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.", "type": "string" }, "timeoutSeconds": { "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.", "type": "integer", "format": "int32" } } }, "io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration": { "description": "MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and may change the object.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "webhooks": { "description": "Webhooks is a list of webhooks and the affected resources and operations.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhook" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" } }, "x-kubernetes-group-version-kind": [ { "group": "admissionregistration.k8s.io", "kind": "MutatingWebhookConfiguration", "version": "v1" } ] }, "io.k8s.api.admissionregistration.v1.MutatingWebhookConfigurationList": { "description": "MutatingWebhookConfigurationList is a list of MutatingWebhookConfiguration.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "List of MutatingWebhookConfiguration.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "admissionregistration.k8s.io", "kind": "MutatingWebhookConfigurationList", "version": "v1" } ] }, "io.k8s.api.admissionregistration.v1.RuleWithOperations": { "description": "RuleWithOperations is a tuple of Operations and Resources. It is recommended to make sure that all the tuple expansions are valid.", "type": "object", "properties": { "apiGroups": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "atomic" }, "apiVersions": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "atomic" }, "operations": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "atomic" }, "resources": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "atomic" }, "scope": { "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 \"*\".", "type": "string" } } }, "io.k8s.api.admissionregistration.v1.ServiceReference": { "description": "ServiceReference holds a reference to Service.legacy.k8s.io", "type": "object", "required": ["namespace", "name"], "properties": { "name": { "description": "`name` is the name of the service. Required", "type": "string" }, "namespace": { "description": "`namespace` is the namespace of the service. Required", "type": "string" }, "path": { "description": "`path` is an optional URL path which will be sent in any request to this service.", "type": "string" }, "port": { "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).", "type": "integer", "format": "int32" } } }, "io.k8s.api.admissionregistration.v1.ValidatingWebhook": { "description": "ValidatingWebhook describes an admission webhook and the resources and operations it applies to.", "type": "object", "required": [ "name", "clientConfig", "sideEffects", "admissionReviewVersions" ], "properties": { "admissionReviewVersions": { "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.", "type": "array", "items": { "type": "string" } }, "clientConfig": { "description": "ClientConfig defines how to communicate with the hook. Required", "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.WebhookClientConfig" }, "failurePolicy": { "description": "FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Fail.", "type": "string" }, "matchPolicy": { "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\"", "type": "string" }, "name": { "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.", "type": "string" }, "namespaceSelector": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "objectSelector": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "rules": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.RuleWithOperations" } }, "sideEffects": { "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.", "type": "string" }, "timeoutSeconds": { "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.", "type": "integer", "format": "int32" } } }, "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration": { "description": "ValidatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and object without changing it.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "webhooks": { "description": "Webhooks is a list of webhooks and the affected resources and operations.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhook" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" } }, "x-kubernetes-group-version-kind": [ { "group": "admissionregistration.k8s.io", "kind": "ValidatingWebhookConfiguration", "version": "v1" } ] }, "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfigurationList": { "description": "ValidatingWebhookConfigurationList is a list of ValidatingWebhookConfiguration.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "List of ValidatingWebhookConfiguration.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "admissionregistration.k8s.io", "kind": "ValidatingWebhookConfigurationList", "version": "v1" } ] }, "io.k8s.api.admissionregistration.v1.WebhookClientConfig": { "description": "WebhookClientConfig contains the information to make a TLS connection with the webhook", "type": "object", "properties": { "caBundle": { "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.", "type": "string", "format": "byte" }, "service": { "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`.", "$ref": "#/definitions/io.k8s.api.admissionregistration.v1.ServiceReference" }, "url": { "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.", "type": "string" } } }, "io.k8s.api.apps.v1.ControllerRevision": { "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.", "type": "object", "required": ["revision"], "properties": { "apiVersion": { "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", "type": "string" }, "data": { "description": "Data is the serialized representation of the state.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.runtime.RawExtension" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "revision": { "description": "Revision indicates the revision of the state represented by Data.", "type": "integer", "format": "int64" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "ControllerRevision", "version": "v1" } ] }, "io.k8s.api.apps.v1.ControllerRevisionList": { "description": "ControllerRevisionList is a resource containing a list of ControllerRevision objects.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is the list of ControllerRevisions", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.apps.v1.ControllerRevision" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "ControllerRevisionList", "version": "v1" } ] }, "io.k8s.api.apps.v1.DaemonSet": { "description": "DaemonSet represents the configuration of a daemon set.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSetSpec" }, "status": { "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", "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSetStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "DaemonSet", "version": "v1" } ] }, "io.k8s.api.apps.v1.DaemonSetCondition": { "description": "DaemonSetCondition describes the state of a DaemonSet at a certain point.", "type": "object", "required": ["type", "status"], "properties": { "lastTransitionTime": { "description": "Last time the condition transitioned from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "A human readable message indicating details about the transition.", "type": "string" }, "reason": { "description": "The reason for the condition's last transition.", "type": "string" }, "status": { "description": "Status of the condition, one of True, False, Unknown.", "type": "string" }, "type": { "description": "Type of DaemonSet condition.", "type": "string" } } }, "io.k8s.api.apps.v1.DaemonSetList": { "description": "DaemonSetList is a collection of daemon sets.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "A list of daemon sets.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSet" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "DaemonSetList", "version": "v1" } ] }, "io.k8s.api.apps.v1.DaemonSetSpec": { "description": "DaemonSetSpec is the specification of a daemon set.", "type": "object", "required": ["selector", "template"], "properties": { "minReadySeconds": { "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).", "type": "integer", "format": "int32" }, "revisionHistoryLimit": { "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.", "type": "integer", "format": "int32" }, "selector": { "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", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "template": { "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). More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template", "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplateSpec" }, "updateStrategy": { "description": "An update strategy to replace existing DaemonSet pods with new pods.", "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSetUpdateStrategy" } } }, "io.k8s.api.apps.v1.DaemonSetStatus": { "description": "DaemonSetStatus represents the current status of a daemon set.", "type": "object", "required": [ "currentNumberScheduled", "numberMisscheduled", "desiredNumberScheduled", "numberReady" ], "properties": { "collisionCount": { "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.", "type": "integer", "format": "int32" }, "conditions": { "description": "Represents the latest available observations of a DaemonSet's current state.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.apps.v1.DaemonSetCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "currentNumberScheduled": { "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/", "type": "integer", "format": "int32" }, "desiredNumberScheduled": { "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/", "type": "integer", "format": "int32" }, "numberAvailable": { "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)", "type": "integer", "format": "int32" }, "numberMisscheduled": { "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/", "type": "integer", "format": "int32" }, "numberReady": { "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.", "type": "integer", "format": "int32" }, "numberUnavailable": { "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)", "type": "integer", "format": "int32" }, "observedGeneration": { "description": "The most recent generation observed by the daemon set controller.", "type": "integer", "format": "int64" }, "updatedNumberScheduled": { "description": "The total number of nodes that are running updated daemon pod", "type": "integer", "format": "int32" } } }, "io.k8s.api.apps.v1.DaemonSetUpdateStrategy": { "description": "DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.", "type": "object", "properties": { "rollingUpdate": { "description": "Rolling update config params. Present only if type = \"RollingUpdate\".", "$ref": "#/definitions/io.k8s.api.apps.v1.RollingUpdateDaemonSet" }, "type": { "description": "Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is RollingUpdate.\n\nPossible enum values:\n - `\"OnDelete\"` Replace the old daemons only when it's killed\n - `\"RollingUpdate\"` Replace the old daemons by new ones using rolling update i.e replace them on each node one after the other.", "type": "string", "enum": ["OnDelete", "RollingUpdate"] } } }, "io.k8s.api.apps.v1.Deployment": { "description": "Deployment enables declarative updates for Pods and ReplicaSets.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Specification of the desired behavior of the Deployment.", "$ref": "#/definitions/io.k8s.api.apps.v1.DeploymentSpec" }, "status": { "description": "Most recently observed status of the Deployment.", "$ref": "#/definitions/io.k8s.api.apps.v1.DeploymentStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "Deployment", "version": "v1" } ] }, "io.k8s.api.apps.v1.DeploymentCondition": { "description": "DeploymentCondition describes the state of a deployment at a certain point.", "type": "object", "required": ["type", "status"], "properties": { "lastTransitionTime": { "description": "Last time the condition transitioned from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "lastUpdateTime": { "description": "The last time this condition was updated.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "A human readable message indicating details about the transition.", "type": "string" }, "reason": { "description": "The reason for the condition's last transition.", "type": "string" }, "status": { "description": "Status of the condition, one of True, False, Unknown.", "type": "string" }, "type": { "description": "Type of deployment condition.", "type": "string" } } }, "io.k8s.api.apps.v1.DeploymentList": { "description": "DeploymentList is a list of Deployments.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is the list of Deployments.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.apps.v1.Deployment" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "DeploymentList", "version": "v1" } ] }, "io.k8s.api.apps.v1.DeploymentSpec": { "description": "DeploymentSpec is the specification of the desired behavior of the Deployment.", "type": "object", "required": ["selector", "template"], "properties": { "minReadySeconds": { "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)", "type": "integer", "format": "int32" }, "paused": { "description": "Indicates that the deployment is paused.", "type": "boolean" }, "progressDeadlineSeconds": { "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.", "type": "integer", "format": "int32" }, "replicas": { "description": "Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.", "type": "integer", "format": "int32" }, "revisionHistoryLimit": { "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.", "type": "integer", "format": "int32" }, "selector": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "strategy": { "description": "The deployment strategy to use to replace existing pods with new ones.", "x-kubernetes-patch-strategy": "retainKeys", "$ref": "#/definitions/io.k8s.api.apps.v1.DeploymentStrategy" }, "template": { "description": "Template describes the pods that will be created.", "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplateSpec" } } }, "io.k8s.api.apps.v1.DeploymentStatus": { "description": "DeploymentStatus is the most recently observed status of the Deployment.", "type": "object", "properties": { "availableReplicas": { "description": "Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.", "type": "integer", "format": "int32" }, "collisionCount": { "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.", "type": "integer", "format": "int32" }, "conditions": { "description": "Represents the latest available observations of a deployment's current state.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.apps.v1.DeploymentCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "observedGeneration": { "description": "The generation observed by the deployment controller.", "type": "integer", "format": "int64" }, "readyReplicas": { "description": "readyReplicas is the number of pods targeted by this Deployment with a Ready Condition.", "type": "integer", "format": "int32" }, "replicas": { "description": "Total number of non-terminated pods targeted by this deployment (their labels match the selector).", "type": "integer", "format": "int32" }, "unavailableReplicas": { "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.", "type": "integer", "format": "int32" }, "updatedReplicas": { "description": "Total number of non-terminated pods targeted by this deployment that have the desired template spec.", "type": "integer", "format": "int32" } } }, "io.k8s.api.apps.v1.DeploymentStrategy": { "description": "DeploymentStrategy describes how to replace existing pods with new ones.", "type": "object", "properties": { "rollingUpdate": { "description": "Rolling update config params. Present only if DeploymentStrategyType = RollingUpdate.", "$ref": "#/definitions/io.k8s.api.apps.v1.RollingUpdateDeployment" }, "type": { "description": "Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default is RollingUpdate.\n\nPossible enum values:\n - `\"Recreate\"` Kill all existing pods before creating new ones.\n - `\"RollingUpdate\"` Replace the old ReplicaSets by new one using rolling update i.e gradually scale down the old ReplicaSets and scale up the new one.", "type": "string", "enum": ["Recreate", "RollingUpdate"] } } }, "io.k8s.api.apps.v1.ReplicaSet": { "description": "ReplicaSet ensures that a specified number of pod replicas are running at any given time.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "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", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSetSpec" }, "status": { "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", "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSetStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "ReplicaSet", "version": "v1" } ] }, "io.k8s.api.apps.v1.ReplicaSetCondition": { "description": "ReplicaSetCondition describes the state of a replica set at a certain point.", "type": "object", "required": ["type", "status"], "properties": { "lastTransitionTime": { "description": "The last time the condition transitioned from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "A human readable message indicating details about the transition.", "type": "string" }, "reason": { "description": "The reason for the condition's last transition.", "type": "string" }, "status": { "description": "Status of the condition, one of True, False, Unknown.", "type": "string" }, "type": { "description": "Type of replica set condition.", "type": "string" } } }, "io.k8s.api.apps.v1.ReplicaSetList": { "description": "ReplicaSetList is a collection of ReplicaSets.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "List of ReplicaSets. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSet" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "ReplicaSetList", "version": "v1" } ] }, "io.k8s.api.apps.v1.ReplicaSetSpec": { "description": "ReplicaSetSpec is the specification of a ReplicaSet.", "type": "object", "required": ["selector"], "properties": { "minReadySeconds": { "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)", "type": "integer", "format": "int32" }, "replicas": { "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", "type": "integer", "format": "int32" }, "selector": { "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", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "template": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplateSpec" } } }, "io.k8s.api.apps.v1.ReplicaSetStatus": { "description": "ReplicaSetStatus represents the current status of a ReplicaSet.", "type": "object", "required": ["replicas"], "properties": { "availableReplicas": { "description": "The number of available replicas (ready for at least minReadySeconds) for this replica set.", "type": "integer", "format": "int32" }, "conditions": { "description": "Represents the latest available observations of a replica set's current state.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.apps.v1.ReplicaSetCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "fullyLabeledReplicas": { "description": "The number of pods that have labels matching the labels of the pod template of the replicaset.", "type": "integer", "format": "int32" }, "observedGeneration": { "description": "ObservedGeneration reflects the generation of the most recently observed ReplicaSet.", "type": "integer", "format": "int64" }, "readyReplicas": { "description": "readyReplicas is the number of pods targeted by this ReplicaSet with a Ready Condition.", "type": "integer", "format": "int32" }, "replicas": { "description": "Replicas is the most recently observed number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller", "type": "integer", "format": "int32" } } }, "io.k8s.api.apps.v1.RollingUpdateDaemonSet": { "description": "Spec to control the desired behavior of daemon set rolling update.", "type": "object", "properties": { "maxSurge": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" }, "maxUnavailable": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" } } }, "io.k8s.api.apps.v1.RollingUpdateDeployment": { "description": "Spec to control the desired behavior of rolling update.", "type": "object", "properties": { "maxSurge": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" }, "maxUnavailable": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" } } }, "io.k8s.api.apps.v1.RollingUpdateStatefulSetStrategy": { "description": "RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.", "type": "object", "properties": { "maxUnavailable": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" }, "partition": { "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.", "type": "integer", "format": "int32" } } }, "io.k8s.api.apps.v1.StatefulSet": { "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.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec defines the desired identities of pods in this set.", "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSetSpec" }, "status": { "description": "Status is the current status of Pods in this StatefulSet. This data may be out of date by some window of time.", "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSetStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "StatefulSet", "version": "v1" } ] }, "io.k8s.api.apps.v1.StatefulSetCondition": { "description": "StatefulSetCondition describes the state of a statefulset at a certain point.", "type": "object", "required": ["type", "status"], "properties": { "lastTransitionTime": { "description": "Last time the condition transitioned from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "A human readable message indicating details about the transition.", "type": "string" }, "reason": { "description": "The reason for the condition's last transition.", "type": "string" }, "status": { "description": "Status of the condition, one of True, False, Unknown.", "type": "string" }, "type": { "description": "Type of statefulset condition.", "type": "string" } } }, "io.k8s.api.apps.v1.StatefulSetList": { "description": "StatefulSetList is a collection of StatefulSets.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is the list of stateful sets.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSet" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "StatefulSetList", "version": "v1" } ] }, "io.k8s.api.apps.v1.StatefulSetOrdinals": { "description": "StatefulSetOrdinals describes the policy used for replica ordinal assignment in this StatefulSet.", "type": "object", "properties": { "start": { "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).", "type": "integer", "format": "int32" } } }, "io.k8s.api.apps.v1.StatefulSetPersistentVolumeClaimRetentionPolicy": { "description": "StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates.", "type": "object", "properties": { "whenDeleted": { "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.", "type": "string" }, "whenScaled": { "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.", "type": "string" } } }, "io.k8s.api.apps.v1.StatefulSetSpec": { "description": "A StatefulSetSpec is the specification of a StatefulSet.", "type": "object", "required": ["selector", "template", "serviceName"], "properties": { "minReadySeconds": { "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)", "type": "integer", "format": "int32" }, "ordinals": { "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. Using the ordinals field requires the StatefulSetStartOrdinal feature gate to be enabled, which is alpha.", "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSetOrdinals" }, "persistentVolumeClaimRetentionPolicy": { "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 alpha. +optional", "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSetPersistentVolumeClaimRetentionPolicy" }, "podManagementPolicy": { "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\nPossible enum values:\n - `\"OrderedReady\"` will create pods in strictly increasing order on scale up and strictly decreasing order on scale down, progressing only when the previous pod is ready or terminated. At most one pod will be changed at any time.\n - `\"Parallel\"` will create and delete pods as soon as the stateful set replica count is changed, and will not wait for pods to be ready or complete termination.", "type": "string", "enum": ["OrderedReady", "Parallel"] }, "replicas": { "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.", "type": "integer", "format": "int32" }, "revisionHistoryLimit": { "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.", "type": "integer", "format": "int32" }, "selector": { "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", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "serviceName": { "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.", "type": "string" }, "template": { "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 \u003cstatefulsetname\u003e-\u003cpodindex\u003e. For example, a pod in a StatefulSet named \"web\" with index number \"3\" would be named \"web-3\".", "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplateSpec" }, "updateStrategy": { "description": "updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template.", "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSetUpdateStrategy" }, "volumeClaimTemplates": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } } } }, "io.k8s.api.apps.v1.StatefulSetStatus": { "description": "StatefulSetStatus represents the current state of a StatefulSet.", "type": "object", "required": ["replicas"], "properties": { "availableReplicas": { "description": "Total number of available pods (ready for at least minReadySeconds) targeted by this statefulset.", "type": "integer", "format": "int32" }, "collisionCount": { "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.", "type": "integer", "format": "int32" }, "conditions": { "description": "Represents the latest available observations of a statefulset's current state.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.apps.v1.StatefulSetCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "currentReplicas": { "description": "currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision.", "type": "integer", "format": "int32" }, "currentRevision": { "description": "currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).", "type": "string" }, "observedGeneration": { "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.", "type": "integer", "format": "int64" }, "readyReplicas": { "description": "readyReplicas is the number of pods created for this StatefulSet with a Ready Condition.", "type": "integer", "format": "int32" }, "replicas": { "description": "replicas is the number of Pods created by the StatefulSet controller.", "type": "integer", "format": "int32" }, "updateRevision": { "description": "updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)", "type": "string" }, "updatedReplicas": { "description": "updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision.", "type": "integer", "format": "int32" } } }, "io.k8s.api.apps.v1.StatefulSetUpdateStrategy": { "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.", "type": "object", "properties": { "rollingUpdate": { "description": "RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType.", "$ref": "#/definitions/io.k8s.api.apps.v1.RollingUpdateStatefulSetStrategy" }, "type": { "description": "Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.\n\nPossible enum values:\n - `\"OnDelete\"` triggers the legacy behavior. Version tracking and ordered rolling restarts are disabled. Pods are recreated from the StatefulSetSpec when they are manually deleted. When a scale operation is performed with this strategy,specification version indicated by the StatefulSet's currentRevision.\n - `\"RollingUpdate\"` indicates that update will be applied to all Pods in the StatefulSet with respect to the StatefulSet ordering constraints. When a scale operation is performed with this strategy, new Pods will be created from the specification version indicated by the StatefulSet's updateRevision.", "type": "string", "enum": ["OnDelete", "RollingUpdate"] } } }, "io.k8s.api.authentication.v1.BoundObjectReference": { "description": "BoundObjectReference is a reference to an object that a token is bound to.", "type": "object", "properties": { "apiVersion": { "description": "API version of the referent.", "type": "string" }, "kind": { "description": "Kind of the referent. Valid kinds are 'Pod' and 'Secret'.", "type": "string" }, "name": { "description": "Name of the referent.", "type": "string" }, "uid": { "description": "UID of the referent.", "type": "string" } } }, "io.k8s.api.authentication.v1.TokenRequest": { "description": "TokenRequest requests a token for a given service account.", "type": "object", "required": ["spec"], "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec holds information about the request being evaluated", "$ref": "#/definitions/io.k8s.api.authentication.v1.TokenRequestSpec" }, "status": { "description": "Status is filled in by the server and indicates whether the token can be authenticated.", "$ref": "#/definitions/io.k8s.api.authentication.v1.TokenRequestStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "authentication.k8s.io", "kind": "TokenRequest", "version": "v1" } ] }, "io.k8s.api.authentication.v1.TokenRequestSpec": { "description": "TokenRequestSpec contains client provided parameters of a token request.", "type": "object", "required": ["audiences"], "properties": { "audiences": { "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.", "type": "array", "items": { "type": "string" } }, "boundObjectRef": { "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.", "$ref": "#/definitions/io.k8s.api.authentication.v1.BoundObjectReference" }, "expirationSeconds": { "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.", "type": "integer", "format": "int64" } } }, "io.k8s.api.authentication.v1.TokenRequestStatus": { "description": "TokenRequestStatus is the result of a token request.", "type": "object", "required": ["token", "expirationTimestamp"], "properties": { "expirationTimestamp": { "description": "ExpirationTimestamp is the time of expiration of the returned token.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "token": { "description": "Token is the opaque bearer token.", "type": "string" } } }, "io.k8s.api.authentication.v1.TokenReview": { "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.", "type": "object", "required": ["spec"], "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec holds information about the request being evaluated", "$ref": "#/definitions/io.k8s.api.authentication.v1.TokenReviewSpec" }, "status": { "description": "Status is filled in by the server and indicates whether the request can be authenticated.", "$ref": "#/definitions/io.k8s.api.authentication.v1.TokenReviewStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "authentication.k8s.io", "kind": "TokenReview", "version": "v1" } ] }, "io.k8s.api.authentication.v1.TokenReviewSpec": { "description": "TokenReviewSpec is a description of the token authentication request.", "type": "object", "properties": { "audiences": { "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.", "type": "array", "items": { "type": "string" } }, "token": { "description": "Token is the opaque bearer token.", "type": "string" } } }, "io.k8s.api.authentication.v1.TokenReviewStatus": { "description": "TokenReviewStatus is the result of the token authentication request.", "type": "object", "properties": { "audiences": { "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.", "type": "array", "items": { "type": "string" } }, "authenticated": { "description": "Authenticated indicates that the token was associated with a known user.", "type": "boolean" }, "error": { "description": "Error indicates that the token couldn't be checked", "type": "string" }, "user": { "description": "User is the UserInfo associated with the provided token.", "$ref": "#/definitions/io.k8s.api.authentication.v1.UserInfo" } } }, "io.k8s.api.authentication.v1.UserInfo": { "description": "UserInfo holds the information about the user needed to implement the user.Info interface.", "type": "object", "properties": { "extra": { "description": "Any additional information provided by the authenticator.", "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "groups": { "description": "The names of groups this user is a part of.", "type": "array", "items": { "type": "string" } }, "uid": { "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.", "type": "string" }, "username": { "description": "The name that uniquely identifies this user among all active users.", "type": "string" } } }, "io.k8s.api.authorization.v1.LocalSubjectAccessReview": { "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.", "type": "object", "required": ["spec"], "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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.", "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewSpec" }, "status": { "description": "Status is filled in by the server and indicates whether the request is allowed or not", "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "LocalSubjectAccessReview", "version": "v1" } ] }, "io.k8s.api.authorization.v1.NonResourceAttributes": { "description": "NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface", "type": "object", "properties": { "path": { "description": "Path is the URL path of the request", "type": "string" }, "verb": { "description": "Verb is the standard HTTP verb", "type": "string" } } }, "io.k8s.api.authorization.v1.NonResourceRule": { "description": "NonResourceRule holds information that describes a rule for the non-resource", "type": "object", "required": ["verbs"], "properties": { "nonResourceURLs": { "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.", "type": "array", "items": { "type": "string" } }, "verbs": { "description": "Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options. \"*\" means all.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.authorization.v1.ResourceAttributes": { "description": "ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface", "type": "object", "properties": { "group": { "description": "Group is the API Group of the Resource. \"*\" means all.", "type": "string" }, "name": { "description": "Name is the name of the resource being requested for a \"get\" or deleted for a \"delete\". \"\" (empty) means all.", "type": "string" }, "namespace": { "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", "type": "string" }, "resource": { "description": "Resource is one of the existing resource types. \"*\" means all.", "type": "string" }, "subresource": { "description": "Subresource is one of the existing resource types. \"\" means none.", "type": "string" }, "verb": { "description": "Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. \"*\" means all.", "type": "string" }, "version": { "description": "Version is the API Version of the Resource. \"*\" means all.", "type": "string" } } }, "io.k8s.api.authorization.v1.ResourceRule": { "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.", "type": "object", "required": ["verbs"], "properties": { "apiGroups": { "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.", "type": "array", "items": { "type": "string" } }, "resourceNames": { "description": "ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. \"*\" means all.", "type": "array", "items": { "type": "string" } }, "resources": { "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.", "type": "array", "items": { "type": "string" } }, "verbs": { "description": "Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy. \"*\" means all.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.authorization.v1.SelfSubjectAccessReview": { "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", "type": "object", "required": ["spec"], "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec holds information about the request being evaluated. user and groups must be empty", "$ref": "#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec" }, "status": { "description": "Status is filled in by the server and indicates whether the request is allowed or not", "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "SelfSubjectAccessReview", "version": "v1" } ] }, "io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec": { "description": "SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set", "type": "object", "properties": { "nonResourceAttributes": { "description": "NonResourceAttributes describes information for a non-resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1.NonResourceAttributes" }, "resourceAttributes": { "description": "ResourceAuthorizationAttributes describes information for a resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1.ResourceAttributes" } } }, "io.k8s.api.authorization.v1.SelfSubjectRulesReview": { "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.", "type": "object", "required": ["spec"], "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec holds information about the request being evaluated.", "$ref": "#/definitions/io.k8s.api.authorization.v1.SelfSubjectRulesReviewSpec" }, "status": { "description": "Status is filled in by the server and indicates the set of actions a user can perform.", "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectRulesReviewStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "SelfSubjectRulesReview", "version": "v1" } ] }, "io.k8s.api.authorization.v1.SelfSubjectRulesReviewSpec": { "description": "SelfSubjectRulesReviewSpec defines the specification for SelfSubjectRulesReview.", "type": "object", "properties": { "namespace": { "description": "Namespace to evaluate rules for. Required.", "type": "string" } } }, "io.k8s.api.authorization.v1.SubjectAccessReview": { "description": "SubjectAccessReview checks whether or not a user or group can perform an action.", "type": "object", "required": ["spec"], "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec holds information about the request being evaluated", "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewSpec" }, "status": { "description": "Status is filled in by the server and indicates whether the request is allowed or not", "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "SubjectAccessReview", "version": "v1" } ] }, "io.k8s.api.authorization.v1.SubjectAccessReviewSpec": { "description": "SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set", "type": "object", "properties": { "extra": { "description": "Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.", "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "groups": { "description": "Groups is the groups you're testing for.", "type": "array", "items": { "type": "string" } }, "nonResourceAttributes": { "description": "NonResourceAttributes describes information for a non-resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1.NonResourceAttributes" }, "resourceAttributes": { "description": "ResourceAuthorizationAttributes describes information for a resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1.ResourceAttributes" }, "uid": { "description": "UID information about the requesting user.", "type": "string" }, "user": { "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", "type": "string" } } }, "io.k8s.api.authorization.v1.SubjectAccessReviewStatus": { "description": "SubjectAccessReviewStatus", "type": "object", "required": ["allowed"], "properties": { "allowed": { "description": "Allowed is required. True if the action would be allowed, false otherwise.", "type": "boolean" }, "denied": { "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.", "type": "boolean" }, "evaluationError": { "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.", "type": "string" }, "reason": { "description": "Reason is optional. It indicates why a request was allowed or denied.", "type": "string" } } }, "io.k8s.api.authorization.v1.SubjectRulesReviewStatus": { "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.", "type": "object", "required": ["resourceRules", "nonResourceRules", "incomplete"], "properties": { "evaluationError": { "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.", "type": "string" }, "incomplete": { "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.", "type": "boolean" }, "nonResourceRules": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.authorization.v1.NonResourceRule" } }, "resourceRules": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.authorization.v1.ResourceRule" } } } }, "io.k8s.api.autoscaling.v1.CrossVersionObjectReference": { "description": "CrossVersionObjectReference contains enough information to let you identify the referred resource.", "type": "object", "required": ["kind", "name"], "properties": { "apiVersion": { "description": "API version of the referent", "type": "string" }, "kind": { "description": "Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "name": { "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string" } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler": { "description": "configuration of a horizontal pod autoscaler.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "behaviour of autoscaler. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.", "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerSpec" }, "status": { "description": "current information about the autoscaler.", "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v1" } ] }, "io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList": { "description": "list of horizontal pod autoscaler objects.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "list of horizontal pod autoscaler objects.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "autoscaling", "kind": "HorizontalPodAutoscalerList", "version": "v1" } ] }, "io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerSpec": { "description": "specification of a horizontal pod autoscaler.", "type": "object", "required": ["scaleTargetRef", "maxReplicas"], "properties": { "maxReplicas": { "description": "upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas.", "type": "integer", "format": "int32" }, "minReplicas": { "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.", "type": "integer", "format": "int32" }, "scaleTargetRef": { "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.", "$ref": "#/definitions/io.k8s.api.autoscaling.v1.CrossVersionObjectReference" }, "targetCPUUtilizationPercentage": { "description": "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.", "type": "integer", "format": "int32" } } }, "io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerStatus": { "description": "current status of a horizontal pod autoscaler", "type": "object", "required": ["currentReplicas", "desiredReplicas"], "properties": { "currentCPUUtilizationPercentage": { "description": "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.", "type": "integer", "format": "int32" }, "currentReplicas": { "description": "current number of replicas of pods managed by this autoscaler.", "type": "integer", "format": "int32" }, "desiredReplicas": { "description": "desired number of replicas of pods managed by this autoscaler.", "type": "integer", "format": "int32" }, "lastScaleTime": { "description": "last time the HorizontalPodAutoscaler scaled the number of pods; used by the autoscaler to control how often the number of pods is changed.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "observedGeneration": { "description": "most recent generation observed by this autoscaler.", "type": "integer", "format": "int64" } } }, "io.k8s.api.autoscaling.v1.Scale": { "description": "Scale represents a scaling request for a resource.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.", "$ref": "#/definitions/io.k8s.api.autoscaling.v1.ScaleSpec" }, "status": { "description": "current status of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. Read-only.", "$ref": "#/definitions/io.k8s.api.autoscaling.v1.ScaleStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "autoscaling", "kind": "Scale", "version": "v1" } ] }, "io.k8s.api.autoscaling.v1.ScaleSpec": { "description": "ScaleSpec describes the attributes of a scale subresource.", "type": "object", "properties": { "replicas": { "description": "desired number of instances for the scaled object.", "type": "integer", "format": "int32" } } }, "io.k8s.api.autoscaling.v1.ScaleStatus": { "description": "ScaleStatus represents the current status of a scale subresource.", "type": "object", "required": ["replicas"], "properties": { "replicas": { "description": "actual number of observed instances of the scaled object.", "type": "integer", "format": "int32" }, "selector": { "description": "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: http://kubernetes.io/docs/user-guide/labels#label-selectors", "type": "string" } } }, "io.k8s.api.autoscaling.v2.ContainerResourceMetricSource": { "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.", "type": "object", "required": ["name", "target", "container"], "properties": { "container": { "description": "container is the name of the container in the pods of the scaling target", "type": "string" }, "name": { "description": "name is the name of the resource in question.", "type": "string" }, "target": { "description": "target specifies the target value for the given metric", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.MetricTarget" } } }, "io.k8s.api.autoscaling.v2.ContainerResourceMetricStatus": { "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.", "type": "object", "required": ["name", "current", "container"], "properties": { "container": { "description": "Container is the name of the container in the pods of the scaling target", "type": "string" }, "current": { "description": "current contains the current value for the given metric", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.MetricValueStatus" }, "name": { "description": "Name is the name of the resource in question.", "type": "string" } } }, "io.k8s.api.autoscaling.v2.CrossVersionObjectReference": { "description": "CrossVersionObjectReference contains enough information to let you identify the referred resource.", "type": "object", "required": ["kind", "name"], "properties": { "apiVersion": { "description": "API version of the referent", "type": "string" }, "kind": { "description": "Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "name": { "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string" } } }, "io.k8s.api.autoscaling.v2.ExternalMetricSource": { "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).", "type": "object", "required": ["metric", "target"], "properties": { "metric": { "description": "metric identifies the target metric by name and selector", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.MetricIdentifier" }, "target": { "description": "target specifies the target value for the given metric", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.MetricTarget" } } }, "io.k8s.api.autoscaling.v2.ExternalMetricStatus": { "description": "ExternalMetricStatus indicates the current value of a global metric not associated with any Kubernetes object.", "type": "object", "required": ["metric", "current"], "properties": { "current": { "description": "current contains the current value for the given metric", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.MetricValueStatus" }, "metric": { "description": "metric identifies the target metric by name and selector", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.MetricIdentifier" } } }, "io.k8s.api.autoscaling.v2.HPAScalingPolicy": { "description": "HPAScalingPolicy is a single policy which must hold true for a specified past interval.", "type": "object", "required": ["type", "value", "periodSeconds"], "properties": { "periodSeconds": { "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).", "type": "integer", "format": "int32" }, "type": { "description": "Type is used to specify the scaling policy.", "type": "string" }, "value": { "description": "Value contains the amount of change which is permitted by the policy. It must be greater than zero", "type": "integer", "format": "int32" } } }, "io.k8s.api.autoscaling.v2.HPAScalingRules": { "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.", "type": "object", "properties": { "policies": { "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", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HPAScalingPolicy" }, "x-kubernetes-list-type": "atomic" }, "selectPolicy": { "description": "selectPolicy is used to specify which policy should be used. If not set, the default value Max is used.", "type": "string" }, "stabilizationWindowSeconds": { "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).", "type": "integer", "format": "int32" } } }, "io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler": { "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.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "metadata is the standard object metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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.", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerSpec" }, "status": { "description": "status is the current information about the autoscaler.", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "autoscaling", "kind": "HorizontalPodAutoscaler", "version": "v2" } ] }, "io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerBehavior": { "description": "HorizontalPodAutoscalerBehavior configures the scaling behavior of the target in both Up and Down directions (scaleUp and scaleDown fields respectively).", "type": "object", "properties": { "scaleDown": { "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).", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HPAScalingRules" }, "scaleUp": { "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.", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HPAScalingRules" } } }, "io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerCondition": { "description": "HorizontalPodAutoscalerCondition describes the state of a HorizontalPodAutoscaler at a certain point.", "type": "object", "required": ["type", "status"], "properties": { "lastTransitionTime": { "description": "lastTransitionTime is the last time the condition transitioned from one status to another", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "message is a human-readable explanation containing details about the transition", "type": "string" }, "reason": { "description": "reason is the reason for the condition's last transition.", "type": "string" }, "status": { "description": "status is the status of the condition (True, False, Unknown)", "type": "string" }, "type": { "description": "type describes the current condition", "type": "string" } } }, "io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerList": { "description": "HorizontalPodAutoscalerList is a list of horizontal pod autoscaler objects.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "items is the list of horizontal pod autoscaler objects.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "metadata is the standard list metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "autoscaling", "kind": "HorizontalPodAutoscalerList", "version": "v2" } ] }, "io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerSpec": { "description": "HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler.", "type": "object", "required": ["scaleTargetRef", "maxReplicas"], "properties": { "behavior": { "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.", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerBehavior" }, "maxReplicas": { "description": "maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. It cannot be less that minReplicas.", "type": "integer", "format": "int32" }, "metrics": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.MetricSpec" }, "x-kubernetes-list-type": "atomic" }, "minReplicas": { "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.", "type": "integer", "format": "int32" }, "scaleTargetRef": { "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.", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.CrossVersionObjectReference" } } }, "io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerStatus": { "description": "HorizontalPodAutoscalerStatus describes the current status of a horizontal pod autoscaler.", "type": "object", "required": ["desiredReplicas"], "properties": { "conditions": { "description": "conditions is the set of conditions required for this autoscaler to scale its target, and indicates whether or not those conditions are met.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerCondition" }, "x-kubernetes-list-map-keys": ["type"], "x-kubernetes-list-type": "map", "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "currentMetrics": { "description": "currentMetrics is the last read state of the metrics used by this autoscaler.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.autoscaling.v2.MetricStatus" }, "x-kubernetes-list-type": "atomic" }, "currentReplicas": { "description": "currentReplicas is current number of replicas of pods managed by this autoscaler, as last seen by the autoscaler.", "type": "integer", "format": "int32" }, "desiredReplicas": { "description": "desiredReplicas is the desired number of replicas of pods managed by this autoscaler, as last calculated by the autoscaler.", "type": "integer", "format": "int32" }, "lastScaleTime": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "observedGeneration": { "description": "observedGeneration is the most recent generation observed by this autoscaler.", "type": "integer", "format": "int64" } } }, "io.k8s.api.autoscaling.v2.MetricIdentifier": { "description": "MetricIdentifier defines the name and optionally selector for a metric", "type": "object", "required": ["name"], "properties": { "name": { "description": "name is the name of the given metric", "type": "string" }, "selector": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" } } }, "io.k8s.api.autoscaling.v2.MetricSpec": { "description": "MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once).", "type": "object", "required": ["type"], "properties": { "containerResource": { "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.", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.ContainerResourceMetricSource" }, "external": { "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).", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.ExternalMetricSource" }, "object": { "description": "object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.ObjectMetricSource" }, "pods": { "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.", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.PodsMetricSource" }, "resource": { "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.", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.ResourceMetricSource" }, "type": { "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", "type": "string" } } }, "io.k8s.api.autoscaling.v2.MetricStatus": { "description": "MetricStatus describes the last-read state of a single metric.", "type": "object", "required": ["type"], "properties": { "containerResource": { "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.", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.ContainerResourceMetricStatus" }, "external": { "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).", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.ExternalMetricStatus" }, "object": { "description": "object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.ObjectMetricStatus" }, "pods": { "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.", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.PodsMetricStatus" }, "resource": { "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.", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.ResourceMetricStatus" }, "type": { "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", "type": "string" } } }, "io.k8s.api.autoscaling.v2.MetricTarget": { "description": "MetricTarget defines the target value, average value, or average utilization of a specific metric", "type": "object", "required": ["type"], "properties": { "averageUtilization": { "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", "type": "integer", "format": "int32" }, "averageValue": { "description": "averageValue is the target value of the average of the metric across all relevant pods (as a quantity)", "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" }, "type": { "description": "type represents whether the metric type is Utilization, Value, or AverageValue", "type": "string" }, "value": { "description": "value is the target value of the metric (as a quantity).", "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } } }, "io.k8s.api.autoscaling.v2.MetricValueStatus": { "description": "MetricValueStatus holds the current value for a metric", "type": "object", "properties": { "averageUtilization": { "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.", "type": "integer", "format": "int32" }, "averageValue": { "description": "averageValue is the current value of the average of the metric across all relevant pods (as a quantity)", "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" }, "value": { "description": "value is the current value of the metric (as a quantity).", "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } } }, "io.k8s.api.autoscaling.v2.ObjectMetricSource": { "description": "ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).", "type": "object", "required": ["describedObject", "target", "metric"], "properties": { "describedObject": { "description": "describedObject specifies the descriptions of a object,such as kind,name apiVersion", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.CrossVersionObjectReference" }, "metric": { "description": "metric identifies the target metric by name and selector", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.MetricIdentifier" }, "target": { "description": "target specifies the target value for the given metric", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.MetricTarget" } } }, "io.k8s.api.autoscaling.v2.ObjectMetricStatus": { "description": "ObjectMetricStatus indicates the current value of a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).", "type": "object", "required": ["metric", "current", "describedObject"], "properties": { "current": { "description": "current contains the current value for the given metric", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.MetricValueStatus" }, "describedObject": { "description": "DescribedObject specifies the descriptions of a object,such as kind,name apiVersion", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.CrossVersionObjectReference" }, "metric": { "description": "metric identifies the target metric by name and selector", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.MetricIdentifier" } } }, "io.k8s.api.autoscaling.v2.PodsMetricSource": { "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.", "type": "object", "required": ["metric", "target"], "properties": { "metric": { "description": "metric identifies the target metric by name and selector", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.MetricIdentifier" }, "target": { "description": "target specifies the target value for the given metric", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.MetricTarget" } } }, "io.k8s.api.autoscaling.v2.PodsMetricStatus": { "description": "PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).", "type": "object", "required": ["metric", "current"], "properties": { "current": { "description": "current contains the current value for the given metric", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.MetricValueStatus" }, "metric": { "description": "metric identifies the target metric by name and selector", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.MetricIdentifier" } } }, "io.k8s.api.autoscaling.v2.ResourceMetricSource": { "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.", "type": "object", "required": ["name", "target"], "properties": { "name": { "description": "name is the name of the resource in question.", "type": "string" }, "target": { "description": "target specifies the target value for the given metric", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.MetricTarget" } } }, "io.k8s.api.autoscaling.v2.ResourceMetricStatus": { "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.", "type": "object", "required": ["name", "current"], "properties": { "current": { "description": "current contains the current value for the given metric", "$ref": "#/definitions/io.k8s.api.autoscaling.v2.MetricValueStatus" }, "name": { "description": "Name is the name of the resource in question.", "type": "string" } } }, "io.k8s.api.batch.v1.CronJob": { "description": "CronJob represents the configuration of a single cron job.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.batch.v1.CronJobSpec" }, "status": { "description": "Current status of a cron job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.batch.v1.CronJobStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "batch", "kind": "CronJob", "version": "v1" } ] }, "io.k8s.api.batch.v1.CronJobList": { "description": "CronJobList is a collection of cron jobs.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "items is the list of CronJobs.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.batch.v1.CronJob" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "batch", "kind": "CronJobList", "version": "v1" } ] }, "io.k8s.api.batch.v1.CronJobSpec": { "description": "CronJobSpec describes how the job execution will look like and when it will actually run.", "type": "object", "required": ["schedule", "jobTemplate"], "properties": { "concurrencyPolicy": { "description": "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\nPossible enum values:\n - `\"Allow\"` allows CronJobs to run concurrently.\n - `\"Forbid\"` forbids concurrent runs, skipping next run if previous hasn't finished yet.\n - `\"Replace\"` cancels currently running job and replaces it with a new one.", "type": "string", "enum": ["Allow", "Forbid", "Replace"] }, "failedJobsHistoryLimit": { "description": "The number of failed finished jobs to retain. Value must be non-negative integer. Defaults to 1.", "type": "integer", "format": "int32" }, "jobTemplate": { "description": "Specifies the job that will be created when executing a CronJob.", "$ref": "#/definitions/io.k8s.api.batch.v1.JobTemplateSpec" }, "schedule": { "description": "The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.", "type": "string" }, "startingDeadlineSeconds": { "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.", "type": "integer", "format": "int64" }, "successfulJobsHistoryLimit": { "description": "The number of successful finished jobs to retain. Value must be non-negative integer. Defaults to 3.", "type": "integer", "format": "int32" }, "suspend": { "description": "This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.", "type": "boolean" }, "timeZone": { "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 This is beta field and must be enabled via the `CronJobTimeZone` feature gate.", "type": "string" } } }, "io.k8s.api.batch.v1.CronJobStatus": { "description": "CronJobStatus represents the current state of a cron job.", "type": "object", "properties": { "active": { "description": "A list of pointers to currently running jobs.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" }, "x-kubernetes-list-type": "atomic" }, "lastScheduleTime": { "description": "Information when was the last time the job was successfully scheduled.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "lastSuccessfulTime": { "description": "Information when was the last time the job successfully completed.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } } }, "io.k8s.api.batch.v1.Job": { "description": "Job represents the configuration of a single job.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.batch.v1.JobSpec" }, "status": { "description": "Current status of a job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.batch.v1.JobStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "batch", "kind": "Job", "version": "v1" } ] }, "io.k8s.api.batch.v1.JobCondition": { "description": "JobCondition describes current state of a job.", "type": "object", "required": ["type", "status"], "properties": { "lastProbeTime": { "description": "Last time the condition was checked.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "lastTransitionTime": { "description": "Last time the condition transit from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "Human readable message indicating details about last transition.", "type": "string" }, "reason": { "description": "(brief) reason for the condition's last transition.", "type": "string" }, "status": { "description": "Status of the condition, one of True, False, Unknown.", "type": "string" }, "type": { "description": "Type of job condition, Complete or Failed.", "type": "string" } } }, "io.k8s.api.batch.v1.JobList": { "description": "JobList is a collection of jobs.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "items is the list of Jobs.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.batch.v1.Job" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "batch", "kind": "JobList", "version": "v1" } ] }, "io.k8s.api.batch.v1.JobSpec": { "description": "JobSpec describes how the job execution will look like.", "type": "object", "required": ["template"], "properties": { "activeDeadlineSeconds": { "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.", "type": "integer", "format": "int64" }, "backoffLimit": { "description": "Specifies the number of retries before marking this job failed. Defaults to 6", "type": "integer", "format": "int32" }, "completionMode": { "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.", "type": "string" }, "completions": { "description": "Specifies the desired number of successfully finished pods the job should be run with. Setting to nil 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/", "type": "integer", "format": "int32" }, "manualSelector": { "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", "type": "boolean" }, "parallelism": { "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) \u003c .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/", "type": "integer", "format": "int32" }, "podFailurePolicy": { "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\nThis field is alpha-level. To use this field, you must enable the `JobPodFailurePolicy` feature gate (disabled by default).", "$ref": "#/definitions/io.k8s.api.batch.v1.PodFailurePolicy" }, "selector": { "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", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "suspend": { "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.", "type": "boolean" }, "template": { "description": "Describes the pod that will be created when executing a job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/", "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplateSpec" }, "ttlSecondsAfterFinished": { "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.", "type": "integer", "format": "int32" } } }, "io.k8s.api.batch.v1.JobStatus": { "description": "JobStatus represents the current state of a Job.", "type": "object", "properties": { "active": { "description": "The number of pending and running pods.", "type": "integer", "format": "int32" }, "completedIndexes": { "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\".", "type": "string" }, "completionTime": { "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 only set when the job finishes successfully.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "conditions": { "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. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.batch.v1.JobCondition" }, "x-kubernetes-list-type": "atomic", "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "failed": { "description": "The number of pods which reached phase Failed.", "type": "integer", "format": "int32" }, "ready": { "description": "The number of pods which have a Ready condition.\n\nThis field is beta-level. The job controller populates the field when the feature gate JobReadyPods is enabled (enabled by default).", "type": "integer", "format": "int32" }, "startTime": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "succeeded": { "description": "The number of pods which reached phase Succeeded.", "type": "integer", "format": "int32" }, "uncountedTerminatedPods": { "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: (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\nOld jobs might not be tracked using this field, in which case the field remains null.", "$ref": "#/definitions/io.k8s.api.batch.v1.UncountedTerminatedPods" } } }, "io.k8s.api.batch.v1.JobTemplateSpec": { "description": "JobTemplateSpec describes the data a Job should have when created from a template", "type": "object", "properties": { "metadata": { "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", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.batch.v1.JobSpec" } } }, "io.k8s.api.batch.v1.PodFailurePolicy": { "description": "PodFailurePolicy describes how failed pods influence the backoffLimit.", "type": "object", "required": ["rules"], "properties": { "rules": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.batch.v1.PodFailurePolicyRule" }, "x-kubernetes-list-type": "atomic" } } }, "io.k8s.api.batch.v1.PodFailurePolicyOnExitCodesRequirement": { "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.", "type": "object", "required": ["operator", "values"], "properties": { "containerName": { "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.", "type": "string" }, "operator": { "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: - 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\nPossible enum values:\n - `\"In\"`\n - `\"NotIn\"`", "type": "string", "enum": ["In", "NotIn"] }, "values": { "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.", "type": "array", "items": { "type": "integer", "format": "int32" }, "x-kubernetes-list-type": "set" } } }, "io.k8s.api.batch.v1.PodFailurePolicyOnPodConditionsPattern": { "description": "PodFailurePolicyOnPodConditionsPattern describes a pattern for matching an actual pod condition type.", "type": "object", "required": ["type", "status"], "properties": { "status": { "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.", "type": "string" }, "type": { "description": "Specifies the required Pod condition type. To match a pod condition it is required that specified type equals the pod condition type.", "type": "string" } } }, "io.k8s.api.batch.v1.PodFailurePolicyRule": { "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.", "type": "object", "required": ["action", "onPodConditions"], "properties": { "action": { "description": "Specifies the action taken on a pod failure when the requirements are satisfied. Possible values are: - FailJob: indicates that the pod's job is marked as Failed and all\n running pods are terminated.\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\nPossible enum values:\n - `\"Count\"` This is an action which might be taken on a pod failure - the pod failure is handled in the default way - the counter towards .backoffLimit, represented by the job's .status.failed field, is incremented.\n - `\"FailJob\"` This is an action which might be taken on a pod failure - mark the pod's job as Failed and terminate all running pods.\n - `\"Ignore\"` This is an action which might be taken on a pod failure - the counter towards .backoffLimit, represented by the job's .status.failed field, is not incremented and a replacement pod is created.", "type": "string", "enum": ["Count", "FailJob", "Ignore"] }, "onExitCodes": { "description": "Represents the requirement on the container exit codes.", "$ref": "#/definitions/io.k8s.api.batch.v1.PodFailurePolicyOnExitCodesRequirement" }, "onPodConditions": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.batch.v1.PodFailurePolicyOnPodConditionsPattern" }, "x-kubernetes-list-type": "atomic" } } }, "io.k8s.api.batch.v1.UncountedTerminatedPods": { "description": "UncountedTerminatedPods holds UIDs of Pods that have terminated but haven't been accounted in Job status counters.", "type": "object", "properties": { "failed": { "description": "Failed holds UIDs of failed Pods.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "set" }, "succeeded": { "description": "Succeeded holds UIDs of succeeded Pods.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "set" } } }, "io.k8s.api.certificates.v1.CertificateSigningRequest": { "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.", "type": "object", "required": ["spec"], "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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.", "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequestSpec" }, "status": { "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.", "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequestStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "certificates.k8s.io", "kind": "CertificateSigningRequest", "version": "v1" } ] }, "io.k8s.api.certificates.v1.CertificateSigningRequestCondition": { "description": "CertificateSigningRequestCondition describes a condition of a CertificateSigningRequest object", "type": "object", "required": ["type", "status"], "properties": { "lastTransitionTime": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "lastUpdateTime": { "description": "lastUpdateTime is the time of the last update to this condition", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "message contains a human readable message with details about the request state", "type": "string" }, "reason": { "description": "reason indicates a brief reason for the request state", "type": "string" }, "status": { "description": "status of the condition, one of True, False, Unknown. Approved, Denied, and Failed conditions may not be \"False\" or \"Unknown\".", "type": "string" }, "type": { "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.", "type": "string" } } }, "io.k8s.api.certificates.v1.CertificateSigningRequestList": { "description": "CertificateSigningRequestList is a collection of CertificateSigningRequest objects", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "items is a collection of CertificateSigningRequest objects", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequest" } }, "kind": { "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", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "certificates.k8s.io", "kind": "CertificateSigningRequestList", "version": "v1" } ] }, "io.k8s.api.certificates.v1.CertificateSigningRequestSpec": { "description": "CertificateSigningRequestSpec contains the certificate request.", "type": "object", "required": ["request", "signerName"], "properties": { "expirationSeconds": { "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.", "type": "integer", "format": "int32" }, "extra": { "description": "extra contains extra attributes of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.", "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "groups": { "description": "groups contains group membership of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "atomic" }, "request": { "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.", "type": "string", "format": "byte", "x-kubernetes-list-type": "atomic" }, "signerName": { "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.", "type": "string" }, "uid": { "description": "uid contains the uid of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.", "type": "string" }, "usages": { "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\"", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "atomic" }, "username": { "description": "username contains the name of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.", "type": "string" } } }, "io.k8s.api.certificates.v1.CertificateSigningRequestStatus": { "description": "CertificateSigningRequestStatus contains conditions used to indicate approved/denied/failed status of the request, and the issued certificate.", "type": "object", "properties": { "certificate": { "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 )", "type": "string", "format": "byte", "x-kubernetes-list-type": "atomic" }, "conditions": { "description": "conditions applied to the request. Known conditions are \"Approved\", \"Denied\", and \"Failed\".", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.certificates.v1.CertificateSigningRequestCondition" }, "x-kubernetes-list-map-keys": ["type"], "x-kubernetes-list-type": "map" } } }, "io.k8s.api.coordination.v1.Lease": { "description": "Lease defines a lease concept.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Specification of the Lease. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.coordination.v1.LeaseSpec" } }, "x-kubernetes-group-version-kind": [ { "group": "coordination.k8s.io", "kind": "Lease", "version": "v1" } ] }, "io.k8s.api.coordination.v1.LeaseList": { "description": "LeaseList is a list of Lease objects.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is a list of schema objects.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.coordination.v1.Lease" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "coordination.k8s.io", "kind": "LeaseList", "version": "v1" } ] }, "io.k8s.api.coordination.v1.LeaseSpec": { "description": "LeaseSpec is a specification of a Lease.", "type": "object", "properties": { "acquireTime": { "description": "acquireTime is a time when the current lease was acquired.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime" }, "holderIdentity": { "description": "holderIdentity contains the identity of the holder of a current lease.", "type": "string" }, "leaseDurationSeconds": { "description": "leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. This is measure against time of last observed RenewTime.", "type": "integer", "format": "int32" }, "leaseTransitions": { "description": "leaseTransitions is the number of transitions of a lease between holders.", "type": "integer", "format": "int32" }, "renewTime": { "description": "renewTime is a time when the current holder of a lease has last updated the lease.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime" } } }, "io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource": { "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.", "type": "object", "required": ["volumeID"], "properties": { "fsType": { "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", "type": "string" }, "partition": { "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).", "type": "integer", "format": "int32" }, "readOnly": { "description": "readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", "type": "boolean" }, "volumeID": { "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", "type": "string" } } }, "io.k8s.api.core.v1.Affinity": { "description": "Affinity is a group of affinity scheduling rules.", "type": "object", "properties": { "nodeAffinity": { "description": "Describes node affinity scheduling rules for the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.NodeAffinity" }, "podAffinity": { "description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).", "$ref": "#/definitions/io.k8s.api.core.v1.PodAffinity" }, "podAntiAffinity": { "description": "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).", "$ref": "#/definitions/io.k8s.api.core.v1.PodAntiAffinity" } } }, "io.k8s.api.core.v1.AttachedVolume": { "description": "AttachedVolume describes a volume attached to a node", "type": "object", "required": ["name", "devicePath"], "properties": { "devicePath": { "description": "DevicePath represents the device path where the volume should be available", "type": "string" }, "name": { "description": "Name of the attached volume", "type": "string" } } }, "io.k8s.api.core.v1.AzureDiskVolumeSource": { "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", "type": "object", "required": ["diskName", "diskURI"], "properties": { "cachingMode": { "description": "cachingMode is the Host Caching mode: None, Read Only, Read Write.", "type": "string" }, "diskName": { "description": "diskName is the Name of the data disk in the blob storage", "type": "string" }, "diskURI": { "description": "diskURI is the URI of data disk in the blob storage", "type": "string" }, "fsType": { "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.", "type": "string" }, "kind": { "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", "type": "string" }, "readOnly": { "description": "readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" } } }, "io.k8s.api.core.v1.AzureFilePersistentVolumeSource": { "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", "type": "object", "required": ["secretName", "shareName"], "properties": { "readOnly": { "description": "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretName": { "description": "secretName is the name of secret that contains Azure Storage Account Name and Key", "type": "string" }, "secretNamespace": { "description": "secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod", "type": "string" }, "shareName": { "description": "shareName is the azure Share Name", "type": "string" } } }, "io.k8s.api.core.v1.AzureFileVolumeSource": { "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", "type": "object", "required": ["secretName", "shareName"], "properties": { "readOnly": { "description": "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretName": { "description": "secretName is the name of secret that contains Azure Storage Account Name and Key", "type": "string" }, "shareName": { "description": "shareName is the azure share Name", "type": "string" } } }, "io.k8s.api.core.v1.Binding": { "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.", "type": "object", "required": ["target"], "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "target": { "description": "The target object that you want to bind to the standard object.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Binding", "version": "v1" } ] }, "io.k8s.api.core.v1.CSIPersistentVolumeSource": { "description": "Represents storage that is managed by an external CSI volume driver (Beta feature)", "type": "object", "required": ["driver", "volumeHandle"], "properties": { "controllerExpandSecretRef": { "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 is an beta field and requires enabling ExpandCSIVolumes feature gate. 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.", "$ref": "#/definitions/io.k8s.api.core.v1.SecretReference" }, "controllerPublishSecretRef": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.SecretReference" }, "driver": { "description": "driver is the name of the driver to use for this volume. Required.", "type": "string" }, "fsType": { "description": "fsType to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\".", "type": "string" }, "nodeExpandSecretRef": { "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 is an alpha field and requires enabling CSINodeExpandSecret feature gate. 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.", "$ref": "#/definitions/io.k8s.api.core.v1.SecretReference" }, "nodePublishSecretRef": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.SecretReference" }, "nodeStageSecretRef": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.SecretReference" }, "readOnly": { "description": "readOnly value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).", "type": "boolean" }, "volumeAttributes": { "description": "volumeAttributes of the volume to publish.", "type": "object", "additionalProperties": { "type": "string" } }, "volumeHandle": { "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.", "type": "string" } } }, "io.k8s.api.core.v1.CSIVolumeSource": { "description": "Represents a source location of a volume to mount, managed by an external CSI driver", "type": "object", "required": ["driver"], "properties": { "driver": { "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.", "type": "string" }, "fsType": { "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.", "type": "string" }, "nodePublishSecretRef": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "readOnly": { "description": "readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).", "type": "boolean" }, "volumeAttributes": { "description": "volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.", "type": "object", "additionalProperties": { "type": "string" } } } }, "io.k8s.api.core.v1.Capabilities": { "description": "Adds and removes POSIX capabilities from running containers.", "type": "object", "properties": { "add": { "description": "Added capabilities", "type": "array", "items": { "type": "string" } }, "drop": { "description": "Removed capabilities", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.CephFSPersistentVolumeSource": { "description": "Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.", "type": "object", "required": ["monitors"], "properties": { "monitors": { "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", "type": "array", "items": { "type": "string" } }, "path": { "description": "path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /", "type": "string" }, "readOnly": { "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", "type": "boolean" }, "secretFile": { "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", "type": "string" }, "secretRef": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.SecretReference" }, "user": { "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", "type": "string" } } }, "io.k8s.api.core.v1.CephFSVolumeSource": { "description": "Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.", "type": "object", "required": ["monitors"], "properties": { "monitors": { "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", "type": "array", "items": { "type": "string" } }, "path": { "description": "path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /", "type": "string" }, "readOnly": { "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", "type": "boolean" }, "secretFile": { "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", "type": "string" }, "secretRef": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "user": { "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", "type": "string" } } }, "io.k8s.api.core.v1.CinderPersistentVolumeSource": { "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.", "type": "object", "required": ["volumeID"], "properties": { "fsType": { "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", "type": "string" }, "readOnly": { "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", "type": "boolean" }, "secretRef": { "description": "secretRef is Optional: points to a secret object containing parameters used to connect to OpenStack.", "$ref": "#/definitions/io.k8s.api.core.v1.SecretReference" }, "volumeID": { "description": "volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md", "type": "string" } } }, "io.k8s.api.core.v1.CinderVolumeSource": { "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.", "type": "object", "required": ["volumeID"], "properties": { "fsType": { "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", "type": "string" }, "readOnly": { "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", "type": "boolean" }, "secretRef": { "description": "secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "volumeID": { "description": "volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md", "type": "string" } } }, "io.k8s.api.core.v1.ClaimSource": { "description": "ClaimSource describes a reference to a ResourceClaim.\n\nExactly one of these fields should be set. Consumers of this type must treat an empty object as if it has an unknown value.", "type": "object", "properties": { "resourceClaimName": { "description": "ResourceClaimName is the name of a ResourceClaim object in the same namespace as this pod.", "type": "string" }, "resourceClaimTemplateName": { "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 name of the ResourceClaim will be \u003cpod name\u003e-\u003cresource name\u003e, where \u003cresource name\u003e is the PodResourceClaim.Name. Pod validation will reject the pod if the concatenated name is not valid for a ResourceClaim (e.g. too long).\n\nAn existing ResourceClaim with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated resource by mistake. Scheduling and pod startup are then blocked until the unrelated ResourceClaim is removed.\n\nThis field is immutable and no changes will be made to the corresponding ResourceClaim by the control plane after creating the ResourceClaim.", "type": "string" } } }, "io.k8s.api.core.v1.ClientIPConfig": { "description": "ClientIPConfig represents the configurations of Client IP based session affinity.", "type": "object", "properties": { "timeoutSeconds": { "description": "timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be \u003e0 \u0026\u0026 \u003c=86400(for 1 day) if ServiceAffinity == \"ClientIP\". Default value is 10800(for 3 hours).", "type": "integer", "format": "int32" } } }, "io.k8s.api.core.v1.ComponentCondition": { "description": "Information about the condition of a component.", "type": "object", "required": ["type", "status"], "properties": { "error": { "description": "Condition error code for a component. For example, a health check error code.", "type": "string" }, "message": { "description": "Message about the condition for a component. For example, information about a health check.", "type": "string" }, "status": { "description": "Status of the condition for a component. Valid values for \"Healthy\": \"True\", \"False\", or \"Unknown\".", "type": "string" }, "type": { "description": "Type of condition for a component. Valid value: \"Healthy\"", "type": "string" } } }, "io.k8s.api.core.v1.ComponentStatus": { "description": "ComponentStatus (and ComponentStatusList) holds the cluster validation info. Deprecated: This API is deprecated in v1.19+", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "conditions": { "description": "List of component conditions observed", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ComponentCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ComponentStatus", "version": "v1" } ] }, "io.k8s.api.core.v1.ComponentStatusList": { "description": "Status of all the conditions for the component as a list of ComponentStatus objects. Deprecated: This API is deprecated in v1.19+", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "List of ComponentStatus objects.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ComponentStatus" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ComponentStatusList", "version": "v1" } ] }, "io.k8s.api.core.v1.ConfigMap": { "description": "ConfigMap holds configuration data for pods to consume.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "binaryData": { "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.", "type": "object", "additionalProperties": { "type": "string", "format": "byte" } }, "data": { "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.", "type": "object", "additionalProperties": { "type": "string" } }, "immutable": { "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.", "type": "boolean" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ConfigMap", "version": "v1" } ] }, "io.k8s.api.core.v1.ConfigMapEnvSource": { "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.", "type": "object", "properties": { "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the ConfigMap must be defined", "type": "boolean" } } }, "io.k8s.api.core.v1.ConfigMapKeySelector": { "description": "Selects a key from a ConfigMap.", "type": "object", "required": ["key"], "properties": { "key": { "description": "The key to select.", "type": "string" }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean" } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.ConfigMapList": { "description": "ConfigMapList is a resource containing a list of ConfigMap objects.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is the list of ConfigMaps.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMap" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ConfigMapList", "version": "v1" } ] }, "io.k8s.api.core.v1.ConfigMapNodeConfigSource": { "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", "type": "object", "required": ["namespace", "name", "kubeletConfigKey"], "properties": { "kubeletConfigKey": { "description": "KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.", "type": "string" }, "name": { "description": "Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.", "type": "string" }, "namespace": { "description": "Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.", "type": "string" }, "resourceVersion": { "description": "ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.", "type": "string" }, "uid": { "description": "UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.", "type": "string" } } }, "io.k8s.api.core.v1.ConfigMapProjection": { "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.", "type": "object", "properties": { "items": { "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 '..'.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.KeyToPath" } }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "optional specify whether the ConfigMap or its keys must be defined", "type": "boolean" } } }, "io.k8s.api.core.v1.ConfigMapVolumeSource": { "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.", "type": "object", "properties": { "defaultMode": { "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.", "type": "integer", "format": "int32" }, "items": { "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 '..'.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.KeyToPath" } }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "optional specify whether the ConfigMap or its keys must be defined", "type": "boolean" } } }, "io.k8s.api.core.v1.Container": { "description": "A single application container that you want to run within a pod.", "type": "object", "required": ["name"], "properties": { "args": { "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", "type": "array", "items": { "type": "string" } }, "command": { "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", "type": "array", "items": { "type": "string" } }, "env": { "description": "List of environment variables to set in the container. Cannot be updated.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EnvVar" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "envFrom": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EnvFromSource" } }, "image": { "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.", "type": "string" }, "imagePullPolicy": { "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\nPossible enum values:\n - `\"Always\"` means that kubelet always attempts to pull the latest image. Container will fail If the pull fails.\n - `\"IfNotPresent\"` means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails.\n - `\"Never\"` means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present", "type": "string", "enum": ["Always", "IfNotPresent", "Never"] }, "lifecycle": { "description": "Actions that the management system should take in response to container lifecycle events. Cannot be updated.", "$ref": "#/definitions/io.k8s.api.core.v1.Lifecycle" }, "livenessProbe": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.Probe" }, "name": { "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.", "type": "string" }, "ports": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ContainerPort" }, "x-kubernetes-list-map-keys": ["containerPort", "protocol"], "x-kubernetes-list-type": "map", "x-kubernetes-patch-merge-key": "containerPort", "x-kubernetes-patch-strategy": "merge" }, "readinessProbe": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.Probe" }, "resources": { "description": "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "$ref": "#/definitions/io.k8s.api.core.v1.ResourceRequirements" }, "securityContext": { "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/", "$ref": "#/definitions/io.k8s.api.core.v1.SecurityContext" }, "startupProbe": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.Probe" }, "stdin": { "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.", "type": "boolean" }, "stdinOnce": { "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", "type": "boolean" }, "terminationMessagePath": { "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.", "type": "string" }, "terminationMessagePolicy": { "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\nPossible enum values:\n - `\"FallbackToLogsOnError\"` will read the most recent contents of the container logs for the container status message when the container exits with an error and the terminationMessagePath has no contents.\n - `\"File\"` is the default behavior and will set the container status message to the contents of the container's terminationMessagePath when the container exits.", "type": "string", "enum": ["FallbackToLogsOnError", "File"] }, "tty": { "description": "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", "type": "boolean" }, "volumeDevices": { "description": "volumeDevices is the list of block devices to be used by the container.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.VolumeDevice" }, "x-kubernetes-patch-merge-key": "devicePath", "x-kubernetes-patch-strategy": "merge" }, "volumeMounts": { "description": "Pod volumes to mount into the container's filesystem. Cannot be updated.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.VolumeMount" }, "x-kubernetes-patch-merge-key": "mountPath", "x-kubernetes-patch-strategy": "merge" }, "workingDir": { "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.", "type": "string" } } }, "io.k8s.api.core.v1.ContainerImage": { "description": "Describe a container image", "type": "object", "properties": { "names": { "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\"]", "type": "array", "items": { "type": "string" } }, "sizeBytes": { "description": "The size of the image in bytes.", "type": "integer", "format": "int64" } } }, "io.k8s.api.core.v1.ContainerPort": { "description": "ContainerPort represents a network port in a single container.", "type": "object", "required": ["containerPort"], "properties": { "containerPort": { "description": "Number of port to expose on the pod's IP address. This must be a valid port number, 0 \u003c x \u003c 65536.", "type": "integer", "format": "int32" }, "hostIP": { "description": "What host IP to bind the external port to.", "type": "string" }, "hostPort": { "description": "Number of port to expose on the host. If specified, this must be a valid port number, 0 \u003c x \u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.", "type": "integer", "format": "int32" }, "name": { "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.", "type": "string" }, "protocol": { "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n\nPossible enum values:\n - `\"SCTP\"` is the SCTP protocol.\n - `\"TCP\"` is the TCP protocol.\n - `\"UDP\"` is the UDP protocol.", "type": "string", "enum": ["SCTP", "TCP", "UDP"] } } }, "io.k8s.api.core.v1.ContainerState": { "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.", "type": "object", "properties": { "running": { "description": "Details about a running container", "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStateRunning" }, "terminated": { "description": "Details about a terminated container", "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStateTerminated" }, "waiting": { "description": "Details about a waiting container", "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStateWaiting" } } }, "io.k8s.api.core.v1.ContainerStateRunning": { "description": "ContainerStateRunning is a running state of a container.", "type": "object", "properties": { "startedAt": { "description": "Time at which the container was last (re-)started", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } } }, "io.k8s.api.core.v1.ContainerStateTerminated": { "description": "ContainerStateTerminated is a terminated state of a container.", "type": "object", "required": ["exitCode"], "properties": { "containerID": { "description": "Container's ID in the format '\u003ctype\u003e://\u003ccontainer_id\u003e'", "type": "string" }, "exitCode": { "description": "Exit status from the last termination of the container", "type": "integer", "format": "int32" }, "finishedAt": { "description": "Time at which the container last terminated", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "Message regarding the last termination of the container", "type": "string" }, "reason": { "description": "(brief) reason from the last termination of the container", "type": "string" }, "signal": { "description": "Signal from the last termination of the container", "type": "integer", "format": "int32" }, "startedAt": { "description": "Time at which previous execution of the container started", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } } }, "io.k8s.api.core.v1.ContainerStateWaiting": { "description": "ContainerStateWaiting is a waiting state of a container.", "type": "object", "properties": { "message": { "description": "Message regarding why the container is not yet running.", "type": "string" }, "reason": { "description": "(brief) reason the container is not yet running.", "type": "string" } } }, "io.k8s.api.core.v1.ContainerStatus": { "description": "ContainerStatus contains details for the current status of this container.", "type": "object", "required": ["name", "ready", "restartCount", "image", "imageID"], "properties": { "containerID": { "description": "Container's ID in the format '\u003ctype\u003e://\u003ccontainer_id\u003e'.", "type": "string" }, "image": { "description": "The image the container is running. More info: https://kubernetes.io/docs/concepts/containers/images.", "type": "string" }, "imageID": { "description": "ImageID of the container's image.", "type": "string" }, "lastState": { "description": "Details about the container's last termination condition.", "$ref": "#/definitions/io.k8s.api.core.v1.ContainerState" }, "name": { "description": "This must be a DNS_LABEL. Each container in a pod must have a unique name. Cannot be updated.", "type": "string" }, "ready": { "description": "Specifies whether the container has passed its readiness probe.", "type": "boolean" }, "restartCount": { "description": "The number of times the container has been restarted.", "type": "integer", "format": "int32" }, "started": { "description": "Specifies whether the container has 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. Is always true when no startupProbe is defined.", "type": "boolean" }, "state": { "description": "Details about the container's current condition.", "$ref": "#/definitions/io.k8s.api.core.v1.ContainerState" } } }, "io.k8s.api.core.v1.DaemonEndpoint": { "description": "DaemonEndpoint contains information about a single Daemon endpoint.", "type": "object", "required": ["Port"], "properties": { "Port": { "description": "Port number of the given endpoint.", "type": "integer", "format": "int32" } } }, "io.k8s.api.core.v1.DownwardAPIProjection": { "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.", "type": "object", "properties": { "items": { "description": "Items is a list of DownwardAPIVolume file", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeFile" } } } }, "io.k8s.api.core.v1.DownwardAPIVolumeFile": { "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", "type": "object", "required": ["path"], "properties": { "fieldRef": { "description": "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectFieldSelector" }, "mode": { "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.", "type": "integer", "format": "int32" }, "path": { "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 '..'", "type": "string" }, "resourceFieldRef": { "description": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.", "$ref": "#/definitions/io.k8s.api.core.v1.ResourceFieldSelector" } } }, "io.k8s.api.core.v1.DownwardAPIVolumeSource": { "description": "DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.", "type": "object", "properties": { "defaultMode": { "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.", "type": "integer", "format": "int32" }, "items": { "description": "Items is a list of downward API volume file", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeFile" } } } }, "io.k8s.api.core.v1.EmptyDirVolumeSource": { "description": "Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.", "type": "object", "properties": { "medium": { "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", "type": "string" }, "sizeLimit": { "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: http://kubernetes.io/docs/user-guide/volumes#emptydir", "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } } }, "io.k8s.api.core.v1.EndpointAddress": { "description": "EndpointAddress is a tuple that describes single IP address.", "type": "object", "required": ["ip"], "properties": { "hostname": { "description": "The Hostname of this endpoint", "type": "string" }, "ip": { "description": "The IP of this endpoint. May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), or link-local multicast ((224.0.0.0/24). IPv6 is also accepted but not fully supported on all platforms. Also, certain kubernetes components, like kube-proxy, are not IPv6 ready.", "type": "string" }, "nodeName": { "description": "Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.", "type": "string" }, "targetRef": { "description": "Reference to object providing the endpoint.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.EndpointPort": { "description": "EndpointPort is a tuple that describes a single port.", "type": "object", "required": ["port"], "properties": { "appProtocol": { "description": "The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol.", "type": "string" }, "name": { "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.", "type": "string" }, "port": { "description": "The port number of the endpoint.", "type": "integer", "format": "int32" }, "protocol": { "description": "The IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP.\n\nPossible enum values:\n - `\"SCTP\"` is the SCTP protocol.\n - `\"TCP\"` is the TCP protocol.\n - `\"UDP\"` is the UDP protocol.", "type": "string", "enum": ["SCTP", "TCP", "UDP"] } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.EndpointSubset": { "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 ]", "type": "object", "properties": { "addresses": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EndpointAddress" } }, "notReadyAddresses": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EndpointAddress" } }, "ports": { "description": "Port numbers available on the related IP addresses.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EndpointPort" } } } }, "io.k8s.api.core.v1.Endpoints": { "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]", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "subsets": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EndpointSubset" } } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Endpoints", "version": "v1" } ] }, "io.k8s.api.core.v1.EndpointsList": { "description": "EndpointsList is a list of endpoints.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "List of endpoints.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Endpoints" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "EndpointsList", "version": "v1" } ] }, "io.k8s.api.core.v1.EnvFromSource": { "description": "EnvFromSource represents the source of a set of ConfigMaps", "type": "object", "properties": { "configMapRef": { "description": "The ConfigMap to select from", "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapEnvSource" }, "prefix": { "description": "An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.", "type": "string" }, "secretRef": { "description": "The Secret to select from", "$ref": "#/definitions/io.k8s.api.core.v1.SecretEnvSource" } } }, "io.k8s.api.core.v1.EnvVar": { "description": "EnvVar represents an environment variable present in a Container.", "type": "object", "required": ["name"], "properties": { "name": { "description": "Name of the environment variable. Must be a C_IDENTIFIER.", "type": "string" }, "value": { "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 \"\".", "type": "string" }, "valueFrom": { "description": "Source for the environment variable's value. Cannot be used if value is not empty.", "$ref": "#/definitions/io.k8s.api.core.v1.EnvVarSource" } } }, "io.k8s.api.core.v1.EnvVarSource": { "description": "EnvVarSource represents a source for the value of an EnvVar.", "type": "object", "properties": { "configMapKeyRef": { "description": "Selects a key of a ConfigMap.", "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapKeySelector" }, "fieldRef": { "description": "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\u003cKEY\u003e']`, `metadata.annotations['\u003cKEY\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectFieldSelector" }, "resourceFieldRef": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.ResourceFieldSelector" }, "secretKeyRef": { "description": "Selects a key of a secret in the pod's namespace", "$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector" } } }, "io.k8s.api.core.v1.EphemeralContainer": { "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.", "type": "object", "required": ["name"], "properties": { "args": { "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", "type": "array", "items": { "type": "string" } }, "command": { "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", "type": "array", "items": { "type": "string" } }, "env": { "description": "List of environment variables to set in the container. Cannot be updated.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EnvVar" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "envFrom": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EnvFromSource" } }, "image": { "description": "Container image name. More info: https://kubernetes.io/docs/concepts/containers/images", "type": "string" }, "imagePullPolicy": { "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\nPossible enum values:\n - `\"Always\"` means that kubelet always attempts to pull the latest image. Container will fail If the pull fails.\n - `\"IfNotPresent\"` means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails.\n - `\"Never\"` means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present", "type": "string", "enum": ["Always", "IfNotPresent", "Never"] }, "lifecycle": { "description": "Lifecycle is not allowed for ephemeral containers.", "$ref": "#/definitions/io.k8s.api.core.v1.Lifecycle" }, "livenessProbe": { "description": "Probes are not allowed for ephemeral containers.", "$ref": "#/definitions/io.k8s.api.core.v1.Probe" }, "name": { "description": "Name of the ephemeral container specified as a DNS_LABEL. This name must be unique among all containers, init containers and ephemeral containers.", "type": "string" }, "ports": { "description": "Ports are not allowed for ephemeral containers.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ContainerPort" }, "x-kubernetes-list-map-keys": ["containerPort", "protocol"], "x-kubernetes-list-type": "map", "x-kubernetes-patch-merge-key": "containerPort", "x-kubernetes-patch-strategy": "merge" }, "readinessProbe": { "description": "Probes are not allowed for ephemeral containers.", "$ref": "#/definitions/io.k8s.api.core.v1.Probe" }, "resources": { "description": "Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources already allocated to the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.ResourceRequirements" }, "securityContext": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.SecurityContext" }, "startupProbe": { "description": "Probes are not allowed for ephemeral containers.", "$ref": "#/definitions/io.k8s.api.core.v1.Probe" }, "stdin": { "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.", "type": "boolean" }, "stdinOnce": { "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", "type": "boolean" }, "targetContainerName": { "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.", "type": "string" }, "terminationMessagePath": { "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.", "type": "string" }, "terminationMessagePolicy": { "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\nPossible enum values:\n - `\"FallbackToLogsOnError\"` will read the most recent contents of the container logs for the container status message when the container exits with an error and the terminationMessagePath has no contents.\n - `\"File\"` is the default behavior and will set the container status message to the contents of the container's terminationMessagePath when the container exits.", "type": "string", "enum": ["FallbackToLogsOnError", "File"] }, "tty": { "description": "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", "type": "boolean" }, "volumeDevices": { "description": "volumeDevices is the list of block devices to be used by the container.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.VolumeDevice" }, "x-kubernetes-patch-merge-key": "devicePath", "x-kubernetes-patch-strategy": "merge" }, "volumeMounts": { "description": "Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers. Cannot be updated.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.VolumeMount" }, "x-kubernetes-patch-merge-key": "mountPath", "x-kubernetes-patch-strategy": "merge" }, "workingDir": { "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.", "type": "string" } } }, "io.k8s.api.core.v1.EphemeralVolumeSource": { "description": "Represents an ephemeral volume that is handled by a normal storage driver.", "type": "object", "properties": { "volumeClaimTemplate": { "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 `\u003cpod name\u003e-\u003cvolume name\u003e` where `\u003cvolume name\u003e` 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.", "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimTemplate" } } }, "io.k8s.api.core.v1.Event": { "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.", "type": "object", "required": ["metadata", "involvedObject"], "properties": { "action": { "description": "What action was taken/failed regarding to the Regarding object.", "type": "string" }, "apiVersion": { "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", "type": "string" }, "count": { "description": "The number of times this event has occurred.", "type": "integer", "format": "int32" }, "eventTime": { "description": "Time when this Event was first observed.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime" }, "firstTimestamp": { "description": "The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "involvedObject": { "description": "The object that this event is about.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" }, "kind": { "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", "type": "string" }, "lastTimestamp": { "description": "The time at which the most recent occurrence of this event was recorded.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "A human-readable description of the status of this operation.", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "reason": { "description": "This should be a short, machine understandable string that gives the reason for the transition into the object's current status.", "type": "string" }, "related": { "description": "Optional secondary object for more complex actions.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" }, "reportingComponent": { "description": "Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.", "type": "string" }, "reportingInstance": { "description": "ID of the controller instance, e.g. `kubelet-xyzf`.", "type": "string" }, "series": { "description": "Data about the Event series this event represents or nil if it's a singleton Event.", "$ref": "#/definitions/io.k8s.api.core.v1.EventSeries" }, "source": { "description": "The component reporting this event. Should be a short machine understandable string.", "$ref": "#/definitions/io.k8s.api.core.v1.EventSource" }, "type": { "description": "Type of this event (Normal, Warning), new types could be added in the future", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Event", "version": "v1" } ] }, "io.k8s.api.core.v1.EventList": { "description": "EventList is a list of events.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "List of events", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Event" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "EventList", "version": "v1" } ] }, "io.k8s.api.core.v1.EventSeries": { "description": "EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time.", "type": "object", "properties": { "count": { "description": "Number of occurrences in this series up to the last heartbeat time", "type": "integer", "format": "int32" }, "lastObservedTime": { "description": "Time of the last occurrence observed", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime" } } }, "io.k8s.api.core.v1.EventSource": { "description": "EventSource contains information for an event.", "type": "object", "properties": { "component": { "description": "Component from which the event is generated.", "type": "string" }, "host": { "description": "Node name on which the event is generated.", "type": "string" } } }, "io.k8s.api.core.v1.ExecAction": { "description": "ExecAction describes a \"run in container\" action.", "type": "object", "properties": { "command": { "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.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.FCVolumeSource": { "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.", "type": "object", "properties": { "fsType": { "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.", "type": "string" }, "lun": { "description": "lun is Optional: FC target lun number", "type": "integer", "format": "int32" }, "readOnly": { "description": "readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "targetWWNs": { "description": "targetWWNs is Optional: FC target worldwide names (WWNs)", "type": "array", "items": { "type": "string" } }, "wwids": { "description": "wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.FlexPersistentVolumeSource": { "description": "FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.", "type": "object", "required": ["driver"], "properties": { "driver": { "description": "driver is the name of the driver to use for this volume.", "type": "string" }, "fsType": { "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.", "type": "string" }, "options": { "description": "options is Optional: this field holds extra command options if any.", "type": "object", "additionalProperties": { "type": "string" } }, "readOnly": { "description": "readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretRef": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.SecretReference" } } }, "io.k8s.api.core.v1.FlexVolumeSource": { "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.", "type": "object", "required": ["driver"], "properties": { "driver": { "description": "driver is the name of the driver to use for this volume.", "type": "string" }, "fsType": { "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.", "type": "string" }, "options": { "description": "options is Optional: this field holds extra command options if any.", "type": "object", "additionalProperties": { "type": "string" } }, "readOnly": { "description": "readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretRef": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" } } }, "io.k8s.api.core.v1.FlockerVolumeSource": { "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.", "type": "object", "properties": { "datasetName": { "description": "datasetName is Name of the dataset stored as metadata -\u003e name on the dataset for Flocker should be considered as deprecated", "type": "string" }, "datasetUUID": { "description": "datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset", "type": "string" } } }, "io.k8s.api.core.v1.GCEPersistentDiskVolumeSource": { "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.", "type": "object", "required": ["pdName"], "properties": { "fsType": { "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", "type": "string" }, "partition": { "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", "type": "integer", "format": "int32" }, "pdName": { "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", "type": "string" }, "readOnly": { "description": "readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", "type": "boolean" } } }, "io.k8s.api.core.v1.GRPCAction": { "type": "object", "required": ["port"], "properties": { "port": { "description": "Port number of the gRPC service. Number must be in the range 1 to 65535.", "type": "integer", "format": "int32" }, "service": { "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.", "type": "string" } } }, "io.k8s.api.core.v1.GitRepoVolumeSource": { "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.", "type": "object", "required": ["repository"], "properties": { "directory": { "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.", "type": "string" }, "repository": { "description": "repository is the URL", "type": "string" }, "revision": { "description": "revision is the commit hash for the specified revision.", "type": "string" } } }, "io.k8s.api.core.v1.GlusterfsPersistentVolumeSource": { "description": "Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.", "type": "object", "required": ["endpoints", "path"], "properties": { "endpoints": { "description": "endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", "type": "string" }, "endpointsNamespace": { "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", "type": "string" }, "path": { "description": "path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", "type": "string" }, "readOnly": { "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", "type": "boolean" } } }, "io.k8s.api.core.v1.GlusterfsVolumeSource": { "description": "Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.", "type": "object", "required": ["endpoints", "path"], "properties": { "endpoints": { "description": "endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", "type": "string" }, "path": { "description": "path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", "type": "string" }, "readOnly": { "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", "type": "boolean" } } }, "io.k8s.api.core.v1.HTTPGetAction": { "description": "HTTPGetAction describes an action based on HTTP Get requests.", "type": "object", "required": ["port"], "properties": { "host": { "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.", "type": "string" }, "httpHeaders": { "description": "Custom headers to set in the request. HTTP allows repeated headers.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.HTTPHeader" } }, "path": { "description": "Path to access on the HTTP server.", "type": "string" }, "port": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.\n\nPossible enum values:\n - `\"HTTP\"` means that the scheme used will be http://\n - `\"HTTPS\"` means that the scheme used will be https://", "type": "string", "enum": ["HTTP", "HTTPS"] } } }, "io.k8s.api.core.v1.HTTPHeader": { "description": "HTTPHeader describes a custom header to be used in HTTP probes", "type": "object", "required": ["name", "value"], "properties": { "name": { "description": "The header field name", "type": "string" }, "value": { "description": "The header field value", "type": "string" } } }, "io.k8s.api.core.v1.HostAlias": { "description": "HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.", "type": "object", "properties": { "hostnames": { "description": "Hostnames for the above IP address.", "type": "array", "items": { "type": "string" } }, "ip": { "description": "IP address of the host file entry.", "type": "string" } } }, "io.k8s.api.core.v1.HostPathVolumeSource": { "description": "Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.", "type": "object", "required": ["path"], "properties": { "path": { "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", "type": "string" }, "type": { "description": "type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", "type": "string" } } }, "io.k8s.api.core.v1.ISCSIPersistentVolumeSource": { "description": "ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.", "type": "object", "required": ["targetPortal", "iqn", "lun"], "properties": { "chapAuthDiscovery": { "description": "chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication", "type": "boolean" }, "chapAuthSession": { "description": "chapAuthSession defines whether support iSCSI Session CHAP authentication", "type": "boolean" }, "fsType": { "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", "type": "string" }, "initiatorName": { "description": "initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \u003ctarget portal\u003e:\u003cvolume name\u003e will be created for the connection.", "type": "string" }, "iqn": { "description": "iqn is Target iSCSI Qualified Name.", "type": "string" }, "iscsiInterface": { "description": "iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", "type": "string" }, "lun": { "description": "lun is iSCSI Target Lun number.", "type": "integer", "format": "int32" }, "portals": { "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).", "type": "array", "items": { "type": "string" } }, "readOnly": { "description": "readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.", "type": "boolean" }, "secretRef": { "description": "secretRef is the CHAP Secret for iSCSI target and initiator authentication", "$ref": "#/definitions/io.k8s.api.core.v1.SecretReference" }, "targetPortal": { "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).", "type": "string" } } }, "io.k8s.api.core.v1.ISCSIVolumeSource": { "description": "Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.", "type": "object", "required": ["targetPortal", "iqn", "lun"], "properties": { "chapAuthDiscovery": { "description": "chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication", "type": "boolean" }, "chapAuthSession": { "description": "chapAuthSession defines whether support iSCSI Session CHAP authentication", "type": "boolean" }, "fsType": { "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", "type": "string" }, "initiatorName": { "description": "initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \u003ctarget portal\u003e:\u003cvolume name\u003e will be created for the connection.", "type": "string" }, "iqn": { "description": "iqn is the target iSCSI Qualified Name.", "type": "string" }, "iscsiInterface": { "description": "iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", "type": "string" }, "lun": { "description": "lun represents iSCSI Target Lun number.", "type": "integer", "format": "int32" }, "portals": { "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).", "type": "array", "items": { "type": "string" } }, "readOnly": { "description": "readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.", "type": "boolean" }, "secretRef": { "description": "secretRef is the CHAP Secret for iSCSI target and initiator authentication", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "targetPortal": { "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).", "type": "string" } } }, "io.k8s.api.core.v1.KeyToPath": { "description": "Maps a string key to a path within a volume.", "type": "object", "required": ["key", "path"], "properties": { "key": { "description": "key is the key to project.", "type": "string" }, "mode": { "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.", "type": "integer", "format": "int32" }, "path": { "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 '..'.", "type": "string" } } }, "io.k8s.api.core.v1.Lifecycle": { "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.", "type": "object", "properties": { "postStart": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.LifecycleHandler" }, "preStop": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.LifecycleHandler" } } }, "io.k8s.api.core.v1.LifecycleHandler": { "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.", "type": "object", "properties": { "exec": { "description": "Exec specifies the action to take.", "$ref": "#/definitions/io.k8s.api.core.v1.ExecAction" }, "httpGet": { "description": "HTTPGet specifies the http request to perform.", "$ref": "#/definitions/io.k8s.api.core.v1.HTTPGetAction" }, "tcpSocket": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.TCPSocketAction" } } }, "io.k8s.api.core.v1.LimitRange": { "description": "LimitRange sets resource usage limits for each kind of resource in a Namespace.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec defines the limits enforced. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.LimitRangeSpec" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "LimitRange", "version": "v1" } ] }, "io.k8s.api.core.v1.LimitRangeItem": { "description": "LimitRangeItem defines a min/max usage limit for any resource that matches on kind.", "type": "object", "required": ["type"], "properties": { "default": { "description": "Default resource requirement limit value by resource name if resource limit is omitted.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "defaultRequest": { "description": "DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "max": { "description": "Max usage constraints on this kind by resource name.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "maxLimitRequestRatio": { "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.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "min": { "description": "Min usage constraints on this kind by resource name.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "type": { "description": "Type of resource that this limit applies to.", "type": "string" } } }, "io.k8s.api.core.v1.LimitRangeList": { "description": "LimitRangeList is a list of LimitRange items.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is a list of LimitRange objects. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.LimitRange" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "LimitRangeList", "version": "v1" } ] }, "io.k8s.api.core.v1.LimitRangeSpec": { "description": "LimitRangeSpec defines a min/max usage limit for resources that match on kind.", "type": "object", "required": ["limits"], "properties": { "limits": { "description": "Limits is the list of LimitRangeItem objects that are enforced.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.LimitRangeItem" } } } }, "io.k8s.api.core.v1.LoadBalancerIngress": { "description": "LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.", "type": "object", "properties": { "hostname": { "description": "Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers)", "type": "string" }, "ip": { "description": "IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)", "type": "string" }, "ports": { "description": "Ports is a list of records of service ports If used, every port defined in the service should have an entry in it", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PortStatus" }, "x-kubernetes-list-type": "atomic" } } }, "io.k8s.api.core.v1.LoadBalancerStatus": { "description": "LoadBalancerStatus represents the status of a load-balancer.", "type": "object", "properties": { "ingress": { "description": "Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.LoadBalancerIngress" } } } }, "io.k8s.api.core.v1.LocalObjectReference": { "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", "type": "object", "properties": { "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.LocalVolumeSource": { "description": "Local represents directly-attached storage with node affinity (Beta feature)", "type": "object", "required": ["path"], "properties": { "fsType": { "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.", "type": "string" }, "path": { "description": "path of the full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).", "type": "string" } } }, "io.k8s.api.core.v1.NFSVolumeSource": { "description": "Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.", "type": "object", "required": ["server", "path"], "properties": { "path": { "description": "path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", "type": "string" }, "readOnly": { "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", "type": "boolean" }, "server": { "description": "server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", "type": "string" } } }, "io.k8s.api.core.v1.Namespace": { "description": "Namespace provides a scope for Names. Use of multiple namespaces is optional.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.NamespaceSpec" }, "status": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.NamespaceStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Namespace", "version": "v1" } ] }, "io.k8s.api.core.v1.NamespaceCondition": { "description": "NamespaceCondition contains details about state of namespace.", "type": "object", "required": ["type", "status"], "properties": { "lastTransitionTime": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "type": "string" }, "reason": { "type": "string" }, "status": { "description": "Status of the condition, one of True, False, Unknown.", "type": "string" }, "type": { "description": "Type of namespace controller condition.", "type": "string" } } }, "io.k8s.api.core.v1.NamespaceList": { "description": "NamespaceList is a list of Namespaces.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is the list of Namespace objects in the list. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "NamespaceList", "version": "v1" } ] }, "io.k8s.api.core.v1.NamespaceSpec": { "description": "NamespaceSpec describes the attributes on a Namespace.", "type": "object", "properties": { "finalizers": { "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/", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.NamespaceStatus": { "description": "NamespaceStatus is information about the current status of a Namespace.", "type": "object", "properties": { "conditions": { "description": "Represents the latest available observations of a namespace's current state.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.NamespaceCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "phase": { "description": "Phase is the current lifecycle phase of the namespace. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/\n\nPossible enum values:\n - `\"Active\"` means the namespace is available for use in the system\n - `\"Terminating\"` means the namespace is undergoing graceful termination", "type": "string", "enum": ["Active", "Terminating"] } } }, "io.k8s.api.core.v1.Node": { "description": "Node is a worker node in Kubernetes. Each node will have a unique identifier in the cache (i.e. in etcd).", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec defines the behavior of a node. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.NodeSpec" }, "status": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.NodeStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Node", "version": "v1" } ] }, "io.k8s.api.core.v1.NodeAddress": { "description": "NodeAddress contains information for the node's address.", "type": "object", "required": ["type", "address"], "properties": { "address": { "description": "The node address.", "type": "string" }, "type": { "description": "Node address type, one of Hostname, ExternalIP or InternalIP.", "type": "string" } } }, "io.k8s.api.core.v1.NodeAffinity": { "description": "Node affinity is a group of node affinity scheduling rules.", "type": "object", "properties": { "preferredDuringSchedulingIgnoredDuringExecution": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PreferredSchedulingTerm" } }, "requiredDuringSchedulingIgnoredDuringExecution": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelector" } } }, "io.k8s.api.core.v1.NodeCondition": { "description": "NodeCondition contains condition information for a node.", "type": "object", "required": ["type", "status"], "properties": { "lastHeartbeatTime": { "description": "Last time we got an update on a given condition.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "lastTransitionTime": { "description": "Last time the condition transit from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "Human readable message indicating details about last transition.", "type": "string" }, "reason": { "description": "(brief) reason for the condition's last transition.", "type": "string" }, "status": { "description": "Status of the condition, one of True, False, Unknown.", "type": "string" }, "type": { "description": "Type of node condition.", "type": "string" } } }, "io.k8s.api.core.v1.NodeConfigSource": { "description": "NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil. This API is deprecated since 1.22", "type": "object", "properties": { "configMap": { "description": "ConfigMap is a reference to a Node's ConfigMap", "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapNodeConfigSource" } } }, "io.k8s.api.core.v1.NodeConfigStatus": { "description": "NodeConfigStatus describes the status of the config assigned by Node.Spec.ConfigSource.", "type": "object", "properties": { "active": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.NodeConfigSource" }, "assigned": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.NodeConfigSource" }, "error": { "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.", "type": "string" }, "lastKnownGood": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.NodeConfigSource" } } }, "io.k8s.api.core.v1.NodeDaemonEndpoints": { "description": "NodeDaemonEndpoints lists ports opened by daemons running on the Node.", "type": "object", "properties": { "kubeletEndpoint": { "description": "Endpoint on which Kubelet is listening.", "$ref": "#/definitions/io.k8s.api.core.v1.DaemonEndpoint" } } }, "io.k8s.api.core.v1.NodeList": { "description": "NodeList is the whole list of all Nodes which have been registered with master.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "List of nodes", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Node" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "NodeList", "version": "v1" } ] }, "io.k8s.api.core.v1.NodeSelector": { "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.", "type": "object", "required": ["nodeSelectorTerms"], "properties": { "nodeSelectorTerms": { "description": "Required. A list of node selector terms. The terms are ORed.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelectorTerm" } } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.NodeSelectorRequirement": { "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", "type": "object", "required": ["key", "operator"], "properties": { "key": { "description": "The label key that the selector applies to.", "type": "string" }, "operator": { "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n\nPossible enum values:\n - `\"DoesNotExist\"`\n - `\"Exists\"`\n - `\"Gt\"`\n - `\"In\"`\n - `\"Lt\"`\n - `\"NotIn\"`", "type": "string", "enum": ["DoesNotExist", "Exists", "Gt", "In", "Lt", "NotIn"] }, "values": { "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.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.NodeSelectorTerm": { "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.", "type": "object", "properties": { "matchExpressions": { "description": "A list of node selector requirements by node's labels.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelectorRequirement" } }, "matchFields": { "description": "A list of node selector requirements by node's fields.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelectorRequirement" } } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.NodeSpec": { "description": "NodeSpec describes the attributes that a node is created with.", "type": "object", "properties": { "configSource": { "description": "Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed.", "$ref": "#/definitions/io.k8s.api.core.v1.NodeConfigSource" }, "externalID": { "description": "Deprecated. Not all kubelets will set this field. Remove field after 1.13. see: https://issues.k8s.io/61966", "type": "string" }, "podCIDR": { "description": "PodCIDR represents the pod IP range assigned to the node.", "type": "string" }, "podCIDRs": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-patch-strategy": "merge" }, "providerID": { "description": "ID of the node assigned by the cloud provider in the format: \u003cProviderName\u003e://\u003cProviderSpecificNodeID\u003e", "type": "string" }, "taints": { "description": "If specified, the node's taints.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Taint" } }, "unschedulable": { "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", "type": "boolean" } } }, "io.k8s.api.core.v1.NodeStatus": { "description": "NodeStatus is information about the current status of a node.", "type": "object", "properties": { "addresses": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.NodeAddress" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "allocatable": { "description": "Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "capacity": { "description": "Capacity represents the total resources of a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "conditions": { "description": "Conditions is an array of current observed node conditions. More info: https://kubernetes.io/docs/concepts/nodes/node/#condition", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.NodeCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "config": { "description": "Status of the config assigned to the node via the dynamic Kubelet config feature.", "$ref": "#/definitions/io.k8s.api.core.v1.NodeConfigStatus" }, "daemonEndpoints": { "description": "Endpoints of daemons running on the Node.", "$ref": "#/definitions/io.k8s.api.core.v1.NodeDaemonEndpoints" }, "images": { "description": "List of container images on this node", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ContainerImage" } }, "nodeInfo": { "description": "Set of ids/uuids to uniquely identify the node. More info: https://kubernetes.io/docs/concepts/nodes/node/#info", "$ref": "#/definitions/io.k8s.api.core.v1.NodeSystemInfo" }, "phase": { "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\nPossible enum values:\n - `\"Pending\"` means the node has been created/added by the system, but not configured.\n - `\"Running\"` means the node has been configured and has Kubernetes components running.\n - `\"Terminated\"` means the node has been removed from the cluster.", "type": "string", "enum": ["Pending", "Running", "Terminated"] }, "volumesAttached": { "description": "List of volumes that are attached to the node.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.AttachedVolume" } }, "volumesInUse": { "description": "List of attachable volumes in use (mounted) by the node.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.NodeSystemInfo": { "description": "NodeSystemInfo is a set of ids/uuids to uniquely identify the node.", "type": "object", "required": [ "machineID", "systemUUID", "bootID", "kernelVersion", "osImage", "containerRuntimeVersion", "kubeletVersion", "kubeProxyVersion", "operatingSystem", "architecture" ], "properties": { "architecture": { "description": "The Architecture reported by the node", "type": "string" }, "bootID": { "description": "Boot ID reported by the node.", "type": "string" }, "containerRuntimeVersion": { "description": "ContainerRuntime Version reported by the node through runtime remote API (e.g. containerd://1.4.2).", "type": "string" }, "kernelVersion": { "description": "Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).", "type": "string" }, "kubeProxyVersion": { "description": "KubeProxy Version reported by the node.", "type": "string" }, "kubeletVersion": { "description": "Kubelet Version reported by the node.", "type": "string" }, "machineID": { "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", "type": "string" }, "operatingSystem": { "description": "The Operating System reported by the node", "type": "string" }, "osImage": { "description": "OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).", "type": "string" }, "systemUUID": { "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", "type": "string" } } }, "io.k8s.api.core.v1.ObjectFieldSelector": { "description": "ObjectFieldSelector selects an APIVersioned field of an object.", "type": "object", "required": ["fieldPath"], "properties": { "apiVersion": { "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", "type": "string" }, "fieldPath": { "description": "Path of the field to select in the specified API version.", "type": "string" } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.ObjectReference": { "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", "type": "object", "properties": { "apiVersion": { "description": "API version of the referent.", "type": "string" }, "fieldPath": { "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.", "type": "string" }, "kind": { "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "namespace": { "description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", "type": "string" }, "resourceVersion": { "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", "type": "string" }, "uid": { "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", "type": "string" } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.PersistentVolume": { "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", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeSpec" }, "status": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PersistentVolume", "version": "v1" } ] }, "io.k8s.api.core.v1.PersistentVolumeClaim": { "description": "PersistentVolumeClaim is a user's request for and claim to a persistent volume", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimSpec" }, "status": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PersistentVolumeClaim", "version": "v1" } ] }, "io.k8s.api.core.v1.PersistentVolumeClaimCondition": { "description": "PersistentVolumeClaimCondition contails details about state of pvc", "type": "object", "required": ["type", "status"], "properties": { "lastProbeTime": { "description": "lastProbeTime is the time we probed the condition.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "lastTransitionTime": { "description": "lastTransitionTime is the time the condition transitioned from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "message is the human-readable message indicating details about last transition.", "type": "string" }, "reason": { "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 \"ResizeStarted\" that means the underlying persistent volume is being resized.", "type": "string" }, "status": { "type": "string" }, "type": { "type": "string" } } }, "io.k8s.api.core.v1.PersistentVolumeClaimList": { "description": "PersistentVolumeClaimList is a list of PersistentVolumeClaim items.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "items is a list of persistent volume claims. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PersistentVolumeClaimList", "version": "v1" } ] }, "io.k8s.api.core.v1.PersistentVolumeClaimSpec": { "description": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", "type": "object", "properties": { "accessModes": { "description": "accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", "type": "array", "items": { "type": "string" } }, "dataSource": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.TypedLocalObjectReference" }, "dataSourceRef": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.TypedObjectReference" }, "resources": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.ResourceRequirements" }, "selector": { "description": "selector is a label query over volumes to consider for binding.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "storageClassName": { "description": "storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", "type": "string" }, "volumeMode": { "description": "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", "type": "string" }, "volumeName": { "description": "volumeName is the binding reference to the PersistentVolume backing this claim.", "type": "string" } } }, "io.k8s.api.core.v1.PersistentVolumeClaimStatus": { "description": "PersistentVolumeClaimStatus is the current status of a persistent volume claim.", "type": "object", "properties": { "accessModes": { "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", "type": "array", "items": { "type": "string" } }, "allocatedResources": { "description": "allocatedResources is the storage resource within AllocatedResources tracks the capacity allocated to a PVC. It 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. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "capacity": { "description": "capacity represents the actual resources of the underlying volume.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "conditions": { "description": "conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "phase": { "description": "phase represents the current phase of PersistentVolumeClaim.\n\nPossible enum values:\n - `\"Bound\"` used for PersistentVolumeClaims that are bound\n - `\"Lost\"` used for PersistentVolumeClaims that lost their underlying PersistentVolume. The claim was bound to a PersistentVolume and this volume does not exist any longer and all data on it was lost.\n - `\"Pending\"` used for PersistentVolumeClaims that are not yet bound", "type": "string", "enum": ["Bound", "Lost", "Pending"] }, "resizeStatus": { "description": "resizeStatus stores status of resize operation. ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty string by resize controller or kubelet. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.", "type": "string" } } }, "io.k8s.api.core.v1.PersistentVolumeClaimTemplate": { "description": "PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource.", "type": "object", "required": ["spec"], "properties": { "metadata": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimSpec" } } }, "io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource": { "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).", "type": "object", "required": ["claimName"], "properties": { "claimName": { "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", "type": "string" }, "readOnly": { "description": "readOnly Will force the ReadOnly setting in VolumeMounts. Default false.", "type": "boolean" } } }, "io.k8s.api.core.v1.PersistentVolumeList": { "description": "PersistentVolumeList is a list of PersistentVolume items.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "items is a list of persistent volumes. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PersistentVolumeList", "version": "v1" } ] }, "io.k8s.api.core.v1.PersistentVolumeSpec": { "description": "PersistentVolumeSpec is the specification of a persistent volume.", "type": "object", "properties": { "accessModes": { "description": "accessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes", "type": "array", "items": { "type": "string" } }, "awsElasticBlockStore": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource" }, "azureDisk": { "description": "azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.AzureDiskVolumeSource" }, "azureFile": { "description": "azureFile represents an Azure File Service mount on the host and bind mount to the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.AzureFilePersistentVolumeSource" }, "capacity": { "description": "capacity is the description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "cephfs": { "description": "cephFS represents a Ceph FS mount on the host that shares a pod's lifetime", "$ref": "#/definitions/io.k8s.api.core.v1.CephFSPersistentVolumeSource" }, "cinder": { "description": "cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md", "$ref": "#/definitions/io.k8s.api.core.v1.CinderPersistentVolumeSource" }, "claimRef": { "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", "x-kubernetes-map-type": "granular", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" }, "csi": { "description": "csi represents storage that is handled by an external CSI driver (Beta feature).", "$ref": "#/definitions/io.k8s.api.core.v1.CSIPersistentVolumeSource" }, "fc": { "description": "fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.FCVolumeSource" }, "flexVolume": { "description": "flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.", "$ref": "#/definitions/io.k8s.api.core.v1.FlexPersistentVolumeSource" }, "flocker": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.FlockerVolumeSource" }, "gcePersistentDisk": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource" }, "glusterfs": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.GlusterfsPersistentVolumeSource" }, "hostPath": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.HostPathVolumeSource" }, "iscsi": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.ISCSIPersistentVolumeSource" }, "local": { "description": "local represents directly-attached storage with node affinity", "$ref": "#/definitions/io.k8s.api.core.v1.LocalVolumeSource" }, "mountOptions": { "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", "type": "array", "items": { "type": "string" } }, "nfs": { "description": "nfs represents an NFS mount on the host. Provisioned by an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", "$ref": "#/definitions/io.k8s.api.core.v1.NFSVolumeSource" }, "nodeAffinity": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.VolumeNodeAffinity" }, "persistentVolumeReclaimPolicy": { "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\nPossible enum values:\n - `\"Delete\"` means the volume will be deleted from Kubernetes on release from its claim. The volume plugin must support Deletion.\n - `\"Recycle\"` means the volume will be recycled back into the pool of unbound persistent volumes on release from its claim. The volume plugin must support Recycling.\n - `\"Retain\"` means the volume will be left in its current phase (Released) for manual reclamation by the administrator. The default policy is Retain.", "type": "string", "enum": ["Delete", "Recycle", "Retain"] }, "photonPersistentDisk": { "description": "photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine", "$ref": "#/definitions/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource" }, "portworxVolume": { "description": "portworxVolume represents a portworx volume attached and mounted on kubelets host machine", "$ref": "#/definitions/io.k8s.api.core.v1.PortworxVolumeSource" }, "quobyte": { "description": "quobyte represents a Quobyte mount on the host that shares a pod's lifetime", "$ref": "#/definitions/io.k8s.api.core.v1.QuobyteVolumeSource" }, "rbd": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.RBDPersistentVolumeSource" }, "scaleIO": { "description": "scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.", "$ref": "#/definitions/io.k8s.api.core.v1.ScaleIOPersistentVolumeSource" }, "storageClassName": { "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.", "type": "string" }, "storageos": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.StorageOSPersistentVolumeSource" }, "volumeMode": { "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.", "type": "string" }, "vsphereVolume": { "description": "vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine", "$ref": "#/definitions/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource" } } }, "io.k8s.api.core.v1.PersistentVolumeStatus": { "description": "PersistentVolumeStatus is the current status of a persistent volume.", "type": "object", "properties": { "message": { "description": "message is a human-readable message indicating details about why the volume is in this state.", "type": "string" }, "phase": { "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\nPossible enum values:\n - `\"Available\"` used for PersistentVolumes that are not yet bound Available volumes are held by the binder and matched to PersistentVolumeClaims\n - `\"Bound\"` used for PersistentVolumes that are bound\n - `\"Failed\"` used for PersistentVolumes that failed to be correctly recycled or deleted after being released from a claim\n - `\"Pending\"` used for PersistentVolumes that are not available\n - `\"Released\"` used for PersistentVolumes where the bound PersistentVolumeClaim was deleted released volumes must be recycled before becoming available again this phase is used by the persistent volume claim binder to signal to another process to reclaim the resource", "type": "string", "enum": ["Available", "Bound", "Failed", "Pending", "Released"] }, "reason": { "description": "reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI.", "type": "string" } } }, "io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource": { "description": "Represents a Photon Controller persistent disk resource.", "type": "object", "required": ["pdID"], "properties": { "fsType": { "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.", "type": "string" }, "pdID": { "description": "pdID is the ID that identifies Photon Controller persistent disk", "type": "string" } } }, "io.k8s.api.core.v1.Pod": { "description": "Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.PodSpec" }, "status": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.PodStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Pod", "version": "v1" } ] }, "io.k8s.api.core.v1.PodAffinity": { "description": "Pod affinity is a group of inter pod affinity scheduling rules.", "type": "object", "properties": { "preferredDuringSchedulingIgnoredDuringExecution": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm" } }, "requiredDuringSchedulingIgnoredDuringExecution": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PodAffinityTerm" } } } }, "io.k8s.api.core.v1.PodAffinityTerm": { "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 \u003ctopologyKey\u003e matches that of any node on which a pod of the set of pods is running", "type": "object", "required": ["topologyKey"], "properties": { "labelSelector": { "description": "A label query over a set of resources, in this case pods.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "namespaceSelector": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "namespaces": { "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\".", "type": "array", "items": { "type": "string" } }, "topologyKey": { "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.", "type": "string" } } }, "io.k8s.api.core.v1.PodAntiAffinity": { "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", "type": "object", "properties": { "preferredDuringSchedulingIgnoredDuringExecution": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm" } }, "requiredDuringSchedulingIgnoredDuringExecution": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PodAffinityTerm" } } } }, "io.k8s.api.core.v1.PodCondition": { "description": "PodCondition contains details for the current condition of this pod.", "type": "object", "required": ["type", "status"], "properties": { "lastProbeTime": { "description": "Last time we probed the condition.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "lastTransitionTime": { "description": "Last time the condition transitioned from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "Human-readable message indicating details about last transition.", "type": "string" }, "reason": { "description": "Unique, one-word, CamelCase reason for the condition's last transition.", "type": "string" }, "status": { "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", "type": "string" }, "type": { "description": "Type is the type of the condition. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions", "type": "string" } } }, "io.k8s.api.core.v1.PodDNSConfig": { "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.", "type": "object", "properties": { "nameservers": { "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.", "type": "array", "items": { "type": "string" } }, "options": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PodDNSConfigOption" } }, "searches": { "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.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.PodDNSConfigOption": { "description": "PodDNSConfigOption defines DNS resolver options of a pod.", "type": "object", "properties": { "name": { "description": "Required.", "type": "string" }, "value": { "type": "string" } } }, "io.k8s.api.core.v1.PodIP": { "description": "IP address information for entries in the (plural) PodIPs field. Each entry includes:\n\n\tIP: An IP address allocated to the pod. Routable at least within the cluster.", "type": "object", "properties": { "ip": { "description": "ip is an IP address (IPv4 or IPv6) assigned to the pod", "type": "string" } } }, "io.k8s.api.core.v1.PodList": { "description": "PodList is a list of Pods.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "List of pods. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PodList", "version": "v1" } ] }, "io.k8s.api.core.v1.PodOS": { "description": "PodOS defines the OS parameters of a pod.", "type": "object", "required": ["name"], "properties": { "name": { "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", "type": "string" } } }, "io.k8s.api.core.v1.PodReadinessGate": { "description": "PodReadinessGate contains the reference to a pod condition", "type": "object", "required": ["conditionType"], "properties": { "conditionType": { "description": "ConditionType refers to a condition in the pod's condition list with matching type.", "type": "string" } } }, "io.k8s.api.core.v1.PodResourceClaim": { "description": "PodResourceClaim references exactly one ResourceClaim through a ClaimSource. 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.", "type": "object", "required": ["name"], "properties": { "name": { "description": "Name uniquely identifies this resource claim inside the pod. This must be a DNS_LABEL.", "type": "string" }, "source": { "description": "Source describes where to find the ResourceClaim.", "$ref": "#/definitions/io.k8s.api.core.v1.ClaimSource" } } }, "io.k8s.api.core.v1.PodSchedulingGate": { "description": "PodSchedulingGate is associated to a Pod to guard its scheduling.", "type": "object", "required": ["name"], "properties": { "name": { "description": "Name of the scheduling gate. Each scheduling gate must have a unique name field.", "type": "string" } } }, "io.k8s.api.core.v1.PodSecurityContext": { "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.", "type": "object", "properties": { "fsGroup": { "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.", "type": "integer", "format": "int64" }, "fsGroupChangePolicy": { "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.", "type": "string" }, "runAsGroup": { "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.", "type": "integer", "format": "int64" }, "runAsNonRoot": { "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.", "type": "boolean" }, "runAsUser": { "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.", "type": "integer", "format": "int64" }, "seLinuxOptions": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.SELinuxOptions" }, "seccompProfile": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.SeccompProfile" }, "supplementalGroups": { "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.", "type": "array", "items": { "type": "integer", "format": "int64" } }, "sysctls": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Sysctl" } }, "windowsOptions": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.WindowsSecurityContextOptions" } } }, "io.k8s.api.core.v1.PodSpec": { "description": "PodSpec is a description of a pod.", "type": "object", "required": ["containers"], "properties": { "activeDeadlineSeconds": { "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.", "type": "integer", "format": "int64" }, "affinity": { "description": "If specified, the pod's scheduling constraints", "$ref": "#/definitions/io.k8s.api.core.v1.Affinity" }, "automountServiceAccountToken": { "description": "AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.", "type": "boolean" }, "containers": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Container" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "dnsConfig": { "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.", "$ref": "#/definitions/io.k8s.api.core.v1.PodDNSConfig" }, "dnsPolicy": { "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\nPossible enum values:\n - `\"ClusterFirst\"` indicates that the pod should use cluster DNS first unless hostNetwork is true, if it is available, then fall back on the default (as determined by kubelet) DNS settings.\n - `\"ClusterFirstWithHostNet\"` indicates that the pod should use cluster DNS first, if it is available, then fall back on the default (as determined by kubelet) DNS settings.\n - `\"Default\"` indicates that the pod should use the default (as determined by kubelet) DNS settings.\n - `\"None\"` indicates that the pod should use empty DNS settings. DNS parameters such as nameservers and search paths should be defined via DNSConfig.", "type": "string", "enum": ["ClusterFirst", "ClusterFirstWithHostNet", "Default", "None"] }, "enableServiceLinks": { "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.", "type": "boolean" }, "ephemeralContainers": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EphemeralContainer" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "hostAliases": { "description": "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.HostAlias" }, "x-kubernetes-patch-merge-key": "ip", "x-kubernetes-patch-strategy": "merge" }, "hostIPC": { "description": "Use the host's ipc namespace. Optional: Default to false.", "type": "boolean" }, "hostNetwork": { "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.", "type": "boolean" }, "hostPID": { "description": "Use the host's pid namespace. Optional: Default to false.", "type": "boolean" }, "hostUsers": { "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.", "type": "boolean" }, "hostname": { "description": "Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", "type": "string" }, "imagePullSecrets": { "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", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "initContainers": { "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/", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Container" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "nodeName": { "description": "NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.", "type": "string" }, "nodeSelector": { "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/", "type": "object", "additionalProperties": { "type": "string" }, "x-kubernetes-map-type": "atomic" }, "os": { "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.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.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", "$ref": "#/definitions/io.k8s.api.core.v1.PodOS" }, "overhead": { "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", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "preemptionPolicy": { "description": "PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset.", "type": "string" }, "priority": { "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.", "type": "integer", "format": "int32" }, "priorityClassName": { "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.", "type": "string" }, "readinessGates": { "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", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PodReadinessGate" } }, "resourceClaims": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PodResourceClaim" }, "x-kubernetes-list-map-keys": ["name"], "x-kubernetes-list-type": "map", "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge,retainKeys" }, "restartPolicy": { "description": "Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\n\nPossible enum values:\n - `\"Always\"`\n - `\"Never\"`\n - `\"OnFailure\"`", "type": "string", "enum": ["Always", "Never", "OnFailure"] }, "runtimeClassName": { "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", "type": "string" }, "schedulerName": { "description": "If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.", "type": "string" }, "schedulingGates": { "description": "SchedulingGates is an opaque list of values that if specified will block scheduling the pod. More info: https://git.k8s.io/enhancements/keps/sig-scheduling/3521-pod-scheduling-readiness.\n\nThis is an alpha-level feature enabled by PodSchedulingReadiness feature gate.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PodSchedulingGate" }, "x-kubernetes-list-map-keys": ["name"], "x-kubernetes-list-type": "map", "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "securityContext": { "description": "SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.", "$ref": "#/definitions/io.k8s.api.core.v1.PodSecurityContext" }, "serviceAccount": { "description": "DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.", "type": "string" }, "serviceAccountName": { "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/", "type": "string" }, "setHostnameAsFQDN": { "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.", "type": "boolean" }, "shareProcessNamespace": { "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.", "type": "boolean" }, "subdomain": { "description": "If specified, the fully qualified Pod hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the pod will not have a domainname at all.", "type": "string" }, "terminationGracePeriodSeconds": { "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.", "type": "integer", "format": "int64" }, "tolerations": { "description": "If specified, the pod's tolerations.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Toleration" } }, "topologySpreadConstraints": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.TopologySpreadConstraint" }, "x-kubernetes-list-map-keys": ["topologyKey", "whenUnsatisfiable"], "x-kubernetes-list-type": "map", "x-kubernetes-patch-merge-key": "topologyKey", "x-kubernetes-patch-strategy": "merge" }, "volumes": { "description": "List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Volume" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge,retainKeys" } } }, "io.k8s.api.core.v1.PodStatus": { "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.", "type": "object", "properties": { "conditions": { "description": "Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PodCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "containerStatuses": { "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", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStatus" } }, "ephemeralContainerStatuses": { "description": "Status for any ephemeral containers that have run in this pod.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStatus" } }, "hostIP": { "description": "IP address of the host to which the pod is assigned. Empty if not yet scheduled.", "type": "string" }, "initContainerStatuses": { "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", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStatus" } }, "message": { "description": "A human readable message indicating details about why the pod is in this condition.", "type": "string" }, "nominatedNodeName": { "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.", "type": "string" }, "phase": { "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\nPossible enum values:\n - `\"Failed\"` means that all containers in the pod have terminated, and at least one container has terminated in a failure (exited with a non-zero exit code or was stopped by the system).\n - `\"Pending\"` means the pod has been accepted by the system, but one or more of the containers has not been started. This includes time before being bound to a node, as well as time spent pulling images onto the host.\n - `\"Running\"` means the pod has been bound to a node and all of the containers have been started. At least one container is still running or is in the process of being restarted.\n - `\"Succeeded\"` means that all containers in the pod have voluntarily terminated with a container exit code of 0, and the system is not going to restart any of these containers.\n - `\"Unknown\"` means that 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. Deprecated: It isn't being set since 2015 (74da3b14b0c0f658b3bb8d2def5094686d0e9095)", "type": "string", "enum": ["Failed", "Pending", "Running", "Succeeded", "Unknown"] }, "podIP": { "description": "IP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated.", "type": "string" }, "podIPs": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PodIP" }, "x-kubernetes-patch-merge-key": "ip", "x-kubernetes-patch-strategy": "merge" }, "qosClass": { "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://git.k8s.io/community/contributors/design-proposals/node/resource-qos.md\n\nPossible enum values:\n - `\"BestEffort\"` is the BestEffort qos class.\n - `\"Burstable\"` is the Burstable qos class.\n - `\"Guaranteed\"` is the Guaranteed qos class.", "type": "string", "enum": ["BestEffort", "Burstable", "Guaranteed"] }, "reason": { "description": "A brief CamelCase message indicating details about why the pod is in this state. e.g. 'Evicted'", "type": "string" }, "startTime": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } } }, "io.k8s.api.core.v1.PodTemplate": { "description": "PodTemplate describes a template for creating copies of a predefined pod.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "template": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplateSpec" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PodTemplate", "version": "v1" } ] }, "io.k8s.api.core.v1.PodTemplateList": { "description": "PodTemplateList is a list of PodTemplates.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "List of pod templates", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplate" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PodTemplateList", "version": "v1" } ] }, "io.k8s.api.core.v1.PodTemplateSpec": { "description": "PodTemplateSpec describes the data a pod should have when created from a template", "type": "object", "properties": { "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.PodSpec" } } }, "io.k8s.api.core.v1.PortStatus": { "type": "object", "required": ["port", "protocol"], "properties": { "error": { "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.", "type": "string" }, "port": { "description": "Port is the port number of the service port of which status is recorded here", "type": "integer", "format": "int32" }, "protocol": { "description": "Protocol is the protocol of the service port of which status is recorded here The supported values are: \"TCP\", \"UDP\", \"SCTP\"\n\nPossible enum values:\n - `\"SCTP\"` is the SCTP protocol.\n - `\"TCP\"` is the TCP protocol.\n - `\"UDP\"` is the UDP protocol.", "type": "string", "enum": ["SCTP", "TCP", "UDP"] } } }, "io.k8s.api.core.v1.PortworxVolumeSource": { "description": "PortworxVolumeSource represents a Portworx volume resource.", "type": "object", "required": ["volumeID"], "properties": { "fsType": { "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.", "type": "string" }, "readOnly": { "description": "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "volumeID": { "description": "volumeID uniquely identifies a Portworx volume", "type": "string" } } }, "io.k8s.api.core.v1.PreferredSchedulingTerm": { "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).", "type": "object", "required": ["weight", "preference"], "properties": { "preference": { "description": "A node selector term, associated with the corresponding weight.", "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelectorTerm" }, "weight": { "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", "type": "integer", "format": "int32" } } }, "io.k8s.api.core.v1.Probe": { "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.", "type": "object", "properties": { "exec": { "description": "Exec specifies the action to take.", "$ref": "#/definitions/io.k8s.api.core.v1.ExecAction" }, "failureThreshold": { "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.", "type": "integer", "format": "int32" }, "grpc": { "description": "GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate.", "$ref": "#/definitions/io.k8s.api.core.v1.GRPCAction" }, "httpGet": { "description": "HTTPGet specifies the http request to perform.", "$ref": "#/definitions/io.k8s.api.core.v1.HTTPGetAction" }, "initialDelaySeconds": { "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", "type": "integer", "format": "int32" }, "periodSeconds": { "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.", "type": "integer", "format": "int32" }, "successThreshold": { "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.", "type": "integer", "format": "int32" }, "tcpSocket": { "description": "TCPSocket specifies an action involving a TCP port.", "$ref": "#/definitions/io.k8s.api.core.v1.TCPSocketAction" }, "terminationGracePeriodSeconds": { "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.", "type": "integer", "format": "int64" }, "timeoutSeconds": { "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", "type": "integer", "format": "int32" } } }, "io.k8s.api.core.v1.ProjectedVolumeSource": { "description": "Represents a projected volume source", "type": "object", "properties": { "defaultMode": { "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.", "type": "integer", "format": "int32" }, "sources": { "description": "sources is the list of volume projections", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.VolumeProjection" } } } }, "io.k8s.api.core.v1.QuobyteVolumeSource": { "description": "Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.", "type": "object", "required": ["registry", "volume"], "properties": { "group": { "description": "group to map volume access to Default is no group", "type": "string" }, "readOnly": { "description": "readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.", "type": "boolean" }, "registry": { "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", "type": "string" }, "tenant": { "description": "tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin", "type": "string" }, "user": { "description": "user to map volume access to Defaults to serivceaccount user", "type": "string" }, "volume": { "description": "volume is a string that references an already created Quobyte volume by name.", "type": "string" } } }, "io.k8s.api.core.v1.RBDPersistentVolumeSource": { "description": "Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.", "type": "object", "required": ["monitors", "image"], "properties": { "fsType": { "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", "type": "string" }, "image": { "description": "image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "type": "string" }, "keyring": { "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", "type": "string" }, "monitors": { "description": "monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "type": "array", "items": { "type": "string" } }, "pool": { "description": "pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "type": "string" }, "readOnly": { "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", "type": "boolean" }, "secretRef": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.SecretReference" }, "user": { "description": "user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "type": "string" } } }, "io.k8s.api.core.v1.RBDVolumeSource": { "description": "Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.", "type": "object", "required": ["monitors", "image"], "properties": { "fsType": { "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", "type": "string" }, "image": { "description": "image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "type": "string" }, "keyring": { "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", "type": "string" }, "monitors": { "description": "monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "type": "array", "items": { "type": "string" } }, "pool": { "description": "pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "type": "string" }, "readOnly": { "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", "type": "boolean" }, "secretRef": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "user": { "description": "user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "type": "string" } } }, "io.k8s.api.core.v1.ReplicationController": { "description": "ReplicationController represents the configuration of a replication controller.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "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", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationControllerSpec" }, "status": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationControllerStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ReplicationController", "version": "v1" } ] }, "io.k8s.api.core.v1.ReplicationControllerCondition": { "description": "ReplicationControllerCondition describes the state of a replication controller at a certain point.", "type": "object", "required": ["type", "status"], "properties": { "lastTransitionTime": { "description": "The last time the condition transitioned from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "A human readable message indicating details about the transition.", "type": "string" }, "reason": { "description": "The reason for the condition's last transition.", "type": "string" }, "status": { "description": "Status of the condition, one of True, False, Unknown.", "type": "string" }, "type": { "description": "Type of replication controller condition.", "type": "string" } } }, "io.k8s.api.core.v1.ReplicationControllerList": { "description": "ReplicationControllerList is a collection of replication controllers.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "List of replication controllers. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ReplicationControllerList", "version": "v1" } ] }, "io.k8s.api.core.v1.ReplicationControllerSpec": { "description": "ReplicationControllerSpec is the specification of a replication controller.", "type": "object", "properties": { "minReadySeconds": { "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)", "type": "integer", "format": "int32" }, "replicas": { "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", "type": "integer", "format": "int32" }, "selector": { "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", "type": "object", "additionalProperties": { "type": "string" }, "x-kubernetes-map-type": "atomic" }, "template": { "description": "Template is the object that describes the pod that will be created if insufficient replicas are detected. This takes precedence over a TemplateRef. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template", "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplateSpec" } } }, "io.k8s.api.core.v1.ReplicationControllerStatus": { "description": "ReplicationControllerStatus represents the current status of a replication controller.", "type": "object", "required": ["replicas"], "properties": { "availableReplicas": { "description": "The number of available replicas (ready for at least minReadySeconds) for this replication controller.", "type": "integer", "format": "int32" }, "conditions": { "description": "Represents the latest available observations of a replication controller's current state.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationControllerCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "fullyLabeledReplicas": { "description": "The number of pods that have labels matching the labels of the pod template of the replication controller.", "type": "integer", "format": "int32" }, "observedGeneration": { "description": "ObservedGeneration reflects the generation of the most recently observed replication controller.", "type": "integer", "format": "int64" }, "readyReplicas": { "description": "The number of ready replicas for this replication controller.", "type": "integer", "format": "int32" }, "replicas": { "description": "Replicas is the most recently observed number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller", "type": "integer", "format": "int32" } } }, "io.k8s.api.core.v1.ResourceClaim": { "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", "type": "object", "required": ["name"], "properties": { "name": { "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.", "type": "string" } } }, "io.k8s.api.core.v1.ResourceFieldSelector": { "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", "type": "object", "required": ["resource"], "properties": { "containerName": { "description": "Container name: required for volumes, optional for env vars", "type": "string" }, "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" }, "resource": { "description": "Required: resource to select", "type": "string" } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.ResourceQuota": { "description": "ResourceQuota sets aggregate quota restrictions enforced per namespace", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec defines the desired quota. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuotaSpec" }, "status": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuotaStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ResourceQuota", "version": "v1" } ] }, "io.k8s.api.core.v1.ResourceQuotaList": { "description": "ResourceQuotaList is a list of ResourceQuota items.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is a list of ResourceQuota objects. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ResourceQuotaList", "version": "v1" } ] }, "io.k8s.api.core.v1.ResourceQuotaSpec": { "description": "ResourceQuotaSpec defines the desired hard limits to enforce for Quota.", "type": "object", "properties": { "hard": { "description": "hard is the set of desired hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "scopeSelector": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.ScopeSelector" }, "scopes": { "description": "A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.ResourceQuotaStatus": { "description": "ResourceQuotaStatus defines the enforced hard limits and observed use.", "type": "object", "properties": { "hard": { "description": "Hard is the set of enforced hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "used": { "description": "Used is the current observed total usage of the resource in the namespace.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } } } }, "io.k8s.api.core.v1.ResourceRequirements": { "description": "ResourceRequirements describes the compute resource requirements.", "type": "object", "properties": { "claims": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceClaim" }, "x-kubernetes-list-type": "set" }, "limits": { "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "requests": { "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. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } } } }, "io.k8s.api.core.v1.SELinuxOptions": { "description": "SELinuxOptions are the labels to be applied to the container", "type": "object", "properties": { "level": { "description": "Level is SELinux level label that applies to the container.", "type": "string" }, "role": { "description": "Role is a SELinux role label that applies to the container.", "type": "string" }, "type": { "description": "Type is a SELinux type label that applies to the container.", "type": "string" }, "user": { "description": "User is a SELinux user label that applies to the container.", "type": "string" } } }, "io.k8s.api.core.v1.ScaleIOPersistentVolumeSource": { "description": "ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume", "type": "object", "required": ["gateway", "system", "secretRef"], "properties": { "fsType": { "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\"", "type": "string" }, "gateway": { "description": "gateway is the host address of the ScaleIO API Gateway.", "type": "string" }, "protectionDomain": { "description": "protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.", "type": "string" }, "readOnly": { "description": "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretRef": { "description": "secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.", "$ref": "#/definitions/io.k8s.api.core.v1.SecretReference" }, "sslEnabled": { "description": "sslEnabled is the flag to enable/disable SSL communication with Gateway, default false", "type": "boolean" }, "storageMode": { "description": "storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.", "type": "string" }, "storagePool": { "description": "storagePool is the ScaleIO Storage Pool associated with the protection domain.", "type": "string" }, "system": { "description": "system is the name of the storage system as configured in ScaleIO.", "type": "string" }, "volumeName": { "description": "volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.", "type": "string" } } }, "io.k8s.api.core.v1.ScaleIOVolumeSource": { "description": "ScaleIOVolumeSource represents a persistent ScaleIO volume", "type": "object", "required": ["gateway", "system", "secretRef"], "properties": { "fsType": { "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\".", "type": "string" }, "gateway": { "description": "gateway is the host address of the ScaleIO API Gateway.", "type": "string" }, "protectionDomain": { "description": "protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.", "type": "string" }, "readOnly": { "description": "readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretRef": { "description": "secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "sslEnabled": { "description": "sslEnabled Flag enable/disable SSL communication with Gateway, default false", "type": "boolean" }, "storageMode": { "description": "storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.", "type": "string" }, "storagePool": { "description": "storagePool is the ScaleIO Storage Pool associated with the protection domain.", "type": "string" }, "system": { "description": "system is the name of the storage system as configured in ScaleIO.", "type": "string" }, "volumeName": { "description": "volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.", "type": "string" } } }, "io.k8s.api.core.v1.ScopeSelector": { "description": "A scope selector represents the AND of the selectors represented by the scoped-resource selector requirements.", "type": "object", "properties": { "matchExpressions": { "description": "A list of scope selector requirements by scope of the resources.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ScopedResourceSelectorRequirement" } } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.ScopedResourceSelectorRequirement": { "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.", "type": "object", "required": ["scopeName", "operator"], "properties": { "operator": { "description": "Represents a scope's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist.\n\nPossible enum values:\n - `\"DoesNotExist\"`\n - `\"Exists\"`\n - `\"In\"`\n - `\"NotIn\"`", "type": "string", "enum": ["DoesNotExist", "Exists", "In", "NotIn"] }, "scopeName": { "description": "The name of the scope that the selector applies to.\n\nPossible enum values:\n - `\"BestEffort\"` Match all pod objects that have best effort quality of service\n - `\"CrossNamespacePodAffinity\"` Match all pod objects that have cross-namespace pod (anti)affinity mentioned.\n - `\"NotBestEffort\"` Match all pod objects that do not have best effort quality of service\n - `\"NotTerminating\"` Match all pod objects where spec.activeDeadlineSeconds is nil\n - `\"PriorityClass\"` Match all pod objects that have priority class mentioned\n - `\"Terminating\"` Match all pod objects where spec.activeDeadlineSeconds \u003e=0", "type": "string", "enum": [ "BestEffort", "CrossNamespacePodAffinity", "NotBestEffort", "NotTerminating", "PriorityClass", "Terminating" ] }, "values": { "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.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.SeccompProfile": { "description": "SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set.", "type": "object", "required": ["type"], "properties": { "localhostProfile": { "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 only be set if type is \"Localhost\".", "type": "string" }, "type": { "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\nPossible enum values:\n - `\"Localhost\"` indicates a profile defined in a file on the node should be used. The file's location relative to \u003ckubelet-root-dir\u003e/seccomp.\n - `\"RuntimeDefault\"` represents the default container runtime seccomp profile.\n - `\"Unconfined\"` indicates no seccomp profile is applied (A.K.A. unconfined).", "type": "string", "enum": ["Localhost", "RuntimeDefault", "Unconfined"] } }, "x-kubernetes-unions": [ { "discriminator": "type", "fields-to-discriminateBy": { "localhostProfile": "LocalhostProfile" } } ] }, "io.k8s.api.core.v1.Secret": { "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.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "data": { "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", "type": "object", "additionalProperties": { "type": "string", "format": "byte" } }, "immutable": { "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.", "type": "boolean" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "stringData": { "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.", "type": "object", "additionalProperties": { "type": "string" } }, "type": { "description": "Used to facilitate programmatic handling of secret data. More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Secret", "version": "v1" } ] }, "io.k8s.api.core.v1.SecretEnvSource": { "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.", "type": "object", "properties": { "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the Secret must be defined", "type": "boolean" } } }, "io.k8s.api.core.v1.SecretKeySelector": { "description": "SecretKeySelector selects a key of a Secret.", "type": "object", "required": ["key"], "properties": { "key": { "description": "The key of the secret to select from. Must be a valid secret key.", "type": "string" }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the Secret or its key must be defined", "type": "boolean" } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.SecretList": { "description": "SecretList is a list of Secret.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is a list of secret objects. More info: https://kubernetes.io/docs/concepts/configuration/secret", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Secret" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "SecretList", "version": "v1" } ] }, "io.k8s.api.core.v1.SecretProjection": { "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.", "type": "object", "properties": { "items": { "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 '..'.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.KeyToPath" } }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "optional field specify whether the Secret or its key must be defined", "type": "boolean" } } }, "io.k8s.api.core.v1.SecretReference": { "description": "SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace", "type": "object", "properties": { "name": { "description": "name is unique within a namespace to reference a secret resource.", "type": "string" }, "namespace": { "description": "namespace defines the space within which the secret name must be unique.", "type": "string" } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.SecretVolumeSource": { "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.", "type": "object", "properties": { "defaultMode": { "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.", "type": "integer", "format": "int32" }, "items": { "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 '..'.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.KeyToPath" } }, "optional": { "description": "optional field specify whether the Secret or its keys must be defined", "type": "boolean" }, "secretName": { "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", "type": "string" } } }, "io.k8s.api.core.v1.SecurityContext": { "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.", "type": "object", "properties": { "allowPrivilegeEscalation": { "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.", "type": "boolean" }, "capabilities": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.Capabilities" }, "privileged": { "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.", "type": "boolean" }, "procMount": { "description": "procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount 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.", "type": "string" }, "readOnlyRootFilesystem": { "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.", "type": "boolean" }, "runAsGroup": { "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.", "type": "integer", "format": "int64" }, "runAsNonRoot": { "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.", "type": "boolean" }, "runAsUser": { "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.", "type": "integer", "format": "int64" }, "seLinuxOptions": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.SELinuxOptions" }, "seccompProfile": { "description": "The seccomp options to use by this container. If seccomp options are provided at both the pod \u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.", "$ref": "#/definitions/io.k8s.api.core.v1.SeccompProfile" }, "windowsOptions": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.WindowsSecurityContextOptions" } } }, "io.k8s.api.core.v1.Service": { "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.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec defines the behavior of a service. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.ServiceSpec" }, "status": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.ServiceStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Service", "version": "v1" } ] }, "io.k8s.api.core.v1.ServiceAccount": { "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", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "automountServiceAccountToken": { "description": "AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. Can be overridden at the pod level.", "type": "boolean" }, "imagePullSecrets": { "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", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "secrets": { "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", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ServiceAccount", "version": "v1" } ] }, "io.k8s.api.core.v1.ServiceAccountList": { "description": "ServiceAccountList is a list of ServiceAccount objects", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "List of ServiceAccounts. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccount" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ServiceAccountList", "version": "v1" } ] }, "io.k8s.api.core.v1.ServiceAccountTokenProjection": { "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).", "type": "object", "required": ["path"], "properties": { "audience": { "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.", "type": "string" }, "expirationSeconds": { "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.", "type": "integer", "format": "int64" }, "path": { "description": "path is the path relative to the mount point of the file to project the token into.", "type": "string" } } }, "io.k8s.api.core.v1.ServiceList": { "description": "ServiceList holds a list of services.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "List of services", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ServiceList", "version": "v1" } ] }, "io.k8s.api.core.v1.ServicePort": { "description": "ServicePort contains information on service's port.", "type": "object", "required": ["port"], "properties": { "appProtocol": { "description": "The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol.", "type": "string" }, "name": { "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.", "type": "string" }, "nodePort": { "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", "type": "integer", "format": "int32" }, "port": { "description": "The port that will be exposed by this service.", "type": "integer", "format": "int32" }, "protocol": { "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.\n\nPossible enum values:\n - `\"SCTP\"` is the SCTP protocol.\n - `\"TCP\"` is the TCP protocol.\n - `\"UDP\"` is the UDP protocol.", "type": "string", "enum": ["SCTP", "TCP", "UDP"] }, "targetPort": { "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", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" } } }, "io.k8s.api.core.v1.ServiceSpec": { "description": "ServiceSpec describes the attributes that a user creates on a service.", "type": "object", "properties": { "allocateLoadBalancerNodePorts": { "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.", "type": "boolean" }, "clusterIP": { "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", "type": "string" }, "clusterIPs": { "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", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "atomic" }, "externalIPs": { "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.", "type": "array", "items": { "type": "string" } }, "externalName": { "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\".", "type": "string" }, "externalTrafficPolicy": { "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\nPossible enum values:\n - `\"Cluster\"` routes traffic to all endpoints.\n - `\"Local\"` preserves the source IP of the traffic by routing only to endpoints on the same node as the traffic was received on (dropping the traffic if there are no local endpoints).", "type": "string", "enum": ["Cluster", "Local"] }, "healthCheckNodePort": { "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.", "type": "integer", "format": "int32" }, "internalTrafficPolicy": { "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).", "type": "string" }, "ipFamilies": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "atomic" }, "ipFamilyPolicy": { "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.", "type": "string" }, "loadBalancerClass": { "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.", "type": "string" }, "loadBalancerIP": { "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, and it cannot support dual-stack. As of Kubernetes v1.24, users are encouraged to use implementation-specific annotations when available. This field may be removed in a future API version.", "type": "string" }, "loadBalancerSourceRanges": { "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/", "type": "array", "items": { "type": "string" } }, "ports": { "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", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ServicePort" }, "x-kubernetes-list-map-keys": ["port", "protocol"], "x-kubernetes-list-type": "map", "x-kubernetes-patch-merge-key": "port", "x-kubernetes-patch-strategy": "merge" }, "publishNotReadyAddresses": { "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.", "type": "boolean" }, "selector": { "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/", "type": "object", "additionalProperties": { "type": "string" }, "x-kubernetes-map-type": "atomic" }, "sessionAffinity": { "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\nPossible enum values:\n - `\"ClientIP\"` is the Client IP based.\n - `\"None\"` - no session affinity.", "type": "string", "enum": ["ClientIP", "None"] }, "sessionAffinityConfig": { "description": "sessionAffinityConfig contains the configurations of session affinity.", "$ref": "#/definitions/io.k8s.api.core.v1.SessionAffinityConfig" }, "type": { "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\nPossible enum values:\n - `\"ClusterIP\"` means a service will only be accessible inside the cluster, via the cluster IP.\n - `\"ExternalName\"` means a service consists of only a reference to an external name that kubedns or equivalent will return as a CNAME record, with no exposing or proxying of any pods involved.\n - `\"LoadBalancer\"` means a service will be exposed via an external load balancer (if the cloud provider supports it), in addition to 'NodePort' type.\n - `\"NodePort\"` means a service will be exposed on one port of every node, in addition to 'ClusterIP' type.", "type": "string", "enum": ["ClusterIP", "ExternalName", "LoadBalancer", "NodePort"] } } }, "io.k8s.api.core.v1.ServiceStatus": { "description": "ServiceStatus represents the current status of a service.", "type": "object", "properties": { "conditions": { "description": "Current service state", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Condition" }, "x-kubernetes-list-map-keys": ["type"], "x-kubernetes-list-type": "map", "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "loadBalancer": { "description": "LoadBalancer contains the current status of the load-balancer, if one is present.", "$ref": "#/definitions/io.k8s.api.core.v1.LoadBalancerStatus" } } }, "io.k8s.api.core.v1.SessionAffinityConfig": { "description": "SessionAffinityConfig represents the configurations of session affinity.", "type": "object", "properties": { "clientIP": { "description": "clientIP contains the configurations of Client IP based session affinity.", "$ref": "#/definitions/io.k8s.api.core.v1.ClientIPConfig" } } }, "io.k8s.api.core.v1.StorageOSPersistentVolumeSource": { "description": "Represents a StorageOS persistent volume resource.", "type": "object", "properties": { "fsType": { "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.", "type": "string" }, "readOnly": { "description": "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretRef": { "description": "secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" }, "volumeName": { "description": "volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.", "type": "string" }, "volumeNamespace": { "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.", "type": "string" } } }, "io.k8s.api.core.v1.StorageOSVolumeSource": { "description": "Represents a StorageOS persistent volume resource.", "type": "object", "properties": { "fsType": { "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.", "type": "string" }, "readOnly": { "description": "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretRef": { "description": "secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "volumeName": { "description": "volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.", "type": "string" }, "volumeNamespace": { "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.", "type": "string" } } }, "io.k8s.api.core.v1.Sysctl": { "description": "Sysctl defines a kernel parameter to be set", "type": "object", "required": ["name", "value"], "properties": { "name": { "description": "Name of a property to set", "type": "string" }, "value": { "description": "Value of a property to set", "type": "string" } } }, "io.k8s.api.core.v1.TCPSocketAction": { "description": "TCPSocketAction describes an action based on opening a socket", "type": "object", "required": ["port"], "properties": { "host": { "description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string" }, "port": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" } } }, "io.k8s.api.core.v1.Taint": { "description": "The node this Taint is attached to has the \"effect\" on any pod that does not tolerate the Taint.", "type": "object", "required": ["key", "effect"], "properties": { "effect": { "description": "Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute.\n\nPossible enum values:\n - `\"NoExecute\"` Evict any already-running pods that do not tolerate the taint. Currently enforced by NodeController.\n - `\"NoSchedule\"` Do not allow new pods to schedule onto the node unless they tolerate the taint, but allow all pods submitted to Kubelet without going through the scheduler to start, and allow all already-running pods to continue running. Enforced by the scheduler.\n - `\"PreferNoSchedule\"` Like TaintEffectNoSchedule, but the scheduler tries not to schedule new pods onto the node, rather than prohibiting new pods from scheduling onto the node entirely. Enforced by the scheduler.", "type": "string", "enum": ["NoExecute", "NoSchedule", "PreferNoSchedule"] }, "key": { "description": "Required. The taint key to be applied to a node.", "type": "string" }, "timeAdded": { "description": "TimeAdded represents the time at which the taint was added. It is only written for NoExecute taints.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "value": { "description": "The taint value corresponding to the taint key.", "type": "string" } } }, "io.k8s.api.core.v1.Toleration": { "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", "type": "object", "properties": { "effect": { "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n\nPossible enum values:\n - `\"NoExecute\"` Evict any already-running pods that do not tolerate the taint. Currently enforced by NodeController.\n - `\"NoSchedule\"` Do not allow new pods to schedule onto the node unless they tolerate the taint, but allow all pods submitted to Kubelet without going through the scheduler to start, and allow all already-running pods to continue running. Enforced by the scheduler.\n - `\"PreferNoSchedule\"` Like TaintEffectNoSchedule, but the scheduler tries not to schedule new pods onto the node, rather than prohibiting new pods from scheduling onto the node entirely. Enforced by the scheduler.", "type": "string", "enum": ["NoExecute", "NoSchedule", "PreferNoSchedule"] }, "key": { "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.", "type": "string" }, "operator": { "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\nPossible enum values:\n - `\"Equal\"`\n - `\"Exists\"`", "type": "string", "enum": ["Equal", "Exists"] }, "tolerationSeconds": { "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.", "type": "integer", "format": "int64" }, "value": { "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.", "type": "string" } } }, "io.k8s.api.core.v1.TopologySelectorLabelRequirement": { "description": "A topology selector requirement is a selector that matches given label. This is an alpha feature and may change in the future.", "type": "object", "required": ["key", "values"], "properties": { "key": { "description": "The label key that the selector applies to.", "type": "string" }, "values": { "description": "An array of string values. One value must match the label to be selected. Each entry in Values is ORed.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.TopologySelectorTerm": { "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.", "type": "object", "properties": { "matchLabelExpressions": { "description": "A list of topology selector requirements by labels.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.TopologySelectorLabelRequirement" } } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.TopologySpreadConstraint": { "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", "type": "object", "required": ["maxSkew", "topologyKey", "whenUnsatisfiable"], "properties": { "labelSelector": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "matchLabelKeys": { "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. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "atomic" }, "maxSkew": { "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.", "type": "integer", "format": "int32" }, "minDomains": { "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\nThis is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default).", "type": "integer", "format": "int32" }, "nodeAffinityPolicy": { "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.", "type": "string" }, "nodeTaintsPolicy": { "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.", "type": "string" }, "topologyKey": { "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 \u003ckey, value\u003e 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.", "type": "string" }, "whenUnsatisfiable": { "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\nPossible enum values:\n - `\"DoNotSchedule\"` instructs the scheduler not to schedule the pod when constraints are not satisfied.\n - `\"ScheduleAnyway\"` instructs the scheduler to schedule the pod even if constraints are not satisfied.", "type": "string", "enum": ["DoNotSchedule", "ScheduleAnyway"] } } }, "io.k8s.api.core.v1.TypedLocalObjectReference": { "description": "TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.", "type": "object", "required": ["kind", "name"], "properties": { "apiGroup": { "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.", "type": "string" }, "kind": { "description": "Kind is the type of resource being referenced", "type": "string" }, "name": { "description": "Name is the name of resource being referenced", "type": "string" } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.TypedObjectReference": { "type": "object", "required": ["kind", "name"], "properties": { "apiGroup": { "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.", "type": "string" }, "kind": { "description": "Kind is the type of resource being referenced", "type": "string" }, "name": { "description": "Name is the name of resource being referenced", "type": "string" }, "namespace": { "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.", "type": "string" } } }, "io.k8s.api.core.v1.Volume": { "description": "Volume represents a named volume in a pod that may be accessed by any container in the pod.", "type": "object", "required": ["name"], "properties": { "awsElasticBlockStore": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource" }, "azureDisk": { "description": "azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.AzureDiskVolumeSource" }, "azureFile": { "description": "azureFile represents an Azure File Service mount on the host and bind mount to the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.AzureFileVolumeSource" }, "cephfs": { "description": "cephFS represents a Ceph FS mount on the host that shares a pod's lifetime", "$ref": "#/definitions/io.k8s.api.core.v1.CephFSVolumeSource" }, "cinder": { "description": "cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md", "$ref": "#/definitions/io.k8s.api.core.v1.CinderVolumeSource" }, "configMap": { "description": "configMap represents a configMap that should populate this volume", "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapVolumeSource" }, "csi": { "description": "csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).", "$ref": "#/definitions/io.k8s.api.core.v1.CSIVolumeSource" }, "downwardAPI": { "description": "downwardAPI represents downward API about the pod that should populate this volume", "$ref": "#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeSource" }, "emptyDir": { "description": "emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "$ref": "#/definitions/io.k8s.api.core.v1.EmptyDirVolumeSource" }, "ephemeral": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.EphemeralVolumeSource" }, "fc": { "description": "fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.FCVolumeSource" }, "flexVolume": { "description": "flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.", "$ref": "#/definitions/io.k8s.api.core.v1.FlexVolumeSource" }, "flocker": { "description": "flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running", "$ref": "#/definitions/io.k8s.api.core.v1.FlockerVolumeSource" }, "gcePersistentDisk": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource" }, "gitRepo": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.GitRepoVolumeSource" }, "glusterfs": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.GlusterfsVolumeSource" }, "hostPath": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.HostPathVolumeSource" }, "iscsi": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.ISCSIVolumeSource" }, "name": { "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", "type": "string" }, "nfs": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.NFSVolumeSource" }, "persistentVolumeClaim": { "description": "persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource" }, "photonPersistentDisk": { "description": "photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine", "$ref": "#/definitions/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource" }, "portworxVolume": { "description": "portworxVolume represents a portworx volume attached and mounted on kubelets host machine", "$ref": "#/definitions/io.k8s.api.core.v1.PortworxVolumeSource" }, "projected": { "description": "projected items for all in one resources secrets, configmaps, and downward API", "$ref": "#/definitions/io.k8s.api.core.v1.ProjectedVolumeSource" }, "quobyte": { "description": "quobyte represents a Quobyte mount on the host that shares a pod's lifetime", "$ref": "#/definitions/io.k8s.api.core.v1.QuobyteVolumeSource" }, "rbd": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.RBDVolumeSource" }, "scaleIO": { "description": "scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.", "$ref": "#/definitions/io.k8s.api.core.v1.ScaleIOVolumeSource" }, "secret": { "description": "secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", "$ref": "#/definitions/io.k8s.api.core.v1.SecretVolumeSource" }, "storageos": { "description": "storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.", "$ref": "#/definitions/io.k8s.api.core.v1.StorageOSVolumeSource" }, "vsphereVolume": { "description": "vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine", "$ref": "#/definitions/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource" } } }, "io.k8s.api.core.v1.VolumeDevice": { "description": "volumeDevice describes a mapping of a raw block device within a container.", "type": "object", "required": ["name", "devicePath"], "properties": { "devicePath": { "description": "devicePath is the path inside of the container that the device will be mapped to.", "type": "string" }, "name": { "description": "name must match the name of a persistentVolumeClaim in the pod", "type": "string" } } }, "io.k8s.api.core.v1.VolumeMount": { "description": "VolumeMount describes a mounting of a Volume within a container.", "type": "object", "required": ["name", "mountPath"], "properties": { "mountPath": { "description": "Path within the container at which the volume should be mounted. Must not contain ':'.", "type": "string" }, "mountPropagation": { "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.", "type": "string" }, "name": { "description": "This must match the Name of a Volume.", "type": "string" }, "readOnly": { "description": "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.", "type": "boolean" }, "subPath": { "description": "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).", "type": "string" }, "subPathExpr": { "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.", "type": "string" } } }, "io.k8s.api.core.v1.VolumeNodeAffinity": { "description": "VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.", "type": "object", "properties": { "required": { "description": "required specifies hard node constraints that must be met.", "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelector" } } }, "io.k8s.api.core.v1.VolumeProjection": { "description": "Projection that may be projected along with other supported volume types", "type": "object", "properties": { "configMap": { "description": "configMap information about the configMap data to project", "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapProjection" }, "downwardAPI": { "description": "downwardAPI information about the downwardAPI data to project", "$ref": "#/definitions/io.k8s.api.core.v1.DownwardAPIProjection" }, "secret": { "description": "secret information about the secret data to project", "$ref": "#/definitions/io.k8s.api.core.v1.SecretProjection" }, "serviceAccountToken": { "description": "serviceAccountToken is information about the serviceAccountToken data to project", "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccountTokenProjection" } } }, "io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource": { "description": "Represents a vSphere volume resource.", "type": "object", "required": ["volumePath"], "properties": { "fsType": { "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.", "type": "string" }, "storagePolicyID": { "description": "storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.", "type": "string" }, "storagePolicyName": { "description": "storagePolicyName is the storage Policy Based Management (SPBM) profile name.", "type": "string" }, "volumePath": { "description": "volumePath is the path that identifies vSphere volume vmdk", "type": "string" } } }, "io.k8s.api.core.v1.WeightedPodAffinityTerm": { "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", "type": "object", "required": ["weight", "podAffinityTerm"], "properties": { "podAffinityTerm": { "description": "Required. A pod affinity term, associated with the corresponding weight.", "$ref": "#/definitions/io.k8s.api.core.v1.PodAffinityTerm" }, "weight": { "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", "type": "integer", "format": "int32" } } }, "io.k8s.api.core.v1.WindowsSecurityContextOptions": { "description": "WindowsSecurityContextOptions contain Windows-specific options and credentials.", "type": "object", "properties": { "gmsaCredentialSpec": { "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.", "type": "string" }, "gmsaCredentialSpecName": { "description": "GMSACredentialSpecName is the name of the GMSA credential spec to use.", "type": "string" }, "hostProcess": { "description": "HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. 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.", "type": "boolean" }, "runAsUserName": { "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.", "type": "string" } } }, "io.k8s.api.discovery.v1.Endpoint": { "description": "Endpoint represents a single logical \"backend\" implementing a service.", "type": "object", "required": ["addresses"], "properties": { "addresses": { "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", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "set" }, "conditions": { "description": "conditions contains information about the current status of the endpoint.", "$ref": "#/definitions/io.k8s.api.discovery.v1.EndpointConditions" }, "deprecatedTopology": { "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.", "type": "object", "additionalProperties": { "type": "string" } }, "hints": { "description": "hints contains information associated with how an endpoint should be consumed.", "$ref": "#/definitions/io.k8s.api.discovery.v1.EndpointHints" }, "hostname": { "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.", "type": "string" }, "nodeName": { "description": "nodeName represents the name of the Node hosting this endpoint. This can be used to determine endpoints local to a Node.", "type": "string" }, "targetRef": { "description": "targetRef is a reference to a Kubernetes object that represents this endpoint.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" }, "zone": { "description": "zone is the name of the Zone this endpoint exists in.", "type": "string" } } }, "io.k8s.api.discovery.v1.EndpointConditions": { "description": "EndpointConditions represents the current condition of an endpoint.", "type": "object", "properties": { "ready": { "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.", "type": "boolean" }, "serving": { "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.", "type": "boolean" }, "terminating": { "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.", "type": "boolean" } } }, "io.k8s.api.discovery.v1.EndpointHints": { "description": "EndpointHints provides hints describing how an endpoint should be consumed.", "type": "object", "properties": { "forZones": { "description": "forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.discovery.v1.ForZone" }, "x-kubernetes-list-type": "atomic" } } }, "io.k8s.api.discovery.v1.EndpointPort": { "description": "EndpointPort represents a Port used by an EndpointSlice", "type": "object", "properties": { "appProtocol": { "description": "The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol.", "type": "string" }, "name": { "description": "The name of this port. All ports in an EndpointSlice must have a unique name. If the EndpointSlice is dervied 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.", "type": "string" }, "port": { "description": "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.", "type": "integer", "format": "int32" }, "protocol": { "description": "The IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP.", "type": "string" } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.api.discovery.v1.EndpointSlice": { "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.", "type": "object", "required": ["addressType", "endpoints"], "properties": { "addressType": { "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\nPossible enum values:\n - `\"FQDN\"` represents a FQDN.\n - `\"IPv4\"` represents an IPv4 Address.\n - `\"IPv6\"` represents an IPv6 Address.", "type": "string", "enum": ["FQDN", "IPv4", "IPv6"] }, "apiVersion": { "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", "type": "string" }, "endpoints": { "description": "endpoints is a list of unique endpoints in this slice. Each slice may include a maximum of 1000 endpoints.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.discovery.v1.Endpoint" }, "x-kubernetes-list-type": "atomic" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "ports": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.discovery.v1.EndpointPort" }, "x-kubernetes-list-type": "atomic" } }, "x-kubernetes-group-version-kind": [ { "group": "discovery.k8s.io", "kind": "EndpointSlice", "version": "v1" } ] }, "io.k8s.api.discovery.v1.EndpointSliceList": { "description": "EndpointSliceList represents a list of endpoint slices", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "List of endpoint slices", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.discovery.v1.EndpointSlice" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "discovery.k8s.io", "kind": "EndpointSliceList", "version": "v1" } ] }, "io.k8s.api.discovery.v1.ForZone": { "description": "ForZone provides information about which zones should consume this endpoint.", "type": "object", "required": ["name"], "properties": { "name": { "description": "name represents the name of the zone.", "type": "string" } } }, "io.k8s.api.events.v1.Event": { "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.", "type": "object", "required": ["eventTime"], "properties": { "action": { "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.", "type": "string" }, "apiVersion": { "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", "type": "string" }, "deprecatedCount": { "description": "deprecatedCount is the deprecated field assuring backward compatibility with core.v1 Event type.", "type": "integer", "format": "int32" }, "deprecatedFirstTimestamp": { "description": "deprecatedFirstTimestamp is the deprecated field assuring backward compatibility with core.v1 Event type.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "deprecatedLastTimestamp": { "description": "deprecatedLastTimestamp is the deprecated field assuring backward compatibility with core.v1 Event type.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "deprecatedSource": { "description": "deprecatedSource is the deprecated field assuring backward compatibility with core.v1 Event type.", "$ref": "#/definitions/io.k8s.api.core.v1.EventSource" }, "eventTime": { "description": "eventTime is the time when this Event was first observed. It is required.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "note": { "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.", "type": "string" }, "reason": { "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.", "type": "string" }, "regarding": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" }, "related": { "description": "related is the optional secondary object for more complex actions. E.g. when regarding object triggers a creation or deletion of related object.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" }, "reportingController": { "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.", "type": "string" }, "reportingInstance": { "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.", "type": "string" }, "series": { "description": "series is data about the Event series this event represents or nil if it's a singleton Event.", "$ref": "#/definitions/io.k8s.api.events.v1.EventSeries" }, "type": { "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.", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "events.k8s.io", "kind": "Event", "version": "v1" } ] }, "io.k8s.api.events.v1.EventList": { "description": "EventList is a list of Event objects.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "items is a list of schema objects.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.events.v1.Event" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "events.k8s.io", "kind": "EventList", "version": "v1" } ] }, "io.k8s.api.events.v1.EventSeries": { "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.", "type": "object", "required": ["count", "lastObservedTime"], "properties": { "count": { "description": "count is the number of occurrences in this series up to the last heartbeat time.", "type": "integer", "format": "int32" }, "lastObservedTime": { "description": "lastObservedTime is the time when last Event from the series was seen before last heartbeat.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime" } } }, "io.k8s.api.flowcontrol.v1beta2.FlowDistinguisherMethod": { "description": "FlowDistinguisherMethod specifies the method of a flow distinguisher.", "type": "object", "required": ["type"], "properties": { "type": { "description": "`type` is the type of flow distinguisher method The supported types are \"ByUser\" and \"ByNamespace\". Required.", "type": "string" } } }, "io.k8s.api.flowcontrol.v1beta2.FlowSchema": { "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\".", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "`metadata` is the standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchemaSpec" }, "status": { "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", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchemaStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta2" } ] }, "io.k8s.api.flowcontrol.v1beta2.FlowSchemaCondition": { "description": "FlowSchemaCondition describes conditions for a FlowSchema.", "type": "object", "properties": { "lastTransitionTime": { "description": "`lastTransitionTime` is the last time the condition transitioned from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "`message` is a human-readable message indicating details about last transition.", "type": "string" }, "reason": { "description": "`reason` is a unique, one-word, CamelCase reason for the condition's last transition.", "type": "string" }, "status": { "description": "`status` is the status of the condition. Can be True, False, Unknown. Required.", "type": "string" }, "type": { "description": "`type` is the type of the condition. Required.", "type": "string" } } }, "io.k8s.api.flowcontrol.v1beta2.FlowSchemaList": { "description": "FlowSchemaList is a list of FlowSchema objects.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "`items` is a list of FlowSchemas.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchema" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "`metadata` is the standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchemaList", "version": "v1beta2" } ] }, "io.k8s.api.flowcontrol.v1beta2.FlowSchemaSpec": { "description": "FlowSchemaSpec describes how the FlowSchema's specification looks like.", "type": "object", "required": ["priorityLevelConfiguration"], "properties": { "distinguisherMethod": { "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.", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowDistinguisherMethod" }, "matchingPrecedence": { "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.", "type": "integer", "format": "int32" }, "priorityLevelConfiguration": { "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.", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationReference" }, "rules": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PolicyRulesWithSubjects" }, "x-kubernetes-list-type": "atomic" } } }, "io.k8s.api.flowcontrol.v1beta2.FlowSchemaStatus": { "description": "FlowSchemaStatus represents the current state of a FlowSchema.", "type": "object", "properties": { "conditions": { "description": "`conditions` is a list of the current states of FlowSchema.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.FlowSchemaCondition" }, "x-kubernetes-list-map-keys": ["type"], "x-kubernetes-list-type": "map" } } }, "io.k8s.api.flowcontrol.v1beta2.GroupSubject": { "description": "GroupSubject holds detailed information for group-kind subject.", "type": "object", "required": ["name"], "properties": { "name": { "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.", "type": "string" } } }, "io.k8s.api.flowcontrol.v1beta2.LimitResponse": { "description": "LimitResponse defines how to handle requests that can not be executed right now.", "type": "object", "required": ["type"], "properties": { "queuing": { "description": "`queuing` holds the configuration parameters for queuing. This field may be non-empty only if `type` is `\"Queue\"`.", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.QueuingConfiguration" }, "type": { "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.", "type": "string" } }, "x-kubernetes-unions": [ { "discriminator": "type", "fields-to-discriminateBy": { "queuing": "Queuing" } } ] }, "io.k8s.api.flowcontrol.v1beta2.LimitedPriorityLevelConfiguration": { "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?", "type": "object", "properties": { "assuredConcurrencyShares": { "description": "`assuredConcurrencyShares` (ACS) configures the execution limit, which is a limit on the number of requests of this priority level that may be exeucting at a given time. ACS must be a positive number. The server's concurrency limit (SCL) is divided among the concurrency-controlled priority levels in proportion to their assured concurrency shares. This produces the assured concurrency value (ACV) --- the number of requests that may be executing at a time --- for each such priority level:\n\n ACV(l) = ceil( SCL * ACS(l) / ( sum[priority levels k] ACS(k) ) )\n\nbigger numbers of ACS mean more reserved concurrent requests (at the expense of every other PL). This field has a default value of 30.", "type": "integer", "format": "int32" }, "borrowingLimitPercent": { "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.", "type": "integer", "format": "int32" }, "lendablePercent": { "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 )", "type": "integer", "format": "int32" }, "limitResponse": { "description": "`limitResponse` indicates what to do with requests that can not be executed right now", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.LimitResponse" } } }, "io.k8s.api.flowcontrol.v1beta2.NonResourcePolicyRule": { "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.", "type": "object", "required": ["verbs", "nonResourceURLs"], "properties": { "nonResourceURLs": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "set" }, "verbs": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "set" } } }, "io.k8s.api.flowcontrol.v1beta2.PolicyRulesWithSubjects": { "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.", "type": "object", "required": ["subjects"], "properties": { "nonResourceRules": { "description": "`nonResourceRules` is a list of NonResourcePolicyRules that identify matching requests according to their verb and the target non-resource URL.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.NonResourcePolicyRule" }, "x-kubernetes-list-type": "atomic" }, "resourceRules": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.ResourcePolicyRule" }, "x-kubernetes-list-type": "atomic" }, "subjects": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.Subject" }, "x-kubernetes-list-type": "atomic" } } }, "io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration": { "description": "PriorityLevelConfiguration represents the configuration of a priority level.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "`metadata` is the standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationSpec" }, "status": { "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", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta2" } ] }, "io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationCondition": { "description": "PriorityLevelConfigurationCondition defines the condition of priority level.", "type": "object", "properties": { "lastTransitionTime": { "description": "`lastTransitionTime` is the last time the condition transitioned from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "`message` is a human-readable message indicating details about last transition.", "type": "string" }, "reason": { "description": "`reason` is a unique, one-word, CamelCase reason for the condition's last transition.", "type": "string" }, "status": { "description": "`status` is the status of the condition. Can be True, False, Unknown. Required.", "type": "string" }, "type": { "description": "`type` is the type of the condition. Required.", "type": "string" } } }, "io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationList": { "description": "PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "`items` is a list of request-priorities.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "`metadata` is the standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfigurationList", "version": "v1beta2" } ] }, "io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationReference": { "description": "PriorityLevelConfigurationReference contains information that points to the \"request-priority\" being used.", "type": "object", "required": ["name"], "properties": { "name": { "description": "`name` is the name of the priority level configuration being referenced Required.", "type": "string" } } }, "io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationSpec": { "description": "PriorityLevelConfigurationSpec specifies the configuration of a priority level.", "type": "object", "required": ["type"], "properties": { "limited": { "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\"`.", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.LimitedPriorityLevelConfiguration" }, "type": { "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.", "type": "string" } }, "x-kubernetes-unions": [ { "discriminator": "type", "fields-to-discriminateBy": { "limited": "Limited" } } ] }, "io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationStatus": { "description": "PriorityLevelConfigurationStatus represents the current state of a \"request-priority\".", "type": "object", "properties": { "conditions": { "description": "`conditions` is the current state of \"request-priority\".", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationCondition" }, "x-kubernetes-list-map-keys": ["type"], "x-kubernetes-list-type": "map" } } }, "io.k8s.api.flowcontrol.v1beta2.QueuingConfiguration": { "description": "QueuingConfiguration holds the configuration parameters for queuing", "type": "object", "properties": { "handSize": { "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.", "type": "integer", "format": "int32" }, "queueLengthLimit": { "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.", "type": "integer", "format": "int32" }, "queues": { "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.", "type": "integer", "format": "int32" } } }, "io.k8s.api.flowcontrol.v1beta2.ResourcePolicyRule": { "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.", "type": "object", "required": ["verbs", "apiGroups", "resources"], "properties": { "apiGroups": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "set" }, "clusterScope": { "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.", "type": "boolean" }, "namespaces": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "set" }, "resources": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "set" }, "verbs": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "set" } } }, "io.k8s.api.flowcontrol.v1beta2.ServiceAccountSubject": { "description": "ServiceAccountSubject holds detailed information for service-account-kind subject.", "type": "object", "required": ["namespace", "name"], "properties": { "name": { "description": "`name` is the name of matching ServiceAccount objects, or \"*\" to match regardless of name. Required.", "type": "string" }, "namespace": { "description": "`namespace` is the namespace of matching ServiceAccount objects. Required.", "type": "string" } } }, "io.k8s.api.flowcontrol.v1beta2.Subject": { "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.", "type": "object", "required": ["kind"], "properties": { "group": { "description": "`group` matches based on user group name.", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.GroupSubject" }, "kind": { "description": "`kind` indicates which one of the other fields is non-empty. Required", "type": "string" }, "serviceAccount": { "description": "`serviceAccount` matches ServiceAccounts.", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.ServiceAccountSubject" }, "user": { "description": "`user` matches based on username.", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta2.UserSubject" } }, "x-kubernetes-unions": [ { "discriminator": "kind", "fields-to-discriminateBy": { "group": "Group", "serviceAccount": "ServiceAccount", "user": "User" } } ] }, "io.k8s.api.flowcontrol.v1beta2.UserSubject": { "description": "UserSubject holds detailed information for user-kind subject.", "type": "object", "required": ["name"], "properties": { "name": { "description": "`name` is the username that matches, or \"*\" to match all usernames. Required.", "type": "string" } } }, "io.k8s.api.flowcontrol.v1beta3.FlowDistinguisherMethod": { "description": "FlowDistinguisherMethod specifies the method of a flow distinguisher.", "type": "object", "required": ["type"], "properties": { "type": { "description": "`type` is the type of flow distinguisher method The supported types are \"ByUser\" and \"ByNamespace\". Required.", "type": "string" } } }, "io.k8s.api.flowcontrol.v1beta3.FlowSchema": { "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\".", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "`metadata` is the standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchemaSpec" }, "status": { "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", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchemaStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchema", "version": "v1beta3" } ] }, "io.k8s.api.flowcontrol.v1beta3.FlowSchemaCondition": { "description": "FlowSchemaCondition describes conditions for a FlowSchema.", "type": "object", "properties": { "lastTransitionTime": { "description": "`lastTransitionTime` is the last time the condition transitioned from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "`message` is a human-readable message indicating details about last transition.", "type": "string" }, "reason": { "description": "`reason` is a unique, one-word, CamelCase reason for the condition's last transition.", "type": "string" }, "status": { "description": "`status` is the status of the condition. Can be True, False, Unknown. Required.", "type": "string" }, "type": { "description": "`type` is the type of the condition. Required.", "type": "string" } } }, "io.k8s.api.flowcontrol.v1beta3.FlowSchemaList": { "description": "FlowSchemaList is a list of FlowSchema objects.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "`items` is a list of FlowSchemas.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchema" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "`metadata` is the standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "flowcontrol.apiserver.k8s.io", "kind": "FlowSchemaList", "version": "v1beta3" } ] }, "io.k8s.api.flowcontrol.v1beta3.FlowSchemaSpec": { "description": "FlowSchemaSpec describes how the FlowSchema's specification looks like.", "type": "object", "required": ["priorityLevelConfiguration"], "properties": { "distinguisherMethod": { "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.", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowDistinguisherMethod" }, "matchingPrecedence": { "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.", "type": "integer", "format": "int32" }, "priorityLevelConfiguration": { "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.", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationReference" }, "rules": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PolicyRulesWithSubjects" }, "x-kubernetes-list-type": "atomic" } } }, "io.k8s.api.flowcontrol.v1beta3.FlowSchemaStatus": { "description": "FlowSchemaStatus represents the current state of a FlowSchema.", "type": "object", "properties": { "conditions": { "description": "`conditions` is a list of the current states of FlowSchema.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.FlowSchemaCondition" }, "x-kubernetes-list-map-keys": ["type"], "x-kubernetes-list-type": "map", "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" } } }, "io.k8s.api.flowcontrol.v1beta3.GroupSubject": { "description": "GroupSubject holds detailed information for group-kind subject.", "type": "object", "required": ["name"], "properties": { "name": { "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.", "type": "string" } } }, "io.k8s.api.flowcontrol.v1beta3.LimitResponse": { "description": "LimitResponse defines how to handle requests that can not be executed right now.", "type": "object", "required": ["type"], "properties": { "queuing": { "description": "`queuing` holds the configuration parameters for queuing. This field may be non-empty only if `type` is `\"Queue\"`.", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.QueuingConfiguration" }, "type": { "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.", "type": "string" } }, "x-kubernetes-unions": [ { "discriminator": "type", "fields-to-discriminateBy": { "queuing": "Queuing" } } ] }, "io.k8s.api.flowcontrol.v1beta3.LimitedPriorityLevelConfiguration": { "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?", "type": "object", "properties": { "borrowingLimitPercent": { "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.", "type": "integer", "format": "int32" }, "lendablePercent": { "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 )", "type": "integer", "format": "int32" }, "limitResponse": { "description": "`limitResponse` indicates what to do with requests that can not be executed right now", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.LimitResponse" }, "nominalConcurrencyShares": { "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[limited priority level k] NCS(k)\n\nBigger numbers mean a larger nominal concurrency limit, at the expense of every other Limited priority level. This field has a default value of 30.", "type": "integer", "format": "int32" } } }, "io.k8s.api.flowcontrol.v1beta3.NonResourcePolicyRule": { "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.", "type": "object", "required": ["verbs", "nonResourceURLs"], "properties": { "nonResourceURLs": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "set" }, "verbs": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "set" } } }, "io.k8s.api.flowcontrol.v1beta3.PolicyRulesWithSubjects": { "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.", "type": "object", "required": ["subjects"], "properties": { "nonResourceRules": { "description": "`nonResourceRules` is a list of NonResourcePolicyRules that identify matching requests according to their verb and the target non-resource URL.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.NonResourcePolicyRule" }, "x-kubernetes-list-type": "atomic" }, "resourceRules": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.ResourcePolicyRule" }, "x-kubernetes-list-type": "atomic" }, "subjects": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.Subject" }, "x-kubernetes-list-type": "atomic" } } }, "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration": { "description": "PriorityLevelConfiguration represents the configuration of a priority level.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "`metadata` is the standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationSpec" }, "status": { "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", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfiguration", "version": "v1beta3" } ] }, "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationCondition": { "description": "PriorityLevelConfigurationCondition defines the condition of priority level.", "type": "object", "properties": { "lastTransitionTime": { "description": "`lastTransitionTime` is the last time the condition transitioned from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "`message` is a human-readable message indicating details about last transition.", "type": "string" }, "reason": { "description": "`reason` is a unique, one-word, CamelCase reason for the condition's last transition.", "type": "string" }, "status": { "description": "`status` is the status of the condition. Can be True, False, Unknown. Required.", "type": "string" }, "type": { "description": "`type` is the type of the condition. Required.", "type": "string" } } }, "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationList": { "description": "PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "`items` is a list of request-priorities.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "`metadata` is the standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "flowcontrol.apiserver.k8s.io", "kind": "PriorityLevelConfigurationList", "version": "v1beta3" } ] }, "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationReference": { "description": "PriorityLevelConfigurationReference contains information that points to the \"request-priority\" being used.", "type": "object", "required": ["name"], "properties": { "name": { "description": "`name` is the name of the priority level configuration being referenced Required.", "type": "string" } } }, "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationSpec": { "description": "PriorityLevelConfigurationSpec specifies the configuration of a priority level.", "type": "object", "required": ["type"], "properties": { "limited": { "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\"`.", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.LimitedPriorityLevelConfiguration" }, "type": { "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.", "type": "string" } }, "x-kubernetes-unions": [ { "discriminator": "type", "fields-to-discriminateBy": { "limited": "Limited" } } ] }, "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationStatus": { "description": "PriorityLevelConfigurationStatus represents the current state of a \"request-priority\".", "type": "object", "properties": { "conditions": { "description": "`conditions` is the current state of \"request-priority\".", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationCondition" }, "x-kubernetes-list-map-keys": ["type"], "x-kubernetes-list-type": "map", "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" } } }, "io.k8s.api.flowcontrol.v1beta3.QueuingConfiguration": { "description": "QueuingConfiguration holds the configuration parameters for queuing", "type": "object", "properties": { "handSize": { "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.", "type": "integer", "format": "int32" }, "queueLengthLimit": { "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.", "type": "integer", "format": "int32" }, "queues": { "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.", "type": "integer", "format": "int32" } } }, "io.k8s.api.flowcontrol.v1beta3.ResourcePolicyRule": { "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.", "type": "object", "required": ["verbs", "apiGroups", "resources"], "properties": { "apiGroups": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "set" }, "clusterScope": { "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.", "type": "boolean" }, "namespaces": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "set" }, "resources": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "set" }, "verbs": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "set" } } }, "io.k8s.api.flowcontrol.v1beta3.ServiceAccountSubject": { "description": "ServiceAccountSubject holds detailed information for service-account-kind subject.", "type": "object", "required": ["namespace", "name"], "properties": { "name": { "description": "`name` is the name of matching ServiceAccount objects, or \"*\" to match regardless of name. Required.", "type": "string" }, "namespace": { "description": "`namespace` is the namespace of matching ServiceAccount objects. Required.", "type": "string" } } }, "io.k8s.api.flowcontrol.v1beta3.Subject": { "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.", "type": "object", "required": ["kind"], "properties": { "group": { "description": "`group` matches based on user group name.", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.GroupSubject" }, "kind": { "description": "`kind` indicates which one of the other fields is non-empty. Required", "type": "string" }, "serviceAccount": { "description": "`serviceAccount` matches ServiceAccounts.", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.ServiceAccountSubject" }, "user": { "description": "`user` matches based on username.", "$ref": "#/definitions/io.k8s.api.flowcontrol.v1beta3.UserSubject" } }, "x-kubernetes-unions": [ { "discriminator": "kind", "fields-to-discriminateBy": { "group": "Group", "serviceAccount": "ServiceAccount", "user": "User" } } ] }, "io.k8s.api.flowcontrol.v1beta3.UserSubject": { "description": "UserSubject holds detailed information for user-kind subject.", "type": "object", "required": ["name"], "properties": { "name": { "description": "`name` is the username that matches, or \"*\" to match all usernames. Required.", "type": "string" } } }, "io.k8s.api.networking.v1.HTTPIngressPath": { "description": "HTTPIngressPath associates a path with a backend. Incoming urls matching the path are forwarded to the backend.", "type": "object", "required": ["pathType", "backend"], "properties": { "backend": { "description": "Backend defines the referenced service endpoint to which the traffic will be forwarded to.", "$ref": "#/definitions/io.k8s.api.networking.v1.IngressBackend" }, "path": { "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\".", "type": "string" }, "pathType": { "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.", "type": "string" } } }, "io.k8s.api.networking.v1.HTTPIngressRuleValue": { "description": "HTTPIngressRuleValue is a list of http selectors pointing to backends. In the example: http://\u003chost\u003e/\u003cpath\u003e?\u003csearchpart\u003e -\u003e 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 '#'.", "type": "object", "required": ["paths"], "properties": { "paths": { "description": "A collection of paths that map requests to backends.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.networking.v1.HTTPIngressPath" }, "x-kubernetes-list-type": "atomic" } } }, "io.k8s.api.networking.v1.IPBlock": { "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.", "type": "object", "required": ["cidr"], "properties": { "cidr": { "description": "CIDR is a string representing the IP Block Valid examples are \"192.168.1.0/24\" or \"2001:db8::/64\"", "type": "string" }, "except": { "description": "Except is a slice of CIDRs that should not be included within an IP Block Valid examples are \"192.168.1.0/24\" or \"2001:db8::/64\" Except values will be rejected if they are outside the CIDR range", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.networking.v1.Ingress": { "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.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.networking.v1.IngressSpec" }, "status": { "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", "$ref": "#/definitions/io.k8s.api.networking.v1.IngressStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "networking.k8s.io", "kind": "Ingress", "version": "v1" } ] }, "io.k8s.api.networking.v1.IngressBackend": { "description": "IngressBackend describes all endpoints for a given service and port.", "type": "object", "properties": { "resource": { "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\".", "$ref": "#/definitions/io.k8s.api.core.v1.TypedLocalObjectReference" }, "service": { "description": "Service references a Service as a Backend. This is a mutually exclusive setting with \"Resource\".", "$ref": "#/definitions/io.k8s.api.networking.v1.IngressServiceBackend" } } }, "io.k8s.api.networking.v1.IngressClass": { "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.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.networking.v1.IngressClassSpec" } }, "x-kubernetes-group-version-kind": [ { "group": "networking.k8s.io", "kind": "IngressClass", "version": "v1" } ] }, "io.k8s.api.networking.v1.IngressClassList": { "description": "IngressClassList is a collection of IngressClasses.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is the list of IngressClasses.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.networking.v1.IngressClass" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "networking.k8s.io", "kind": "IngressClassList", "version": "v1" } ] }, "io.k8s.api.networking.v1.IngressClassParametersReference": { "description": "IngressClassParametersReference identifies an API object. This can be used to specify a cluster or namespace-scoped resource.", "type": "object", "required": ["kind", "name"], "properties": { "apiGroup": { "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.", "type": "string" }, "kind": { "description": "Kind is the type of resource being referenced.", "type": "string" }, "name": { "description": "Name is the name of resource being referenced.", "type": "string" }, "namespace": { "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\".", "type": "string" }, "scope": { "description": "Scope represents if this refers to a cluster or namespace scoped resource. This may be set to \"Cluster\" (default) or \"Namespace\".", "type": "string" } } }, "io.k8s.api.networking.v1.IngressClassSpec": { "description": "IngressClassSpec provides information about the class of an Ingress.", "type": "object", "properties": { "controller": { "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.", "type": "string" }, "parameters": { "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.", "$ref": "#/definitions/io.k8s.api.networking.v1.IngressClassParametersReference" } } }, "io.k8s.api.networking.v1.IngressList": { "description": "IngressList is a collection of Ingress.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is the list of Ingress.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.networking.v1.Ingress" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "networking.k8s.io", "kind": "IngressList", "version": "v1" } ] }, "io.k8s.api.networking.v1.IngressLoadBalancerIngress": { "description": "IngressLoadBalancerIngress represents the status of a load-balancer ingress point.", "type": "object", "properties": { "hostname": { "description": "Hostname is set for load-balancer ingress points that are DNS based.", "type": "string" }, "ip": { "description": "IP is set for load-balancer ingress points that are IP based.", "type": "string" }, "ports": { "description": "Ports provides information about the ports exposed by this LoadBalancer.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.networking.v1.IngressPortStatus" }, "x-kubernetes-list-type": "atomic" } } }, "io.k8s.api.networking.v1.IngressLoadBalancerStatus": { "description": "IngressLoadBalancerStatus represents the status of a load-balancer.", "type": "object", "properties": { "ingress": { "description": "Ingress is a list containing ingress points for the load-balancer.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.networking.v1.IngressLoadBalancerIngress" } } } }, "io.k8s.api.networking.v1.IngressPortStatus": { "description": "IngressPortStatus represents the error condition of a service port", "type": "object", "required": ["port", "protocol"], "properties": { "error": { "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.", "type": "string" }, "port": { "description": "Port is the port number of the ingress port.", "type": "integer", "format": "int32" }, "protocol": { "description": "Protocol is the protocol of the ingress port. The supported values are: \"TCP\", \"UDP\", \"SCTP\"\n\nPossible enum values:\n - `\"SCTP\"` is the SCTP protocol.\n - `\"TCP\"` is the TCP protocol.\n - `\"UDP\"` is the UDP protocol.", "type": "string", "enum": ["SCTP", "TCP", "UDP"] } } }, "io.k8s.api.networking.v1.IngressRule": { "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.", "type": "object", "properties": { "host": { "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.", "type": "string" }, "http": { "$ref": "#/definitions/io.k8s.api.networking.v1.HTTPIngressRuleValue" } } }, "io.k8s.api.networking.v1.IngressServiceBackend": { "description": "IngressServiceBackend references a Kubernetes Service as a Backend.", "type": "object", "required": ["name"], "properties": { "name": { "description": "Name is the referenced service. The service must exist in the same namespace as the Ingress object.", "type": "string" }, "port": { "description": "Port of the referenced service. A port name or port number is required for a IngressServiceBackend.", "$ref": "#/definitions/io.k8s.api.networking.v1.ServiceBackendPort" } } }, "io.k8s.api.networking.v1.IngressSpec": { "description": "IngressSpec describes the Ingress the user wishes to exist.", "type": "object", "properties": { "defaultBackend": { "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.", "$ref": "#/definitions/io.k8s.api.networking.v1.IngressBackend" }, "ingressClassName": { "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 -\u003e IngressClass -\u003e 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.", "type": "string" }, "rules": { "description": "A list of host rules used to configure the Ingress. If unspecified, or no rule matches, all traffic is sent to the default backend.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.networking.v1.IngressRule" }, "x-kubernetes-list-type": "atomic" }, "tls": { "description": "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.networking.v1.IngressTLS" }, "x-kubernetes-list-type": "atomic" } } }, "io.k8s.api.networking.v1.IngressStatus": { "description": "IngressStatus describe the current state of the Ingress.", "type": "object", "properties": { "loadBalancer": { "description": "LoadBalancer contains the current status of the load-balancer.", "$ref": "#/definitions/io.k8s.api.networking.v1.IngressLoadBalancerStatus" } } }, "io.k8s.api.networking.v1.IngressTLS": { "description": "IngressTLS describes the transport layer security associated with an Ingress.", "type": "object", "properties": { "hosts": { "description": "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "atomic" }, "secretName": { "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.", "type": "string" } } }, "io.k8s.api.networking.v1.NetworkPolicy": { "description": "NetworkPolicy describes what network traffic is allowed for a set of Pods", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Specification of the desired behavior for this NetworkPolicy.", "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicySpec" }, "status": { "description": "Status is the current state of the NetworkPolicy. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicyStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "networking.k8s.io", "kind": "NetworkPolicy", "version": "v1" } ] }, "io.k8s.api.networking.v1.NetworkPolicyEgressRule": { "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", "type": "object", "properties": { "ports": { "description": "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicyPort" } }, "to": { "description": "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicyPeer" } } } }, "io.k8s.api.networking.v1.NetworkPolicyIngressRule": { "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.", "type": "object", "properties": { "from": { "description": "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicyPeer" } }, "ports": { "description": "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicyPort" } } } }, "io.k8s.api.networking.v1.NetworkPolicyList": { "description": "NetworkPolicyList is a list of NetworkPolicy objects.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is a list of schema objects.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicy" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "networking.k8s.io", "kind": "NetworkPolicyList", "version": "v1" } ] }, "io.k8s.api.networking.v1.NetworkPolicyPeer": { "description": "NetworkPolicyPeer describes a peer to allow traffic to/from. Only certain combinations of fields are allowed", "type": "object", "properties": { "ipBlock": { "description": "IPBlock defines policy on a particular IPBlock. If this field is set then neither of the other fields can be.", "$ref": "#/definitions/io.k8s.api.networking.v1.IPBlock" }, "namespaceSelector": { "description": "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "podSelector": { "description": "This 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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" } } }, "io.k8s.api.networking.v1.NetworkPolicyPort": { "description": "NetworkPolicyPort describes a port to allow traffic on", "type": "object", "properties": { "endPort": { "description": "If set, indicates that the range of ports from port to endPort, 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.", "type": "integer", "format": "int32" }, "port": { "description": "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" }, "protocol": { "description": "The protocol (TCP, UDP, or SCTP) which traffic must match. If not specified, this field defaults to TCP.", "type": "string" } } }, "io.k8s.api.networking.v1.NetworkPolicySpec": { "description": "NetworkPolicySpec provides the specification of a NetworkPolicy", "type": "object", "required": ["podSelector"], "properties": { "egress": { "description": "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", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicyEgressRule" } }, "ingress": { "description": "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)", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.networking.v1.NetworkPolicyIngressRule" } }, "podSelector": { "description": "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "policyTypes": { "description": "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", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.networking.v1.NetworkPolicyStatus": { "description": "NetworkPolicyStatus describe the current state of the NetworkPolicy.", "type": "object", "properties": { "conditions": { "description": "Conditions holds an array of metav1.Condition that describe the state of the NetworkPolicy. Current service state", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Condition" }, "x-kubernetes-list-map-keys": ["type"], "x-kubernetes-list-type": "map", "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" } } }, "io.k8s.api.networking.v1.ServiceBackendPort": { "description": "ServiceBackendPort is the service port being referenced.", "type": "object", "properties": { "name": { "description": "Name is the name of the port on the Service. This is a mutually exclusive setting with \"Number\".", "type": "string" }, "number": { "description": "Number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with \"Name\".", "type": "integer", "format": "int32" } } }, "io.k8s.api.node.v1.Overhead": { "description": "Overhead structure represents the resource overhead associated with running a pod.", "type": "object", "properties": { "podFixed": { "description": "PodFixed represents the fixed resource overhead associated with running a pod.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } } } }, "io.k8s.api.node.v1.RuntimeClass": { "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/", "type": "object", "required": ["handler"], "properties": { "apiVersion": { "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", "type": "string" }, "handler": { "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 \u0026 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.", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "overhead": { "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/", "$ref": "#/definitions/io.k8s.api.node.v1.Overhead" }, "scheduling": { "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.", "$ref": "#/definitions/io.k8s.api.node.v1.Scheduling" } }, "x-kubernetes-group-version-kind": [ { "group": "node.k8s.io", "kind": "RuntimeClass", "version": "v1" } ] }, "io.k8s.api.node.v1.RuntimeClassList": { "description": "RuntimeClassList is a list of RuntimeClass objects.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is a list of schema objects.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.node.v1.RuntimeClass" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "node.k8s.io", "kind": "RuntimeClassList", "version": "v1" } ] }, "io.k8s.api.node.v1.Scheduling": { "description": "Scheduling specifies the scheduling constraints for nodes supporting a RuntimeClass.", "type": "object", "properties": { "nodeSelector": { "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.", "type": "object", "additionalProperties": { "type": "string" }, "x-kubernetes-map-type": "atomic" }, "tolerations": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Toleration" }, "x-kubernetes-list-type": "atomic" } } }, "io.k8s.api.policy.v1.Eviction": { "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/\u003cpod name\u003e/evictions.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "deleteOptions": { "description": "DeleteOptions may be provided", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" }, "kind": { "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", "type": "string" }, "metadata": { "description": "ObjectMeta describes the pod that is being evicted.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "policy", "kind": "Eviction", "version": "v1" } ] }, "io.k8s.api.policy.v1.PodDisruptionBudget": { "description": "PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Specification of the desired behavior of the PodDisruptionBudget.", "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudgetSpec" }, "status": { "description": "Most recently observed status of the PodDisruptionBudget.", "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudgetStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "policy", "kind": "PodDisruptionBudget", "version": "v1" } ] }, "io.k8s.api.policy.v1.PodDisruptionBudgetList": { "description": "PodDisruptionBudgetList is a collection of PodDisruptionBudgets.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is a list of PodDisruptionBudgets", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.policy.v1.PodDisruptionBudget" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "policy", "kind": "PodDisruptionBudgetList", "version": "v1" } ] }, "io.k8s.api.policy.v1.PodDisruptionBudgetSpec": { "description": "PodDisruptionBudgetSpec is a description of a PodDisruptionBudget.", "type": "object", "properties": { "maxUnavailable": { "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\".", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" }, "minAvailable": { "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%\".", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" }, "selector": { "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.", "x-kubernetes-patch-strategy": "replace", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "unhealthyPodEvictionPolicy": { "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 alpha-level. The eviction API uses this field when the feature gate PDBUnhealthyPodEvictionPolicy is enabled (disabled by default).", "type": "string" } } }, "io.k8s.api.policy.v1.PodDisruptionBudgetStatus": { "description": "PodDisruptionBudgetStatus represents information about the status of a PodDisruptionBudget. Status may trail the actual state of a system.", "type": "object", "required": [ "disruptionsAllowed", "currentHealthy", "desiredHealthy", "expectedPods" ], "properties": { "conditions": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Condition" }, "x-kubernetes-list-map-keys": ["type"], "x-kubernetes-list-type": "map", "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "currentHealthy": { "description": "current number of healthy pods", "type": "integer", "format": "int32" }, "desiredHealthy": { "description": "minimum desired number of healthy pods", "type": "integer", "format": "int32" }, "disruptedPods": { "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.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } }, "disruptionsAllowed": { "description": "Number of pod disruptions that are currently allowed.", "type": "integer", "format": "int32" }, "expectedPods": { "description": "total number of pods counted by this disruption budget", "type": "integer", "format": "int32" }, "observedGeneration": { "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.", "type": "integer", "format": "int64" } } }, "io.k8s.api.rbac.v1.AggregationRule": { "description": "AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole", "type": "object", "properties": { "clusterRoleSelectors": { "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", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" } } } }, "io.k8s.api.rbac.v1.ClusterRole": { "description": "ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.", "type": "object", "properties": { "aggregationRule": { "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.", "$ref": "#/definitions/io.k8s.api.rbac.v1.AggregationRule" }, "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "rules": { "description": "Rules holds all the PolicyRules for this ClusterRole", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.rbac.v1.PolicyRule" } } }, "x-kubernetes-group-version-kind": [ { "group": "rbac.authorization.k8s.io", "kind": "ClusterRole", "version": "v1" } ] }, "io.k8s.api.rbac.v1.ClusterRoleBinding": { "description": "ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, and adds who information via Subject.", "type": "object", "required": ["roleRef"], "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "roleRef": { "description": "RoleRef can only reference a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error.", "$ref": "#/definitions/io.k8s.api.rbac.v1.RoleRef" }, "subjects": { "description": "Subjects holds references to the objects the role applies to.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.rbac.v1.Subject" } } }, "x-kubernetes-group-version-kind": [ { "group": "rbac.authorization.k8s.io", "kind": "ClusterRoleBinding", "version": "v1" } ] }, "io.k8s.api.rbac.v1.ClusterRoleBindingList": { "description": "ClusterRoleBindingList is a collection of ClusterRoleBindings", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is a list of ClusterRoleBindings", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRoleBinding" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "rbac.authorization.k8s.io", "kind": "ClusterRoleBindingList", "version": "v1" } ] }, "io.k8s.api.rbac.v1.ClusterRoleList": { "description": "ClusterRoleList is a collection of ClusterRoles", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is a list of ClusterRoles", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.rbac.v1.ClusterRole" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "rbac.authorization.k8s.io", "kind": "ClusterRoleList", "version": "v1" } ] }, "io.k8s.api.rbac.v1.PolicyRule": { "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.", "type": "object", "required": ["verbs"], "properties": { "apiGroups": { "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.", "type": "array", "items": { "type": "string" } }, "nonResourceURLs": { "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.", "type": "array", "items": { "type": "string" } }, "resourceNames": { "description": "ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.", "type": "array", "items": { "type": "string" } }, "resources": { "description": "Resources is a list of resources this rule applies to. '*' represents all resources.", "type": "array", "items": { "type": "string" } }, "verbs": { "description": "Verbs is a list of Verbs that apply to ALL the ResourceKinds contained in this rule. '*' represents all verbs.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.rbac.v1.Role": { "description": "Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "rules": { "description": "Rules holds all the PolicyRules for this Role", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.rbac.v1.PolicyRule" } } }, "x-kubernetes-group-version-kind": [ { "group": "rbac.authorization.k8s.io", "kind": "Role", "version": "v1" } ] }, "io.k8s.api.rbac.v1.RoleBinding": { "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.", "type": "object", "required": ["roleRef"], "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "roleRef": { "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.", "$ref": "#/definitions/io.k8s.api.rbac.v1.RoleRef" }, "subjects": { "description": "Subjects holds references to the objects the role applies to.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.rbac.v1.Subject" } } }, "x-kubernetes-group-version-kind": [ { "group": "rbac.authorization.k8s.io", "kind": "RoleBinding", "version": "v1" } ] }, "io.k8s.api.rbac.v1.RoleBindingList": { "description": "RoleBindingList is a collection of RoleBindings", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is a list of RoleBindings", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.rbac.v1.RoleBinding" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "rbac.authorization.k8s.io", "kind": "RoleBindingList", "version": "v1" } ] }, "io.k8s.api.rbac.v1.RoleList": { "description": "RoleList is a collection of Roles", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is a list of Roles", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.rbac.v1.Role" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "rbac.authorization.k8s.io", "kind": "RoleList", "version": "v1" } ] }, "io.k8s.api.rbac.v1.RoleRef": { "description": "RoleRef contains information that points to the role being used", "type": "object", "required": ["apiGroup", "kind", "name"], "properties": { "apiGroup": { "description": "APIGroup is the group for the resource being referenced", "type": "string" }, "kind": { "description": "Kind is the type of resource being referenced", "type": "string" }, "name": { "description": "Name is the name of resource being referenced", "type": "string" } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.api.rbac.v1.Subject": { "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.", "type": "object", "required": ["kind", "name"], "properties": { "apiGroup": { "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.", "type": "string" }, "kind": { "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.", "type": "string" }, "name": { "description": "Name of the object being referenced.", "type": "string" }, "namespace": { "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.", "type": "string" } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.api.scheduling.v1.PriorityClass": { "description": "PriorityClass defines mapping from a priority class name to the priority integer value. The value can be any valid integer.", "type": "object", "required": ["value"], "properties": { "apiVersion": { "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", "type": "string" }, "description": { "description": "description is an arbitrary string that usually provides guidelines on when this priority class should be used.", "type": "string" }, "globalDefault": { "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.", "type": "boolean" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "preemptionPolicy": { "description": "PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset.", "type": "string" }, "value": { "description": "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.", "type": "integer", "format": "int32" } }, "x-kubernetes-group-version-kind": [ { "group": "scheduling.k8s.io", "kind": "PriorityClass", "version": "v1" } ] }, "io.k8s.api.scheduling.v1.PriorityClassList": { "description": "PriorityClassList is a collection of priority classes.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "items is the list of PriorityClasses", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.scheduling.v1.PriorityClass" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "scheduling.k8s.io", "kind": "PriorityClassList", "version": "v1" } ] }, "io.k8s.api.storage.v1.CSIDriver": { "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.", "type": "object", "required": ["spec"], "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "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", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Specification of the CSI Driver.", "$ref": "#/definitions/io.k8s.api.storage.v1.CSIDriverSpec" } }, "x-kubernetes-group-version-kind": [ { "group": "storage.k8s.io", "kind": "CSIDriver", "version": "v1" } ] }, "io.k8s.api.storage.v1.CSIDriverList": { "description": "CSIDriverList is a collection of CSIDriver objects.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "items is the list of CSIDriver", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIDriver" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "storage.k8s.io", "kind": "CSIDriverList", "version": "v1" } ] }, "io.k8s.api.storage.v1.CSIDriverSpec": { "description": "CSIDriverSpec is the specification of a CSIDriver.", "type": "object", "properties": { "attachRequired": { "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.", "type": "boolean" }, "fsGroupPolicy": { "description": "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 is immutable.\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.", "type": "string" }, "podInfoOnMount": { "description": "If set to true, podInfoOnMount indicates this CSI volume driver requires additional pod information (like podName, podUID, etc.) during mount operations. If set to false, pod information will not be passed on mount. Default is false. 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. The following VolumeConext 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 is immutable.", "type": "boolean" }, "requiresRepublish": { "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.", "type": "boolean" }, "seLinuxMount": { "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\".", "type": "boolean" }, "storageCapacity": { "description": "If set to true, 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.\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 \u003c= 1.22 and now is mutable.", "type": "boolean" }, "tokenRequests": { "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 \"\u003caudience\u003e\": {\n \"token\": \u003ctoken\u003e,\n \"expirationTimestamp\": \u003cexpiration timestamp in RFC3339\u003e,\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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.storage.v1.TokenRequest" }, "x-kubernetes-list-type": "atomic" }, "volumeLifecycleModes": { "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. 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. 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. This field is beta.\n\nThis field is immutable.", "type": "array", "items": { "type": "string" }, "x-kubernetes-list-type": "set" } } }, "io.k8s.api.storage.v1.CSINode": { "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.", "type": "object", "required": ["spec"], "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "metadata.name must be the Kubernetes node name.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "spec is the specification of CSINode", "$ref": "#/definitions/io.k8s.api.storage.v1.CSINodeSpec" } }, "x-kubernetes-group-version-kind": [ { "group": "storage.k8s.io", "kind": "CSINode", "version": "v1" } ] }, "io.k8s.api.storage.v1.CSINodeDriver": { "description": "CSINodeDriver holds information about the specification of one CSI driver installed on a node", "type": "object", "required": ["name", "nodeID"], "properties": { "allocatable": { "description": "allocatable represents the volume resources of a node that are available for scheduling. This field is beta.", "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeNodeResources" }, "name": { "description": "This is 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.", "type": "string" }, "nodeID": { "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.", "type": "string" }, "topologyKeys": { "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.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.storage.v1.CSINodeList": { "description": "CSINodeList is a collection of CSINode objects.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "items is the list of CSINode", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSINode" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "storage.k8s.io", "kind": "CSINodeList", "version": "v1" } ] }, "io.k8s.api.storage.v1.CSINodeSpec": { "description": "CSINodeSpec holds information about the specification of all CSI drivers installed on a node", "type": "object", "required": ["drivers"], "properties": { "drivers": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSINodeDriver" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" } } }, "io.k8s.api.storage.v1.CSIStorageCapacity": { "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.", "type": "object", "required": ["storageClassName"], "properties": { "apiVersion": { "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", "type": "string" }, "capacity": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" }, "kind": { "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", "type": "string" }, "maximumVolumeSize": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" }, "metadata": { "description": "Standard object's metadata. The name has no particular meaning. It must be 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-\u003cuuid\u003e, 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", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "nodeTopology": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "storageClassName": { "description": "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.", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1" } ] }, "io.k8s.api.storage.v1.CSIStorageCapacityList": { "description": "CSIStorageCapacityList is a collection of CSIStorageCapacity objects.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is the list of CSIStorageCapacity objects.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.storage.v1.CSIStorageCapacity" }, "x-kubernetes-list-map-keys": ["name"], "x-kubernetes-list-type": "map" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "storage.k8s.io", "kind": "CSIStorageCapacityList", "version": "v1" } ] }, "io.k8s.api.storage.v1.StorageClass": { "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.", "type": "object", "required": ["provisioner"], "properties": { "allowVolumeExpansion": { "description": "AllowVolumeExpansion shows whether the storage class allow volume expand", "type": "boolean" }, "allowedTopologies": { "description": "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.TopologySelectorTerm" }, "x-kubernetes-list-type": "atomic" }, "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "mountOptions": { "description": "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.", "type": "array", "items": { "type": "string" } }, "parameters": { "description": "Parameters holds the parameters for the provisioner that should create volumes of this storage class.", "type": "object", "additionalProperties": { "type": "string" } }, "provisioner": { "description": "Provisioner indicates the type of the provisioner.", "type": "string" }, "reclaimPolicy": { "description": "Dynamically provisioned PersistentVolumes of this storage class are created with this reclaimPolicy. Defaults to Delete.", "type": "string" }, "volumeBindingMode": { "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.", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "storage.k8s.io", "kind": "StorageClass", "version": "v1" } ] }, "io.k8s.api.storage.v1.StorageClassList": { "description": "StorageClassList is a collection of storage classes.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is the list of StorageClasses", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.storage.v1.StorageClass" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "storage.k8s.io", "kind": "StorageClassList", "version": "v1" } ] }, "io.k8s.api.storage.v1.TokenRequest": { "description": "TokenRequest contains parameters of a service account token.", "type": "object", "required": ["audience"], "properties": { "audience": { "description": "Audience is the intended audience of the token in \"TokenRequestSpec\". It will default to the audiences of kube apiserver.", "type": "string" }, "expirationSeconds": { "description": "ExpirationSeconds is the duration of validity of the token in \"TokenRequestSpec\". It has the same default value of \"ExpirationSeconds\" in \"TokenRequestSpec\".", "type": "integer", "format": "int64" } } }, "io.k8s.api.storage.v1.VolumeAttachment": { "description": "VolumeAttachment captures the intent to attach or detach the specified volume to/from the specified node.\n\nVolumeAttachment objects are non-namespaced.", "type": "object", "required": ["spec"], "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Specification of the desired attach/detach volume behavior. Populated by the Kubernetes system.", "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachmentSpec" }, "status": { "description": "Status of the VolumeAttachment request. Populated by the entity completing the attach or detach operation, i.e. the external-attacher.", "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachmentStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "storage.k8s.io", "kind": "VolumeAttachment", "version": "v1" } ] }, "io.k8s.api.storage.v1.VolumeAttachmentList": { "description": "VolumeAttachmentList is a collection of VolumeAttachment objects.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is the list of VolumeAttachments", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachment" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "storage.k8s.io", "kind": "VolumeAttachmentList", "version": "v1" } ] }, "io.k8s.api.storage.v1.VolumeAttachmentSource": { "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.", "type": "object", "properties": { "inlineVolumeSpec": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeSpec" }, "persistentVolumeName": { "description": "Name of the persistent volume to attach.", "type": "string" } } }, "io.k8s.api.storage.v1.VolumeAttachmentSpec": { "description": "VolumeAttachmentSpec is the specification of a VolumeAttachment request.", "type": "object", "required": ["attacher", "source", "nodeName"], "properties": { "attacher": { "description": "Attacher indicates the name of the volume driver that MUST handle this request. This is the name returned by GetPluginName().", "type": "string" }, "nodeName": { "description": "The node that the volume should be attached to.", "type": "string" }, "source": { "description": "Source represents the volume that should be attached.", "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeAttachmentSource" } } }, "io.k8s.api.storage.v1.VolumeAttachmentStatus": { "description": "VolumeAttachmentStatus is the status of a VolumeAttachment request.", "type": "object", "required": ["attached"], "properties": { "attachError": { "description": "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.", "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeError" }, "attached": { "description": "Indicates the volume is successfully attached. This field must only be set by the entity completing the attach operation, i.e. the external-attacher.", "type": "boolean" }, "attachmentMetadata": { "description": "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.", "type": "object", "additionalProperties": { "type": "string" } }, "detachError": { "description": "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.", "$ref": "#/definitions/io.k8s.api.storage.v1.VolumeError" } } }, "io.k8s.api.storage.v1.VolumeError": { "description": "VolumeError captures an error encountered during a volume operation.", "type": "object", "properties": { "message": { "description": "String detailing the error encountered during Attach or Detach operation. This string may be logged, so it should not contain sensitive information.", "type": "string" }, "time": { "description": "Time the error was encountered.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } } }, "io.k8s.api.storage.v1.VolumeNodeResources": { "description": "VolumeNodeResources is a set of resource limits for scheduling of volumes.", "type": "object", "properties": { "count": { "description": "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.", "type": "integer", "format": "int32" } } }, "io.k8s.api.storage.v1beta1.CSIStorageCapacity": { "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.", "type": "object", "required": ["storageClassName"], "properties": { "apiVersion": { "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", "type": "string" }, "capacity": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" }, "kind": { "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", "type": "string" }, "maximumVolumeSize": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" }, "metadata": { "description": "Standard object's metadata. The name has no particular meaning. It must be 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-\u003cuuid\u003e, 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", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "nodeTopology": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "storageClassName": { "description": "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.", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "storage.k8s.io", "kind": "CSIStorageCapacity", "version": "v1beta1" } ] }, "io.k8s.api.storage.v1beta1.CSIStorageCapacityList": { "description": "CSIStorageCapacityList is a collection of CSIStorageCapacity objects.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is the list of CSIStorageCapacity objects.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.storage.v1beta1.CSIStorageCapacity" }, "x-kubernetes-list-map-keys": ["name"], "x-kubernetes-list-type": "map" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "storage.k8s.io", "kind": "CSIStorageCapacityList", "version": "v1beta1" } ] }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition": { "description": "CustomResourceColumnDefinition specifies a column for server side printing.", "type": "object", "required": ["name", "type", "jsonPath"], "properties": { "description": { "description": "description is a human readable description of this column.", "type": "string" }, "format": { "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.", "type": "string" }, "jsonPath": { "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.", "type": "string" }, "name": { "description": "name is a human readable name for the column.", "type": "string" }, "priority": { "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.", "type": "integer", "format": "int32" }, "type": { "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.", "type": "string" } } }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion": { "description": "CustomResourceConversion describes how to convert different versions of a CR.", "type": "object", "required": ["strategy"], "properties": { "strategy": { "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.", "type": "string" }, "webhook": { "description": "webhook describes how to call the conversion webhook. Required when `strategy` is set to `Webhook`.", "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion" } } }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition": { "description": "CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format \u003c.spec.name\u003e.\u003c.spec.group\u003e.", "type": "object", "required": ["spec"], "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "spec describes how the user wants the resources to appear", "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec" }, "status": { "description": "status indicates the actual state of the CustomResourceDefinition", "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "apiextensions.k8s.io", "kind": "CustomResourceDefinition", "version": "v1" } ] }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition": { "description": "CustomResourceDefinitionCondition contains details for the current condition of this pod.", "type": "object", "required": ["type", "status"], "properties": { "lastTransitionTime": { "description": "lastTransitionTime last time the condition transitioned from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "message is a human-readable message indicating details about last transition.", "type": "string" }, "reason": { "description": "reason is a unique, one-word, CamelCase reason for the condition's last transition.", "type": "string" }, "status": { "description": "status is the status of the condition. Can be True, False, Unknown.", "type": "string" }, "type": { "description": "type is the type of the condition. Types include Established, NamesAccepted and Terminating.", "type": "string" } } }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList": { "description": "CustomResourceDefinitionList is a list of CustomResourceDefinition objects.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "items list individual CustomResourceDefinition objects", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "apiextensions.k8s.io", "kind": "CustomResourceDefinitionList", "version": "v1" } ] }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames": { "description": "CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition", "type": "object", "required": ["plural", "kind"], "properties": { "categories": { "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`.", "type": "array", "items": { "type": "string" } }, "kind": { "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.", "type": "string" }, "listKind": { "description": "listKind is the serialized kind of the list for this resource. Defaults to \"`kind`List\".", "type": "string" }, "plural": { "description": "plural is the plural name of the resource to serve. The custom resources are served under `/apis/\u003cgroup\u003e/\u003cversion\u003e/.../\u003cplural\u003e`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`). Must be all lowercase.", "type": "string" }, "shortNames": { "description": "shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get \u003cshortname\u003e`. It must be all lowercase.", "type": "array", "items": { "type": "string" } }, "singular": { "description": "singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.", "type": "string" } } }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec": { "description": "CustomResourceDefinitionSpec describes how a user wants their resource to appear", "type": "object", "required": ["group", "names", "scope", "versions"], "properties": { "conversion": { "description": "conversion defines conversion settings for the CRD.", "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion" }, "group": { "description": "group is the API group of the defined custom resource. The custom resources are served under `/apis/\u003cgroup\u003e/...`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`).", "type": "string" }, "names": { "description": "names specify the resource and kind names for the custom resource.", "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames" }, "preserveUnknownFields": { "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.", "type": "boolean" }, "scope": { "description": "scope indicates whether the defined custom resource is cluster- or namespace-scoped. Allowed values are `Cluster` and `Namespaced`.", "type": "string" }, "versions": { "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 \u003e beta \u003e 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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion" } } } }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus": { "description": "CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition", "type": "object", "properties": { "acceptedNames": { "description": "acceptedNames are the names that are actually being used to serve discovery. They may be different than the names in spec.", "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames" }, "conditions": { "description": "conditions indicate state for particular aspects of a CustomResourceDefinition", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition" }, "x-kubernetes-list-map-keys": ["type"], "x-kubernetes-list-type": "map" }, "storedVersions": { "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.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion": { "description": "CustomResourceDefinitionVersion describes a version for CRD.", "type": "object", "required": ["name", "served", "storage"], "properties": { "additionalPrinterColumns": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition" } }, "deprecated": { "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.", "type": "boolean" }, "deprecationWarning": { "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.", "type": "string" }, "name": { "description": "name is the version name, e.g. “v1â€, “v2beta1â€, etc. The custom resources are served under this version at `/apis/\u003cgroup\u003e/\u003cversion\u003e/...` if `served` is true.", "type": "string" }, "schema": { "description": "schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource.", "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation" }, "served": { "description": "served is a flag enabling/disabling this version from being served via REST APIs", "type": "boolean" }, "storage": { "description": "storage indicates this version should be used when persisting custom resources to storage. There must be exactly one version with storage=true.", "type": "boolean" }, "subresources": { "description": "subresources specify what subresources this version of the defined custom resource have.", "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources" } } }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale": { "description": "CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.", "type": "object", "required": ["specReplicasPath", "statusReplicasPath"], "properties": { "labelSelectorPath": { "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.", "type": "string" }, "specReplicasPath": { "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.", "type": "string" }, "statusReplicasPath": { "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.", "type": "string" } } }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus": { "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", "type": "object" }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources": { "description": "CustomResourceSubresources defines the status and scale subresources for CustomResources.", "type": "object", "properties": { "scale": { "description": "scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.", "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale" }, "status": { "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.", "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus" } } }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation": { "description": "CustomResourceValidation is a list of validation methods for CustomResources.", "type": "object", "properties": { "openAPIV3Schema": { "description": "openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.", "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps" } } }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation": { "description": "ExternalDocumentation allows referencing an external resource for extended documentation.", "type": "object", "properties": { "description": { "type": "string" }, "url": { "type": "string" } } }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON": { "description": "JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil." }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps": { "description": "JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).", "type": "object", "properties": { "$ref": { "type": "string" }, "$schema": { "type": "string" }, "additionalItems": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool" }, "additionalProperties": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool" }, "allOf": { "type": "array", "items": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps" } }, "anyOf": { "type": "array", "items": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps" } }, "default": { "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.", "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON" }, "definitions": { "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps" } }, "dependencies": { "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray" } }, "description": { "type": "string" }, "enum": { "type": "array", "items": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON" } }, "example": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON" }, "exclusiveMaximum": { "type": "boolean" }, "exclusiveMinimum": { "type": "boolean" }, "externalDocs": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation" }, "format": { "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.", "type": "string" }, "id": { "type": "string" }, "items": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray" }, "maxItems": { "type": "integer", "format": "int64" }, "maxLength": { "type": "integer", "format": "int64" }, "maxProperties": { "type": "integer", "format": "int64" }, "maximum": { "type": "number", "format": "double" }, "minItems": { "type": "integer", "format": "int64" }, "minLength": { "type": "integer", "format": "int64" }, "minProperties": { "type": "integer", "format": "int64" }, "minimum": { "type": "number", "format": "double" }, "multipleOf": { "type": "number", "format": "double" }, "not": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps" }, "nullable": { "type": "boolean" }, "oneOf": { "type": "array", "items": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps" } }, "pattern": { "type": "string" }, "patternProperties": { "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps" } }, "properties": { "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps" } }, "required": { "type": "array", "items": { "type": "string" } }, "title": { "type": "string" }, "type": { "type": "string" }, "uniqueItems": { "type": "boolean" }, "x-kubernetes-embedded-resource": { "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).", "type": "boolean" }, "x-kubernetes-int-or-string": { "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", "type": "boolean" }, "x-kubernetes-list-map-keys": { "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.", "type": "array", "items": { "type": "string" } }, "x-kubernetes-list-type": { "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.", "type": "string" }, "x-kubernetes-map-type": { "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.", "type": "string" }, "x-kubernetes-preserve-unknown-fields": { "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.", "type": "boolean" }, "x-kubernetes-validations": { "description": "x-kubernetes-validations describes a list of validation rules written in the CEL expression language. This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule" }, "x-kubernetes-list-map-keys": ["rule"], "x-kubernetes-list-type": "map", "x-kubernetes-patch-merge-key": "rule", "x-kubernetes-patch-strategy": "merge" } } }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray": { "description": "JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes." }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool": { "description": "JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property." }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray": { "description": "JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array." }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference": { "description": "ServiceReference holds a reference to Service.legacy.k8s.io", "type": "object", "required": ["namespace", "name"], "properties": { "name": { "description": "name is the name of the service. Required", "type": "string" }, "namespace": { "description": "namespace is the namespace of the service. Required", "type": "string" }, "path": { "description": "path is an optional URL path at which the webhook will be contacted.", "type": "string" }, "port": { "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.", "type": "integer", "format": "int32" } } }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule": { "description": "ValidationRule describes a validation rule written in the CEL expression language.", "type": "object", "required": ["rule"], "properties": { "message": { "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\"", "type": "string" }, "rule": { "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 \u003c= 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 \u003c 10\"} - Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value \u003e= 0 \u0026\u0026 value \u003c 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__ \u003e 0\"}\n - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop \u003e 0\"}\n - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d \u003e 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.", "type": "string" } } }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig": { "description": "WebhookClientConfig contains the information to make a TLS connection with the webhook.", "type": "object", "properties": { "caBundle": { "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.", "type": "string", "format": "byte" }, "service": { "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`.", "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference" }, "url": { "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.", "type": "string" } } }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion": { "description": "WebhookConversion describes how to call a conversion webhook", "type": "object", "required": ["conversionReviewVersions"], "properties": { "clientConfig": { "description": "clientConfig is the instructions for how to call the webhook if strategy is `Webhook`.", "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig" }, "conversionReviewVersions": { "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.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.apimachinery.pkg.api.resource.Quantity": { "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``` \u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n\n\t(Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n\n\t(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\n\u003cdecimalSI\u003e ::= 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\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e ```\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.", "type": "string" }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup": { "description": "APIGroup contains the name, the supported versions, and the preferred version of a group.", "type": "object", "required": ["name", "versions"], "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "name": { "description": "name is the name of the group.", "type": "string" }, "preferredVersion": { "description": "preferredVersion is the version preferred by the API server, which probably is the storage version.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery" }, "serverAddressByClientCIDRs": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR" } }, "versions": { "description": "versions are the versions supported in this group.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery" } } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "APIGroup", "version": "v1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIGroupList": { "description": "APIGroupList is a list of APIGroup, to allow clients to discover the API at /apis.", "type": "object", "required": ["groups"], "properties": { "apiVersion": { "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", "type": "string" }, "groups": { "description": "groups is a list of APIGroup.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "kind": { "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", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "APIGroupList", "version": "v1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIResource": { "description": "APIResource specifies the name of a resource and whether it is namespaced.", "type": "object", "required": ["name", "singularName", "namespaced", "kind", "verbs"], "properties": { "categories": { "description": "categories is a list of the grouped resources this resource belongs to (e.g. 'all')", "type": "array", "items": { "type": "string" } }, "group": { "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\".", "type": "string" }, "kind": { "description": "kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')", "type": "string" }, "name": { "description": "name is the plural name of the resource.", "type": "string" }, "namespaced": { "description": "namespaced indicates if a resource is namespaced or not.", "type": "boolean" }, "shortNames": { "description": "shortNames is a list of suggested short names of the resource.", "type": "array", "items": { "type": "string" } }, "singularName": { "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.", "type": "string" }, "storageVersionHash": { "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.", "type": "string" }, "verbs": { "description": "verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)", "type": "array", "items": { "type": "string" } }, "version": { "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)\".", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList": { "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.", "type": "object", "required": ["groupVersion", "resources"], "properties": { "apiVersion": { "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", "type": "string" }, "groupVersion": { "description": "groupVersion is the group and version this APIResourceList is for.", "type": "string" }, "kind": { "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", "type": "string" }, "resources": { "description": "resources contains the name of the resources and if they are namespaced.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResource" } } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "APIResourceList", "version": "v1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIVersions": { "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.", "type": "object", "required": ["versions", "serverAddressByClientCIDRs"], "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "serverAddressByClientCIDRs": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR" } }, "versions": { "description": "versions are the api versions that are available.", "type": "array", "items": { "type": "string" } } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "APIVersions", "version": "v1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.Condition": { "description": "Condition contains details for one aspect of the current state of this API Resource.", "type": "object", "required": ["type", "status", "lastTransitionTime", "reason", "message"], "properties": { "lastTransitionTime": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "message is a human readable message indicating details about the transition. This may be an empty string.", "type": "string" }, "observedGeneration": { "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.", "type": "integer", "format": "int64" }, "reason": { "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.", "type": "string" }, "status": { "description": "status of the condition, one of True, False, Unknown.", "type": "string" }, "type": { "description": "type of condition in CamelCase or in foo.example.com/CamelCase.", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions": { "description": "DeleteOptions may be provided when deleting an API object.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "dryRun": { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "type": "array", "items": { "type": "string" } }, "gracePeriodSeconds": { "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.", "type": "integer", "format": "int64" }, "kind": { "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", "type": "string" }, "orphanDependents": { "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.", "type": "boolean" }, "preconditions": { "description": "Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions" }, "propagationPolicy": { "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.", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "DeleteOptions", "version": "v1" }, { "group": "admission.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "admission.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "admissionregistration.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "admissionregistration.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "admissionregistration.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "apiextensions.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "apiextensions.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "apiregistration.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "apiregistration.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "apps", "kind": "DeleteOptions", "version": "v1" }, { "group": "apps", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "apps", "kind": "DeleteOptions", "version": "v1beta2" }, { "group": "authentication.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "authentication.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "authentication.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "authorization.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "authorization.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "autoscaling", "kind": "DeleteOptions", "version": "v1" }, { "group": "autoscaling", "kind": "DeleteOptions", "version": "v2" }, { "group": "autoscaling", "kind": "DeleteOptions", "version": "v2beta1" }, { "group": "autoscaling", "kind": "DeleteOptions", "version": "v2beta2" }, { "group": "batch", "kind": "DeleteOptions", "version": "v1" }, { "group": "batch", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "certificates.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "certificates.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "coordination.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "coordination.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "discovery.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "discovery.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "events.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "events.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "extensions", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "flowcontrol.apiserver.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "flowcontrol.apiserver.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "flowcontrol.apiserver.k8s.io", "kind": "DeleteOptions", "version": "v1beta2" }, { "group": "flowcontrol.apiserver.k8s.io", "kind": "DeleteOptions", "version": "v1beta3" }, { "group": "imagepolicy.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "internal.apiserver.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "networking.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "networking.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "networking.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "node.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "node.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "node.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "policy", "kind": "DeleteOptions", "version": "v1" }, { "group": "policy", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "rbac.authorization.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "rbac.authorization.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "rbac.authorization.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "resource.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "scheduling.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "scheduling.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "scheduling.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "storage.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "storage.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "storage.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1": { "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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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", "type": "object" }, "io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery": { "description": "GroupVersion contains the \"group/version\" and \"version\" string of a version. It is made a struct to keep extensibility.", "type": "object", "required": ["groupVersion", "version"], "properties": { "groupVersion": { "description": "groupVersion specifies the API group and version in the form \"group/version\"", "type": "string" }, "version": { "description": "version specifies the version in the form of \"version\". This is to save the clients the trouble of splitting the GroupVersion.", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector": { "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.", "type": "object", "properties": { "matchExpressions": { "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement" } }, "matchLabels": { "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.", "type": "object", "additionalProperties": { "type": "string" } } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement": { "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", "type": "object", "required": ["key", "operator"], "properties": { "key": { "description": "key is the label key that the selector applies to.", "type": "string", "x-kubernetes-patch-merge-key": "key", "x-kubernetes-patch-strategy": "merge" }, "operator": { "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", "type": "string" }, "values": { "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.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta": { "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", "type": "object", "properties": { "continue": { "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.", "type": "string" }, "remainingItemCount": { "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.", "type": "integer", "format": "int64" }, "resourceVersion": { "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", "type": "string" }, "selfLink": { "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry": { "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", "type": "object", "properties": { "apiVersion": { "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.", "type": "string" }, "fieldsType": { "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", "type": "string" }, "fieldsV1": { "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1" }, "manager": { "description": "Manager is an identifier of the workflow managing these fields.", "type": "string" }, "operation": { "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'.", "type": "string" }, "subresource": { "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.", "type": "string" }, "time": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime": { "description": "MicroTime is version of Time with microsecond level precision.", "type": "string", "format": "date-time" }, "io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta": { "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", "type": "object", "properties": { "annotations": { "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: http://kubernetes.io/docs/user-guide/annotations", "type": "object", "additionalProperties": { "type": "string" } }, "creationTimestamp": { "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", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "deletionGracePeriodSeconds": { "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.", "type": "integer", "format": "int64" }, "deletionTimestamp": { "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", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "finalizers": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-patch-strategy": "merge" }, "generateName": { "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", "type": "string" }, "generation": { "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", "type": "integer", "format": "int64" }, "labels": { "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: http://kubernetes.io/docs/user-guide/labels", "type": "object", "additionalProperties": { "type": "string" } }, "managedFields": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry" } }, "name": { "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: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string" }, "namespace": { "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: http://kubernetes.io/docs/user-guide/namespaces", "type": "string" }, "ownerReferences": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference" }, "x-kubernetes-patch-merge-key": "uid", "x-kubernetes-patch-strategy": "merge" }, "resourceVersion": { "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", "type": "string" }, "selfLink": { "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", "type": "string" }, "uid": { "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: http://kubernetes.io/docs/user-guide/identifiers#uids", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference": { "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.", "type": "object", "required": ["apiVersion", "kind", "name", "uid"], "properties": { "apiVersion": { "description": "API version of the referent.", "type": "string" }, "blockOwnerDeletion": { "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.", "type": "boolean" }, "controller": { "description": "If true, this reference points to the managing controller.", "type": "boolean" }, "kind": { "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "name": { "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string" }, "uid": { "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", "type": "string" } }, "x-kubernetes-map-type": "atomic" }, "io.k8s.apimachinery.pkg.apis.meta.v1.Patch": { "description": "Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.", "type": "object" }, "io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions": { "description": "Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.", "type": "object", "properties": { "resourceVersion": { "description": "Specifies the target ResourceVersion", "type": "string" }, "uid": { "description": "Specifies the target UID.", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR": { "description": "ServerAddressByClientCIDR helps the client to determine the server address that they should use, depending on the clientCIDR that they match.", "type": "object", "required": ["clientCIDR", "serverAddress"], "properties": { "clientCIDR": { "description": "The CIDR with which clients can match their IP to figure out the server address that they should use.", "type": "string" }, "serverAddress": { "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.", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.Status": { "description": "Status is a return value for calls that don't return other objects.", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "code": { "description": "Suggested HTTP return code for this status, 0 if not set.", "type": "integer", "format": "int32" }, "details": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails" }, "kind": { "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", "type": "string" }, "message": { "description": "A human-readable description of the status of this operation.", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" }, "reason": { "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.", "type": "string" }, "status": { "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", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Status", "version": "v1" }, { "group": "resource.k8s.io", "kind": "Status", "version": "v1alpha1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause": { "description": "StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.", "type": "object", "properties": { "field": { "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\"", "type": "string" }, "message": { "description": "A human-readable description of the cause of the error. This field may be presented as-is to a reader.", "type": "string" }, "reason": { "description": "A machine-readable description of the cause of the error. If this value is empty there is no information available.", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails": { "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.", "type": "object", "properties": { "causes": { "description": "The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause" } }, "group": { "description": "The group attribute of the resource associated with the status StatusReason.", "type": "string" }, "kind": { "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", "type": "string" }, "name": { "description": "The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).", "type": "string" }, "retryAfterSeconds": { "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.", "type": "integer", "format": "int32" }, "uid": { "description": "UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.Time": { "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.", "type": "string", "format": "date-time" }, "io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent": { "description": "Event represents a single event to a watched resource.", "type": "object", "required": ["type", "object"], "properties": { "object": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.runtime.RawExtension" }, "type": { "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "WatchEvent", "version": "v1" }, { "group": "admission.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "admission.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "admissionregistration.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "admissionregistration.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "admissionregistration.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "apiextensions.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "apiextensions.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "apiregistration.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "apiregistration.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "apps", "kind": "WatchEvent", "version": "v1" }, { "group": "apps", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "apps", "kind": "WatchEvent", "version": "v1beta2" }, { "group": "authentication.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "authentication.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "authentication.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "authorization.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "authorization.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "autoscaling", "kind": "WatchEvent", "version": "v1" }, { "group": "autoscaling", "kind": "WatchEvent", "version": "v2" }, { "group": "autoscaling", "kind": "WatchEvent", "version": "v2beta1" }, { "group": "autoscaling", "kind": "WatchEvent", "version": "v2beta2" }, { "group": "batch", "kind": "WatchEvent", "version": "v1" }, { "group": "batch", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "certificates.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "certificates.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "coordination.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "coordination.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "discovery.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "discovery.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "events.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "events.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "extensions", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "flowcontrol.apiserver.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "flowcontrol.apiserver.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "flowcontrol.apiserver.k8s.io", "kind": "WatchEvent", "version": "v1beta2" }, { "group": "flowcontrol.apiserver.k8s.io", "kind": "WatchEvent", "version": "v1beta3" }, { "group": "imagepolicy.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "internal.apiserver.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "networking.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "networking.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "networking.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "node.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "node.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "node.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "policy", "kind": "WatchEvent", "version": "v1" }, { "group": "policy", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "rbac.authorization.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "rbac.authorization.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "rbac.authorization.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "resource.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "scheduling.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "scheduling.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "scheduling.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "storage.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "storage.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "storage.k8s.io", "kind": "WatchEvent", "version": "v1beta1" } ] }, "io.k8s.apimachinery.pkg.runtime.RawExtension": { "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.)", "type": "object" }, "io.k8s.apimachinery.pkg.util.intstr.IntOrString": { "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.", "type": "string", "format": "int-or-string" }, "io.k8s.apimachinery.pkg.version.Info": { "description": "Info contains versioning information. how we'll want to distribute that information.", "type": "object", "required": [ "major", "minor", "gitVersion", "gitCommit", "gitTreeState", "buildDate", "goVersion", "compiler", "platform" ], "properties": { "buildDate": { "type": "string" }, "compiler": { "type": "string" }, "gitCommit": { "type": "string" }, "gitTreeState": { "type": "string" }, "gitVersion": { "type": "string" }, "goVersion": { "type": "string" }, "major": { "type": "string" }, "minor": { "type": "string" }, "platform": { "type": "string" } } }, "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService": { "description": "APIService represents a server for a particular GroupVersion. Name must be \"version.group\".", "type": "object", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec contains information for locating and communicating with a server", "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceSpec" }, "status": { "description": "Status contains derived information about an API server", "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "apiregistration.k8s.io", "kind": "APIService", "version": "v1" } ] }, "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceCondition": { "description": "APIServiceCondition describes the state of an APIService at a particular point", "type": "object", "required": ["type", "status"], "properties": { "lastTransitionTime": { "description": "Last time the condition transitioned from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "Human-readable message indicating details about last transition.", "type": "string" }, "reason": { "description": "Unique, one-word, CamelCase reason for the condition's last transition.", "type": "string" }, "status": { "description": "Status is the status of the condition. Can be True, False, Unknown.", "type": "string" }, "type": { "description": "Type is the type of the condition.", "type": "string" } } }, "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceList": { "description": "APIServiceList is a list of APIService objects.", "type": "object", "required": ["items"], "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is the list of APIService", "type": "array", "items": { "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" } }, "kind": { "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", "type": "string" }, "metadata": { "description": "Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "apiregistration.k8s.io", "kind": "APIServiceList", "version": "v1" } ] }, "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceSpec": { "description": "APIServiceSpec contains information for locating and communicating with a server. Only https is supported, though you are able to disable certificate verification.", "type": "object", "required": ["groupPriorityMinimum", "versionPriority"], "properties": { "caBundle": { "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.", "type": "string", "format": "byte", "x-kubernetes-list-type": "atomic" }, "group": { "description": "Group is the API group name this server hosts", "type": "string" }, "groupPriorityMinimum": { "description": "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", "type": "integer", "format": "int32" }, "insecureSkipTLSVerify": { "description": "InsecureSkipTLSVerify disables TLS certificate verification when communicating with this server. This is strongly discouraged. You should use the CABundle instead.", "type": "boolean" }, "service": { "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.", "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.ServiceReference" }, "version": { "description": "Version is the API version this server hosts. For example, \"v1\"", "type": "string" }, "versionPriority": { "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 \u003e beta \u003e 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.", "type": "integer", "format": "int32" } } }, "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceStatus": { "description": "APIServiceStatus contains derived information about an API server", "type": "object", "properties": { "conditions": { "description": "Current service state of apiService.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceCondition" }, "x-kubernetes-list-map-keys": ["type"], "x-kubernetes-list-type": "map", "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" } } }, "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.ServiceReference": { "description": "ServiceReference holds a reference to Service.legacy.k8s.io", "type": "object", "properties": { "name": { "description": "Name is the name of the service", "type": "string" }, "namespace": { "description": "Namespace is the namespace of the service", "type": "string" }, "port": { "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).", "type": "integer", "format": "int32" } } } }, "securityDefinitions": { "BearerToken": { "description": "Bearer Token authentication", "type": "apiKey", "name": "authorization", "in": "header" } }, "security": [{ "BearerToken": [] }] } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemamutation/000077500000000000000000000000001453663023200242205ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemamutation/walker.go000066400000000000000000000272551453663023200260470ustar00rootroot00000000000000/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package schemamutation import ( "k8s.io/kube-openapi/pkg/validation/spec" ) // Walker runs callback functions on all references of an OpenAPI spec, // replacing the values when visiting corresponding types. type Walker struct { // SchemaCallback will be called on each schema, taking the original schema, // and before any other callbacks of the Walker. // If the schema needs to be mutated, DO NOT mutate it in-place, // always create a copy, mutate, and return it. SchemaCallback func(schema *spec.Schema) *spec.Schema // RefCallback will be called on each ref. // If the ref needs to be mutated, DO NOT mutate it in-place, // always create a copy, mutate, and return it. RefCallback func(ref *spec.Ref) *spec.Ref } type SchemaCallbackFunc func(schema *spec.Schema) *spec.Schema type RefCallbackFunc func(ref *spec.Ref) *spec.Ref var SchemaCallBackNoop SchemaCallbackFunc = func(schema *spec.Schema) *spec.Schema { return schema } var RefCallbackNoop RefCallbackFunc = func(ref *spec.Ref) *spec.Ref { return ref } // ReplaceReferences rewrites the references without mutating the input. // The output might share data with the input. func ReplaceReferences(walkRef func(ref *spec.Ref) *spec.Ref, sp *spec.Swagger) *spec.Swagger { walker := &Walker{RefCallback: walkRef, SchemaCallback: SchemaCallBackNoop} return walker.WalkRoot(sp) } func (w *Walker) WalkSchema(schema *spec.Schema) *spec.Schema { if schema == nil { return nil } orig := schema clone := func() { if orig == schema { schema = &spec.Schema{} *schema = *orig } } // Always run callback on the whole schema first // so that SchemaCallback can take the original schema as input. schema = w.SchemaCallback(schema) if r := w.RefCallback(&schema.Ref); r != &schema.Ref { clone() schema.Ref = *r } definitionsCloned := false for k, v := range schema.Definitions { if s := w.WalkSchema(&v); s != &v { if !definitionsCloned { definitionsCloned = true clone() schema.Definitions = make(spec.Definitions, len(orig.Definitions)) for k2, v2 := range orig.Definitions { schema.Definitions[k2] = v2 } } schema.Definitions[k] = *s } } propertiesCloned := false for k, v := range schema.Properties { if s := w.WalkSchema(&v); s != &v { if !propertiesCloned { propertiesCloned = true clone() schema.Properties = make(map[string]spec.Schema, len(orig.Properties)) for k2, v2 := range orig.Properties { schema.Properties[k2] = v2 } } schema.Properties[k] = *s } } patternPropertiesCloned := false for k, v := range schema.PatternProperties { if s := w.WalkSchema(&v); s != &v { if !patternPropertiesCloned { patternPropertiesCloned = true clone() schema.PatternProperties = make(map[string]spec.Schema, len(orig.PatternProperties)) for k2, v2 := range orig.PatternProperties { schema.PatternProperties[k2] = v2 } } schema.PatternProperties[k] = *s } } allOfCloned := false for i := range schema.AllOf { if s := w.WalkSchema(&schema.AllOf[i]); s != &schema.AllOf[i] { if !allOfCloned { allOfCloned = true clone() schema.AllOf = make([]spec.Schema, len(orig.AllOf)) copy(schema.AllOf, orig.AllOf) } schema.AllOf[i] = *s } } anyOfCloned := false for i := range schema.AnyOf { if s := w.WalkSchema(&schema.AnyOf[i]); s != &schema.AnyOf[i] { if !anyOfCloned { anyOfCloned = true clone() schema.AnyOf = make([]spec.Schema, len(orig.AnyOf)) copy(schema.AnyOf, orig.AnyOf) } schema.AnyOf[i] = *s } } oneOfCloned := false for i := range schema.OneOf { if s := w.WalkSchema(&schema.OneOf[i]); s != &schema.OneOf[i] { if !oneOfCloned { oneOfCloned = true clone() schema.OneOf = make([]spec.Schema, len(orig.OneOf)) copy(schema.OneOf, orig.OneOf) } schema.OneOf[i] = *s } } if schema.Not != nil { if s := w.WalkSchema(schema.Not); s != schema.Not { clone() schema.Not = s } } if schema.AdditionalProperties != nil && schema.AdditionalProperties.Schema != nil { if s := w.WalkSchema(schema.AdditionalProperties.Schema); s != schema.AdditionalProperties.Schema { clone() schema.AdditionalProperties = &spec.SchemaOrBool{Schema: s, Allows: schema.AdditionalProperties.Allows} } } if schema.AdditionalItems != nil && schema.AdditionalItems.Schema != nil { if s := w.WalkSchema(schema.AdditionalItems.Schema); s != schema.AdditionalItems.Schema { clone() schema.AdditionalItems = &spec.SchemaOrBool{Schema: s, Allows: schema.AdditionalItems.Allows} } } if schema.Items != nil { if schema.Items.Schema != nil { if s := w.WalkSchema(schema.Items.Schema); s != schema.Items.Schema { clone() schema.Items = &spec.SchemaOrArray{Schema: s} } } else { itemsCloned := false for i := range schema.Items.Schemas { if s := w.WalkSchema(&schema.Items.Schemas[i]); s != &schema.Items.Schemas[i] { if !itemsCloned { clone() schema.Items = &spec.SchemaOrArray{ Schemas: make([]spec.Schema, len(orig.Items.Schemas)), } itemsCloned = true copy(schema.Items.Schemas, orig.Items.Schemas) } schema.Items.Schemas[i] = *s } } } } return schema } func (w *Walker) walkParameter(param *spec.Parameter) *spec.Parameter { if param == nil { return nil } orig := param cloned := false clone := func() { if !cloned { cloned = true param = &spec.Parameter{} *param = *orig } } if r := w.RefCallback(¶m.Ref); r != ¶m.Ref { clone() param.Ref = *r } if s := w.WalkSchema(param.Schema); s != param.Schema { clone() param.Schema = s } if param.Items != nil { if r := w.RefCallback(¶m.Items.Ref); r != ¶m.Items.Ref { param.Items.Ref = *r } } return param } func (w *Walker) walkParameters(params []spec.Parameter) ([]spec.Parameter, bool) { if params == nil { return nil, false } orig := params cloned := false clone := func() { if !cloned { cloned = true params = make([]spec.Parameter, len(params)) copy(params, orig) } } for i := range params { if s := w.walkParameter(¶ms[i]); s != ¶ms[i] { clone() params[i] = *s } } return params, cloned } func (w *Walker) walkResponse(resp *spec.Response) *spec.Response { if resp == nil { return nil } orig := resp cloned := false clone := func() { if !cloned { cloned = true resp = &spec.Response{} *resp = *orig } } if r := w.RefCallback(&resp.Ref); r != &resp.Ref { clone() resp.Ref = *r } if s := w.WalkSchema(resp.Schema); s != resp.Schema { clone() resp.Schema = s } return resp } func (w *Walker) walkResponses(resps *spec.Responses) *spec.Responses { if resps == nil { return nil } orig := resps cloned := false clone := func() { if !cloned { cloned = true resps = &spec.Responses{} *resps = *orig } } if r := w.walkResponse(resps.ResponsesProps.Default); r != resps.ResponsesProps.Default { clone() resps.Default = r } responsesCloned := false for k, v := range resps.ResponsesProps.StatusCodeResponses { if r := w.walkResponse(&v); r != &v { if !responsesCloned { responsesCloned = true clone() resps.ResponsesProps.StatusCodeResponses = make(map[int]spec.Response, len(orig.StatusCodeResponses)) for k2, v2 := range orig.StatusCodeResponses { resps.ResponsesProps.StatusCodeResponses[k2] = v2 } } resps.ResponsesProps.StatusCodeResponses[k] = *r } } return resps } func (w *Walker) walkOperation(op *spec.Operation) *spec.Operation { if op == nil { return nil } orig := op cloned := false clone := func() { if !cloned { cloned = true op = &spec.Operation{} *op = *orig } } parametersCloned := false for i := range op.Parameters { if s := w.walkParameter(&op.Parameters[i]); s != &op.Parameters[i] { if !parametersCloned { parametersCloned = true clone() op.Parameters = make([]spec.Parameter, len(orig.Parameters)) copy(op.Parameters, orig.Parameters) } op.Parameters[i] = *s } } if r := w.walkResponses(op.Responses); r != op.Responses { clone() op.Responses = r } return op } func (w *Walker) walkPathItem(pathItem *spec.PathItem) *spec.PathItem { if pathItem == nil { return nil } orig := pathItem cloned := false clone := func() { if !cloned { cloned = true pathItem = &spec.PathItem{} *pathItem = *orig } } if p, changed := w.walkParameters(pathItem.Parameters); changed { clone() pathItem.Parameters = p } if op := w.walkOperation(pathItem.Get); op != pathItem.Get { clone() pathItem.Get = op } if op := w.walkOperation(pathItem.Head); op != pathItem.Head { clone() pathItem.Head = op } if op := w.walkOperation(pathItem.Delete); op != pathItem.Delete { clone() pathItem.Delete = op } if op := w.walkOperation(pathItem.Options); op != pathItem.Options { clone() pathItem.Options = op } if op := w.walkOperation(pathItem.Patch); op != pathItem.Patch { clone() pathItem.Patch = op } if op := w.walkOperation(pathItem.Post); op != pathItem.Post { clone() pathItem.Post = op } if op := w.walkOperation(pathItem.Put); op != pathItem.Put { clone() pathItem.Put = op } return pathItem } func (w *Walker) walkPaths(paths *spec.Paths) *spec.Paths { if paths == nil { return nil } orig := paths cloned := false clone := func() { if !cloned { cloned = true paths = &spec.Paths{} *paths = *orig } } pathsCloned := false for k, v := range paths.Paths { if p := w.walkPathItem(&v); p != &v { if !pathsCloned { pathsCloned = true clone() paths.Paths = make(map[string]spec.PathItem, len(orig.Paths)) for k2, v2 := range orig.Paths { paths.Paths[k2] = v2 } } paths.Paths[k] = *p } } return paths } func (w *Walker) WalkRoot(swagger *spec.Swagger) *spec.Swagger { if swagger == nil { return nil } orig := swagger cloned := false clone := func() { if !cloned { cloned = true swagger = &spec.Swagger{} *swagger = *orig } } parametersCloned := false for k, v := range swagger.Parameters { if p := w.walkParameter(&v); p != &v { if !parametersCloned { parametersCloned = true clone() swagger.Parameters = make(map[string]spec.Parameter, len(orig.Parameters)) for k2, v2 := range orig.Parameters { swagger.Parameters[k2] = v2 } } swagger.Parameters[k] = *p } } responsesCloned := false for k, v := range swagger.Responses { if r := w.walkResponse(&v); r != &v { if !responsesCloned { responsesCloned = true clone() swagger.Responses = make(map[string]spec.Response, len(orig.Responses)) for k2, v2 := range orig.Responses { swagger.Responses[k2] = v2 } } swagger.Responses[k] = *r } } definitionsCloned := false for k, v := range swagger.Definitions { if s := w.WalkSchema(&v); s != &v { if !definitionsCloned { definitionsCloned = true clone() swagger.Definitions = make(spec.Definitions, len(orig.Definitions)) for k2, v2 := range orig.Definitions { swagger.Definitions[k2] = v2 } } swagger.Definitions[k] = *s } } if swagger.Paths != nil { if p := w.walkPaths(swagger.Paths); p != swagger.Paths { clone() swagger.Paths = p } } return swagger } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/schemamutation/walker_test.go000066400000000000000000000277061453663023200271070ustar00rootroot00000000000000/* Copyright 2019 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package schemamutation import ( "encoding/json" "fmt" "math" "math/rand" "reflect" "regexp" "strings" "testing" "time" fuzz "github.com/google/gofuzz" "k8s.io/kube-openapi/pkg/util/jsontesting" "k8s.io/kube-openapi/pkg/util/sets" "k8s.io/kube-openapi/pkg/validation/spec" ) func fuzzFuncs(f *fuzz.Fuzzer, refFunc func(ref *spec.Ref, c fuzz.Continue, visible bool)) { invisible := 0 // == 0 means visible, > 0 means invisible depth := 0 maxDepth := 3 nilChance := func(depth int) float64 { return math.Pow(0.9, math.Max(0.0, float64(maxDepth-depth))) } updateFuzzer := func(depth int) { f.NilChance(nilChance(depth)) f.NumElements(0, max(0, maxDepth-depth)) } updateFuzzer(depth) enter := func(o interface{}, recursive bool, c fuzz.Continue) { if recursive { depth++ updateFuzzer(depth) } invisible++ c.FuzzNoCustom(o) invisible-- } leave := func(recursive bool) { if recursive { depth-- updateFuzzer(depth) } } f.Funcs( func(ref *spec.Ref, c fuzz.Continue) { refFunc(ref, c, invisible == 0) }, func(sa *spec.SchemaOrStringArray, c fuzz.Continue) { *sa = spec.SchemaOrStringArray{} if c.RandBool() { c.Fuzz(&sa.Schema) } else { c.Fuzz(&sa.Property) } if sa.Schema == nil && len(sa.Property) == 0 { *sa = spec.SchemaOrStringArray{Schema: &spec.Schema{}} } }, func(url *spec.SchemaURL, c fuzz.Continue) { *url = spec.SchemaURL("http://url") }, func(s *spec.Swagger, c fuzz.Continue) { enter(s, false, c) defer leave(false) // only fuzz those fields we walk into with invisible==false c.Fuzz(&s.Parameters) c.Fuzz(&s.Responses) c.Fuzz(&s.Definitions) c.Fuzz(&s.Paths) }, func(p *spec.PathItem, c fuzz.Continue) { enter(p, false, c) defer leave(false) // only fuzz those fields we walk into with invisible==false c.Fuzz(&p.Parameters) c.Fuzz(&p.Delete) c.Fuzz(&p.Get) c.Fuzz(&p.Head) c.Fuzz(&p.Options) c.Fuzz(&p.Patch) c.Fuzz(&p.Post) c.Fuzz(&p.Put) }, func(p *spec.Parameter, c fuzz.Continue) { enter(p, false, c) defer leave(false) // only fuzz those fields we walk into with invisible==false c.Fuzz(&p.Ref) c.Fuzz(&p.Schema) if c.RandBool() { p.Items = &spec.Items{} c.Fuzz(&p.Items.Ref) } else { p.Items = nil } }, func(s *spec.Response, c fuzz.Continue) { enter(s, false, c) defer leave(false) // only fuzz those fields we walk into with invisible==false c.Fuzz(&s.Ref) c.Fuzz(&s.Description) c.Fuzz(&s.Schema) c.Fuzz(&s.Examples) }, func(s *spec.Dependencies, c fuzz.Continue) { enter(s, false, c) defer leave(false) // and nothing with invisible==false }, func(p *spec.SimpleSchema, c fuzz.Continue) { // gofuzz is broken and calls this even for *SimpleSchema fields, ignoring NilChance, leading to infinite recursion if c.Float64() > nilChance(depth) { return } enter(p, true, c) defer leave(true) c.FuzzNoCustom(p) }, func(s *spec.SchemaProps, c fuzz.Continue) { // gofuzz is broken and calls this even for *SchemaProps fields, ignoring NilChance, leading to infinite recursion if c.Float64() > nilChance(depth) { return } enter(s, true, c) defer leave(true) c.FuzzNoCustom(s) }, func(i *interface{}, c fuzz.Continue) { // do nothing for examples and defaults. These are free form JSON fields. }, ) } func TestReplaceReferences(t *testing.T) { visibleRE, err := regexp.Compile("\"\\$ref\":\"(http://ref-[^\"]*)\"") if err != nil { t.Fatalf("failed to compile ref regex: %v", err) } invisibleRE, err := regexp.Compile("\"\\$ref\":\"(http://invisible-[^\"]*)\"") if err != nil { t.Fatalf("failed to compile ref regex: %v", err) } for i := 0; i < 1000; i++ { var visibleRefs, invisibleRefs sets.String var seed int64 var randSource rand.Source var s *spec.Swagger for { visibleRefs = sets.NewString() invisibleRefs = sets.NewString() f := fuzz.New() seed = time.Now().UnixNano() //seed = int64(1549012506261785182) randSource = rand.New(rand.NewSource(seed)) f.RandSource(randSource) visibleRefsNum := 0 invisibleRefsNum := 0 fuzzFuncs(f, func(ref *spec.Ref, c fuzz.Continue, visible bool) { var url string if visible { // this is a ref that is seen by the walker (we have some exceptions where we don't walk into) url = fmt.Sprintf("http://ref-%d", visibleRefsNum) visibleRefsNum++ } else { // this is a ref that is not seen by the walker (we have some exceptions where we don't walk into) url = fmt.Sprintf("http://invisible-%d", invisibleRefsNum) invisibleRefsNum++ } r, err := spec.NewRef(url) if err != nil { t.Fatalf("failed to fuzz ref: %v", err) } *ref = r }, ) // create random swagger spec with random URL references, but at least one ref s = &spec.Swagger{} f.Fuzz(s) // clone spec to normalize (fuzz might generate objects which do not roundtrip json marshalling var err error s, err = cloneSwagger(s) if err != nil { t.Fatalf("failed to normalize swagger after fuzzing: %v", err) } // find refs bs, err := s.MarshalJSON() if err != nil { t.Fatalf("failed to marshal swagger: %v", err) } for _, m := range invisibleRE.FindAllStringSubmatch(string(bs), -1) { invisibleRefs.Insert(m[1]) } if res := visibleRE.FindAllStringSubmatch(string(bs), -1); len(res) > 0 { for _, m := range res { visibleRefs.Insert(m[1]) } break } } t.Run(fmt.Sprintf("iteration %d", i), func(t *testing.T) { mutatedRefs := sets.NewString() mutationProbability := rand.New(randSource).Float64() for _, vr := range visibleRefs.List() { if rand.New(randSource).Float64() > mutationProbability { mutatedRefs.Insert(vr) } } origString, err := s.MarshalJSON() if err != nil { t.Fatalf("failed to marshal swagger: %v", err) } t.Logf("created schema with %d walked refs, %d invisible refs, mutating %v, seed %d: %s", visibleRefs.Len(), invisibleRefs.Len(), mutatedRefs.List(), seed, string(origString)) // convert to json string, replace one of the refs, and unmarshal back mutatedString := string(origString) for _, r := range mutatedRefs.List() { mr := strings.Replace(r, "ref", "mutated", -1) mutatedString = strings.Replace(mutatedString, "\""+r+"\"", "\""+mr+"\"", -1) } mutatedViaJSON := &spec.Swagger{} if err := json.Unmarshal([]byte(mutatedString), mutatedViaJSON); err != nil { t.Fatalf("failed to unmarshal mutated spec: %v", err) } // replay the same mutation using the mutating walker seenRefs := sets.NewString() walker := Walker{ RefCallback: func(ref *spec.Ref) *spec.Ref { seenRefs.Insert(ref.String()) if mutatedRefs.Has(ref.String()) { r, err := spec.NewRef(strings.Replace(ref.String(), "ref", "mutated", -1)) if err != nil { t.Fatalf("failed to create ref: %v", err) } return &r } return ref }, SchemaCallback: SchemaCallBackNoop, } mutatedViaWalker := walker.WalkRoot(s) // compare that we got the same if !reflect.DeepEqual(mutatedViaJSON, mutatedViaWalker) { t.Errorf("mutation via walker differ from JSON text replacement (got A, expected B): %s", objectDiff(mutatedViaWalker, mutatedViaJSON)) } if !seenRefs.HasAll(visibleRefs.List()...) { t.Errorf("expected to see the same refs in the walker as during fuzzing. Not seen: %v", visibleRefs.Difference(seenRefs).List()) } if shouldNotSee := seenRefs.Intersection(invisibleRefs); shouldNotSee.Len() > 0 { t.Errorf("refs seen that the walker is not expected to see: %v", shouldNotSee.List()) } }) } } func TestReplaceSchema(t *testing.T) { for i := 0; i < 1000; i++ { t.Run(fmt.Sprintf("iteration-%d", i), func(t *testing.T) { seed := time.Now().UnixNano() f := fuzz.NewWithSeed(seed).NilChance(0).MaxDepth(5) rootSchema := &spec.Schema{} f.Funcs(func(s *spec.Schema, c fuzz.Continue) { c.Fuzz(&s.Description) s.Description += " original" if c.RandBool() { // append enums var enums []string c.Fuzz(&enums) for _, enum := range enums { s.Enum = append(s.Enum, enum) } } if c.RandBool() { c.Fuzz(&s.Properties) } if c.RandBool() { c.Fuzz(&s.AdditionalProperties) } if c.RandBool() { c.Fuzz(&s.PatternProperties) } if c.RandBool() { c.Fuzz(&s.AdditionalItems) } if c.RandBool() { c.Fuzz(&s.AnyOf) } if c.RandBool() { c.Fuzz(&s.AllOf) } if c.RandBool() { c.Fuzz(&s.OneOf) } if c.RandBool() { c.Fuzz(&s.Not) } if c.RandBool() { c.Fuzz(&s.Definitions) } if c.RandBool() { items := new(spec.SchemaOrArray) if c.RandBool() { c.Fuzz(&items.Schema) } else { c.Fuzz(&items.Schemas) } s.Items = items } }) f.Fuzz(rootSchema) w := &Walker{SchemaCallback: func(schema *spec.Schema) *spec.Schema { s := *schema s.Description = strings.Replace(s.Description, "original", "modified", -1) return &s }, RefCallback: RefCallbackNoop} newSchema := w.WalkSchema(rootSchema) origBytes, err := json.Marshal(rootSchema) if err != nil { t.Fatalf("cannot marshal original schema: %v", err) } origJSON := string(origBytes) mutatedWithString := strings.Replace(origJSON, "original", "modified", -1) newBytes, err := json.Marshal(newSchema) if err != nil { t.Fatalf("cannot marshal mutated schema: %v", err) } if err := jsontesting.JsonCompare(newBytes, []byte(mutatedWithString)); err != nil { t.Error(err) } if !strings.Contains(origJSON, `"enum":[`) { t.Logf("did not contain enum, skipping enum checks") return } // test enum removal w = &Walker{SchemaCallback: func(schema *spec.Schema) *spec.Schema { s := *schema s.Enum = nil return &s }, RefCallback: RefCallbackNoop} newSchema = w.WalkSchema(rootSchema) newBytes, err = json.Marshal(newSchema) if err != nil { t.Fatalf("cannot marshal mutated schema: %v", err) } if strings.Contains(string(newBytes), `"enum":[`) { t.Errorf("enum still exists in %q", newBytes) } }) } } func cloneSwagger(orig *spec.Swagger) (*spec.Swagger, error) { bs, err := orig.MarshalJSON() if err != nil { return nil, fmt.Errorf("error marshaling: %v", err) } s := &spec.Swagger{} if err := json.Unmarshal(bs, s); err != nil { return nil, fmt.Errorf("error unmarshaling: %v", err) } return s, nil } // stringDiff diffs a and b and returns a human readable diff. func stringDiff(a, b string) string { ba := []byte(a) bb := []byte(b) out := []byte{} i := 0 for ; i < len(ba) && i < len(bb); i++ { if ba[i] != bb[i] { break } out = append(out, ba[i]) } out = append(out, []byte("\n\nA: ")...) out = append(out, ba[i:]...) out = append(out, []byte("\n\nB: ")...) out = append(out, bb[i:]...) out = append(out, []byte("\n\n")...) return string(out) } // objectDiff writes the two objects out as JSON and prints out the identical part of // the objects followed by the remaining part of 'a' and finally the remaining part of 'b'. // For debugging tests. func objectDiff(a, b interface{}) string { ab, err := json.Marshal(a) if err != nil { panic(fmt.Sprintf("a: %v", err)) } bb, err := json.Marshal(b) if err != nil { panic(fmt.Sprintf("b: %v", err)) } return stringDiff(string(ab), string(bb)) } func max(i, j int) int { if i > j { return i } return j } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/000077500000000000000000000000001453663023200222145ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/benchmark_serialization_test.go000066400000000000000000000155131453663023200304760ustar00rootroot00000000000000package spec3 import ( "encoding/json" "fmt" "io" "os" "reflect" "testing" "github.com/google/go-cmp/cmp" fuzz "github.com/google/gofuzz" "k8s.io/kube-openapi/pkg/internal" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" "k8s.io/kube-openapi/pkg/validation/spec" ) // cmp.Diff panics when reflecting unexported fields under jsonreference.Ref // a custom comparator is required var swaggerDiffOptions = []cmp.Option{cmp.Comparer(func(a spec.Ref, b spec.Ref) bool { return a.String() == b.String() })} func TestOpenAPIV3RoundTrip(t *testing.T) { var fuzzer *fuzz.Fuzzer fuzzer = fuzz.NewWithSeed(1646791953) // Make sure we have enough depth such that maps do not yield nil elements fuzzer.MaxDepth(22).NilChance(0.5).NumElements(1, 7) fuzzer.Funcs(OpenAPIV3FuzzFuncs...) expected := &OpenAPI{} fuzzer.Fuzz(expected) j, err := json.Marshal(expected) if err != nil { t.Fatal(err) } var actual *OpenAPI err = json.Unmarshal(j, &actual) if err != nil { t.Fatal(err) } if !reflect.DeepEqual(expected, actual) { t.Fatal(cmp.Diff(expected, actual, swaggerDiffOptions...)) } } func TestOpenAPIV3Deserialize(t *testing.T) { swagFile, err := os.Open("./testdata/appsv1spec.json") if err != nil { t.Fatal(err) } defer swagFile.Close() originalJSON, err := io.ReadAll(swagFile) if err != nil { t.Fatal(err) } internal.UseOptimizedJSONUnmarshalingV3 = false var result1 *OpenAPI if err := json.Unmarshal(originalJSON, &result1); err != nil { t.Fatal(err) } internal.UseOptimizedJSONUnmarshalingV3 = true var result2 *OpenAPI if err := json.Unmarshal(originalJSON, &result2); err != nil { t.Fatal(err) } if !reflect.DeepEqual(result1, result2) { t.Fatal(cmp.Diff(result1, result2, swaggerDiffOptions...)) } } func TestOpenAPIV3Serialize(t *testing.T) { swagFile, err := os.Open("./testdata/appsv1spec.json") if err != nil { t.Fatal(err) } defer swagFile.Close() originalJSON, err := io.ReadAll(swagFile) if err != nil { t.Fatal(err) } var openapi *OpenAPI if err := json.Unmarshal(originalJSON, &openapi); err != nil { t.Fatal(err) } internal.UseOptimizedJSONUnmarshalingV3 = false want, err := json.Marshal(openapi) if err != nil { t.Fatal(err) } internal.UseOptimizedJSONUnmarshalingV3 = true got, err := openapi.MarshalJSON() if err != nil { t.Fatal(err) } if err := jsontesting.JsonCompare(want, got); err != nil { t.Errorf("marshal doesn't match: %v", err) } } func TestOpenAPIV3SerializeFuzzed(t *testing.T) { var fuzzer *fuzz.Fuzzer fuzzer = fuzz.NewWithSeed(1646791953) fuzzer.MaxDepth(13).NilChance(0.075).NumElements(1, 2) fuzzer.Funcs(OpenAPIV3FuzzFuncs...) for i := 0; i < 100; i++ { openapi := &OpenAPI{} fuzzer.Fuzz(openapi) internal.UseOptimizedJSONUnmarshalingV3 = false want, err := json.Marshal(openapi) if err != nil { t.Fatal(err) } internal.UseOptimizedJSONUnmarshalingV3 = true got, err := openapi.MarshalJSON() if err != nil { t.Fatal(err) } if err := jsontesting.JsonCompare(want, got); err != nil { t.Errorf("fuzzed marshal doesn't match: %v", err) } } } func TestOpenAPIV3SerializeStable(t *testing.T) { swagFile, err := os.Open("./testdata/appsv1spec.json") if err != nil { t.Fatal(err) } defer swagFile.Close() originalJSON, err := io.ReadAll(swagFile) if err != nil { t.Fatal(err) } var openapi *OpenAPI if err := json.Unmarshal(originalJSON, &openapi); err != nil { t.Fatal(err) } internal.UseOptimizedJSONUnmarshalingV3 = true for i := 0; i < 5; i++ { t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { want, err := openapi.MarshalJSON() if err != nil { t.Fatal(err) } got, err := openapi.MarshalJSON() if err != nil { t.Fatal(err) } if err := jsontesting.JsonCompare(want, got); err != nil { t.Errorf("marshal doesn't match: %v", err) } }) } } func BenchmarkOpenAPIV3Deserialize(b *testing.B) { benchcases := []struct { file string }{ { file: "appsv1spec.json", }, { file: "authorizationv1spec.json", }, } for _, bc := range benchcases { swagFile, err := os.Open("./testdata/" + bc.file) if err != nil { b.Fatal(err) } defer swagFile.Close() originalJSON, err := io.ReadAll(swagFile) if err != nil { b.Fatal(err) } b.ResetTimer() b.Run(fmt.Sprintf("%s jsonv1", bc.file), func(b2 *testing.B) { b2.ReportAllocs() internal.UseOptimizedJSONUnmarshaling = false internal.UseOptimizedJSONUnmarshalingV3 = false for i := 0; i < b2.N; i++ { var result *OpenAPI if err := json.Unmarshal(originalJSON, &result); err != nil { b2.Fatal(err) } } }) b.Run(fmt.Sprintf("%s jsonv2 via jsonv1 schema only", bc.file), func(b2 *testing.B) { b2.ReportAllocs() internal.UseOptimizedJSONUnmarshaling = true internal.UseOptimizedJSONUnmarshalingV3 = false for i := 0; i < b2.N; i++ { var result *OpenAPI if err := json.Unmarshal(originalJSON, &result); err != nil { b2.Fatal(err) } } }) b.Run(fmt.Sprintf("%s jsonv2 via jsonv1 full spec", bc.file), func(b2 *testing.B) { b2.ReportAllocs() internal.UseOptimizedJSONUnmarshaling = true internal.UseOptimizedJSONUnmarshalingV3 = true for i := 0; i < b2.N; i++ { var result *OpenAPI if err := json.Unmarshal(originalJSON, &result); err != nil { b2.Fatal(err) } } }) b.Run("jsonv2", func(b2 *testing.B) { b2.ReportAllocs() internal.UseOptimizedJSONUnmarshaling = true internal.UseOptimizedJSONUnmarshalingV3 = true for i := 0; i < b2.N; i++ { var result *OpenAPI if err := result.UnmarshalJSON(originalJSON); err != nil { b2.Fatal(err) } } }) } } func BenchmarkOpenAPIV3Serialize(b *testing.B) { benchcases := []struct { file string }{ { file: "appsv1spec.json", }, { file: "authorizationv1spec.json", }, } for _, bc := range benchcases { swagFile, err := os.Open("./testdata/" + bc.file) if err != nil { b.Fatal(err) } defer swagFile.Close() originalJSON, err := io.ReadAll(swagFile) if err != nil { b.Fatal(err) } var openapi *OpenAPI if err := json.Unmarshal(originalJSON, &openapi); err != nil { b.Fatal(err) } b.ResetTimer() b.Run(fmt.Sprintf("%s jsonv1", bc.file), func(b2 *testing.B) { b2.ReportAllocs() internal.UseOptimizedJSONMarshalingV3 = false for i := 0; i < b2.N; i++ { if _, err := json.Marshal(openapi); err != nil { b2.Fatal(err) } } }) b.Run(fmt.Sprintf("%s jsonv2 via jsonv1 full spec", bc.file), func(b2 *testing.B) { b2.ReportAllocs() internal.UseOptimizedJSONMarshalingV3 = true for i := 0; i < b2.N; i++ { if _, err := json.Marshal(openapi); err != nil { b2.Fatal(err) } } }) b.Run("jsonv2", func(b2 *testing.B) { b2.ReportAllocs() internal.UseOptimizedJSONMarshalingV3 = true for i := 0; i < b2.N; i++ { if _, err := openapi.MarshalJSON(); err != nil { b2.Fatal(err) } } }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/component.go000066400000000000000000000045131453663023200245500ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3 import "k8s.io/kube-openapi/pkg/validation/spec" // Components holds a set of reusable objects for different aspects of the OAS. // All objects defined within the components object will have no effect on the API // unless they are explicitly referenced from properties outside the components object. // // more at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#componentsObject type Components struct { // Schemas holds reusable Schema Objects Schemas map[string]*spec.Schema `json:"schemas,omitempty"` // SecuritySchemes holds reusable Security Scheme Objects, more at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#securitySchemeObject SecuritySchemes SecuritySchemes `json:"securitySchemes,omitempty"` // Responses holds reusable Responses Objects Responses map[string]*Response `json:"responses,omitempty"` // Parameters holds reusable Parameters Objects Parameters map[string]*Parameter `json:"parameters,omitempty"` // Example holds reusable Example objects Examples map[string]*Example `json:"examples,omitempty"` // RequestBodies holds reusable Request Body objects RequestBodies map[string]*RequestBody `json:"requestBodies,omitempty"` // Links is a map of operations links that can be followed from the response Links map[string]*Link `json:"links,omitempty"` // Headers holds a maps of a headers name to its definition Headers map[string]*Header `json:"headers,omitempty"` // all fields are defined at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#componentsObject } // SecuritySchemes holds reusable Security Scheme Objects, more at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#securitySchemeObject type SecuritySchemes map[string]*SecurityScheme golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/component_test.go000066400000000000000000000433001453663023200256040ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3_test import ( "encoding/json" "testing" "k8s.io/kube-openapi/pkg/util/jsontesting" "k8s.io/kube-openapi/pkg/validation/spec" "reflect" "k8s.io/kube-openapi/pkg/spec3" ) func TestSchemasJSONSerialization(t *testing.T) { cases := []struct { name string target spec3.Components expectedOutput string }{ { name: "scenario1: smoke test serialization of spec3.Components.Schemas", target: spec3.Components{ Schemas: map[string]*spec.Schema{ "io.k8s.api.admissionregistration.v1beta1.MutatingWebhook": { SchemaProps: spec.SchemaProps{ Description: "MutatingWebhook describes an admission webhook and the resources and operations it applies to.", Type: []string{"object"}, Properties: map[string]spec.Schema{ "name": { SchemaProps: spec.SchemaProps{ 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.", Type: []string{"string"}, Format: "", }, }, "clientConfig": { SchemaProps: spec.SchemaProps{ Description: "ClientConfig defines how to communicate with the hook. Required", Ref: spec.MustCreateRef("k8s.io/api/admissionregistration/v1beta1.WebhookClientConfig"), }, }, "rules": { SchemaProps: spec.SchemaProps{ 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.", Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Ref: spec.MustCreateRef("k8s.io/api/admissionregistration/v1beta1.RuleWithOperations"), }, }, }, }, }, "failurePolicy": { SchemaProps: spec.SchemaProps{ Description: "FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Ignore.", Type: []string{"string"}, Format: "", }, }, "matchPolicy": { SchemaProps: spec.SchemaProps{ 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 \"Exact\"", Type: []string{"string"}, Format: "", }, }, "namespaceSelector": { SchemaProps: spec.SchemaProps{ 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.", Ref: spec.MustCreateRef("k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector"), }, }, "objectSelector": { SchemaProps: spec.SchemaProps{ 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.", Ref: spec.MustCreateRef("k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector"), }, }, "sideEffects": { SchemaProps: spec.SchemaProps{ Description: "SideEffects states whether this webhookk has side effects. Acceptable values are: Unknown, None, Some, NoneOnDryRun Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission change 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. Defaults to Unknown.", Type: []string{"string"}, Format: "", }, }, "timeoutSeconds": { SchemaProps: spec.SchemaProps{ 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 30 seconds.", Type: []string{"integer"}, Format: "int32", }, }, "admissionReviewVersions": { SchemaProps: spec.SchemaProps{ 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. Default to ['v1beta1'].", Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"string"}, Format: "", }, }, }, }, }, "reinvocationPolicy": { SchemaProps: spec.SchemaProps{ 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\".", Type: []string{"string"}, Format: "", }, }, }, Required: []string{"name", "clientConfig"}, }, }, }, }, expectedOutput: `{"schemas":{"io.k8s.api.admissionregistration.v1beta1.MutatingWebhook":{"description":"MutatingWebhook describes an admission webhook and the resources and operations it applies to.","type":"object","required":["name","clientConfig"],"properties":{"admissionReviewVersions":{"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. Default to ['v1beta1'].","type":"array","items":{"type":"string"}},"clientConfig":{"description":"ClientConfig defines how to communicate with the hook. Required","$ref":"k8s.io/api/admissionregistration/v1beta1.WebhookClientConfig"},"failurePolicy":{"description":"FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Ignore.","type":"string"},"matchPolicy":{"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 \"Exact\"","type":"string"},"name":{"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.","type":"string"},"namespaceSelector":{"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.","$ref":"k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector"},"objectSelector":{"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.","$ref":"k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector"},"reinvocationPolicy":{"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\".","type":"string"},"rules":{"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.","type":"array","items":{"$ref":"k8s.io/api/admissionregistration/v1beta1.RuleWithOperations"}},"sideEffects":{"description":"SideEffects states whether this webhookk has side effects. Acceptable values are: Unknown, None, Some, NoneOnDryRun Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission change 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. Defaults to Unknown.","type":"string"},"timeoutSeconds":{"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 30 seconds.","type":"integer","format":"int32"}}}}}`, }, // scenario 2 { name: "scenario2: schema can be defined as a ref, see: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#componentsObject", target: spec3.Components{ Schemas: map[string]*spec.Schema{ "io.k8s.api.admissionregistration.v1beta1.MutatingWebhook": { SchemaProps: spec.SchemaProps{ Ref: spec.MustCreateRef("k8s.io/api/admissionregistration/v1beta1.WebhookClientConfig"), }, }, }, }, expectedOutput: `{"schemas":{"io.k8s.api.admissionregistration.v1beta1.MutatingWebhook":{"$ref":"k8s.io/api/admissionregistration/v1beta1.WebhookClientConfig"}}}`, }, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { rawTarget, err := json.Marshal(tc.target) if err != nil { t.Fatal(err) } if err := jsontesting.JsonCompare([]byte(tc.expectedOutput), rawTarget); err != nil { t.Error(err) } var expected spec3.Components json.Unmarshal(rawTarget, &expected) if !reflect.DeepEqual(expected, tc.target) { t.Fatalf("round trip error %s", tc.name) } }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/encoding.go000066400000000000000000000065341453663023200243410ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3 import ( "encoding/json" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" "k8s.io/kube-openapi/pkg/validation/spec" ) type Encoding struct { EncodingProps spec.VendorExtensible } // MarshalJSON is a custom marshal function that knows how to encode Encoding as JSON func (e *Encoding) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshalingV3 { return internal.DeterministicMarshal(e) } b1, err := json.Marshal(e.EncodingProps) if err != nil { return nil, err } b2, err := json.Marshal(e.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2), nil } func (e *Encoding) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { EncodingProps encodingPropsOmitZero `json:",inline"` spec.Extensions } x.Extensions = internal.SanitizeExtensions(e.Extensions) x.EncodingProps = encodingPropsOmitZero(e.EncodingProps) return opts.MarshalNext(enc, x) } func (e *Encoding) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshalingV3 { return jsonv2.Unmarshal(data, e) } if err := json.Unmarshal(data, &e.EncodingProps); err != nil { return err } if err := json.Unmarshal(data, &e.VendorExtensible); err != nil { return err } return nil } func (e *Encoding) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { spec.Extensions EncodingProps } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } e.Extensions = internal.SanitizeExtensions(x.Extensions) e.EncodingProps = x.EncodingProps return nil } type EncodingProps struct { // Content Type for encoding a specific property ContentType string `json:"contentType,omitempty"` // A map allowing additional information to be provided as headers Headers map[string]*Header `json:"headers,omitempty"` // Describes how a specific property value will be serialized depending on its type Style string `json:"style,omitempty"` // When this is true, property values of type array or object generate separate parameters for each value of the array, or key-value-pair of the map. For other types of properties this property has no effect Explode bool `json:"explode,omitempty"` // AllowReserved determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 AllowReserved bool `json:"allowReserved,omitempty"` } type encodingPropsOmitZero struct { ContentType string `json:"contentType,omitempty"` Headers map[string]*Header `json:"headers,omitempty"` Style string `json:"style,omitempty"` Explode bool `json:"explode,omitzero"` AllowReserved bool `json:"allowReserved,omitzero"` } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/encoding_test.go000066400000000000000000000046541453663023200254010ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3_test import ( "encoding/json" "testing" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" "k8s.io/kube-openapi/pkg/spec3" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" "k8s.io/kube-openapi/pkg/validation/spec" ) func TestEncodingRoundtrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { Name: "Basic Roundtrip", Object: &spec3.Encoding{ spec3.EncodingProps{ ContentType: "image/png", }, spec.VendorExtensible{Extensions: spec.Extensions{ "x-framework": "go-swagger", }}, }, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&spec3.Encoding{})) }) } } func TestEncodingJSONSerialization(t *testing.T) { cases := []struct { name string target *spec3.Encoding expectedOutput string }{ // scenario 1 { name: "basic", target: &spec3.Encoding{ EncodingProps: spec3.EncodingProps{ ContentType: "image/png", Headers: map[string]*spec3.Header{ "X-Rate-Limit-Limit": { HeaderProps: spec3.HeaderProps{ Description: "The number of allowed requests in the current period", Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"integer"}, }, }, }, }, }, }, }, expectedOutput: `{"contentType":"image/png","headers":{"X-Rate-Limit-Limit":{"description":"The number of allowed requests in the current period","schema":{"type":"integer"}}}}`, }, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { rawTarget, err := json.Marshal(tc.target) if err != nil { t.Fatal(err) } serializedTarget := string(rawTarget) if !cmp.Equal(serializedTarget, tc.expectedOutput) { t.Fatalf("diff %s", cmp.Diff(serializedTarget, tc.expectedOutput)) } }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/example.go000066400000000000000000000060741453663023200242050ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3 import ( "encoding/json" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" "k8s.io/kube-openapi/pkg/validation/spec" ) // Example https://swagger.io/specification/#example-object type Example struct { spec.Refable ExampleProps spec.VendorExtensible } // MarshalJSON is a custom marshal function that knows how to encode RequestBody as JSON func (e *Example) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshalingV3 { return internal.DeterministicMarshal(e) } b1, err := json.Marshal(e.Refable) if err != nil { return nil, err } b2, err := json.Marshal(e.ExampleProps) if err != nil { return nil, err } b3, err := json.Marshal(e.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2, b3), nil } func (e *Example) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { Ref string `json:"$ref,omitempty"` ExampleProps `json:",inline"` spec.Extensions } x.Ref = e.Refable.Ref.String() x.Extensions = internal.SanitizeExtensions(e.Extensions) x.ExampleProps = e.ExampleProps return opts.MarshalNext(enc, x) } func (e *Example) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshalingV3 { return jsonv2.Unmarshal(data, e) } if err := json.Unmarshal(data, &e.Refable); err != nil { return err } if err := json.Unmarshal(data, &e.ExampleProps); err != nil { return err } if err := json.Unmarshal(data, &e.VendorExtensible); err != nil { return err } return nil } func (e *Example) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { spec.Extensions ExampleProps } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } if err := internal.JSONRefFromMap(&e.Ref.Ref, x.Extensions); err != nil { return err } e.Extensions = internal.SanitizeExtensions(x.Extensions) e.ExampleProps = x.ExampleProps return nil } type ExampleProps struct { // Summary holds a short description of the example Summary string `json:"summary,omitempty"` // Description holds a long description of the example Description string `json:"description,omitempty"` // Embedded literal example. Value interface{} `json:"value,omitempty"` // A URL that points to the literal example. This provides the capability to reference examples that cannot easily be included in JSON or YAML documents. ExternalValue string `json:"externalValue,omitempty"` } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/example_test.go000066400000000000000000000040431453663023200252360ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3_test import ( "encoding/json" "testing" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" "k8s.io/kube-openapi/pkg/spec3" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" "k8s.io/kube-openapi/pkg/validation/spec" ) func TestExampleRoundtrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { Name: "Basic Roundtrip", Object: &spec3.Example{ spec.Refable{Ref: spec.MustCreateRef("Dog")}, spec3.ExampleProps{ Description: "foo", }, spec.VendorExtensible{Extensions: spec.Extensions{ "x-framework": "go-swagger", }}, }, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&spec3.Example{})) }) } } func TestExampleJSONSerialization(t *testing.T) { cases := []struct { name string target *spec3.Example expectedOutput string }{ { name: "basic", target: &spec3.Example{ ExampleProps: spec3.ExampleProps{ Summary: "An example", Value: map[string]string{"foo": "bar"}, }, }, expectedOutput: `{"summary":"An example","value":{"foo":"bar"}}`, }, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { rawTarget, err := json.Marshal(tc.target) if err != nil { t.Fatal(err) } serializedTarget := string(rawTarget) if !cmp.Equal(serializedTarget, tc.expectedOutput) { t.Fatalf("diff %s", cmp.Diff(serializedTarget, tc.expectedOutput)) } }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/external_documentation.go000066400000000000000000000052251453663023200273220ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3 import ( "encoding/json" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" "k8s.io/kube-openapi/pkg/validation/spec" ) type ExternalDocumentation struct { ExternalDocumentationProps spec.VendorExtensible } type ExternalDocumentationProps struct { // Description is a short description of the target documentation. CommonMark syntax MAY be used for rich text representation. Description string `json:"description,omitempty"` // URL is the URL for the target documentation. URL string `json:"url"` } // MarshalJSON is a custom marshal function that knows how to encode Responses as JSON func (e *ExternalDocumentation) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshalingV3 { return internal.DeterministicMarshal(e) } b1, err := json.Marshal(e.ExternalDocumentationProps) if err != nil { return nil, err } b2, err := json.Marshal(e.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2), nil } func (e *ExternalDocumentation) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { ExternalDocumentationProps `json:",inline"` spec.Extensions } x.Extensions = internal.SanitizeExtensions(e.Extensions) x.ExternalDocumentationProps = e.ExternalDocumentationProps return opts.MarshalNext(enc, x) } func (e *ExternalDocumentation) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshalingV3 { return jsonv2.Unmarshal(data, e) } if err := json.Unmarshal(data, &e.ExternalDocumentationProps); err != nil { return err } if err := json.Unmarshal(data, &e.VendorExtensible); err != nil { return err } return nil } func (e *ExternalDocumentation) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { spec.Extensions ExternalDocumentationProps } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } e.Extensions = internal.SanitizeExtensions(x.Extensions) e.ExternalDocumentationProps = x.ExternalDocumentationProps return nil } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/external_documentation_test.go000066400000000000000000000042311453663023200303550ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3_test import ( "encoding/json" "testing" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" "k8s.io/kube-openapi/pkg/spec3" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" "k8s.io/kube-openapi/pkg/validation/spec" ) func TestExternalDocumentationRoundTrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { Name: "Basic Roundtrip", Object: &spec3.ExternalDocumentation{ spec3.ExternalDocumentationProps{ Description: "foo", }, spec.VendorExtensible{Extensions: spec.Extensions{ "x-framework": "go-swagger", }}, }, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&spec3.ExternalDocumentation{})) }) } } func TestExternalDocumentationJSONSerialization(t *testing.T) { cases := []struct { name string target *spec3.ExternalDocumentation expectedOutput string }{ // scenario 1 { name: "basic", target: &spec3.ExternalDocumentation{ ExternalDocumentationProps: spec3.ExternalDocumentationProps{ Description: "Find more info here", URL: "https://example.com", }, }, expectedOutput: `{"description":"Find more info here","url":"https://example.com"}`, }, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { rawTarget, err := json.Marshal(tc.target) if err != nil { t.Fatal(err) } serializedTarget := string(rawTarget) if !cmp.Equal(serializedTarget, tc.expectedOutput) { t.Fatalf("diff %s", cmp.Diff(serializedTarget, tc.expectedOutput)) } }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/fuzz.go000066400000000000000000000142101453663023200235370ustar00rootroot00000000000000package spec3 import ( "math/rand" "strings" fuzz "github.com/google/gofuzz" "k8s.io/kube-openapi/pkg/validation/spec" ) // refChance is the chance that a particular component will use a $ref // instead of fuzzed. Expressed as a fraction 1/n, currently there is // a 1/3 chance that a ref will be used. const refChance = 3 const alphaNumChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" func randAlphanumString() string { arr := make([]string, rand.Intn(10)+5) for i := 0; i < len(arr); i++ { arr[i] = string(alphaNumChars[rand.Intn(len(alphaNumChars))]) } return strings.Join(arr, "") } var OpenAPIV3FuzzFuncs []interface{} = []interface{}{ func(s *string, c fuzz.Continue) { // All OpenAPI V3 map keys must follow the corresponding // regex. Note that this restricts the range for all other // string values as well. str := randAlphanumString() *s = str }, func(o *OpenAPI, c fuzz.Continue) { c.FuzzNoCustom(o) o.Version = "3.0.0" for i, val := range o.SecurityRequirement { if val == nil { o.SecurityRequirement[i] = make(map[string][]string) } for k, v := range val { if v == nil { val[k] = make([]string, 0) } } } }, func(r *interface{}, c fuzz.Continue) { switch c.Intn(3) { case 0: *r = nil case 1: n := c.RandString() + "x" *r = n case 2: n := c.Float64() *r = n } }, func(v **spec.Info, c fuzz.Continue) { // Info is never nil *v = &spec.Info{} c.FuzzNoCustom(*v) (*v).Title = c.RandString() + "x" }, func(v *Paths, c fuzz.Continue) { c.Fuzz(&v.VendorExtensible) num := c.Intn(5) if num > 0 { v.Paths = make(map[string]*Path) } for i := 0; i < num; i++ { val := Path{} c.Fuzz(&val) v.Paths["/"+c.RandString()] = &val } }, func(v *SecurityScheme, c fuzz.Continue) { if c.Intn(refChance) == 0 { c.Fuzz(&v.Refable) return } switch c.Intn(4) { case 0: v.Type = "apiKey" v.Name = c.RandString() + "x" switch c.Intn(3) { case 0: v.In = "query" case 1: v.In = "header" case 2: v.In = "cookie" } case 1: v.Type = "http" case 2: v.Type = "oauth2" v.Flows = make(map[string]*OAuthFlow) flow := OAuthFlow{} flow.AuthorizationUrl = c.RandString() + "x" v.Flows["implicit"] = &flow flow.Scopes = make(map[string]string) flow.Scopes["foo"] = "bar" case 3: v.Type = "openIdConnect" v.OpenIdConnectUrl = "https://" + c.RandString() } v.Scheme = "basic" }, func(v *spec.Ref, c fuzz.Continue) { switch c.Intn(7) { case 0: *v = spec.MustCreateRef("#/components/schemas/" + randAlphanumString()) case 1: *v = spec.MustCreateRef("#/components/responses/" + randAlphanumString()) case 2: *v = spec.MustCreateRef("#/components/headers/" + randAlphanumString()) case 3: *v = spec.MustCreateRef("#/components/securitySchemes/" + randAlphanumString()) case 5: *v = spec.MustCreateRef("#/components/parameters/" + randAlphanumString()) case 6: *v = spec.MustCreateRef("#/components/requestBodies/" + randAlphanumString()) } }, func(v *Parameter, c fuzz.Continue) { if c.Intn(refChance) == 0 { c.Fuzz(&v.Refable) return } c.Fuzz(&v.ParameterProps) c.Fuzz(&v.VendorExtensible) switch c.Intn(3) { case 0: // Header param v.In = "query" case 1: v.In = "header" case 2: v.In = "cookie" } }, func(v *RequestBody, c fuzz.Continue) { if c.Intn(refChance) == 0 { c.Fuzz(&v.Refable) return } c.Fuzz(&v.RequestBodyProps) c.Fuzz(&v.VendorExtensible) }, func(v *Header, c fuzz.Continue) { if c.Intn(refChance) == 0 { c.Fuzz(&v.Refable) return } c.Fuzz(&v.HeaderProps) c.Fuzz(&v.VendorExtensible) }, func(v *ResponsesProps, c fuzz.Continue) { c.Fuzz(&v.Default) n := c.Intn(5) for i := 0; i < n; i++ { r2 := Response{} c.Fuzz(&r2) // HTTP Status code in 100-599 Range code := c.Intn(500) + 100 v.StatusCodeResponses = make(map[int]*Response) v.StatusCodeResponses[code] = &r2 } }, func(v *Response, c fuzz.Continue) { if c.Intn(refChance) == 0 { c.Fuzz(&v.Refable) return } c.Fuzz(&v.ResponseProps) c.Fuzz(&v.VendorExtensible) }, func(v *Operation, c fuzz.Continue) { c.FuzzNoCustom(v) // Do not fuzz null values into the array. for i, val := range v.SecurityRequirement { if val == nil { v.SecurityRequirement[i] = make(map[string][]string) } for k, v := range val { if v == nil { val[k] = make([]string, 0) } } } }, func(v *spec.Extensions, c fuzz.Continue) { numChildren := c.Intn(5) for i := 0; i < numChildren; i++ { if *v == nil { *v = spec.Extensions{} } (*v)["x-"+c.RandString()] = c.RandString() } }, func(v *spec.ExternalDocumentation, c fuzz.Continue) { c.Fuzz(&v.Description) v.URL = "https://" + randAlphanumString() }, func(v *spec.SchemaURL, c fuzz.Continue) { *v = spec.SchemaURL("https://" + randAlphanumString()) }, func(v *spec.SchemaOrBool, c fuzz.Continue) { *v = spec.SchemaOrBool{} if c.RandBool() { v.Allows = c.RandBool() } else { v.Schema = &spec.Schema{} v.Allows = true c.Fuzz(&v.Schema) } }, func(v *spec.SchemaOrArray, c fuzz.Continue) { *v = spec.SchemaOrArray{} if c.RandBool() { schema := spec.Schema{} c.Fuzz(&schema) v.Schema = &schema } else { v.Schemas = []spec.Schema{} numChildren := c.Intn(5) for i := 0; i < numChildren; i++ { schema := spec.Schema{} c.Fuzz(&schema) v.Schemas = append(v.Schemas, schema) } } }, func(v *spec.SchemaOrStringArray, c fuzz.Continue) { if c.RandBool() { *v = spec.SchemaOrStringArray{} if c.RandBool() { c.Fuzz(&v.Property) } else { c.Fuzz(&v.Schema) } } }, func(v *spec.Schema, c fuzz.Continue) { if c.Intn(refChance) == 0 { c.Fuzz(&v.Ref) return } if c.RandBool() { // file schema c.Fuzz(&v.Default) c.Fuzz(&v.Description) c.Fuzz(&v.Example) c.Fuzz(&v.ExternalDocs) c.Fuzz(&v.Format) c.Fuzz(&v.ReadOnly) c.Fuzz(&v.Required) c.Fuzz(&v.Title) v.Type = spec.StringOrArray{"file"} } else { // normal schema c.Fuzz(&v.SchemaProps) c.Fuzz(&v.SwaggerSchemaProps) c.Fuzz(&v.VendorExtensible) c.Fuzz(&v.ExtraProps) } }, } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/header.go000066400000000000000000000120731453663023200237760ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3 import ( "encoding/json" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" "k8s.io/kube-openapi/pkg/validation/spec" ) // Header a struct that describes a single operation parameter, more at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#parameterObject // // Note that this struct is actually a thin wrapper around HeaderProps to make it referable and extensible type Header struct { spec.Refable HeaderProps spec.VendorExtensible } // MarshalJSON is a custom marshal function that knows how to encode Header as JSON func (h *Header) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshalingV3 { return internal.DeterministicMarshal(h) } b1, err := json.Marshal(h.Refable) if err != nil { return nil, err } b2, err := json.Marshal(h.HeaderProps) if err != nil { return nil, err } b3, err := json.Marshal(h.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2, b3), nil } func (h *Header) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { Ref string `json:"$ref,omitempty"` HeaderProps headerPropsOmitZero `json:",inline"` spec.Extensions } x.Ref = h.Refable.Ref.String() x.Extensions = internal.SanitizeExtensions(h.Extensions) x.HeaderProps = headerPropsOmitZero(h.HeaderProps) return opts.MarshalNext(enc, x) } func (h *Header) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshalingV3 { return jsonv2.Unmarshal(data, h) } if err := json.Unmarshal(data, &h.Refable); err != nil { return err } if err := json.Unmarshal(data, &h.HeaderProps); err != nil { return err } if err := json.Unmarshal(data, &h.VendorExtensible); err != nil { return err } return nil } func (h *Header) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { spec.Extensions HeaderProps } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } if err := internal.JSONRefFromMap(&h.Ref.Ref, x.Extensions); err != nil { return err } h.Extensions = internal.SanitizeExtensions(x.Extensions) h.HeaderProps = x.HeaderProps return nil } // HeaderProps a struct that describes a header object type HeaderProps struct { // Description holds a brief description of the parameter Description string `json:"description,omitempty"` // Required determines whether this parameter is mandatory Required bool `json:"required,omitempty"` // Deprecated declares this operation to be deprecated Deprecated bool `json:"deprecated,omitempty"` // AllowEmptyValue sets the ability to pass empty-valued parameters AllowEmptyValue bool `json:"allowEmptyValue,omitempty"` // Style describes how the parameter value will be serialized depending on the type of the parameter value Style string `json:"style,omitempty"` // Explode when true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map Explode bool `json:"explode,omitempty"` // AllowReserved determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 AllowReserved bool `json:"allowReserved,omitempty"` // Schema holds the schema defining the type used for the parameter Schema *spec.Schema `json:"schema,omitempty"` // Content holds a map containing the representations for the parameter Content map[string]*MediaType `json:"content,omitempty"` // Example of the header Example interface{} `json:"example,omitempty"` // Examples of the header Examples map[string]*Example `json:"examples,omitempty"` } // Marshaling structure only, always edit along with corresponding // struct (or compilation will fail). type headerPropsOmitZero struct { Description string `json:"description,omitempty"` Required bool `json:"required,omitzero"` Deprecated bool `json:"deprecated,omitzero"` AllowEmptyValue bool `json:"allowEmptyValue,omitzero"` Style string `json:"style,omitempty"` Explode bool `json:"explode,omitzero"` AllowReserved bool `json:"allowReserved,omitzero"` Schema *spec.Schema `json:"schema,omitzero"` Content map[string]*MediaType `json:"content,omitempty"` Example interface{} `json:"example,omitempty"` Examples map[string]*Example `json:"examples,omitempty"` } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/header_test.go000066400000000000000000000043201453663023200250310ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3_test import ( "encoding/json" "testing" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" "k8s.io/kube-openapi/pkg/spec3" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" "k8s.io/kube-openapi/pkg/validation/spec" ) func TestHeaderRoundTrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { Name: "Basic Roundtrip", Object: &spec3.Header{ spec.Refable{Ref: spec.MustCreateRef("Dog")}, spec3.HeaderProps{ Description: "foo", }, spec.VendorExtensible{Extensions: spec.Extensions{ "x-framework": "go-swagger", }}, }, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&spec3.Header{})) }) } } func TestHeaderJSONSerialization(t *testing.T) { cases := []struct { name string target *spec3.Header expectedOutput string }{ // scenario 1 { name: "basic", target: &spec3.Header{ HeaderProps: spec3.HeaderProps{ Description: "The number of allowed requests in the current period", Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"integer"}, }, }, }, }, expectedOutput: `{"description":"The number of allowed requests in the current period","schema":{"type":"integer"}}`, }, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { rawTarget, err := json.Marshal(tc.target) if err != nil { t.Fatal(err) } serializedTarget := string(rawTarget) if !cmp.Equal(serializedTarget, tc.expectedOutput) { t.Fatalf("diff %s", cmp.Diff(serializedTarget, tc.expectedOutput)) } }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/media_type.go000066400000000000000000000072251453663023200246710ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3 import ( "encoding/json" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" "k8s.io/kube-openapi/pkg/validation/spec" ) // MediaType a struct that allows you to specify content format, more at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#mediaTypeObject // // Note that this struct is actually a thin wrapper around MediaTypeProps to make it referable and extensible type MediaType struct { MediaTypeProps spec.VendorExtensible } // MarshalJSON is a custom marshal function that knows how to encode MediaType as JSON func (m *MediaType) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshalingV3 { return internal.DeterministicMarshal(m) } b1, err := json.Marshal(m.MediaTypeProps) if err != nil { return nil, err } b2, err := json.Marshal(m.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2), nil } func (e *MediaType) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { MediaTypeProps mediaTypePropsOmitZero `json:",inline"` spec.Extensions } x.Extensions = internal.SanitizeExtensions(e.Extensions) x.MediaTypeProps = mediaTypePropsOmitZero(e.MediaTypeProps) return opts.MarshalNext(enc, x) } func (m *MediaType) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshalingV3 { return jsonv2.Unmarshal(data, m) } if err := json.Unmarshal(data, &m.MediaTypeProps); err != nil { return err } if err := json.Unmarshal(data, &m.VendorExtensible); err != nil { return err } return nil } func (m *MediaType) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { spec.Extensions MediaTypeProps } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } m.Extensions = internal.SanitizeExtensions(x.Extensions) m.MediaTypeProps = x.MediaTypeProps return nil } // MediaTypeProps a struct that allows you to specify content format, more at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#mediaTypeObject type MediaTypeProps struct { // Schema holds the schema defining the type used for the media type Schema *spec.Schema `json:"schema,omitempty"` // Example of the media type Example interface{} `json:"example,omitempty"` // Examples of the media type. Each example object should match the media type and specific schema if present Examples map[string]*Example `json:"examples,omitempty"` // A map between a property name and its encoding information. The key, being the property name, MUST exist in the schema as a property. The encoding object SHALL only apply to requestBody objects when the media type is multipart or application/x-www-form-urlencoded Encoding map[string]*Encoding `json:"encoding,omitempty"` } type mediaTypePropsOmitZero struct { Schema *spec.Schema `json:"schema,omitzero"` Example interface{} `json:"example,omitempty"` Examples map[string]*Example `json:"examples,omitempty"` Encoding map[string]*Encoding `json:"encoding,omitempty"` } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/media_type_test.go000066400000000000000000000041051453663023200257220ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3_test import ( "encoding/json" "testing" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" "k8s.io/kube-openapi/pkg/spec3" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" "k8s.io/kube-openapi/pkg/validation/spec" ) func TestMediaTypeRoundTrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { Name: "Basic Roundtrip", Object: &spec3.MediaType{ spec3.MediaTypeProps{ Example: "default", }, spec.VendorExtensible{Extensions: spec.Extensions{ "x-framework": "go-swagger", }}, }, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&spec3.MediaType{})) }) } } func TestMediaTypeJSONSerialization(t *testing.T) { cases := []struct { name string target *spec3.MediaType expectedOutput string }{ { name: "basic", target: &spec3.MediaType{ MediaTypeProps: spec3.MediaTypeProps{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Ref: spec.MustCreateRef("#/components/schemas/Pet"), }, }, }, }, expectedOutput: `{"schema":{"$ref":"#/components/schemas/Pet"}}`, }, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { rawTarget, err := json.Marshal(tc.target) if err != nil { t.Fatal(err) } serializedTarget := string(rawTarget) if !cmp.Equal(serializedTarget, tc.expectedOutput) { t.Fatalf("diff %s", cmp.Diff(serializedTarget, tc.expectedOutput)) } }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/operation.go000066400000000000000000000116271453663023200245520ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3 import ( "encoding/json" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" "k8s.io/kube-openapi/pkg/validation/spec" ) // Operation describes a single API operation on a path, more at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#operationObject // // Note that this struct is actually a thin wrapper around OperationProps to make it referable and extensible type Operation struct { OperationProps spec.VendorExtensible } // MarshalJSON is a custom marshal function that knows how to encode Operation as JSON func (o *Operation) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshalingV3 { return internal.DeterministicMarshal(o) } b1, err := json.Marshal(o.OperationProps) if err != nil { return nil, err } b2, err := json.Marshal(o.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2), nil } func (o *Operation) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { spec.Extensions OperationProps operationPropsOmitZero `json:",inline"` } x.Extensions = internal.SanitizeExtensions(o.Extensions) x.OperationProps = operationPropsOmitZero(o.OperationProps) return opts.MarshalNext(enc, x) } // UnmarshalJSON hydrates this items instance with the data from JSON func (o *Operation) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshalingV3 { return jsonv2.Unmarshal(data, o) } if err := json.Unmarshal(data, &o.OperationProps); err != nil { return err } return json.Unmarshal(data, &o.VendorExtensible) } func (o *Operation) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { spec.Extensions OperationProps } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } o.Extensions = internal.SanitizeExtensions(x.Extensions) o.OperationProps = x.OperationProps return nil } // OperationProps describes a single API operation on a path, more at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#operationObject type OperationProps struct { // Tags holds a list of tags for API documentation control Tags []string `json:"tags,omitempty"` // Summary holds a short summary of what the operation does Summary string `json:"summary,omitempty"` // Description holds a verbose explanation of the operation behavior Description string `json:"description,omitempty"` // ExternalDocs holds additional external documentation for this operation ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"` // OperationId holds a unique string used to identify the operation OperationId string `json:"operationId,omitempty"` // Parameters a list of parameters that are applicable for this operation Parameters []*Parameter `json:"parameters,omitempty"` // RequestBody holds the request body applicable for this operation RequestBody *RequestBody `json:"requestBody,omitempty"` // Responses holds the list of possible responses as they are returned from executing this operation Responses *Responses `json:"responses,omitempty"` // Deprecated declares this operation to be deprecated Deprecated bool `json:"deprecated,omitempty"` // SecurityRequirement holds a declaration of which security mechanisms can be used for this operation SecurityRequirement []map[string][]string `json:"security,omitempty"` // Servers contains an alternative server array to service this operation Servers []*Server `json:"servers,omitempty"` } type operationPropsOmitZero struct { Tags []string `json:"tags,omitempty"` Summary string `json:"summary,omitempty"` Description string `json:"description,omitempty"` ExternalDocs *ExternalDocumentation `json:"externalDocs,omitzero"` OperationId string `json:"operationId,omitempty"` Parameters []*Parameter `json:"parameters,omitempty"` RequestBody *RequestBody `json:"requestBody,omitzero"` Responses *Responses `json:"responses,omitzero"` Deprecated bool `json:"deprecated,omitzero"` SecurityRequirement []map[string][]string `json:"security,omitempty"` Servers []*Server `json:"servers,omitempty"` } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/operation_test.go000066400000000000000000000103261453663023200256040ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3_test import ( "encoding/json" "testing" "github.com/stretchr/testify/require" "k8s.io/kube-openapi/pkg/spec3" "k8s.io/kube-openapi/pkg/util/jsontesting" "k8s.io/kube-openapi/pkg/validation/spec" ) func TestOperationRoundTrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { Name: "Basic Roundtrip", Object: &spec3.Operation{ spec3.OperationProps{ Description: "foo", }, spec.VendorExtensible{Extensions: spec.Extensions{ "x-framework": "go-swagger", }}, }, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&spec3.Operation{})) }) } } func TestOperationJSONSerialization(t *testing.T) { cases := []struct { name string target *spec3.Operation expectedOutput string }{ { name: "basic", target: &spec3.Operation{ OperationProps: spec3.OperationProps{ Tags: []string{"pet"}, Summary: "Updates a pet in the store with form data", OperationId: "updatePetWithForm", Parameters: []*spec3.Parameter{ { ParameterProps: spec3.ParameterProps{ Name: "petId", In: "path", Description: "ID of pet that needs to be updated", Required: true, Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"string"}, }, }, }, }, }, RequestBody: &spec3.RequestBody{ RequestBodyProps: spec3.RequestBodyProps{ Content: map[string]*spec3.MediaType{ "application/x-www-form-urlencoded": { MediaTypeProps: spec3.MediaTypeProps{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"object"}, Properties: map[string]spec.Schema{ "name": { SchemaProps: spec.SchemaProps{ Description: "Updated name of the pet", Type: []string{"string"}, }, }, "status": { SchemaProps: spec.SchemaProps{ Description: "Updated status of the pet", Type: []string{"string"}, }, }, }, }, }, }, }, }, }, }, Responses: &spec3.Responses{ ResponsesProps: spec3.ResponsesProps{ StatusCodeResponses: map[int]*spec3.Response{ 200: { ResponseProps: spec3.ResponseProps{ Description: "Pet updated.", Content: map[string]*spec3.MediaType{ "application/json": {}, "application/xml": {}, }, }, }, }, }, }, }, }, expectedOutput: `{"tags":["pet"],"summary":"Updates a pet in the store with form data","operationId":"updatePetWithForm","parameters":[{"name":"petId","in":"path","description":"ID of pet that needs to be updated","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"name":{"description":"Updated name of the pet","type":"string"},"status":{"description":"Updated status of the pet","type":"string"}}}}}},"responses":{"200":{"description":"Pet updated.","content":{"application/json":{},"application/xml":{}}}}}`, }, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { rawTarget, err := json.Marshal(tc.target) if err != nil { t.Fatal(err) } serializedTarget := string(rawTarget) if err := jsontesting.JsonCompare([]byte(tc.expectedOutput), []byte(serializedTarget)); err != nil { t.Fatalf("diff %s", err) } }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/parameter.go000066400000000000000000000130561453663023200245300ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3 import ( "encoding/json" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" "k8s.io/kube-openapi/pkg/validation/spec" ) // Parameter a struct that describes a single operation parameter, more at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#parameterObject // // Note that this struct is actually a thin wrapper around ParameterProps to make it referable and extensible type Parameter struct { spec.Refable ParameterProps spec.VendorExtensible } // MarshalJSON is a custom marshal function that knows how to encode Parameter as JSON func (p *Parameter) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshalingV3 { return internal.DeterministicMarshal(p) } b1, err := json.Marshal(p.Refable) if err != nil { return nil, err } b2, err := json.Marshal(p.ParameterProps) if err != nil { return nil, err } b3, err := json.Marshal(p.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2, b3), nil } func (p *Parameter) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { Ref string `json:"$ref,omitempty"` ParameterProps parameterPropsOmitZero `json:",inline"` spec.Extensions } x.Ref = p.Refable.Ref.String() x.Extensions = internal.SanitizeExtensions(p.Extensions) x.ParameterProps = parameterPropsOmitZero(p.ParameterProps) return opts.MarshalNext(enc, x) } func (p *Parameter) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshalingV3 { return jsonv2.Unmarshal(data, p) } if err := json.Unmarshal(data, &p.Refable); err != nil { return err } if err := json.Unmarshal(data, &p.ParameterProps); err != nil { return err } if err := json.Unmarshal(data, &p.VendorExtensible); err != nil { return err } return nil } func (p *Parameter) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { spec.Extensions ParameterProps } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } if err := internal.JSONRefFromMap(&p.Ref.Ref, x.Extensions); err != nil { return err } p.Extensions = internal.SanitizeExtensions(x.Extensions) p.ParameterProps = x.ParameterProps return nil } // ParameterProps a struct that describes a single operation parameter, more at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#parameterObject type ParameterProps struct { // Name holds the name of the parameter Name string `json:"name,omitempty"` // In holds the location of the parameter In string `json:"in,omitempty"` // Description holds a brief description of the parameter Description string `json:"description,omitempty"` // Required determines whether this parameter is mandatory Required bool `json:"required,omitempty"` // Deprecated declares this operation to be deprecated Deprecated bool `json:"deprecated,omitempty"` // AllowEmptyValue sets the ability to pass empty-valued parameters AllowEmptyValue bool `json:"allowEmptyValue,omitempty"` // Style describes how the parameter value will be serialized depending on the type of the parameter value Style string `json:"style,omitempty"` // Explode when true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map Explode bool `json:"explode,omitempty"` // AllowReserved determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 AllowReserved bool `json:"allowReserved,omitempty"` // Schema holds the schema defining the type used for the parameter Schema *spec.Schema `json:"schema,omitempty"` // Content holds a map containing the representations for the parameter Content map[string]*MediaType `json:"content,omitempty"` // Example of the parameter's potential value Example interface{} `json:"example,omitempty"` // Examples of the parameter's potential value. Each example SHOULD contain a value in the correct format as specified in the parameter encoding Examples map[string]*Example `json:"examples,omitempty"` } type parameterPropsOmitZero struct { Name string `json:"name,omitempty"` In string `json:"in,omitempty"` Description string `json:"description,omitempty"` Required bool `json:"required,omitzero"` Deprecated bool `json:"deprecated,omitzero"` AllowEmptyValue bool `json:"allowEmptyValue,omitzero"` Style string `json:"style,omitempty"` Explode bool `json:"explode,omitzero"` AllowReserved bool `json:"allowReserved,omitzero"` Schema *spec.Schema `json:"schema,omitzero"` Content map[string]*MediaType `json:"content,omitempty"` Example interface{} `json:"example,omitempty"` Examples map[string]*Example `json:"examples,omitempty"` } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/parameter_test.go000066400000000000000000000055541453663023200255730ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3_test import ( "encoding/json" "testing" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" "k8s.io/kube-openapi/pkg/spec3" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" "k8s.io/kube-openapi/pkg/validation/spec" ) func TestParameterRoundTrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { Name: "Basic Roundtrip", Object: &spec3.Parameter{ spec.Refable{Ref: spec.MustCreateRef("Dog")}, spec3.ParameterProps{ Description: "foo", }, spec.VendorExtensible{Extensions: spec.Extensions{ "x-framework": "go-swagger", }}, }, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&spec3.Parameter{})) }) } } func TestParameterJSONSerialization(t *testing.T) { cases := []struct { name string target *spec3.Parameter expectedOutput string }{ { name: "header parameter", target: &spec3.Parameter{ ParameterProps: spec3.ParameterProps{ Name: "token", In: "header", Description: "token to be passed as a header", Required: true, Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"integer"}, Format: "int64", }, }, Style: "simple", }, }, expectedOutput: `{"name":"token","in":"header","description":"token to be passed as a header","required":true,"style":"simple","schema":{"type":"integer","format":"int64"}}`, }, { name: "path parameter", target: &spec3.Parameter{ ParameterProps: spec3.ParameterProps{ Name: "username", In: "path", Description: "username to fetch", Required: true, Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"string"}, }, }, }, }, expectedOutput: `{"name":"username","in":"path","description":"username to fetch","required":true,"schema":{"type":"string"}}`, }, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { rawTarget, err := json.Marshal(tc.target) if err != nil { t.Fatal(err) } serializedTarget := string(rawTarget) if !cmp.Equal(serializedTarget, tc.expectedOutput) { t.Fatalf("diff %s", cmp.Diff(serializedTarget, tc.expectedOutput)) } }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/path.go000066400000000000000000000155311453663023200235040ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3 import ( "encoding/json" "fmt" "strings" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" "k8s.io/kube-openapi/pkg/validation/spec" ) // Paths describes the available paths and operations for the API, more at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#pathsObject type Paths struct { Paths map[string]*Path spec.VendorExtensible } // MarshalJSON is a custom marshal function that knows how to encode Paths as JSON func (p *Paths) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshalingV3 { return internal.DeterministicMarshal(p) } b1, err := json.Marshal(p.VendorExtensible) if err != nil { return nil, err } pths := make(map[string]*Path) for k, v := range p.Paths { if strings.HasPrefix(k, "/") { pths[k] = v } } b2, err := json.Marshal(pths) if err != nil { return nil, err } concated := swag.ConcatJSON(b1, b2) return concated, nil } func (p *Paths) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { m := make(map[string]any, len(p.Extensions)+len(p.Paths)) for k, v := range p.Extensions { if internal.IsExtensionKey(k) { m[k] = v } } for k, v := range p.Paths { if strings.HasPrefix(k, "/") { m[k] = v } } return opts.MarshalNext(enc, m) } // UnmarshalJSON hydrates this items instance with the data from JSON func (p *Paths) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshalingV3 { return jsonv2.Unmarshal(data, p) } var res map[string]json.RawMessage if err := json.Unmarshal(data, &res); err != nil { return err } for k, v := range res { if strings.HasPrefix(strings.ToLower(k), "x-") { if p.Extensions == nil { p.Extensions = make(map[string]interface{}) } var d interface{} if err := json.Unmarshal(v, &d); err != nil { return err } p.Extensions[k] = d } if strings.HasPrefix(k, "/") { if p.Paths == nil { p.Paths = make(map[string]*Path) } var pi *Path if err := json.Unmarshal(v, &pi); err != nil { return err } p.Paths[k] = pi } } return nil } func (p *Paths) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { tok, err := dec.ReadToken() if err != nil { return err } switch k := tok.Kind(); k { case 'n': *p = Paths{} return nil case '{': for { tok, err := dec.ReadToken() if err != nil { return err } if tok.Kind() == '}' { return nil } switch k := tok.String(); { case internal.IsExtensionKey(k): var ext any if err := opts.UnmarshalNext(dec, &ext); err != nil { return err } if p.Extensions == nil { p.Extensions = make(map[string]any) } p.Extensions[k] = ext case len(k) > 0 && k[0] == '/': pi := Path{} if err := opts.UnmarshalNext(dec, &pi); err != nil { return err } if p.Paths == nil { p.Paths = make(map[string]*Path) } p.Paths[k] = &pi default: _, err := dec.ReadValue() // skip value if err != nil { return err } } } default: return fmt.Errorf("unknown JSON kind: %v", k) } } // Path describes the operations available on a single path, more at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#pathItemObject // // Note that this struct is actually a thin wrapper around PathProps to make it referable and extensible type Path struct { spec.Refable PathProps spec.VendorExtensible } // MarshalJSON is a custom marshal function that knows how to encode Path as JSON func (p *Path) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshalingV3 { return internal.DeterministicMarshal(p) } b1, err := json.Marshal(p.Refable) if err != nil { return nil, err } b2, err := json.Marshal(p.PathProps) if err != nil { return nil, err } b3, err := json.Marshal(p.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2, b3), nil } func (p *Path) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { Ref string `json:"$ref,omitempty"` spec.Extensions PathProps } x.Ref = p.Refable.Ref.String() x.Extensions = internal.SanitizeExtensions(p.Extensions) x.PathProps = p.PathProps return opts.MarshalNext(enc, x) } func (p *Path) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshalingV3 { return jsonv2.Unmarshal(data, p) } if err := json.Unmarshal(data, &p.Refable); err != nil { return err } if err := json.Unmarshal(data, &p.PathProps); err != nil { return err } if err := json.Unmarshal(data, &p.VendorExtensible); err != nil { return err } return nil } func (p *Path) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { spec.Extensions PathProps } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } if err := internal.JSONRefFromMap(&p.Ref.Ref, x.Extensions); err != nil { return err } p.Extensions = internal.SanitizeExtensions(x.Extensions) p.PathProps = x.PathProps return nil } // PathProps describes the operations available on a single path, more at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#pathItemObject type PathProps struct { // Summary holds a summary for all operations in this path Summary string `json:"summary,omitempty"` // Description holds a description for all operations in this path Description string `json:"description,omitempty"` // Get defines GET operation Get *Operation `json:"get,omitempty"` // Put defines PUT operation Put *Operation `json:"put,omitempty"` // Post defines POST operation Post *Operation `json:"post,omitempty"` // Delete defines DELETE operation Delete *Operation `json:"delete,omitempty"` // Options defines OPTIONS operation Options *Operation `json:"options,omitempty"` // Head defines HEAD operation Head *Operation `json:"head,omitempty"` // Patch defines PATCH operation Patch *Operation `json:"patch,omitempty"` // Trace defines TRACE operation Trace *Operation `json:"trace,omitempty"` // Servers is an alternative server array to service all operations in this path Servers []*Server `json:"servers,omitempty"` // Parameters a list of parameters that are applicable for this operation Parameters []*Parameter `json:"parameters,omitempty"` } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/path_test.go000066400000000000000000000106321453663023200245400ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3_test import ( "encoding/json" "reflect" "testing" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" "k8s.io/kube-openapi/pkg/spec3" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" "k8s.io/kube-openapi/pkg/validation/spec" ) func TestPathRoundTrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { Name: "Basic Roundtrip", Object: &spec3.Path{ spec.Refable{Ref: spec.MustCreateRef("Dog")}, spec3.PathProps{ Description: "foo", }, spec.VendorExtensible{Extensions: spec.Extensions{ "x-framework": "go-swagger", }}, }, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&spec3.Path{})) }) } } func TestPathJSONSerialization(t *testing.T) { cases := []struct { name string target *spec3.Path expectedOutput string }{ { name: "basic", target: &spec3.Path{ PathProps: spec3.PathProps{ Get: &spec3.Operation{ OperationProps: spec3.OperationProps{ Description: "Returns pets based on ID", Summary: "Find pets by ID", OperationId: "getPetsById", Responses: &spec3.Responses{ ResponsesProps: spec3.ResponsesProps{ StatusCodeResponses: map[int]*spec3.Response{ 200: { ResponseProps: spec3.ResponseProps{ Description: "Pet response", Content: map[string]*spec3.MediaType{ "*/*": { MediaTypeProps: spec3.MediaTypeProps{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Ref: spec.MustCreateRef("#/components/schemas/Pet"), }, }, }, }, }, }, }, }, }, }, }, }, }, }, }, Parameters: []*spec3.Parameter{ { ParameterProps: spec3.ParameterProps{ Name: "id", In: "path", Description: "ID of the pet to use", Required: true, Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Ref: spec.MustCreateRef("#/components/schemas/Pet"), }, }, }, }, }, }, }, }, }, }, expectedOutput: `{"get":{"summary":"Find pets by ID","description":"Returns pets based on ID","operationId":"getPetsById","responses":{"200":{"description":"Pet response","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Pet"}}}}}}},"parameters":[{"name":"id","in":"path","description":"ID of the pet to use","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/Pet"}}}]}`, }, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { rawTarget, err := json.Marshal(tc.target) if err != nil { t.Fatal(err) } serializedTarget := string(rawTarget) if !cmp.Equal(serializedTarget, tc.expectedOutput) { t.Fatalf("%s", serializedTarget) t.Fatalf("diff %s", cmp.Diff(serializedTarget, tc.expectedOutput)) } }) } } func TestPathsNullUnmarshal(t *testing.T) { nullByte := []byte(`null`) expected := spec3.Paths{} test := spec3.Paths{ Paths: map[string]*spec3.Path{"/path": {}}, } jsonv2.Unmarshal(nullByte, &test) if !reflect.DeepEqual(test, expected) { t.Error("Expected unmarshal of null to reset the Paths struct") } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/request_body.go000066400000000000000000000072721453663023200252600ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3 import ( "encoding/json" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" "k8s.io/kube-openapi/pkg/validation/spec" ) // RequestBody describes a single request body, more at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#requestBodyObject // // Note that this struct is actually a thin wrapper around RequestBodyProps to make it referable and extensible type RequestBody struct { spec.Refable RequestBodyProps spec.VendorExtensible } // MarshalJSON is a custom marshal function that knows how to encode RequestBody as JSON func (r *RequestBody) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshalingV3 { return internal.DeterministicMarshal(r) } b1, err := json.Marshal(r.Refable) if err != nil { return nil, err } b2, err := json.Marshal(r.RequestBodyProps) if err != nil { return nil, err } b3, err := json.Marshal(r.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2, b3), nil } func (r *RequestBody) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { Ref string `json:"$ref,omitempty"` RequestBodyProps requestBodyPropsOmitZero `json:",inline"` spec.Extensions } x.Ref = r.Refable.Ref.String() x.Extensions = internal.SanitizeExtensions(r.Extensions) x.RequestBodyProps = requestBodyPropsOmitZero(r.RequestBodyProps) return opts.MarshalNext(enc, x) } func (r *RequestBody) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshalingV3 { return jsonv2.Unmarshal(data, r) } if err := json.Unmarshal(data, &r.Refable); err != nil { return err } if err := json.Unmarshal(data, &r.RequestBodyProps); err != nil { return err } if err := json.Unmarshal(data, &r.VendorExtensible); err != nil { return err } return nil } // RequestBodyProps describes a single request body, more at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#requestBodyObject type RequestBodyProps struct { // Description holds a brief description of the request body Description string `json:"description,omitempty"` // Content is the content of the request body. The key is a media type or media type range and the value describes it Content map[string]*MediaType `json:"content,omitempty"` // Required determines if the request body is required in the request Required bool `json:"required,omitempty"` } type requestBodyPropsOmitZero struct { Description string `json:"description,omitempty"` Content map[string]*MediaType `json:"content,omitempty"` Required bool `json:"required,omitzero"` } func (r *RequestBody) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { spec.Extensions RequestBodyProps } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } if err := internal.JSONRefFromMap(&r.Ref.Ref, x.Extensions); err != nil { return err } r.Extensions = internal.SanitizeExtensions(x.Extensions) r.RequestBodyProps = x.RequestBodyProps return nil } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/request_body_test.go000066400000000000000000000046431453663023200263160ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3_test import ( "encoding/json" "testing" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" "k8s.io/kube-openapi/pkg/spec3" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" "k8s.io/kube-openapi/pkg/validation/spec" ) func TestRequestBodyRoundTrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { Name: "Basic Roundtrip", Object: &spec3.RequestBody{ spec.Refable{Ref: spec.MustCreateRef("Dog")}, spec3.RequestBodyProps{ Description: "foo", }, spec.VendorExtensible{Extensions: spec.Extensions{ "x-framework": "go-swagger", }}, }, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&spec3.RequestBody{})) }) } } func TestRequestBodyJSONSerialization(t *testing.T) { cases := []struct { name string target *spec3.RequestBody expectedOutput string }{ { name: "basic", target: &spec3.RequestBody{ RequestBodyProps: spec3.RequestBodyProps{ Description: "user to add to the system", Content: map[string]*spec3.MediaType{ "application/json": { MediaTypeProps: spec3.MediaTypeProps{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Ref: spec.MustCreateRef("#/components/schemas/User"), }, }, }, }, }, }, }, expectedOutput: `{"description":"user to add to the system","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}}`, }, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { rawTarget, err := json.Marshal(tc.target) if err != nil { t.Fatal(err) } serializedTarget := string(rawTarget) if !cmp.Equal(serializedTarget, tc.expectedOutput) { t.Fatalf("diff %s", cmp.Diff(serializedTarget, tc.expectedOutput)) } }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/response.go000066400000000000000000000245471453663023200244150ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3 import ( "encoding/json" "fmt" "strconv" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" "k8s.io/kube-openapi/pkg/validation/spec" ) // Responses holds the list of possible responses as they are returned from executing this operation // // Note that this struct is actually a thin wrapper around ResponsesProps to make it referable and extensible type Responses struct { ResponsesProps spec.VendorExtensible } // MarshalJSON is a custom marshal function that knows how to encode Responses as JSON func (r *Responses) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshalingV3 { return internal.DeterministicMarshal(r) } b1, err := json.Marshal(r.ResponsesProps) if err != nil { return nil, err } b2, err := json.Marshal(r.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2), nil } func (r Responses) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { type ArbitraryKeys map[string]interface{} var x struct { ArbitraryKeys Default *Response `json:"default,omitzero"` } x.ArbitraryKeys = make(map[string]any, len(r.Extensions)+len(r.StatusCodeResponses)) for k, v := range r.Extensions { if internal.IsExtensionKey(k) { x.ArbitraryKeys[k] = v } } for k, v := range r.StatusCodeResponses { x.ArbitraryKeys[strconv.Itoa(k)] = v } x.Default = r.Default return opts.MarshalNext(enc, x) } func (r *Responses) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshalingV3 { return jsonv2.Unmarshal(data, r) } if err := json.Unmarshal(data, &r.ResponsesProps); err != nil { return err } if err := json.Unmarshal(data, &r.VendorExtensible); err != nil { return err } return nil } // ResponsesProps holds the list of possible responses as they are returned from executing this operation type ResponsesProps struct { // Default holds the documentation of responses other than the ones declared for specific HTTP response codes. Use this field to cover undeclared responses Default *Response `json:"-"` // StatusCodeResponses holds a map of any HTTP status code to the response definition StatusCodeResponses map[int]*Response `json:"-"` } // MarshalJSON is a custom marshal function that knows how to encode ResponsesProps as JSON func (r ResponsesProps) MarshalJSON() ([]byte, error) { toser := map[string]*Response{} if r.Default != nil { toser["default"] = r.Default } for k, v := range r.StatusCodeResponses { toser[strconv.Itoa(k)] = v } return json.Marshal(toser) } // UnmarshalJSON unmarshals responses from JSON func (r *ResponsesProps) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshalingV3 { return jsonv2.Unmarshal(data, r) } var res map[string]json.RawMessage if err := json.Unmarshal(data, &res); err != nil { return err } if v, ok := res["default"]; ok { value := Response{} if err := json.Unmarshal(v, &value); err != nil { return err } r.Default = &value delete(res, "default") } for k, v := range res { // Take all integral keys if nk, err := strconv.Atoi(k); err == nil { if r.StatusCodeResponses == nil { r.StatusCodeResponses = map[int]*Response{} } value := Response{} if err := json.Unmarshal(v, &value); err != nil { return err } r.StatusCodeResponses[nk] = &value } } return nil } func (r *Responses) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) (err error) { tok, err := dec.ReadToken() if err != nil { return err } switch k := tok.Kind(); k { case 'n': *r = Responses{} return nil case '{': for { tok, err := dec.ReadToken() if err != nil { return err } if tok.Kind() == '}' { return nil } switch k := tok.String(); { case internal.IsExtensionKey(k): var ext any if err := opts.UnmarshalNext(dec, &ext); err != nil { return err } if r.Extensions == nil { r.Extensions = make(map[string]any) } r.Extensions[k] = ext case k == "default": resp := Response{} if err := opts.UnmarshalNext(dec, &resp); err != nil { return err } r.ResponsesProps.Default = &resp default: if nk, err := strconv.Atoi(k); err == nil { resp := Response{} if err := opts.UnmarshalNext(dec, &resp); err != nil { return err } if r.StatusCodeResponses == nil { r.StatusCodeResponses = map[int]*Response{} } r.StatusCodeResponses[nk] = &resp } } } default: return fmt.Errorf("unknown JSON kind: %v", k) } } // Response describes a single response from an API Operation, more at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#responseObject // // Note that this struct is actually a thin wrapper around ResponseProps to make it referable and extensible type Response struct { spec.Refable ResponseProps spec.VendorExtensible } // MarshalJSON is a custom marshal function that knows how to encode Response as JSON func (r *Response) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshalingV3 { return internal.DeterministicMarshal(r) } b1, err := json.Marshal(r.Refable) if err != nil { return nil, err } b2, err := json.Marshal(r.ResponseProps) if err != nil { return nil, err } b3, err := json.Marshal(r.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2, b3), nil } func (r Response) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { Ref string `json:"$ref,omitempty"` spec.Extensions ResponseProps `json:",inline"` } x.Ref = r.Refable.Ref.String() x.Extensions = internal.SanitizeExtensions(r.Extensions) x.ResponseProps = r.ResponseProps return opts.MarshalNext(enc, x) } func (r *Response) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshalingV3 { return jsonv2.Unmarshal(data, r) } if err := json.Unmarshal(data, &r.Refable); err != nil { return err } if err := json.Unmarshal(data, &r.ResponseProps); err != nil { return err } if err := json.Unmarshal(data, &r.VendorExtensible); err != nil { return err } return nil } func (r *Response) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { spec.Extensions ResponseProps } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } if err := internal.JSONRefFromMap(&r.Ref.Ref, x.Extensions); err != nil { return err } r.Extensions = internal.SanitizeExtensions(x.Extensions) r.ResponseProps = x.ResponseProps return nil } // ResponseProps describes a single response from an API Operation, more at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#responseObject type ResponseProps struct { // Description holds a short description of the response Description string `json:"description,omitempty"` // Headers holds a maps of a headers name to its definition Headers map[string]*Header `json:"headers,omitempty"` // Content holds a map containing descriptions of potential response payloads Content map[string]*MediaType `json:"content,omitempty"` // Links is a map of operations links that can be followed from the response Links map[string]*Link `json:"links,omitempty"` } // Link represents a possible design-time link for a response, more at https://swagger.io/specification/#link-object type Link struct { spec.Refable LinkProps spec.VendorExtensible } // MarshalJSON is a custom marshal function that knows how to encode Link as JSON func (r *Link) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshalingV3 { return internal.DeterministicMarshal(r) } b1, err := json.Marshal(r.Refable) if err != nil { return nil, err } b2, err := json.Marshal(r.LinkProps) if err != nil { return nil, err } b3, err := json.Marshal(r.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2, b3), nil } func (r *Link) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { Ref string `json:"$ref,omitempty"` spec.Extensions LinkProps `json:",inline"` } x.Ref = r.Refable.Ref.String() x.Extensions = internal.SanitizeExtensions(r.Extensions) x.LinkProps = r.LinkProps return opts.MarshalNext(enc, x) } func (r *Link) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshalingV3 { return jsonv2.Unmarshal(data, r) } if err := json.Unmarshal(data, &r.Refable); err != nil { return err } if err := json.Unmarshal(data, &r.LinkProps); err != nil { return err } if err := json.Unmarshal(data, &r.VendorExtensible); err != nil { return err } return nil } func (l *Link) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { spec.Extensions LinkProps } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } if err := internal.JSONRefFromMap(&l.Ref.Ref, x.Extensions); err != nil { return err } l.Extensions = internal.SanitizeExtensions(x.Extensions) l.LinkProps = x.LinkProps return nil } // LinkProps describes a single response from an API Operation, more at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#responseObject type LinkProps struct { // OperationId is the name of an existing, resolvable OAS operation OperationId string `json:"operationId,omitempty"` // Parameters is a map representing parameters to pass to an operation as specified with operationId or identified via operationRef Parameters map[string]interface{} `json:"parameters,omitempty"` // Description holds a description of the link Description string `json:"description,omitempty"` // RequestBody is a literal value or expresion to use as a request body when calling the target operation RequestBody interface{} `json:"requestBody,omitempty"` // Server holds a server object used by the target operation Server *Server `json:"server,omitempty"` } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/response_test.go000066400000000000000000000064651453663023200254530ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3_test import ( "encoding/json" "reflect" "testing" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" "k8s.io/kube-openapi/pkg/spec3" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" "k8s.io/kube-openapi/pkg/validation/spec" ) func TestResponsesRoundTrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { Name: "Basic Test With Extensions", Object: &spec3.Responses{ VendorExtensible: spec.VendorExtensible{ Extensions: spec.Extensions{ "x-framework": "swagger-go", }, }, ResponsesProps: spec3.ResponsesProps{ Default: &spec3.Response{ Refable: spec.Refable{Ref: spec.MustCreateRef("/components/some/ref.foo")}, }, }, }, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&spec3.Responses{})) }) } } func TestResponseRoundTrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { Name: "Basic Roundtrip", Object: &spec3.Response{ spec.Refable{Ref: spec.MustCreateRef("Dog")}, spec3.ResponseProps{ Description: "foo", }, spec.VendorExtensible{Extensions: spec.Extensions{ "x-framework": "go-swagger", }}, }, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&spec3.Response{})) }) } } func TestResponseJSONSerialization(t *testing.T) { cases := []struct { name string target *spec3.Response expectedOutput string }{ // scenario 1 { name: "basic", target: &spec3.Response{ ResponseProps: spec3.ResponseProps{ Content: map[string]*spec3.MediaType{ "text/plain": { MediaTypeProps: spec3.MediaTypeProps{ Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"string"}, }, }, }, }, }, }, }, expectedOutput: `{"content":{"text/plain":{"schema":{"type":"string"}}}}`, }, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { rawTarget, err := json.Marshal(tc.target) if err != nil { t.Fatal(err) } serializedTarget := string(rawTarget) if !cmp.Equal(serializedTarget, tc.expectedOutput) { t.Fatalf("diff %s", cmp.Diff(serializedTarget, tc.expectedOutput)) } }) } } func TestResponsesNullUnmarshal(t *testing.T) { nullByte := []byte(`null`) expected := spec3.Responses{} test := spec3.Responses{ ResponsesProps: spec3.ResponsesProps{ Default: &spec3.Response{}, }, } jsonv2.Unmarshal(nullByte, &test) if !reflect.DeepEqual(test, expected) { t.Error("Expected unmarshal of null to reset the Responses struct") } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/security_scheme.go000066400000000000000000000111241453663023200257350ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3 import ( "encoding/json" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" "k8s.io/kube-openapi/pkg/validation/spec" ) // SecurityScheme defines reusable Security Scheme Object, more at https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#securitySchemeObject type SecurityScheme struct { spec.Refable SecuritySchemeProps spec.VendorExtensible } // MarshalJSON is a custom marshal function that knows how to encode SecurityScheme as JSON func (s *SecurityScheme) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshalingV3 { return internal.DeterministicMarshal(s) } b1, err := json.Marshal(s.SecuritySchemeProps) if err != nil { return nil, err } b2, err := json.Marshal(s.VendorExtensible) if err != nil { return nil, err } b3, err := json.Marshal(s.Refable) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2, b3), nil } func (s *SecurityScheme) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { Ref string `json:"$ref,omitempty"` SecuritySchemeProps `json:",inline"` spec.Extensions } x.Ref = s.Refable.Ref.String() x.Extensions = internal.SanitizeExtensions(s.Extensions) x.SecuritySchemeProps = s.SecuritySchemeProps return opts.MarshalNext(enc, x) } // UnmarshalJSON hydrates this items instance with the data from JSON func (s *SecurityScheme) UnmarshalJSON(data []byte) error { if err := json.Unmarshal(data, &s.SecuritySchemeProps); err != nil { return err } if err := json.Unmarshal(data, &s.VendorExtensible); err != nil { return err } return json.Unmarshal(data, &s.Refable) } // SecuritySchemeProps defines a security scheme that can be used by the operations type SecuritySchemeProps struct { // Type of the security scheme Type string `json:"type,omitempty"` // Description holds a short description for security scheme Description string `json:"description,omitempty"` // Name holds the name of the header, query or cookie parameter to be used Name string `json:"name,omitempty"` // In holds the location of the API key In string `json:"in,omitempty"` // Scheme holds the name of the HTTP Authorization scheme to be used in the Authorization header Scheme string `json:"scheme,omitempty"` // BearerFormat holds a hint to the client to identify how the bearer token is formatted BearerFormat string `json:"bearerFormat,omitempty"` // Flows contains configuration information for the flow types supported. Flows map[string]*OAuthFlow `json:"flows,omitempty"` // OpenIdConnectUrl holds an url to discover OAuth2 configuration values from OpenIdConnectUrl string `json:"openIdConnectUrl,omitempty"` } // OAuthFlow contains configuration information for the flow types supported. type OAuthFlow struct { OAuthFlowProps spec.VendorExtensible } // MarshalJSON is a custom marshal function that knows how to encode OAuthFlow as JSON func (o *OAuthFlow) MarshalJSON() ([]byte, error) { b1, err := json.Marshal(o.OAuthFlowProps) if err != nil { return nil, err } b2, err := json.Marshal(o.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2), nil } // UnmarshalJSON hydrates this items instance with the data from JSON func (o *OAuthFlow) UnmarshalJSON(data []byte) error { if err := json.Unmarshal(data, &o.OAuthFlowProps); err != nil { return err } return json.Unmarshal(data, &o.VendorExtensible) } // OAuthFlowProps holds configuration details for a supported OAuth Flow type OAuthFlowProps struct { // AuthorizationUrl hold the authorization URL to be used for this flow AuthorizationUrl string `json:"authorizationUrl,omitempty"` // TokenUrl holds the token URL to be used for this flow TokenUrl string `json:"tokenUrl,omitempty"` // RefreshUrl holds the URL to be used for obtaining refresh tokens RefreshUrl string `json:"refreshUrl,omitempty"` // Scopes holds the available scopes for the OAuth2 security scheme Scopes map[string]string `json:"scopes,omitempty"` } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/security_scheme_test.go000066400000000000000000000065561453663023200270110ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3_test import ( "encoding/json" "testing" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" "k8s.io/kube-openapi/pkg/spec3" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" "k8s.io/kube-openapi/pkg/validation/spec" ) func TestSecuritySchemeRoundTrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { Name: "Basic Roundtrip", Object: &spec3.SecurityScheme{ spec.Refable{Ref: spec.MustCreateRef("Dog")}, spec3.SecuritySchemeProps{ Description: "foo", }, spec.VendorExtensible{Extensions: spec.Extensions{ "x-framework": "go-swagger", }}, }, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&spec3.SecurityScheme{})) }) } } func TestSecuritySchemaJSONSerialization(t *testing.T) { cases := []struct { name string target *spec3.SecurityScheme expectedOutput string }{ // scenario 1 { name: "scenario1: basic authentication", target: &spec3.SecurityScheme{ SecuritySchemeProps: spec3.SecuritySchemeProps{ Type: "http", Scheme: "basic", }, }, expectedOutput: `{"type":"http","scheme":"basic"}`, }, // scenario 2 { name: "scenario2: JWT Bearer", target: &spec3.SecurityScheme{ SecuritySchemeProps: spec3.SecuritySchemeProps{ Type: "http", Scheme: "basic", BearerFormat: "JWT", }, }, expectedOutput: `{"type":"http","scheme":"basic","bearerFormat":"JWT"}`, }, // scenario 3 { name: "scenario3: implicit OAuth2", target: &spec3.SecurityScheme{ SecuritySchemeProps: spec3.SecuritySchemeProps{ Type: "oauth2", Flows: map[string]*spec3.OAuthFlow{ "implicit": { OAuthFlowProps: spec3.OAuthFlowProps{ AuthorizationUrl: "https://example.com/api/oauth/dialog", Scopes: map[string]string{ "write:pets": "modify pets in your account", "read:pets": "read your pets", }, }, }, }, }, }, expectedOutput: `{"type":"oauth2","flows":{"implicit":{"authorizationUrl":"https://example.com/api/oauth/dialog","scopes":{"read:pets":"read your pets","write:pets":"modify pets in your account"}}}}`, }, // scenario 4 { name: "scenario4: reference Object", target: &spec3.SecurityScheme{ Refable: spec.Refable{Ref: spec.MustCreateRef("k8s.io/api/foo/v1beta1b.bar")}, }, expectedOutput: `{"$ref":"k8s.io/api/foo/v1beta1b.bar"}`, }, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { rawTarget, err := json.Marshal(tc.target) if err != nil { t.Fatal(err) } serializedTarget := string(rawTarget) if !cmp.Equal(serializedTarget, tc.expectedOutput) { t.Fatalf("diff %s", cmp.Diff(serializedTarget, tc.expectedOutput)) } }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/server.go000066400000000000000000000110351453663023200240510ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3 import ( "encoding/json" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" "k8s.io/kube-openapi/pkg/validation/spec" ) type Server struct { ServerProps spec.VendorExtensible } type ServerProps struct { // Description is a short description of the target documentation. CommonMark syntax MAY be used for rich text representation. Description string `json:"description,omitempty"` // URL is the URL for the target documentation. URL string `json:"url"` // Variables contains a map between a variable name and its value. The value is used for substitution in the server's URL templeate Variables map[string]*ServerVariable `json:"variables,omitempty"` } // MarshalJSON is a custom marshal function that knows how to encode Responses as JSON func (s *Server) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshalingV3 { return internal.DeterministicMarshal(s) } b1, err := json.Marshal(s.ServerProps) if err != nil { return nil, err } b2, err := json.Marshal(s.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2), nil } func (s *Server) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { ServerProps `json:",inline"` spec.Extensions } x.Extensions = internal.SanitizeExtensions(s.Extensions) x.ServerProps = s.ServerProps return opts.MarshalNext(enc, x) } func (s *Server) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshalingV3 { return jsonv2.Unmarshal(data, s) } if err := json.Unmarshal(data, &s.ServerProps); err != nil { return err } if err := json.Unmarshal(data, &s.VendorExtensible); err != nil { return err } return nil } func (s *Server) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { spec.Extensions ServerProps } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } s.Extensions = internal.SanitizeExtensions(x.Extensions) s.ServerProps = x.ServerProps return nil } type ServerVariable struct { ServerVariableProps spec.VendorExtensible } type ServerVariableProps struct { // Enum is an enumeration of string values to be used if the substitution options are from a limited set Enum []string `json:"enum,omitempty"` // Default is the default value to use for substitution, which SHALL be sent if an alternate value is not supplied Default string `json:"default"` // Description is a description for the server variable Description string `json:"description,omitempty"` } // MarshalJSON is a custom marshal function that knows how to encode Responses as JSON func (s *ServerVariable) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshalingV3 { return internal.DeterministicMarshal(s) } b1, err := json.Marshal(s.ServerVariableProps) if err != nil { return nil, err } b2, err := json.Marshal(s.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2), nil } func (s *ServerVariable) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { ServerVariableProps `json:",inline"` spec.Extensions } x.Extensions = internal.SanitizeExtensions(s.Extensions) x.ServerVariableProps = s.ServerVariableProps return opts.MarshalNext(enc, x) } func (s *ServerVariable) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshalingV3 { return jsonv2.Unmarshal(data, s) } if err := json.Unmarshal(data, &s.ServerVariableProps); err != nil { return err } if err := json.Unmarshal(data, &s.VendorExtensible); err != nil { return err } return nil } func (s *ServerVariable) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { spec.Extensions ServerVariableProps } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } s.Extensions = internal.SanitizeExtensions(x.Extensions) s.ServerVariableProps = x.ServerVariableProps return nil } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/server_test.go000066400000000000000000000040771453663023200251200ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3_test import ( "encoding/json" "testing" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" "k8s.io/kube-openapi/pkg/spec3" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" "k8s.io/kube-openapi/pkg/validation/spec" ) func TestServerRoundTrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { Name: "Basic Roundtrip", Object: &spec3.Server{ spec3.ServerProps{ Description: "foo", }, spec.VendorExtensible{Extensions: spec.Extensions{ "x-framework": "go-swagger", }}, }, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&spec3.Server{})) }) } } func TestServerJSONSerialization(t *testing.T) { cases := []struct { name string target *spec3.Server expectedOutput string }{ // scenario 1 { name: "basic", target: &spec3.Server{ ServerProps: spec3.ServerProps{ URL: "https://development.gigantic-server.com/v1", Description: "Development server", }, }, expectedOutput: `{"description":"Development server","url":"https://development.gigantic-server.com/v1"}`, }, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { rawTarget, err := json.Marshal(tc.target) if err != nil { t.Fatal(err) } serializedTarget := string(rawTarget) if !cmp.Equal(serializedTarget, tc.expectedOutput) { t.Fatalf("diff %s", cmp.Diff(serializedTarget, tc.expectedOutput)) } }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/spec.go000066400000000000000000000055411453663023200235020ustar00rootroot00000000000000/* Copyright 2021 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec3 import ( "encoding/json" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" "k8s.io/kube-openapi/pkg/validation/spec" ) // OpenAPI is an object that describes an API and conforms to the OpenAPI Specification. type OpenAPI struct { // Version represents the semantic version number of the OpenAPI Specification that this document uses Version string `json:"openapi"` // Info provides metadata about the API Info *spec.Info `json:"info"` // Paths holds the available target and operations for the API Paths *Paths `json:"paths,omitempty"` // Servers is an array of Server objects which provide connectivity information to a target server Servers []*Server `json:"servers,omitempty"` // Components hold various schemas for the specification Components *Components `json:"components,omitempty"` // SecurityRequirement holds a declaration of which security mechanisms can be used across the API SecurityRequirement []map[string][]string `json:"security,omitempty"` // ExternalDocs holds additional external documentation ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"` } func (o *OpenAPI) UnmarshalJSON(data []byte) error { type OpenAPIWithNoFunctions OpenAPI p := (*OpenAPIWithNoFunctions)(o) if internal.UseOptimizedJSONUnmarshalingV3 { return jsonv2.Unmarshal(data, &p) } return json.Unmarshal(data, &p) } func (o *OpenAPI) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshalingV3 { return internal.DeterministicMarshal(o) } type OpenAPIWithNoFunctions OpenAPI p := (*OpenAPIWithNoFunctions)(o) return json.Marshal(&p) } func (o *OpenAPI) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { type OpenAPIOmitZero struct { Version string `json:"openapi"` Info *spec.Info `json:"info"` Paths *Paths `json:"paths,omitzero"` Servers []*Server `json:"servers,omitempty"` Components *Components `json:"components,omitzero"` SecurityRequirement []map[string][]string `json:"security,omitempty"` ExternalDocs *ExternalDocumentation `json:"externalDocs,omitzero"` } x := (*OpenAPIOmitZero)(o) return opts.MarshalNext(enc, x) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/testdata/000077500000000000000000000000001453663023200240255ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/testdata/appsv1spec.json000066400000000000000000027067151453663023200270270ustar00rootroot00000000000000{ "components": { "schemas": { "io.k8s.api.apps.v1.ControllerRevision": { "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.", "properties": { "apiVersion": { "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", "type": "string" }, "data": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.runtime.RawExtension" } ], "default": {}, "description": "Data is the serialized representation of the state." }, "kind": { "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", "type": "string" }, "metadata": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } ], "default": {}, "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" }, "revision": { "default": 0, "description": "Revision indicates the revision of the state represented by Data.", "format": "int64", "type": "integer" } }, "required": [ "revision" ], "type": "object", "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "ControllerRevision", "version": "v1" } ] }, "io.k8s.api.apps.v1.ControllerRevisionList": { "description": "ControllerRevisionList is a resource containing a list of ControllerRevision objects.", "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is the list of ControllerRevisions", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } ], "default": {} }, "type": "array" }, "kind": { "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", "type": "string" }, "metadata": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } ], "default": {}, "description": "More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" } }, "required": [ "items" ], "type": "object", "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "ControllerRevisionList", "version": "v1" } ] }, "io.k8s.api.apps.v1.DaemonSet": { "description": "DaemonSet represents the configuration of a daemon set.", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } ], "default": {}, "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" }, "spec": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSetSpec" } ], "default": {}, "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" }, "status": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSetStatus" } ], "default": {}, "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" } }, "type": "object", "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "DaemonSet", "version": "v1" } ] }, "io.k8s.api.apps.v1.DaemonSetCondition": { "description": "DaemonSetCondition describes the state of a DaemonSet at a certain point.", "properties": { "lastTransitionTime": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } ], "default": {}, "description": "Last time the condition transitioned from one status to another." }, "message": { "description": "A human readable message indicating details about the transition.", "type": "string" }, "reason": { "description": "The reason for the condition's last transition.", "type": "string" }, "status": { "default": "", "description": "Status of the condition, one of True, False, Unknown.", "type": "string" }, "type": { "default": "", "description": "Type of DaemonSet condition.", "type": "string" } }, "required": [ "type", "status" ], "type": "object" }, "io.k8s.api.apps.v1.DaemonSetList": { "description": "DaemonSetList is a collection of daemon sets.", "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "A list of daemon sets.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } ], "default": {} }, "type": "array" }, "kind": { "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", "type": "string" }, "metadata": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } ], "default": {}, "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" } }, "required": [ "items" ], "type": "object", "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "DaemonSetList", "version": "v1" } ] }, "io.k8s.api.apps.v1.DaemonSetSpec": { "description": "DaemonSetSpec is the specification of a daemon set.", "properties": { "minReadySeconds": { "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).", "format": "int32", "type": "integer" }, "revisionHistoryLimit": { "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.", "format": "int32", "type": "integer" }, "selector": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" } ], "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" }, "template": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PodTemplateSpec" } ], "default": {}, "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). More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template" }, "updateStrategy": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSetUpdateStrategy" } ], "default": {}, "description": "An update strategy to replace existing DaemonSet pods with new pods." } }, "required": [ "selector", "template" ], "type": "object" }, "io.k8s.api.apps.v1.DaemonSetStatus": { "description": "DaemonSetStatus represents the current status of a daemon set.", "properties": { "collisionCount": { "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.", "format": "int32", "type": "integer" }, "conditions": { "description": "Represents the latest available observations of a DaemonSet's current state.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSetCondition" } ], "default": {} }, "type": "array", "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "currentNumberScheduled": { "default": 0, "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/", "format": "int32", "type": "integer" }, "desiredNumberScheduled": { "default": 0, "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/", "format": "int32", "type": "integer" }, "numberAvailable": { "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)", "format": "int32", "type": "integer" }, "numberMisscheduled": { "default": 0, "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/", "format": "int32", "type": "integer" }, "numberReady": { "default": 0, "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.", "format": "int32", "type": "integer" }, "numberUnavailable": { "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)", "format": "int32", "type": "integer" }, "observedGeneration": { "description": "The most recent generation observed by the daemon set controller.", "format": "int64", "type": "integer" }, "updatedNumberScheduled": { "description": "The total number of nodes that are running updated daemon pod", "format": "int32", "type": "integer" } }, "required": [ "currentNumberScheduled", "numberMisscheduled", "desiredNumberScheduled", "numberReady" ], "type": "object" }, "io.k8s.api.apps.v1.DaemonSetUpdateStrategy": { "description": "DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.", "properties": { "rollingUpdate": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.RollingUpdateDaemonSet" } ], "description": "Rolling update config params. Present only if type = \"RollingUpdate\"." }, "type": { "description": "Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is RollingUpdate.", "type": "string" } }, "type": "object" }, "io.k8s.api.apps.v1.Deployment": { "description": "Deployment enables declarative updates for Pods and ReplicaSets.", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } ], "default": {}, "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" }, "spec": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DeploymentSpec" } ], "default": {}, "description": "Specification of the desired behavior of the Deployment." }, "status": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DeploymentStatus" } ], "default": {}, "description": "Most recently observed status of the Deployment." } }, "type": "object", "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "Deployment", "version": "v1" } ] }, "io.k8s.api.apps.v1.DeploymentCondition": { "description": "DeploymentCondition describes the state of a deployment at a certain point.", "properties": { "lastTransitionTime": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } ], "default": {}, "description": "Last time the condition transitioned from one status to another." }, "lastUpdateTime": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } ], "default": {}, "description": "The last time this condition was updated." }, "message": { "description": "A human readable message indicating details about the transition.", "type": "string" }, "reason": { "description": "The reason for the condition's last transition.", "type": "string" }, "status": { "default": "", "description": "Status of the condition, one of True, False, Unknown.", "type": "string" }, "type": { "default": "", "description": "Type of deployment condition.", "type": "string" } }, "required": [ "type", "status" ], "type": "object" }, "io.k8s.api.apps.v1.DeploymentList": { "description": "DeploymentList is a list of Deployments.", "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is the list of Deployments.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } ], "default": {} }, "type": "array" }, "kind": { "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", "type": "string" }, "metadata": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } ], "default": {}, "description": "Standard list metadata." } }, "required": [ "items" ], "type": "object", "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "DeploymentList", "version": "v1" } ] }, "io.k8s.api.apps.v1.DeploymentSpec": { "description": "DeploymentSpec is the specification of the desired behavior of the Deployment.", "properties": { "minReadySeconds": { "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)", "format": "int32", "type": "integer" }, "paused": { "description": "Indicates that the deployment is paused.", "type": "boolean" }, "progressDeadlineSeconds": { "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.", "format": "int32", "type": "integer" }, "replicas": { "description": "Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.", "format": "int32", "type": "integer" }, "revisionHistoryLimit": { "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.", "format": "int32", "type": "integer" }, "selector": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" } ], "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." }, "strategy": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DeploymentStrategy" } ], "default": {}, "description": "The deployment strategy to use to replace existing pods with new ones.", "x-kubernetes-patch-strategy": "retainKeys" }, "template": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PodTemplateSpec" } ], "default": {}, "description": "Template describes the pods that will be created." } }, "required": [ "selector", "template" ], "type": "object" }, "io.k8s.api.apps.v1.DeploymentStatus": { "description": "DeploymentStatus is the most recently observed status of the Deployment.", "properties": { "availableReplicas": { "description": "Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.", "format": "int32", "type": "integer" }, "collisionCount": { "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.", "format": "int32", "type": "integer" }, "conditions": { "description": "Represents the latest available observations of a deployment's current state.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DeploymentCondition" } ], "default": {} }, "type": "array", "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "observedGeneration": { "description": "The generation observed by the deployment controller.", "format": "int64", "type": "integer" }, "readyReplicas": { "description": "readyReplicas is the number of pods targeted by this Deployment with a Ready Condition.", "format": "int32", "type": "integer" }, "replicas": { "description": "Total number of non-terminated pods targeted by this deployment (their labels match the selector).", "format": "int32", "type": "integer" }, "unavailableReplicas": { "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.", "format": "int32", "type": "integer" }, "updatedReplicas": { "description": "Total number of non-terminated pods targeted by this deployment that have the desired template spec.", "format": "int32", "type": "integer" } }, "type": "object" }, "io.k8s.api.apps.v1.DeploymentStrategy": { "description": "DeploymentStrategy describes how to replace existing pods with new ones.", "properties": { "rollingUpdate": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.RollingUpdateDeployment" } ], "description": "Rolling update config params. Present only if DeploymentStrategyType = RollingUpdate." }, "type": { "description": "Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default is RollingUpdate.", "type": "string" } }, "type": "object" }, "io.k8s.api.apps.v1.ReplicaSet": { "description": "ReplicaSet ensures that a specified number of pod replicas are running at any given time.", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } ], "default": {}, "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" }, "spec": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSetSpec" } ], "default": {}, "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" }, "status": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSetStatus" } ], "default": {}, "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" } }, "type": "object", "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "ReplicaSet", "version": "v1" } ] }, "io.k8s.api.apps.v1.ReplicaSetCondition": { "description": "ReplicaSetCondition describes the state of a replica set at a certain point.", "properties": { "lastTransitionTime": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } ], "default": {}, "description": "The last time the condition transitioned from one status to another." }, "message": { "description": "A human readable message indicating details about the transition.", "type": "string" }, "reason": { "description": "The reason for the condition's last transition.", "type": "string" }, "status": { "default": "", "description": "Status of the condition, one of True, False, Unknown.", "type": "string" }, "type": { "default": "", "description": "Type of replica set condition.", "type": "string" } }, "required": [ "type", "status" ], "type": "object" }, "io.k8s.api.apps.v1.ReplicaSetList": { "description": "ReplicaSetList is a collection of ReplicaSets.", "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "List of ReplicaSets. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } ], "default": {} }, "type": "array" }, "kind": { "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", "type": "string" }, "metadata": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } ], "default": {}, "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" } }, "required": [ "items" ], "type": "object", "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "ReplicaSetList", "version": "v1" } ] }, "io.k8s.api.apps.v1.ReplicaSetSpec": { "description": "ReplicaSetSpec is the specification of a ReplicaSet.", "properties": { "minReadySeconds": { "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)", "format": "int32", "type": "integer" }, "replicas": { "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", "format": "int32", "type": "integer" }, "selector": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" } ], "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" }, "template": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PodTemplateSpec" } ], "default": {}, "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" } }, "required": [ "selector" ], "type": "object" }, "io.k8s.api.apps.v1.ReplicaSetStatus": { "description": "ReplicaSetStatus represents the current status of a ReplicaSet.", "properties": { "availableReplicas": { "description": "The number of available replicas (ready for at least minReadySeconds) for this replica set.", "format": "int32", "type": "integer" }, "conditions": { "description": "Represents the latest available observations of a replica set's current state.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSetCondition" } ], "default": {} }, "type": "array", "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "fullyLabeledReplicas": { "description": "The number of pods that have labels matching the labels of the pod template of the replicaset.", "format": "int32", "type": "integer" }, "observedGeneration": { "description": "ObservedGeneration reflects the generation of the most recently observed ReplicaSet.", "format": "int64", "type": "integer" }, "readyReplicas": { "description": "readyReplicas is the number of pods targeted by this ReplicaSet with a Ready Condition.", "format": "int32", "type": "integer" }, "replicas": { "default": 0, "description": "Replicas is the most recently observed number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller", "format": "int32", "type": "integer" } }, "required": [ "replicas" ], "type": "object" }, "io.k8s.api.apps.v1.RollingUpdateDaemonSet": { "description": "Spec to control the desired behavior of daemon set rolling update.", "properties": { "maxSurge": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString" } ], "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." }, "maxUnavailable": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString" } ], "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." } }, "type": "object" }, "io.k8s.api.apps.v1.RollingUpdateDeployment": { "description": "Spec to control the desired behavior of rolling update.", "properties": { "maxSurge": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString" } ], "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." }, "maxUnavailable": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString" } ], "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." } }, "type": "object" }, "io.k8s.api.apps.v1.RollingUpdateStatefulSetStrategy": { "description": "RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.", "properties": { "maxUnavailable": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString" } ], "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." }, "partition": { "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.", "format": "int32", "type": "integer" } }, "type": "object" }, "io.k8s.api.apps.v1.StatefulSet": { "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.", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } ], "default": {}, "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" }, "spec": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSetSpec" } ], "default": {}, "description": "Spec defines the desired identities of pods in this set." }, "status": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSetStatus" } ], "default": {}, "description": "Status is the current status of Pods in this StatefulSet. This data may be out of date by some window of time." } }, "type": "object", "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "StatefulSet", "version": "v1" } ] }, "io.k8s.api.apps.v1.StatefulSetCondition": { "description": "StatefulSetCondition describes the state of a statefulset at a certain point.", "properties": { "lastTransitionTime": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } ], "default": {}, "description": "Last time the condition transitioned from one status to another." }, "message": { "description": "A human readable message indicating details about the transition.", "type": "string" }, "reason": { "description": "The reason for the condition's last transition.", "type": "string" }, "status": { "default": "", "description": "Status of the condition, one of True, False, Unknown.", "type": "string" }, "type": { "default": "", "description": "Type of statefulset condition.", "type": "string" } }, "required": [ "type", "status" ], "type": "object" }, "io.k8s.api.apps.v1.StatefulSetList": { "description": "StatefulSetList is a collection of StatefulSets.", "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "Items is the list of stateful sets.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } ], "default": {} }, "type": "array" }, "kind": { "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", "type": "string" }, "metadata": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } ], "default": {}, "description": "Standard list's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" } }, "required": [ "items" ], "type": "object", "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "StatefulSetList", "version": "v1" } ] }, "io.k8s.api.apps.v1.StatefulSetOrdinals": { "description": "StatefulSetOrdinals describes the policy used for replica ordinal assignment in this StatefulSet.", "properties": { "start": { "default": 0, "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).", "format": "int32", "type": "integer" } }, "type": "object" }, "io.k8s.api.apps.v1.StatefulSetPersistentVolumeClaimRetentionPolicy": { "description": "StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates.", "properties": { "whenDeleted": { "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.", "type": "string" }, "whenScaled": { "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.", "type": "string" } }, "type": "object" }, "io.k8s.api.apps.v1.StatefulSetSpec": { "description": "A StatefulSetSpec is the specification of a StatefulSet.", "properties": { "minReadySeconds": { "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)", "format": "int32", "type": "integer" }, "ordinals": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSetOrdinals" } ], "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. Using the ordinals field requires the StatefulSetStartOrdinal feature gate to be enabled, which is alpha." }, "persistentVolumeClaimRetentionPolicy": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSetPersistentVolumeClaimRetentionPolicy" } ], "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 alpha. +optional" }, "podManagementPolicy": { "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.", "type": "string" }, "replicas": { "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.", "format": "int32", "type": "integer" }, "revisionHistoryLimit": { "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.", "format": "int32", "type": "integer" }, "selector": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" } ], "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" }, "serviceName": { "default": "", "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.", "type": "string" }, "template": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PodTemplateSpec" } ], "default": {}, "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 -. For example, a pod in a StatefulSet named \"web\" with index number \"3\" would be named \"web-3\"." }, "updateStrategy": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSetUpdateStrategy" } ], "default": {}, "description": "updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template." }, "volumeClaimTemplates": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim" } ], "default": {} }, "type": "array" } }, "required": [ "selector", "template", "serviceName" ], "type": "object" }, "io.k8s.api.apps.v1.StatefulSetStatus": { "description": "StatefulSetStatus represents the current state of a StatefulSet.", "properties": { "availableReplicas": { "default": 0, "description": "Total number of available pods (ready for at least minReadySeconds) targeted by this statefulset.", "format": "int32", "type": "integer" }, "collisionCount": { "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.", "format": "int32", "type": "integer" }, "conditions": { "description": "Represents the latest available observations of a statefulset's current state.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSetCondition" } ], "default": {} }, "type": "array", "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "currentReplicas": { "description": "currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision.", "format": "int32", "type": "integer" }, "currentRevision": { "description": "currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).", "type": "string" }, "observedGeneration": { "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.", "format": "int64", "type": "integer" }, "readyReplicas": { "description": "readyReplicas is the number of pods created for this StatefulSet with a Ready Condition.", "format": "int32", "type": "integer" }, "replicas": { "default": 0, "description": "replicas is the number of Pods created by the StatefulSet controller.", "format": "int32", "type": "integer" }, "updateRevision": { "description": "updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)", "type": "string" }, "updatedReplicas": { "description": "updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision.", "format": "int32", "type": "integer" } }, "required": [ "replicas" ], "type": "object" }, "io.k8s.api.apps.v1.StatefulSetUpdateStrategy": { "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.", "properties": { "rollingUpdate": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.apps.v1.RollingUpdateStatefulSetStrategy" } ], "description": "RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType." }, "type": { "description": "Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.", "type": "string" } }, "type": "object" }, "io.k8s.api.autoscaling.v1.Scale": { "description": "Scale represents a scaling request for a resource.", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } ], "default": {}, "description": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata." }, "spec": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.ScaleSpec" } ], "default": {}, "description": "defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status." }, "status": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.ScaleStatus" } ], "default": {}, "description": "current status of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. Read-only." } }, "type": "object", "x-kubernetes-group-version-kind": [ { "group": "autoscaling", "kind": "Scale", "version": "v1" } ] }, "io.k8s.api.autoscaling.v1.ScaleSpec": { "description": "ScaleSpec describes the attributes of a scale subresource.", "properties": { "replicas": { "description": "desired number of instances for the scaled object.", "format": "int32", "type": "integer" } }, "type": "object" }, "io.k8s.api.autoscaling.v1.ScaleStatus": { "description": "ScaleStatus represents the current status of a scale subresource.", "properties": { "replicas": { "default": 0, "description": "actual number of observed instances of the scaled object.", "format": "int32", "type": "integer" }, "selector": { "description": "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: http://kubernetes.io/docs/user-guide/labels#label-selectors", "type": "string" } }, "required": [ "replicas" ], "type": "object" }, "io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource": { "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.", "properties": { "fsType": { "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", "type": "string" }, "partition": { "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).", "format": "int32", "type": "integer" }, "readOnly": { "description": "readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", "type": "boolean" }, "volumeID": { "default": "", "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", "type": "string" } }, "required": [ "volumeID" ], "type": "object" }, "io.k8s.api.core.v1.Affinity": { "description": "Affinity is a group of affinity scheduling rules.", "properties": { "nodeAffinity": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.NodeAffinity" } ], "description": "Describes node affinity scheduling rules for the pod." }, "podAffinity": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PodAffinity" } ], "description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s))." }, "podAntiAffinity": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PodAntiAffinity" } ], "description": "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s))." } }, "type": "object" }, "io.k8s.api.core.v1.AzureDiskVolumeSource": { "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", "properties": { "cachingMode": { "description": "cachingMode is the Host Caching mode: None, Read Only, Read Write.", "type": "string" }, "diskName": { "default": "", "description": "diskName is the Name of the data disk in the blob storage", "type": "string" }, "diskURI": { "default": "", "description": "diskURI is the URI of data disk in the blob storage", "type": "string" }, "fsType": { "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.", "type": "string" }, "kind": { "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", "type": "string" }, "readOnly": { "description": "readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" } }, "required": [ "diskName", "diskURI" ], "type": "object" }, "io.k8s.api.core.v1.AzureFileVolumeSource": { "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", "properties": { "readOnly": { "description": "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretName": { "default": "", "description": "secretName is the name of secret that contains Azure Storage Account Name and Key", "type": "string" }, "shareName": { "default": "", "description": "shareName is the azure share Name", "type": "string" } }, "required": [ "secretName", "shareName" ], "type": "object" }, "io.k8s.api.core.v1.CSIVolumeSource": { "description": "Represents a source location of a volume to mount, managed by an external CSI driver", "properties": { "driver": { "default": "", "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.", "type": "string" }, "fsType": { "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.", "type": "string" }, "nodePublishSecretRef": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.LocalObjectReference" } ], "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." }, "readOnly": { "description": "readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).", "type": "boolean" }, "volumeAttributes": { "additionalProperties": { "default": "", "type": "string" }, "description": "volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.", "type": "object" } }, "required": [ "driver" ], "type": "object" }, "io.k8s.api.core.v1.Capabilities": { "description": "Adds and removes POSIX capabilities from running containers.", "properties": { "add": { "description": "Added capabilities", "items": { "default": "", "type": "string" }, "type": "array" }, "drop": { "description": "Removed capabilities", "items": { "default": "", "type": "string" }, "type": "array" } }, "type": "object" }, "io.k8s.api.core.v1.CephFSVolumeSource": { "description": "Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.", "properties": { "monitors": { "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", "items": { "default": "", "type": "string" }, "type": "array" }, "path": { "description": "path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /", "type": "string" }, "readOnly": { "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", "type": "boolean" }, "secretFile": { "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", "type": "string" }, "secretRef": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.LocalObjectReference" } ], "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" }, "user": { "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", "type": "string" } }, "required": [ "monitors" ], "type": "object" }, "io.k8s.api.core.v1.CinderVolumeSource": { "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.", "properties": { "fsType": { "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", "type": "string" }, "readOnly": { "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", "type": "boolean" }, "secretRef": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.LocalObjectReference" } ], "description": "secretRef is optional: points to a secret object containing parameters used to connect to OpenStack." }, "volumeID": { "default": "", "description": "volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md", "type": "string" } }, "required": [ "volumeID" ], "type": "object" }, "io.k8s.api.core.v1.ClaimSource": { "description": "ClaimSource describes a reference to a ResourceClaim.\n\nExactly one of these fields should be set. Consumers of this type must treat an empty object as if it has an unknown value.", "properties": { "resourceClaimName": { "description": "ResourceClaimName is the name of a ResourceClaim object in the same namespace as this pod.", "type": "string" }, "resourceClaimTemplateName": { "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 name of the ResourceClaim will be -, where is the PodResourceClaim.Name. Pod validation will reject the pod if the concatenated name is not valid for a ResourceClaim (e.g. too long).\n\nAn existing ResourceClaim with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated resource by mistake. Scheduling and pod startup are then blocked until the unrelated ResourceClaim is removed.\n\nThis field is immutable and no changes will be made to the corresponding ResourceClaim by the control plane after creating the ResourceClaim.", "type": "string" } }, "type": "object" }, "io.k8s.api.core.v1.ConfigMapEnvSource": { "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.", "properties": { "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the ConfigMap must be defined", "type": "boolean" } }, "type": "object" }, "io.k8s.api.core.v1.ConfigMapKeySelector": { "description": "Selects a key from a ConfigMap.", "properties": { "key": { "default": "", "description": "The key to select.", "type": "string" }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the ConfigMap or its key must be defined", "type": "boolean" } }, "required": [ "key" ], "type": "object", "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.ConfigMapProjection": { "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.", "properties": { "items": { "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 '..'.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.KeyToPath" } ], "default": {} }, "type": "array" }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "optional specify whether the ConfigMap or its keys must be defined", "type": "boolean" } }, "type": "object" }, "io.k8s.api.core.v1.ConfigMapVolumeSource": { "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.", "properties": { "defaultMode": { "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.", "format": "int32", "type": "integer" }, "items": { "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 '..'.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.KeyToPath" } ], "default": {} }, "type": "array" }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "optional specify whether the ConfigMap or its keys must be defined", "type": "boolean" } }, "type": "object" }, "io.k8s.api.core.v1.Container": { "description": "A single application container that you want to run within a pod.", "properties": { "args": { "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", "items": { "default": "", "type": "string" }, "type": "array" }, "command": { "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", "items": { "default": "", "type": "string" }, "type": "array" }, "env": { "description": "List of environment variables to set in the container. Cannot be updated.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.EnvVar" } ], "default": {} }, "type": "array", "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "envFrom": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.EnvFromSource" } ], "default": {} }, "type": "array" }, "image": { "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.", "type": "string" }, "imagePullPolicy": { "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", "type": "string" }, "lifecycle": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.Lifecycle" } ], "description": "Actions that the management system should take in response to container lifecycle events. Cannot be updated." }, "livenessProbe": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.Probe" } ], "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" }, "name": { "default": "", "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.", "type": "string" }, "ports": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ContainerPort" } ], "default": {} }, "type": "array", "x-kubernetes-list-map-keys": [ "containerPort", "protocol" ], "x-kubernetes-list-type": "map", "x-kubernetes-patch-merge-key": "containerPort", "x-kubernetes-patch-strategy": "merge" }, "readinessProbe": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.Probe" } ], "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" }, "resources": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ResourceRequirements" } ], "default": {}, "description": "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" }, "securityContext": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.SecurityContext" } ], "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/" }, "startupProbe": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.Probe" } ], "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" }, "stdin": { "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.", "type": "boolean" }, "stdinOnce": { "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", "type": "boolean" }, "terminationMessagePath": { "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.", "type": "string" }, "terminationMessagePolicy": { "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.", "type": "string" }, "tty": { "description": "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", "type": "boolean" }, "volumeDevices": { "description": "volumeDevices is the list of block devices to be used by the container.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.VolumeDevice" } ], "default": {} }, "type": "array", "x-kubernetes-patch-merge-key": "devicePath", "x-kubernetes-patch-strategy": "merge" }, "volumeMounts": { "description": "Pod volumes to mount into the container's filesystem. Cannot be updated.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.VolumeMount" } ], "default": {} }, "type": "array", "x-kubernetes-patch-merge-key": "mountPath", "x-kubernetes-patch-strategy": "merge" }, "workingDir": { "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.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "io.k8s.api.core.v1.ContainerPort": { "description": "ContainerPort represents a network port in a single container.", "properties": { "containerPort": { "default": 0, "description": "Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.", "format": "int32", "type": "integer" }, "hostIP": { "description": "What host IP to bind the external port to.", "type": "string" }, "hostPort": { "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.", "format": "int32", "type": "integer" }, "name": { "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.", "type": "string" }, "protocol": { "default": "TCP", "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".", "type": "string" } }, "required": [ "containerPort" ], "type": "object" }, "io.k8s.api.core.v1.DownwardAPIProjection": { "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.", "properties": { "items": { "description": "Items is a list of DownwardAPIVolume file", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeFile" } ], "default": {} }, "type": "array" } }, "type": "object" }, "io.k8s.api.core.v1.DownwardAPIVolumeFile": { "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", "properties": { "fieldRef": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ObjectFieldSelector" } ], "description": "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported." }, "mode": { "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.", "format": "int32", "type": "integer" }, "path": { "default": "", "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 '..'", "type": "string" }, "resourceFieldRef": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ResourceFieldSelector" } ], "description": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported." } }, "required": [ "path" ], "type": "object" }, "io.k8s.api.core.v1.DownwardAPIVolumeSource": { "description": "DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.", "properties": { "defaultMode": { "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.", "format": "int32", "type": "integer" }, "items": { "description": "Items is a list of downward API volume file", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeFile" } ], "default": {} }, "type": "array" } }, "type": "object" }, "io.k8s.api.core.v1.EmptyDirVolumeSource": { "description": "Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.", "properties": { "medium": { "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", "type": "string" }, "sizeLimit": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity" } ], "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: http://kubernetes.io/docs/user-guide/volumes#emptydir" } }, "type": "object" }, "io.k8s.api.core.v1.EnvFromSource": { "description": "EnvFromSource represents the source of a set of ConfigMaps", "properties": { "configMapRef": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ConfigMapEnvSource" } ], "description": "The ConfigMap to select from" }, "prefix": { "description": "An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.", "type": "string" }, "secretRef": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.SecretEnvSource" } ], "description": "The Secret to select from" } }, "type": "object" }, "io.k8s.api.core.v1.EnvVar": { "description": "EnvVar represents an environment variable present in a Container.", "properties": { "name": { "default": "", "description": "Name of the environment variable. Must be a C_IDENTIFIER.", "type": "string" }, "value": { "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 \"\".", "type": "string" }, "valueFrom": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.EnvVarSource" } ], "description": "Source for the environment variable's value. Cannot be used if value is not empty." } }, "required": [ "name" ], "type": "object" }, "io.k8s.api.core.v1.EnvVarSource": { "description": "EnvVarSource represents a source for the value of an EnvVar.", "properties": { "configMapKeyRef": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ConfigMapKeySelector" } ], "description": "Selects a key of a ConfigMap." }, "fieldRef": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ObjectFieldSelector" } ], "description": "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs." }, "resourceFieldRef": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ResourceFieldSelector" } ], "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." }, "secretKeyRef": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.SecretKeySelector" } ], "description": "Selects a key of a secret in the pod's namespace" } }, "type": "object" }, "io.k8s.api.core.v1.EphemeralContainer": { "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.", "properties": { "args": { "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", "items": { "default": "", "type": "string" }, "type": "array" }, "command": { "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", "items": { "default": "", "type": "string" }, "type": "array" }, "env": { "description": "List of environment variables to set in the container. Cannot be updated.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.EnvVar" } ], "default": {} }, "type": "array", "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "envFrom": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.EnvFromSource" } ], "default": {} }, "type": "array" }, "image": { "description": "Container image name. More info: https://kubernetes.io/docs/concepts/containers/images", "type": "string" }, "imagePullPolicy": { "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", "type": "string" }, "lifecycle": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.Lifecycle" } ], "description": "Lifecycle is not allowed for ephemeral containers." }, "livenessProbe": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.Probe" } ], "description": "Probes are not allowed for ephemeral containers." }, "name": { "default": "", "description": "Name of the ephemeral container specified as a DNS_LABEL. This name must be unique among all containers, init containers and ephemeral containers.", "type": "string" }, "ports": { "description": "Ports are not allowed for ephemeral containers.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ContainerPort" } ], "default": {} }, "type": "array", "x-kubernetes-list-map-keys": [ "containerPort", "protocol" ], "x-kubernetes-list-type": "map", "x-kubernetes-patch-merge-key": "containerPort", "x-kubernetes-patch-strategy": "merge" }, "readinessProbe": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.Probe" } ], "description": "Probes are not allowed for ephemeral containers." }, "resources": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ResourceRequirements" } ], "default": {}, "description": "Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources already allocated to the pod." }, "securityContext": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.SecurityContext" } ], "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." }, "startupProbe": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.Probe" } ], "description": "Probes are not allowed for ephemeral containers." }, "stdin": { "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.", "type": "boolean" }, "stdinOnce": { "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", "type": "boolean" }, "targetContainerName": { "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.", "type": "string" }, "terminationMessagePath": { "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.", "type": "string" }, "terminationMessagePolicy": { "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.", "type": "string" }, "tty": { "description": "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", "type": "boolean" }, "volumeDevices": { "description": "volumeDevices is the list of block devices to be used by the container.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.VolumeDevice" } ], "default": {} }, "type": "array", "x-kubernetes-patch-merge-key": "devicePath", "x-kubernetes-patch-strategy": "merge" }, "volumeMounts": { "description": "Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers. Cannot be updated.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.VolumeMount" } ], "default": {} }, "type": "array", "x-kubernetes-patch-merge-key": "mountPath", "x-kubernetes-patch-strategy": "merge" }, "workingDir": { "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.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "io.k8s.api.core.v1.EphemeralVolumeSource": { "description": "Represents an ephemeral volume that is handled by a normal storage driver.", "properties": { "volumeClaimTemplate": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimTemplate" } ], "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 `-` where `` 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." } }, "type": "object" }, "io.k8s.api.core.v1.ExecAction": { "description": "ExecAction describes a \"run in container\" action.", "properties": { "command": { "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.", "items": { "default": "", "type": "string" }, "type": "array" } }, "type": "object" }, "io.k8s.api.core.v1.FCVolumeSource": { "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.", "properties": { "fsType": { "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.", "type": "string" }, "lun": { "description": "lun is Optional: FC target lun number", "format": "int32", "type": "integer" }, "readOnly": { "description": "readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "targetWWNs": { "description": "targetWWNs is Optional: FC target worldwide names (WWNs)", "items": { "default": "", "type": "string" }, "type": "array" }, "wwids": { "description": "wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.", "items": { "default": "", "type": "string" }, "type": "array" } }, "type": "object" }, "io.k8s.api.core.v1.FlexVolumeSource": { "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.", "properties": { "driver": { "default": "", "description": "driver is the name of the driver to use for this volume.", "type": "string" }, "fsType": { "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.", "type": "string" }, "options": { "additionalProperties": { "default": "", "type": "string" }, "description": "options is Optional: this field holds extra command options if any.", "type": "object" }, "readOnly": { "description": "readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretRef": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.LocalObjectReference" } ], "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." } }, "required": [ "driver" ], "type": "object" }, "io.k8s.api.core.v1.FlockerVolumeSource": { "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.", "properties": { "datasetName": { "description": "datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated", "type": "string" }, "datasetUUID": { "description": "datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset", "type": "string" } }, "type": "object" }, "io.k8s.api.core.v1.GCEPersistentDiskVolumeSource": { "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.", "properties": { "fsType": { "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", "type": "string" }, "partition": { "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", "format": "int32", "type": "integer" }, "pdName": { "default": "", "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", "type": "string" }, "readOnly": { "description": "readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", "type": "boolean" } }, "required": [ "pdName" ], "type": "object" }, "io.k8s.api.core.v1.GRPCAction": { "properties": { "port": { "default": 0, "description": "Port number of the gRPC service. Number must be in the range 1 to 65535.", "format": "int32", "type": "integer" }, "service": { "default": "", "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.", "type": "string" } }, "required": [ "port" ], "type": "object" }, "io.k8s.api.core.v1.GitRepoVolumeSource": { "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.", "properties": { "directory": { "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.", "type": "string" }, "repository": { "default": "", "description": "repository is the URL", "type": "string" }, "revision": { "description": "revision is the commit hash for the specified revision.", "type": "string" } }, "required": [ "repository" ], "type": "object" }, "io.k8s.api.core.v1.GlusterfsVolumeSource": { "description": "Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.", "properties": { "endpoints": { "default": "", "description": "endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", "type": "string" }, "path": { "default": "", "description": "path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", "type": "string" }, "readOnly": { "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", "type": "boolean" } }, "required": [ "endpoints", "path" ], "type": "object" }, "io.k8s.api.core.v1.HTTPGetAction": { "description": "HTTPGetAction describes an action based on HTTP Get requests.", "properties": { "host": { "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.", "type": "string" }, "httpHeaders": { "description": "Custom headers to set in the request. HTTP allows repeated headers.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.HTTPHeader" } ], "default": {} }, "type": "array" }, "path": { "description": "Path to access on the HTTP server.", "type": "string" }, "port": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString" } ], "default": {}, "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." }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string" } }, "required": [ "port" ], "type": "object" }, "io.k8s.api.core.v1.HTTPHeader": { "description": "HTTPHeader describes a custom header to be used in HTTP probes", "properties": { "name": { "default": "", "description": "The header field name", "type": "string" }, "value": { "default": "", "description": "The header field value", "type": "string" } }, "required": [ "name", "value" ], "type": "object" }, "io.k8s.api.core.v1.HostAlias": { "description": "HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.", "properties": { "hostnames": { "description": "Hostnames for the above IP address.", "items": { "default": "", "type": "string" }, "type": "array" }, "ip": { "description": "IP address of the host file entry.", "type": "string" } }, "type": "object" }, "io.k8s.api.core.v1.HostPathVolumeSource": { "description": "Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.", "properties": { "path": { "default": "", "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", "type": "string" }, "type": { "description": "type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", "type": "string" } }, "required": [ "path" ], "type": "object" }, "io.k8s.api.core.v1.ISCSIVolumeSource": { "description": "Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.", "properties": { "chapAuthDiscovery": { "description": "chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication", "type": "boolean" }, "chapAuthSession": { "description": "chapAuthSession defines whether support iSCSI Session CHAP authentication", "type": "boolean" }, "fsType": { "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", "type": "string" }, "initiatorName": { "description": "initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection.", "type": "string" }, "iqn": { "default": "", "description": "iqn is the target iSCSI Qualified Name.", "type": "string" }, "iscsiInterface": { "description": "iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).", "type": "string" }, "lun": { "default": 0, "description": "lun represents iSCSI Target Lun number.", "format": "int32", "type": "integer" }, "portals": { "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).", "items": { "default": "", "type": "string" }, "type": "array" }, "readOnly": { "description": "readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.", "type": "boolean" }, "secretRef": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.LocalObjectReference" } ], "description": "secretRef is the CHAP Secret for iSCSI target and initiator authentication" }, "targetPortal": { "default": "", "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).", "type": "string" } }, "required": [ "targetPortal", "iqn", "lun" ], "type": "object" }, "io.k8s.api.core.v1.KeyToPath": { "description": "Maps a string key to a path within a volume.", "properties": { "key": { "default": "", "description": "key is the key to project.", "type": "string" }, "mode": { "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.", "format": "int32", "type": "integer" }, "path": { "default": "", "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 '..'.", "type": "string" } }, "required": [ "key", "path" ], "type": "object" }, "io.k8s.api.core.v1.Lifecycle": { "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.", "properties": { "postStart": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.LifecycleHandler" } ], "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" }, "preStop": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.LifecycleHandler" } ], "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" } }, "type": "object" }, "io.k8s.api.core.v1.LifecycleHandler": { "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.", "properties": { "exec": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ExecAction" } ], "description": "Exec specifies the action to take." }, "httpGet": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.HTTPGetAction" } ], "description": "HTTPGet specifies the http request to perform." }, "tcpSocket": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.TCPSocketAction" } ], "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." } }, "type": "object" }, "io.k8s.api.core.v1.LocalObjectReference": { "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", "properties": { "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" } }, "type": "object", "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.NFSVolumeSource": { "description": "Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.", "properties": { "path": { "default": "", "description": "path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", "type": "string" }, "readOnly": { "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", "type": "boolean" }, "server": { "default": "", "description": "server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", "type": "string" } }, "required": [ "server", "path" ], "type": "object" }, "io.k8s.api.core.v1.NodeAffinity": { "description": "Node affinity is a group of node affinity scheduling rules.", "properties": { "preferredDuringSchedulingIgnoredDuringExecution": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PreferredSchedulingTerm" } ], "default": {} }, "type": "array" }, "requiredDuringSchedulingIgnoredDuringExecution": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.NodeSelector" } ], "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." } }, "type": "object" }, "io.k8s.api.core.v1.NodeSelector": { "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.", "properties": { "nodeSelectorTerms": { "description": "Required. A list of node selector terms. The terms are ORed.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.NodeSelectorTerm" } ], "default": {} }, "type": "array" } }, "required": [ "nodeSelectorTerms" ], "type": "object", "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.NodeSelectorRequirement": { "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", "properties": { "key": { "default": "", "description": "The label key that the selector applies to.", "type": "string" }, "operator": { "default": "", "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", "type": "string" }, "values": { "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.", "items": { "default": "", "type": "string" }, "type": "array" } }, "required": [ "key", "operator" ], "type": "object" }, "io.k8s.api.core.v1.NodeSelectorTerm": { "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.", "properties": { "matchExpressions": { "description": "A list of node selector requirements by node's labels.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.NodeSelectorRequirement" } ], "default": {} }, "type": "array" }, "matchFields": { "description": "A list of node selector requirements by node's fields.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.NodeSelectorRequirement" } ], "default": {} }, "type": "array" } }, "type": "object", "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.ObjectFieldSelector": { "description": "ObjectFieldSelector selects an APIVersioned field of an object.", "properties": { "apiVersion": { "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", "type": "string" }, "fieldPath": { "default": "", "description": "Path of the field to select in the specified API version.", "type": "string" } }, "required": [ "fieldPath" ], "type": "object", "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.PersistentVolumeClaim": { "description": "PersistentVolumeClaim is a user's request for and claim to a persistent volume", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } ], "default": {}, "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" }, "spec": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimSpec" } ], "default": {}, "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" }, "status": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimStatus" } ], "default": {}, "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" } }, "type": "object", "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PersistentVolumeClaim", "version": "v1" } ] }, "io.k8s.api.core.v1.PersistentVolumeClaimCondition": { "description": "PersistentVolumeClaimCondition contails details about state of pvc", "properties": { "lastProbeTime": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } ], "default": {}, "description": "lastProbeTime is the time we probed the condition." }, "lastTransitionTime": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } ], "default": {}, "description": "lastTransitionTime is the time the condition transitioned from one status to another." }, "message": { "description": "message is the human-readable message indicating details about last transition.", "type": "string" }, "reason": { "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 \"ResizeStarted\" that means the underlying persistent volume is being resized.", "type": "string" }, "status": { "default": "", "type": "string" }, "type": { "default": "", "type": "string" } }, "required": [ "type", "status" ], "type": "object" }, "io.k8s.api.core.v1.PersistentVolumeClaimSpec": { "description": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", "properties": { "accessModes": { "description": "accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", "items": { "default": "", "type": "string" }, "type": "array" }, "dataSource": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.TypedLocalObjectReference" } ], "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." }, "dataSourceRef": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.TypedObjectReference" } ], "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." }, "resources": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ResourceRequirements" } ], "default": {}, "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" }, "selector": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" } ], "description": "selector is a label query over volumes to consider for binding." }, "storageClassName": { "description": "storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", "type": "string" }, "volumeMode": { "description": "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", "type": "string" }, "volumeName": { "description": "volumeName is the binding reference to the PersistentVolume backing this claim.", "type": "string" } }, "type": "object" }, "io.k8s.api.core.v1.PersistentVolumeClaimStatus": { "description": "PersistentVolumeClaimStatus is the current status of a persistent volume claim.", "properties": { "accessModes": { "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", "items": { "default": "", "type": "string" }, "type": "array" }, "allocatedResources": { "additionalProperties": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity" } ], "default": {} }, "description": "allocatedResources is the storage resource within AllocatedResources tracks the capacity allocated to a PVC. It 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. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.", "type": "object" }, "capacity": { "additionalProperties": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity" } ], "default": {} }, "description": "capacity represents the actual resources of the underlying volume.", "type": "object" }, "conditions": { "description": "conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimCondition" } ], "default": {} }, "type": "array", "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "phase": { "description": "phase represents the current phase of PersistentVolumeClaim.", "type": "string" }, "resizeStatus": { "description": "resizeStatus stores status of resize operation. ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty string by resize controller or kubelet. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.", "type": "string" } }, "type": "object" }, "io.k8s.api.core.v1.PersistentVolumeClaimTemplate": { "description": "PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource.", "properties": { "metadata": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } ], "default": {}, "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." }, "spec": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimSpec" } ], "default": {}, "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." } }, "required": [ "spec" ], "type": "object" }, "io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource": { "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).", "properties": { "claimName": { "default": "", "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", "type": "string" }, "readOnly": { "description": "readOnly Will force the ReadOnly setting in VolumeMounts. Default false.", "type": "boolean" } }, "required": [ "claimName" ], "type": "object" }, "io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource": { "description": "Represents a Photon Controller persistent disk resource.", "properties": { "fsType": { "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.", "type": "string" }, "pdID": { "default": "", "description": "pdID is the ID that identifies Photon Controller persistent disk", "type": "string" } }, "required": [ "pdID" ], "type": "object" }, "io.k8s.api.core.v1.PodAffinity": { "description": "Pod affinity is a group of inter pod affinity scheduling rules.", "properties": { "preferredDuringSchedulingIgnoredDuringExecution": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.WeightedPodAffinityTerm" } ], "default": {} }, "type": "array" }, "requiredDuringSchedulingIgnoredDuringExecution": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm" } ], "default": {} }, "type": "array" } }, "type": "object" }, "io.k8s.api.core.v1.PodAffinityTerm": { "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 matches that of any node on which a pod of the set of pods is running", "properties": { "labelSelector": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" } ], "description": "A label query over a set of resources, in this case pods." }, "namespaceSelector": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" } ], "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." }, "namespaces": { "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\".", "items": { "default": "", "type": "string" }, "type": "array" }, "topologyKey": { "default": "", "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.", "type": "string" } }, "required": [ "topologyKey" ], "type": "object" }, "io.k8s.api.core.v1.PodAntiAffinity": { "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", "properties": { "preferredDuringSchedulingIgnoredDuringExecution": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.WeightedPodAffinityTerm" } ], "default": {} }, "type": "array" }, "requiredDuringSchedulingIgnoredDuringExecution": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm" } ], "default": {} }, "type": "array" } }, "type": "object" }, "io.k8s.api.core.v1.PodDNSConfig": { "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.", "properties": { "nameservers": { "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.", "items": { "default": "", "type": "string" }, "type": "array" }, "options": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PodDNSConfigOption" } ], "default": {} }, "type": "array" }, "searches": { "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.", "items": { "default": "", "type": "string" }, "type": "array" } }, "type": "object" }, "io.k8s.api.core.v1.PodDNSConfigOption": { "description": "PodDNSConfigOption defines DNS resolver options of a pod.", "properties": { "name": { "description": "Required.", "type": "string" }, "value": { "type": "string" } }, "type": "object" }, "io.k8s.api.core.v1.PodOS": { "description": "PodOS defines the OS parameters of a pod.", "properties": { "name": { "default": "", "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", "type": "string" } }, "required": [ "name" ], "type": "object" }, "io.k8s.api.core.v1.PodReadinessGate": { "description": "PodReadinessGate contains the reference to a pod condition", "properties": { "conditionType": { "default": "", "description": "ConditionType refers to a condition in the pod's condition list with matching type.", "type": "string" } }, "required": [ "conditionType" ], "type": "object" }, "io.k8s.api.core.v1.PodResourceClaim": { "description": "PodResourceClaim references exactly one ResourceClaim through a ClaimSource. 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.", "properties": { "name": { "default": "", "description": "Name uniquely identifies this resource claim inside the pod. This must be a DNS_LABEL.", "type": "string" }, "source": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ClaimSource" } ], "default": {}, "description": "Source describes where to find the ResourceClaim." } }, "required": [ "name" ], "type": "object" }, "io.k8s.api.core.v1.PodSchedulingGate": { "description": "PodSchedulingGate is associated to a Pod to guard its scheduling.", "properties": { "name": { "default": "", "description": "Name of the scheduling gate. Each scheduling gate must have a unique name field.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "io.k8s.api.core.v1.PodSecurityContext": { "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.", "properties": { "fsGroup": { "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.", "format": "int64", "type": "integer" }, "fsGroupChangePolicy": { "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.", "type": "string" }, "runAsGroup": { "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.", "format": "int64", "type": "integer" }, "runAsNonRoot": { "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.", "type": "boolean" }, "runAsUser": { "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.", "format": "int64", "type": "integer" }, "seLinuxOptions": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.SELinuxOptions" } ], "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." }, "seccompProfile": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.SeccompProfile" } ], "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." }, "supplementalGroups": { "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.", "items": { "default": 0, "format": "int64", "type": "integer" }, "type": "array" }, "sysctls": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.Sysctl" } ], "default": {} }, "type": "array" }, "windowsOptions": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.WindowsSecurityContextOptions" } ], "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." } }, "type": "object" }, "io.k8s.api.core.v1.PodSpec": { "description": "PodSpec is a description of a pod.", "properties": { "activeDeadlineSeconds": { "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.", "format": "int64", "type": "integer" }, "affinity": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.Affinity" } ], "description": "If specified, the pod's scheduling constraints" }, "automountServiceAccountToken": { "description": "AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.", "type": "boolean" }, "containers": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.Container" } ], "default": {} }, "type": "array", "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "dnsConfig": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PodDNSConfig" } ], "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy." }, "dnsPolicy": { "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'.", "type": "string" }, "enableServiceLinks": { "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.", "type": "boolean" }, "ephemeralContainers": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.EphemeralContainer" } ], "default": {} }, "type": "array", "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "hostAliases": { "description": "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.HostAlias" } ], "default": {} }, "type": "array", "x-kubernetes-patch-merge-key": "ip", "x-kubernetes-patch-strategy": "merge" }, "hostIPC": { "description": "Use the host's ipc namespace. Optional: Default to false.", "type": "boolean" }, "hostNetwork": { "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.", "type": "boolean" }, "hostPID": { "description": "Use the host's pid namespace. Optional: Default to false.", "type": "boolean" }, "hostUsers": { "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.", "type": "boolean" }, "hostname": { "description": "Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", "type": "string" }, "imagePullSecrets": { "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", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.LocalObjectReference" } ], "default": {} }, "type": "array", "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "initContainers": { "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/", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.Container" } ], "default": {} }, "type": "array", "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "nodeName": { "description": "NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.", "type": "string" }, "nodeSelector": { "additionalProperties": { "default": "", "type": "string" }, "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/", "type": "object", "x-kubernetes-map-type": "atomic" }, "os": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PodOS" } ], "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.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.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" }, "overhead": { "additionalProperties": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity" } ], "default": {} }, "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", "type": "object" }, "preemptionPolicy": { "description": "PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset.", "type": "string" }, "priority": { "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.", "format": "int32", "type": "integer" }, "priorityClassName": { "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.", "type": "string" }, "readinessGates": { "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", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PodReadinessGate" } ], "default": {} }, "type": "array" }, "resourceClaims": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PodResourceClaim" } ], "default": {} }, "type": "array", "x-kubernetes-list-map-keys": [ "name" ], "x-kubernetes-list-type": "map", "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge,retainKeys" }, "restartPolicy": { "description": "Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy", "type": "string" }, "runtimeClassName": { "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", "type": "string" }, "schedulerName": { "description": "If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.", "type": "string" }, "schedulingGates": { "description": "SchedulingGates is an opaque list of values that if specified will block scheduling the pod. More info: https://git.k8s.io/enhancements/keps/sig-scheduling/3521-pod-scheduling-readiness.\n\nThis is an alpha-level feature enabled by PodSchedulingReadiness feature gate.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PodSchedulingGate" } ], "default": {} }, "type": "array", "x-kubernetes-list-map-keys": [ "name" ], "x-kubernetes-list-type": "map", "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "securityContext": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PodSecurityContext" } ], "description": "SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field." }, "serviceAccount": { "description": "DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.", "type": "string" }, "serviceAccountName": { "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/", "type": "string" }, "setHostnameAsFQDN": { "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.", "type": "boolean" }, "shareProcessNamespace": { "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.", "type": "boolean" }, "subdomain": { "description": "If specified, the fully qualified Pod hostname will be \"...svc.\". If not specified, the pod will not have a domainname at all.", "type": "string" }, "terminationGracePeriodSeconds": { "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.", "format": "int64", "type": "integer" }, "tolerations": { "description": "If specified, the pod's tolerations.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.Toleration" } ], "default": {} }, "type": "array" }, "topologySpreadConstraints": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.TopologySpreadConstraint" } ], "default": {} }, "type": "array", "x-kubernetes-list-map-keys": [ "topologyKey", "whenUnsatisfiable" ], "x-kubernetes-list-type": "map", "x-kubernetes-patch-merge-key": "topologyKey", "x-kubernetes-patch-strategy": "merge" }, "volumes": { "description": "List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.Volume" } ], "default": {} }, "type": "array", "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge,retainKeys" } }, "required": [ "containers" ], "type": "object" }, "io.k8s.api.core.v1.PodTemplateSpec": { "description": "PodTemplateSpec describes the data a pod should have when created from a template", "properties": { "metadata": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } ], "default": {}, "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" }, "spec": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PodSpec" } ], "default": {}, "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" } }, "type": "object" }, "io.k8s.api.core.v1.PortworxVolumeSource": { "description": "PortworxVolumeSource represents a Portworx volume resource.", "properties": { "fsType": { "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.", "type": "string" }, "readOnly": { "description": "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "volumeID": { "default": "", "description": "volumeID uniquely identifies a Portworx volume", "type": "string" } }, "required": [ "volumeID" ], "type": "object" }, "io.k8s.api.core.v1.PreferredSchedulingTerm": { "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).", "properties": { "preference": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.NodeSelectorTerm" } ], "default": {}, "description": "A node selector term, associated with the corresponding weight." }, "weight": { "default": 0, "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", "format": "int32", "type": "integer" } }, "required": [ "weight", "preference" ], "type": "object" }, "io.k8s.api.core.v1.Probe": { "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.", "properties": { "exec": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ExecAction" } ], "description": "Exec specifies the action to take." }, "failureThreshold": { "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.", "format": "int32", "type": "integer" }, "grpc": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.GRPCAction" } ], "description": "GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate." }, "httpGet": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.HTTPGetAction" } ], "description": "HTTPGet specifies the http request to perform." }, "initialDelaySeconds": { "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", "format": "int32", "type": "integer" }, "periodSeconds": { "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.", "format": "int32", "type": "integer" }, "successThreshold": { "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.", "format": "int32", "type": "integer" }, "tcpSocket": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.TCPSocketAction" } ], "description": "TCPSocket specifies an action involving a TCP port." }, "terminationGracePeriodSeconds": { "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.", "format": "int64", "type": "integer" }, "timeoutSeconds": { "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", "format": "int32", "type": "integer" } }, "type": "object" }, "io.k8s.api.core.v1.ProjectedVolumeSource": { "description": "Represents a projected volume source", "properties": { "defaultMode": { "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.", "format": "int32", "type": "integer" }, "sources": { "description": "sources is the list of volume projections", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.VolumeProjection" } ], "default": {} }, "type": "array" } }, "type": "object" }, "io.k8s.api.core.v1.QuobyteVolumeSource": { "description": "Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.", "properties": { "group": { "description": "group to map volume access to Default is no group", "type": "string" }, "readOnly": { "description": "readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.", "type": "boolean" }, "registry": { "default": "", "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", "type": "string" }, "tenant": { "description": "tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin", "type": "string" }, "user": { "description": "user to map volume access to Defaults to serivceaccount user", "type": "string" }, "volume": { "default": "", "description": "volume is a string that references an already created Quobyte volume by name.", "type": "string" } }, "required": [ "registry", "volume" ], "type": "object" }, "io.k8s.api.core.v1.RBDVolumeSource": { "description": "Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.", "properties": { "fsType": { "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", "type": "string" }, "image": { "default": "", "description": "image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "type": "string" }, "keyring": { "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", "type": "string" }, "monitors": { "description": "monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "items": { "default": "", "type": "string" }, "type": "array" }, "pool": { "description": "pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "type": "string" }, "readOnly": { "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", "type": "boolean" }, "secretRef": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.LocalObjectReference" } ], "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" }, "user": { "description": "user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "type": "string" } }, "required": [ "monitors", "image" ], "type": "object" }, "io.k8s.api.core.v1.ResourceClaim": { "description": "ResourceClaim references one entry in PodSpec.ResourceClaims.", "properties": { "name": { "default": "", "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.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "io.k8s.api.core.v1.ResourceFieldSelector": { "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", "properties": { "containerName": { "description": "Container name: required for volumes, optional for env vars", "type": "string" }, "divisor": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity" } ], "default": {}, "description": "Specifies the output format of the exposed resources, defaults to \"1\"" }, "resource": { "default": "", "description": "Required: resource to select", "type": "string" } }, "required": [ "resource" ], "type": "object", "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.ResourceRequirements": { "description": "ResourceRequirements describes the compute resource requirements.", "properties": { "claims": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ResourceClaim" } ], "default": {} }, "type": "array", "x-kubernetes-list-map-keys": [ "name" ], "x-kubernetes-list-type": "map" }, "limits": { "additionalProperties": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity" } ], "default": {} }, "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object" }, "requests": { "additionalProperties": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity" } ], "default": {} }, "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. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", "type": "object" } }, "type": "object" }, "io.k8s.api.core.v1.SELinuxOptions": { "description": "SELinuxOptions are the labels to be applied to the container", "properties": { "level": { "description": "Level is SELinux level label that applies to the container.", "type": "string" }, "role": { "description": "Role is a SELinux role label that applies to the container.", "type": "string" }, "type": { "description": "Type is a SELinux type label that applies to the container.", "type": "string" }, "user": { "description": "User is a SELinux user label that applies to the container.", "type": "string" } }, "type": "object" }, "io.k8s.api.core.v1.ScaleIOVolumeSource": { "description": "ScaleIOVolumeSource represents a persistent ScaleIO volume", "properties": { "fsType": { "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\".", "type": "string" }, "gateway": { "default": "", "description": "gateway is the host address of the ScaleIO API Gateway.", "type": "string" }, "protectionDomain": { "description": "protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.", "type": "string" }, "readOnly": { "description": "readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretRef": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.LocalObjectReference" } ], "description": "secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail." }, "sslEnabled": { "description": "sslEnabled Flag enable/disable SSL communication with Gateway, default false", "type": "boolean" }, "storageMode": { "description": "storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.", "type": "string" }, "storagePool": { "description": "storagePool is the ScaleIO Storage Pool associated with the protection domain.", "type": "string" }, "system": { "default": "", "description": "system is the name of the storage system as configured in ScaleIO.", "type": "string" }, "volumeName": { "description": "volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.", "type": "string" } }, "required": [ "gateway", "system", "secretRef" ], "type": "object" }, "io.k8s.api.core.v1.SeccompProfile": { "description": "SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set.", "properties": { "localhostProfile": { "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 only be set if type is \"Localhost\".", "type": "string" }, "type": { "default": "", "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.", "type": "string" } }, "required": [ "type" ], "type": "object", "x-kubernetes-unions": [ { "discriminator": "type", "fields-to-discriminateBy": { "localhostProfile": "LocalhostProfile" } } ] }, "io.k8s.api.core.v1.SecretEnvSource": { "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.", "properties": { "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the Secret must be defined", "type": "boolean" } }, "type": "object" }, "io.k8s.api.core.v1.SecretKeySelector": { "description": "SecretKeySelector selects a key of a Secret.", "properties": { "key": { "default": "", "description": "The key of the secret to select from. Must be a valid secret key.", "type": "string" }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the Secret or its key must be defined", "type": "boolean" } }, "required": [ "key" ], "type": "object", "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.SecretProjection": { "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.", "properties": { "items": { "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 '..'.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.KeyToPath" } ], "default": {} }, "type": "array" }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "optional field specify whether the Secret or its key must be defined", "type": "boolean" } }, "type": "object" }, "io.k8s.api.core.v1.SecretVolumeSource": { "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.", "properties": { "defaultMode": { "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.", "format": "int32", "type": "integer" }, "items": { "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 '..'.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.KeyToPath" } ], "default": {} }, "type": "array" }, "optional": { "description": "optional field specify whether the Secret or its keys must be defined", "type": "boolean" }, "secretName": { "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", "type": "string" } }, "type": "object" }, "io.k8s.api.core.v1.SecurityContext": { "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.", "properties": { "allowPrivilegeEscalation": { "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.", "type": "boolean" }, "capabilities": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.Capabilities" } ], "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." }, "privileged": { "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.", "type": "boolean" }, "procMount": { "description": "procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount 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.", "type": "string" }, "readOnlyRootFilesystem": { "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.", "type": "boolean" }, "runAsGroup": { "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.", "format": "int64", "type": "integer" }, "runAsNonRoot": { "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.", "type": "boolean" }, "runAsUser": { "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.", "format": "int64", "type": "integer" }, "seLinuxOptions": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.SELinuxOptions" } ], "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." }, "seccompProfile": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.SeccompProfile" } ], "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." }, "windowsOptions": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.WindowsSecurityContextOptions" } ], "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." } }, "type": "object" }, "io.k8s.api.core.v1.ServiceAccountTokenProjection": { "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).", "properties": { "audience": { "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.", "type": "string" }, "expirationSeconds": { "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.", "format": "int64", "type": "integer" }, "path": { "default": "", "description": "path is the path relative to the mount point of the file to project the token into.", "type": "string" } }, "required": [ "path" ], "type": "object" }, "io.k8s.api.core.v1.StorageOSVolumeSource": { "description": "Represents a StorageOS persistent volume resource.", "properties": { "fsType": { "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.", "type": "string" }, "readOnly": { "description": "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretRef": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.LocalObjectReference" } ], "description": "secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted." }, "volumeName": { "description": "volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.", "type": "string" }, "volumeNamespace": { "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.", "type": "string" } }, "type": "object" }, "io.k8s.api.core.v1.Sysctl": { "description": "Sysctl defines a kernel parameter to be set", "properties": { "name": { "default": "", "description": "Name of a property to set", "type": "string" }, "value": { "default": "", "description": "Value of a property to set", "type": "string" } }, "required": [ "name", "value" ], "type": "object" }, "io.k8s.api.core.v1.TCPSocketAction": { "description": "TCPSocketAction describes an action based on opening a socket", "properties": { "host": { "description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string" }, "port": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString" } ], "default": {}, "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." } }, "required": [ "port" ], "type": "object" }, "io.k8s.api.core.v1.Toleration": { "description": "The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .", "properties": { "effect": { "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", "type": "string" }, "key": { "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.", "type": "string" }, "operator": { "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.", "type": "string" }, "tolerationSeconds": { "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.", "format": "int64", "type": "integer" }, "value": { "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.", "type": "string" } }, "type": "object" }, "io.k8s.api.core.v1.TopologySpreadConstraint": { "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", "properties": { "labelSelector": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" } ], "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." }, "matchLabelKeys": { "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. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector.", "items": { "default": "", "type": "string" }, "type": "array", "x-kubernetes-list-type": "atomic" }, "maxSkew": { "default": 0, "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.", "format": "int32", "type": "integer" }, "minDomains": { "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\nThis is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default).", "format": "int32", "type": "integer" }, "nodeAffinityPolicy": { "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.", "type": "string" }, "nodeTaintsPolicy": { "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.", "type": "string" }, "topologyKey": { "default": "", "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 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.", "type": "string" }, "whenUnsatisfiable": { "default": "", "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.", "type": "string" } }, "required": [ "maxSkew", "topologyKey", "whenUnsatisfiable" ], "type": "object" }, "io.k8s.api.core.v1.TypedLocalObjectReference": { "description": "TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.", "properties": { "apiGroup": { "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.", "type": "string" }, "kind": { "default": "", "description": "Kind is the type of resource being referenced", "type": "string" }, "name": { "default": "", "description": "Name is the name of resource being referenced", "type": "string" } }, "required": [ "kind", "name" ], "type": "object", "x-kubernetes-map-type": "atomic" }, "io.k8s.api.core.v1.TypedObjectReference": { "properties": { "apiGroup": { "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.", "type": "string" }, "kind": { "default": "", "description": "Kind is the type of resource being referenced", "type": "string" }, "name": { "default": "", "description": "Name is the name of resource being referenced", "type": "string" }, "namespace": { "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.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "io.k8s.api.core.v1.Volume": { "description": "Volume represents a named volume in a pod that may be accessed by any container in the pod.", "properties": { "awsElasticBlockStore": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource" } ], "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" }, "azureDisk": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.AzureDiskVolumeSource" } ], "description": "azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod." }, "azureFile": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.AzureFileVolumeSource" } ], "description": "azureFile represents an Azure File Service mount on the host and bind mount to the pod." }, "cephfs": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.CephFSVolumeSource" } ], "description": "cephFS represents a Ceph FS mount on the host that shares a pod's lifetime" }, "cinder": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.CinderVolumeSource" } ], "description": "cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md" }, "configMap": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ConfigMapVolumeSource" } ], "description": "configMap represents a configMap that should populate this volume" }, "csi": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.CSIVolumeSource" } ], "description": "csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature)." }, "downwardAPI": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeSource" } ], "description": "downwardAPI represents downward API about the pod that should populate this volume" }, "emptyDir": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.EmptyDirVolumeSource" } ], "description": "emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir" }, "ephemeral": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.EphemeralVolumeSource" } ], "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." }, "fc": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.FCVolumeSource" } ], "description": "fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod." }, "flexVolume": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.FlexVolumeSource" } ], "description": "flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin." }, "flocker": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.FlockerVolumeSource" } ], "description": "flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running" }, "gcePersistentDisk": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource" } ], "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" }, "gitRepo": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.GitRepoVolumeSource" } ], "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." }, "glusterfs": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.GlusterfsVolumeSource" } ], "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" }, "hostPath": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.HostPathVolumeSource" } ], "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" }, "iscsi": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ISCSIVolumeSource" } ], "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" }, "name": { "default": "", "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", "type": "string" }, "nfs": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.NFSVolumeSource" } ], "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" }, "persistentVolumeClaim": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource" } ], "description": "persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" }, "photonPersistentDisk": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource" } ], "description": "photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine" }, "portworxVolume": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PortworxVolumeSource" } ], "description": "portworxVolume represents a portworx volume attached and mounted on kubelets host machine" }, "projected": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ProjectedVolumeSource" } ], "description": "projected items for all in one resources secrets, configmaps, and downward API" }, "quobyte": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.QuobyteVolumeSource" } ], "description": "quobyte represents a Quobyte mount on the host that shares a pod's lifetime" }, "rbd": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.RBDVolumeSource" } ], "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" }, "scaleIO": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ScaleIOVolumeSource" } ], "description": "scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes." }, "secret": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.SecretVolumeSource" } ], "description": "secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret" }, "storageos": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.StorageOSVolumeSource" } ], "description": "storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes." }, "vsphereVolume": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource" } ], "description": "vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine" } }, "required": [ "name" ], "type": "object" }, "io.k8s.api.core.v1.VolumeDevice": { "description": "volumeDevice describes a mapping of a raw block device within a container.", "properties": { "devicePath": { "default": "", "description": "devicePath is the path inside of the container that the device will be mapped to.", "type": "string" }, "name": { "default": "", "description": "name must match the name of a persistentVolumeClaim in the pod", "type": "string" } }, "required": [ "name", "devicePath" ], "type": "object" }, "io.k8s.api.core.v1.VolumeMount": { "description": "VolumeMount describes a mounting of a Volume within a container.", "properties": { "mountPath": { "default": "", "description": "Path within the container at which the volume should be mounted. Must not contain ':'.", "type": "string" }, "mountPropagation": { "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.", "type": "string" }, "name": { "default": "", "description": "This must match the Name of a Volume.", "type": "string" }, "readOnly": { "description": "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.", "type": "boolean" }, "subPath": { "description": "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).", "type": "string" }, "subPathExpr": { "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.", "type": "string" } }, "required": [ "name", "mountPath" ], "type": "object" }, "io.k8s.api.core.v1.VolumeProjection": { "description": "Projection that may be projected along with other supported volume types", "properties": { "configMap": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ConfigMapProjection" } ], "description": "configMap information about the configMap data to project" }, "downwardAPI": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.DownwardAPIProjection" } ], "description": "downwardAPI information about the downwardAPI data to project" }, "secret": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.SecretProjection" } ], "description": "secret information about the secret data to project" }, "serviceAccountToken": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.ServiceAccountTokenProjection" } ], "description": "serviceAccountToken is information about the serviceAccountToken data to project" } }, "type": "object" }, "io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource": { "description": "Represents a vSphere volume resource.", "properties": { "fsType": { "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.", "type": "string" }, "storagePolicyID": { "description": "storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.", "type": "string" }, "storagePolicyName": { "description": "storagePolicyName is the storage Policy Based Management (SPBM) profile name.", "type": "string" }, "volumePath": { "default": "", "description": "volumePath is the path that identifies vSphere volume vmdk", "type": "string" } }, "required": [ "volumePath" ], "type": "object" }, "io.k8s.api.core.v1.WeightedPodAffinityTerm": { "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", "properties": { "podAffinityTerm": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm" } ], "default": {}, "description": "Required. A pod affinity term, associated with the corresponding weight." }, "weight": { "default": 0, "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", "format": "int32", "type": "integer" } }, "required": [ "weight", "podAffinityTerm" ], "type": "object" }, "io.k8s.api.core.v1.WindowsSecurityContextOptions": { "description": "WindowsSecurityContextOptions contain Windows-specific options and credentials.", "properties": { "gmsaCredentialSpec": { "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.", "type": "string" }, "gmsaCredentialSpecName": { "description": "GMSACredentialSpecName is the name of the GMSA credential spec to use.", "type": "string" }, "hostProcess": { "description": "HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. 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.", "type": "boolean" }, "runAsUserName": { "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.", "type": "string" } }, "type": "object" }, "io.k8s.apimachinery.pkg.api.resource.Quantity": { "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``` ::= \n\n\t(Note that may be empty, from the \"\" case in .)\n\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= \"+\" | \"-\" ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n\n\t(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\n ::= 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 ::= \"e\" | \"E\" ```\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.", "oneOf": [ { "type": "string" }, { "type": "number" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIResource": { "description": "APIResource specifies the name of a resource and whether it is namespaced.", "properties": { "categories": { "description": "categories is a list of the grouped resources this resource belongs to (e.g. 'all')", "items": { "default": "", "type": "string" }, "type": "array" }, "group": { "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\".", "type": "string" }, "kind": { "default": "", "description": "kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')", "type": "string" }, "name": { "default": "", "description": "name is the plural name of the resource.", "type": "string" }, "namespaced": { "default": false, "description": "namespaced indicates if a resource is namespaced or not.", "type": "boolean" }, "shortNames": { "description": "shortNames is a list of suggested short names of the resource.", "items": { "default": "", "type": "string" }, "type": "array" }, "singularName": { "default": "", "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.", "type": "string" }, "storageVersionHash": { "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.", "type": "string" }, "verbs": { "description": "verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)", "items": { "default": "", "type": "string" }, "type": "array" }, "version": { "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)\".", "type": "string" } }, "required": [ "name", "singularName", "namespaced", "kind", "verbs" ], "type": "object" }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList": { "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.", "properties": { "apiVersion": { "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", "type": "string" }, "groupVersion": { "default": "", "description": "groupVersion is the group and version this APIResourceList is for.", "type": "string" }, "kind": { "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", "type": "string" }, "resources": { "description": "resources contains the name of the resources and if they are namespaced.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResource" } ], "default": {} }, "type": "array" } }, "required": [ "groupVersion", "resources" ], "type": "object", "x-kubernetes-group-version-kind": [ { "group": "", "kind": "APIResourceList", "version": "v1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions": { "description": "DeleteOptions may be provided when deleting an API object.", "properties": { "apiVersion": { "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", "type": "string" }, "dryRun": { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "items": { "default": "", "type": "string" }, "type": "array" }, "gracePeriodSeconds": { "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.", "format": "int64", "type": "integer" }, "kind": { "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", "type": "string" }, "orphanDependents": { "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.", "type": "boolean" }, "preconditions": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions" } ], "description": "Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned." }, "propagationPolicy": { "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.", "type": "string" } }, "type": "object", "x-kubernetes-group-version-kind": [ { "group": "", "kind": "DeleteOptions", "version": "v1" }, { "group": "admission.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "admission.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "admissionregistration.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "admissionregistration.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "admissionregistration.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "apiextensions.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "apiextensions.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "apiregistration.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "apiregistration.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "apps", "kind": "DeleteOptions", "version": "v1" }, { "group": "apps", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "apps", "kind": "DeleteOptions", "version": "v1beta2" }, { "group": "authentication.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "authentication.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "authentication.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "authorization.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "authorization.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "autoscaling", "kind": "DeleteOptions", "version": "v1" }, { "group": "autoscaling", "kind": "DeleteOptions", "version": "v2" }, { "group": "autoscaling", "kind": "DeleteOptions", "version": "v2beta1" }, { "group": "autoscaling", "kind": "DeleteOptions", "version": "v2beta2" }, { "group": "batch", "kind": "DeleteOptions", "version": "v1" }, { "group": "batch", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "certificates.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "certificates.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "coordination.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "coordination.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "discovery.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "discovery.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "events.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "events.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "extensions", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "flowcontrol.apiserver.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "flowcontrol.apiserver.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "flowcontrol.apiserver.k8s.io", "kind": "DeleteOptions", "version": "v1beta2" }, { "group": "flowcontrol.apiserver.k8s.io", "kind": "DeleteOptions", "version": "v1beta3" }, { "group": "imagepolicy.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "internal.apiserver.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "networking.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "networking.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "networking.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "node.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "node.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "node.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "policy", "kind": "DeleteOptions", "version": "v1" }, { "group": "policy", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "rbac.authorization.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "rbac.authorization.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "rbac.authorization.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "resource.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "scheduling.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "scheduling.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "scheduling.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "storage.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "storage.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "storage.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1": { "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:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where 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", "type": "object" }, "io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector": { "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.", "properties": { "matchExpressions": { "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement" } ], "default": {} }, "type": "array" }, "matchLabels": { "additionalProperties": { "default": "", "type": "string" }, "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.", "type": "object" } }, "type": "object", "x-kubernetes-map-type": "atomic" }, "io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement": { "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", "properties": { "key": { "default": "", "description": "key is the label key that the selector applies to.", "type": "string", "x-kubernetes-patch-merge-key": "key", "x-kubernetes-patch-strategy": "merge" }, "operator": { "default": "", "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", "type": "string" }, "values": { "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.", "items": { "default": "", "type": "string" }, "type": "array" } }, "required": [ "key", "operator" ], "type": "object" }, "io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta": { "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", "properties": { "continue": { "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.", "type": "string" }, "remainingItemCount": { "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.", "format": "int64", "type": "integer" }, "resourceVersion": { "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", "type": "string" }, "selfLink": { "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", "type": "string" } }, "type": "object" }, "io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry": { "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", "properties": { "apiVersion": { "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.", "type": "string" }, "fieldsType": { "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", "type": "string" }, "fieldsV1": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1" } ], "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type." }, "manager": { "description": "Manager is an identifier of the workflow managing these fields.", "type": "string" }, "operation": { "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'.", "type": "string" }, "subresource": { "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.", "type": "string" }, "time": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } ], "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." } }, "type": "object" }, "io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta": { "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", "properties": { "annotations": { "additionalProperties": { "default": "", "type": "string" }, "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: http://kubernetes.io/docs/user-guide/annotations", "type": "object" }, "creationTimestamp": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } ], "default": {}, "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" }, "deletionGracePeriodSeconds": { "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.", "format": "int64", "type": "integer" }, "deletionTimestamp": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } ], "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" }, "finalizers": { "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.", "items": { "default": "", "type": "string" }, "type": "array", "x-kubernetes-patch-strategy": "merge" }, "generateName": { "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", "type": "string" }, "generation": { "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", "format": "int64", "type": "integer" }, "labels": { "additionalProperties": { "default": "", "type": "string" }, "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: http://kubernetes.io/docs/user-guide/labels", "type": "object" }, "managedFields": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry" } ], "default": {} }, "type": "array" }, "name": { "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: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string" }, "namespace": { "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: http://kubernetes.io/docs/user-guide/namespaces", "type": "string" }, "ownerReferences": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference" } ], "default": {} }, "type": "array", "x-kubernetes-patch-merge-key": "uid", "x-kubernetes-patch-strategy": "merge" }, "resourceVersion": { "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", "type": "string" }, "selfLink": { "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", "type": "string" }, "uid": { "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: http://kubernetes.io/docs/user-guide/identifiers#uids", "type": "string" } }, "type": "object" }, "io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference": { "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.", "properties": { "apiVersion": { "default": "", "description": "API version of the referent.", "type": "string" }, "blockOwnerDeletion": { "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.", "type": "boolean" }, "controller": { "description": "If true, this reference points to the managing controller.", "type": "boolean" }, "kind": { "default": "", "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "name": { "default": "", "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string" }, "uid": { "default": "", "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", "type": "string" } }, "required": [ "apiVersion", "kind", "name", "uid" ], "type": "object", "x-kubernetes-map-type": "atomic" }, "io.k8s.apimachinery.pkg.apis.meta.v1.Patch": { "description": "Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.", "type": "object" }, "io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions": { "description": "Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.", "properties": { "resourceVersion": { "description": "Specifies the target ResourceVersion", "type": "string" }, "uid": { "description": "Specifies the target UID.", "type": "string" } }, "type": "object" }, "io.k8s.apimachinery.pkg.apis.meta.v1.Status": { "description": "Status is a return value for calls that don't return other objects.", "properties": { "apiVersion": { "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", "type": "string" }, "code": { "description": "Suggested HTTP return code for this status, 0 if not set.", "format": "int32", "type": "integer" }, "details": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails" } ], "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." }, "kind": { "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", "type": "string" }, "message": { "description": "A human-readable description of the status of this operation.", "type": "string" }, "metadata": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } ], "default": {}, "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" }, "reason": { "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.", "type": "string" }, "status": { "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", "type": "string" } }, "type": "object", "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Status", "version": "v1" }, { "group": "resource.k8s.io", "kind": "Status", "version": "v1alpha1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause": { "description": "StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.", "properties": { "field": { "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\"", "type": "string" }, "message": { "description": "A human-readable description of the cause of the error. This field may be presented as-is to a reader.", "type": "string" }, "reason": { "description": "A machine-readable description of the cause of the error. If this value is empty there is no information available.", "type": "string" } }, "type": "object" }, "io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails": { "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.", "properties": { "causes": { "description": "The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause" } ], "default": {} }, "type": "array" }, "group": { "description": "The group attribute of the resource associated with the status StatusReason.", "type": "string" }, "kind": { "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", "type": "string" }, "name": { "description": "The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).", "type": "string" }, "retryAfterSeconds": { "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.", "format": "int32", "type": "integer" }, "uid": { "description": "UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids", "type": "string" } }, "type": "object" }, "io.k8s.apimachinery.pkg.apis.meta.v1.Time": { "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.", "format": "date-time", "type": "string" }, "io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent": { "description": "Event represents a single event to a watched resource.", "properties": { "object": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.runtime.RawExtension" } ], "default": {}, "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." }, "type": { "default": "", "type": "string" } }, "required": [ "type", "object" ], "type": "object", "x-kubernetes-group-version-kind": [ { "group": "", "kind": "WatchEvent", "version": "v1" }, { "group": "admission.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "admission.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "admissionregistration.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "admissionregistration.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "admissionregistration.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "apiextensions.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "apiextensions.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "apiregistration.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "apiregistration.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "apps", "kind": "WatchEvent", "version": "v1" }, { "group": "apps", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "apps", "kind": "WatchEvent", "version": "v1beta2" }, { "group": "authentication.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "authentication.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "authentication.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "authorization.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "authorization.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "autoscaling", "kind": "WatchEvent", "version": "v1" }, { "group": "autoscaling", "kind": "WatchEvent", "version": "v2" }, { "group": "autoscaling", "kind": "WatchEvent", "version": "v2beta1" }, { "group": "autoscaling", "kind": "WatchEvent", "version": "v2beta2" }, { "group": "batch", "kind": "WatchEvent", "version": "v1" }, { "group": "batch", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "certificates.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "certificates.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "coordination.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "coordination.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "discovery.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "discovery.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "events.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "events.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "extensions", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "flowcontrol.apiserver.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "flowcontrol.apiserver.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "flowcontrol.apiserver.k8s.io", "kind": "WatchEvent", "version": "v1beta2" }, { "group": "flowcontrol.apiserver.k8s.io", "kind": "WatchEvent", "version": "v1beta3" }, { "group": "imagepolicy.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "internal.apiserver.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "networking.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "networking.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "networking.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "node.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "node.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "node.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "policy", "kind": "WatchEvent", "version": "v1" }, { "group": "policy", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "rbac.authorization.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "rbac.authorization.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "rbac.authorization.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "resource.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "scheduling.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "scheduling.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "scheduling.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "storage.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "storage.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "storage.k8s.io", "kind": "WatchEvent", "version": "v1beta1" } ] }, "io.k8s.apimachinery.pkg.runtime.RawExtension": { "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.)", "type": "object" }, "io.k8s.apimachinery.pkg.util.intstr.IntOrString": { "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.", "format": "int-or-string", "oneOf": [ { "type": "integer" }, { "type": "string" } ] } }, "securitySchemes": { "BearerToken": { "description": "Bearer Token authentication", "in": "header", "name": "authorization", "type": "apiKey" } } }, "info": { "title": "Kubernetes", "version": "unversioned" }, "openapi": "3.0.0", "paths": { "/apis/apps/v1/": { "get": { "description": "get available resources", "operationId": "getAppsV1APIResources", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ] } }, "/apis/apps/v1/controllerrevisions": { "get": { "description": "list or watch objects of kind ControllerRevision", "operationId": "listAppsV1ControllerRevisionForAllNamespaces", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] }, "/apis/apps/v1/daemonsets": { "get": { "description": "list or watch objects of kind DaemonSet", "operationId": "listAppsV1DaemonSetForAllNamespaces", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSetList" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSetList" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSetList" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSetList" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSetList" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] }, "/apis/apps/v1/deployments": { "get": { "description": "list or watch objects of kind Deployment", "operationId": "listAppsV1DeploymentForAllNamespaces", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DeploymentList" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DeploymentList" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DeploymentList" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DeploymentList" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DeploymentList" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] }, "/apis/apps/v1/namespaces/{namespace}/controllerrevisions": { "delete": { "description": "delete collection of ControllerRevision", "operationId": "deleteAppsV1CollectionNamespacedControllerRevision", "parameters": [ { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "gracePeriodSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "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.", "in": "query", "name": "orphanDependents", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "propagationPolicy", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "get": { "description": "list or watch objects of kind ControllerRevision", "operationId": "listAppsV1NamespacedControllerRevision", "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "parameters": [ { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "post": { "description": "create a ControllerRevision", "operationId": "createAppsV1NamespacedControllerRevision", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } } }, "description": "Created" }, "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } } }, "description": "Accepted" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } } }, "/apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}": { "delete": { "description": "delete a ControllerRevision", "operationId": "deleteAppsV1NamespacedControllerRevision", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "gracePeriodSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "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.", "in": "query", "name": "orphanDependents", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "propagationPolicy", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } } }, "description": "OK" }, "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } } }, "description": "Accepted" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "get": { "description": "read the specified ControllerRevision", "operationId": "readAppsV1NamespacedControllerRevision", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "parameters": [ { "description": "name of the ControllerRevision", "in": "path", "name": "name", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "patch": { "description": "partially update the specified ControllerRevision", "operationId": "patchAppsV1NamespacedControllerRevision", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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).", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "force", "schema": { "type": "boolean", "uniqueItems": true } } ], "requestBody": { "content": { "application/apply-patch+yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/json-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/strategic-merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "put": { "description": "replace the specified ControllerRevision", "operationId": "replaceAppsV1NamespacedControllerRevision", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ControllerRevision" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } } }, "/apis/apps/v1/namespaces/{namespace}/daemonsets": { "delete": { "description": "delete collection of DaemonSet", "operationId": "deleteAppsV1CollectionNamespacedDaemonSet", "parameters": [ { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "gracePeriodSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "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.", "in": "query", "name": "orphanDependents", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "propagationPolicy", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "get": { "description": "list or watch objects of kind DaemonSet", "operationId": "listAppsV1NamespacedDaemonSet", "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSetList" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSetList" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSetList" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSetList" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSetList" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "parameters": [ { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "post": { "description": "create a DaemonSet", "operationId": "createAppsV1NamespacedDaemonSet", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } } }, "description": "Created" }, "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } } }, "description": "Accepted" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } } }, "/apis/apps/v1/namespaces/{namespace}/daemonsets/{name}": { "delete": { "description": "delete a DaemonSet", "operationId": "deleteAppsV1NamespacedDaemonSet", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "gracePeriodSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "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.", "in": "query", "name": "orphanDependents", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "propagationPolicy", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } } }, "description": "OK" }, "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } } }, "description": "Accepted" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "get": { "description": "read the specified DaemonSet", "operationId": "readAppsV1NamespacedDaemonSet", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "parameters": [ { "description": "name of the DaemonSet", "in": "path", "name": "name", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "patch": { "description": "partially update the specified DaemonSet", "operationId": "patchAppsV1NamespacedDaemonSet", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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).", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "force", "schema": { "type": "boolean", "uniqueItems": true } } ], "requestBody": { "content": { "application/apply-patch+yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/json-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/strategic-merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "put": { "description": "replace the specified DaemonSet", "operationId": "replaceAppsV1NamespacedDaemonSet", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } } }, "/apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status": { "get": { "description": "read status of the specified DaemonSet", "operationId": "readAppsV1NamespacedDaemonSetStatus", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "parameters": [ { "description": "name of the DaemonSet", "in": "path", "name": "name", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "patch": { "description": "partially update status of the specified DaemonSet", "operationId": "patchAppsV1NamespacedDaemonSetStatus", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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).", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "force", "schema": { "type": "boolean", "uniqueItems": true } } ], "requestBody": { "content": { "application/apply-patch+yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/json-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/strategic-merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "put": { "description": "replace status of the specified DaemonSet", "operationId": "replaceAppsV1NamespacedDaemonSetStatus", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DaemonSet" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } } }, "/apis/apps/v1/namespaces/{namespace}/deployments": { "delete": { "description": "delete collection of Deployment", "operationId": "deleteAppsV1CollectionNamespacedDeployment", "parameters": [ { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "gracePeriodSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "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.", "in": "query", "name": "orphanDependents", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "propagationPolicy", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "get": { "description": "list or watch objects of kind Deployment", "operationId": "listAppsV1NamespacedDeployment", "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DeploymentList" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DeploymentList" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DeploymentList" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DeploymentList" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.DeploymentList" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "parameters": [ { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "post": { "description": "create a Deployment", "operationId": "createAppsV1NamespacedDeployment", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } } }, "description": "Created" }, "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } } }, "description": "Accepted" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } } }, "/apis/apps/v1/namespaces/{namespace}/deployments/{name}": { "delete": { "description": "delete a Deployment", "operationId": "deleteAppsV1NamespacedDeployment", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "gracePeriodSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "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.", "in": "query", "name": "orphanDependents", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "propagationPolicy", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } } }, "description": "OK" }, "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } } }, "description": "Accepted" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "get": { "description": "read the specified Deployment", "operationId": "readAppsV1NamespacedDeployment", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "parameters": [ { "description": "name of the Deployment", "in": "path", "name": "name", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "patch": { "description": "partially update the specified Deployment", "operationId": "patchAppsV1NamespacedDeployment", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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).", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "force", "schema": { "type": "boolean", "uniqueItems": true } } ], "requestBody": { "content": { "application/apply-patch+yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/json-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/strategic-merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "put": { "description": "replace the specified Deployment", "operationId": "replaceAppsV1NamespacedDeployment", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } } }, "/apis/apps/v1/namespaces/{namespace}/deployments/{name}/scale": { "get": { "description": "read scale of the specified Deployment", "operationId": "readAppsV1NamespacedDeploymentScale", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } }, "parameters": [ { "description": "name of the Scale", "in": "path", "name": "name", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "patch": { "description": "partially update scale of the specified Deployment", "operationId": "patchAppsV1NamespacedDeploymentScale", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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).", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "force", "schema": { "type": "boolean", "uniqueItems": true } } ], "requestBody": { "content": { "application/apply-patch+yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/json-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/strategic-merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } }, "put": { "description": "replace scale of the specified Deployment", "operationId": "replaceAppsV1NamespacedDeploymentScale", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } } }, "/apis/apps/v1/namespaces/{namespace}/deployments/{name}/status": { "get": { "description": "read status of the specified Deployment", "operationId": "readAppsV1NamespacedDeploymentStatus", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "parameters": [ { "description": "name of the Deployment", "in": "path", "name": "name", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "patch": { "description": "partially update status of the specified Deployment", "operationId": "patchAppsV1NamespacedDeploymentStatus", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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).", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "force", "schema": { "type": "boolean", "uniqueItems": true } } ], "requestBody": { "content": { "application/apply-patch+yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/json-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/strategic-merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "put": { "description": "replace status of the specified Deployment", "operationId": "replaceAppsV1NamespacedDeploymentStatus", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.Deployment" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } } }, "/apis/apps/v1/namespaces/{namespace}/replicasets": { "delete": { "description": "delete collection of ReplicaSet", "operationId": "deleteAppsV1CollectionNamespacedReplicaSet", "parameters": [ { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "gracePeriodSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "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.", "in": "query", "name": "orphanDependents", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "propagationPolicy", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "get": { "description": "list or watch objects of kind ReplicaSet", "operationId": "listAppsV1NamespacedReplicaSet", "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "parameters": [ { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "post": { "description": "create a ReplicaSet", "operationId": "createAppsV1NamespacedReplicaSet", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } } }, "description": "Created" }, "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } } }, "description": "Accepted" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } } }, "/apis/apps/v1/namespaces/{namespace}/replicasets/{name}": { "delete": { "description": "delete a ReplicaSet", "operationId": "deleteAppsV1NamespacedReplicaSet", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "gracePeriodSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "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.", "in": "query", "name": "orphanDependents", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "propagationPolicy", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } } }, "description": "OK" }, "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } } }, "description": "Accepted" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "get": { "description": "read the specified ReplicaSet", "operationId": "readAppsV1NamespacedReplicaSet", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "parameters": [ { "description": "name of the ReplicaSet", "in": "path", "name": "name", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "patch": { "description": "partially update the specified ReplicaSet", "operationId": "patchAppsV1NamespacedReplicaSet", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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).", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "force", "schema": { "type": "boolean", "uniqueItems": true } } ], "requestBody": { "content": { "application/apply-patch+yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/json-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/strategic-merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "put": { "description": "replace the specified ReplicaSet", "operationId": "replaceAppsV1NamespacedReplicaSet", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } } }, "/apis/apps/v1/namespaces/{namespace}/replicasets/{name}/scale": { "get": { "description": "read scale of the specified ReplicaSet", "operationId": "readAppsV1NamespacedReplicaSetScale", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } }, "parameters": [ { "description": "name of the Scale", "in": "path", "name": "name", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "patch": { "description": "partially update scale of the specified ReplicaSet", "operationId": "patchAppsV1NamespacedReplicaSetScale", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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).", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "force", "schema": { "type": "boolean", "uniqueItems": true } } ], "requestBody": { "content": { "application/apply-patch+yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/json-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/strategic-merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } }, "put": { "description": "replace scale of the specified ReplicaSet", "operationId": "replaceAppsV1NamespacedReplicaSetScale", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } } }, "/apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status": { "get": { "description": "read status of the specified ReplicaSet", "operationId": "readAppsV1NamespacedReplicaSetStatus", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "parameters": [ { "description": "name of the ReplicaSet", "in": "path", "name": "name", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "patch": { "description": "partially update status of the specified ReplicaSet", "operationId": "patchAppsV1NamespacedReplicaSetStatus", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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).", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "force", "schema": { "type": "boolean", "uniqueItems": true } } ], "requestBody": { "content": { "application/apply-patch+yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/json-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/strategic-merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "put": { "description": "replace status of the specified ReplicaSet", "operationId": "replaceAppsV1NamespacedReplicaSetStatus", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSet" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } } }, "/apis/apps/v1/namespaces/{namespace}/statefulsets": { "delete": { "description": "delete collection of StatefulSet", "operationId": "deleteAppsV1CollectionNamespacedStatefulSet", "parameters": [ { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "gracePeriodSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "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.", "in": "query", "name": "orphanDependents", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "propagationPolicy", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "deletecollection", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "get": { "description": "list or watch objects of kind StatefulSet", "operationId": "listAppsV1NamespacedStatefulSet", "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSetList" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSetList" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSetList" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSetList" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSetList" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "parameters": [ { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "post": { "description": "create a StatefulSet", "operationId": "createAppsV1NamespacedStatefulSet", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } } }, "description": "Created" }, "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } } }, "description": "Accepted" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } } }, "/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}": { "delete": { "description": "delete a StatefulSet", "operationId": "deleteAppsV1NamespacedStatefulSet", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "gracePeriodSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "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.", "in": "query", "name": "orphanDependents", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "propagationPolicy", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } } }, "description": "OK" }, "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } } }, "description": "Accepted" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "delete", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "get": { "description": "read the specified StatefulSet", "operationId": "readAppsV1NamespacedStatefulSet", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "parameters": [ { "description": "name of the StatefulSet", "in": "path", "name": "name", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "patch": { "description": "partially update the specified StatefulSet", "operationId": "patchAppsV1NamespacedStatefulSet", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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).", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "force", "schema": { "type": "boolean", "uniqueItems": true } } ], "requestBody": { "content": { "application/apply-patch+yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/json-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/strategic-merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "put": { "description": "replace the specified StatefulSet", "operationId": "replaceAppsV1NamespacedStatefulSet", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } } }, "/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/scale": { "get": { "description": "read scale of the specified StatefulSet", "operationId": "readAppsV1NamespacedStatefulSetScale", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } }, "parameters": [ { "description": "name of the Scale", "in": "path", "name": "name", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "patch": { "description": "partially update scale of the specified StatefulSet", "operationId": "patchAppsV1NamespacedStatefulSetScale", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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).", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "force", "schema": { "type": "boolean", "uniqueItems": true } } ], "requestBody": { "content": { "application/apply-patch+yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/json-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/strategic-merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } }, "put": { "description": "replace scale of the specified StatefulSet", "operationId": "replaceAppsV1NamespacedStatefulSetScale", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.autoscaling.v1.Scale" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "autoscaling", "kind": "Scale", "version": "v1" } } }, "/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status": { "get": { "description": "read status of the specified StatefulSet", "operationId": "readAppsV1NamespacedStatefulSetStatus", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "get", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "parameters": [ { "description": "name of the StatefulSet", "in": "path", "name": "name", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "patch": { "description": "partially update status of the specified StatefulSet", "operationId": "patchAppsV1NamespacedStatefulSetStatus", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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).", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "force", "schema": { "type": "boolean", "uniqueItems": true } } ], "requestBody": { "content": { "application/apply-patch+yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/json-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } }, "application/strategic-merge-patch+json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "put": { "description": "replace status of the specified StatefulSet", "operationId": "replaceAppsV1NamespacedStatefulSetStatus", "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSet" } } }, "description": "Created" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "put", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } } }, "/apis/apps/v1/replicasets": { "get": { "description": "list or watch objects of kind ReplicaSet", "operationId": "listAppsV1ReplicaSetForAllNamespaces", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] }, "/apis/apps/v1/statefulsets": { "get": { "description": "list or watch objects of kind StatefulSet", "operationId": "listAppsV1StatefulSetForAllNamespaces", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSetList" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSetList" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSetList" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSetList" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.apps.v1.StatefulSetList" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] }, "/apis/apps/v1/watch/controllerrevisions": { "get": { "description": "watch individual changes to a list of ControllerRevision. deprecated: use the 'watch' parameter with a list operation instead.", "operationId": "watchAppsV1ControllerRevisionListForAllNamespaces", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] }, "/apis/apps/v1/watch/daemonsets": { "get": { "description": "watch individual changes to a list of DaemonSet. deprecated: use the 'watch' parameter with a list operation instead.", "operationId": "watchAppsV1DaemonSetListForAllNamespaces", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] }, "/apis/apps/v1/watch/deployments": { "get": { "description": "watch individual changes to a list of Deployment. deprecated: use the 'watch' parameter with a list operation instead.", "operationId": "watchAppsV1DeploymentListForAllNamespaces", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/controllerrevisions": { "get": { "description": "watch individual changes to a list of ControllerRevision. deprecated: use the 'watch' parameter with a list operation instead.", "operationId": "watchAppsV1NamespacedControllerRevisionList", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/controllerrevisions/{name}": { "get": { "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.", "operationId": "watchAppsV1NamespacedControllerRevision", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ControllerRevision", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "name of the ControllerRevision", "in": "path", "name": "name", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/daemonsets": { "get": { "description": "watch individual changes to a list of DaemonSet. deprecated: use the 'watch' parameter with a list operation instead.", "operationId": "watchAppsV1NamespacedDaemonSetList", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/daemonsets/{name}": { "get": { "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.", "operationId": "watchAppsV1NamespacedDaemonSet", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "DaemonSet", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "name of the DaemonSet", "in": "path", "name": "name", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/deployments": { "get": { "description": "watch individual changes to a list of Deployment. deprecated: use the 'watch' parameter with a list operation instead.", "operationId": "watchAppsV1NamespacedDeploymentList", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/deployments/{name}": { "get": { "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.", "operationId": "watchAppsV1NamespacedDeployment", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "Deployment", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "name of the Deployment", "in": "path", "name": "name", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/replicasets": { "get": { "description": "watch individual changes to a list of ReplicaSet. deprecated: use the 'watch' parameter with a list operation instead.", "operationId": "watchAppsV1NamespacedReplicaSetList", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/replicasets/{name}": { "get": { "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.", "operationId": "watchAppsV1NamespacedReplicaSet", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "name of the ReplicaSet", "in": "path", "name": "name", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/statefulsets": { "get": { "description": "watch individual changes to a list of StatefulSet. deprecated: use the 'watch' parameter with a list operation instead.", "operationId": "watchAppsV1NamespacedStatefulSetList", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] }, "/apis/apps/v1/watch/namespaces/{namespace}/statefulsets/{name}": { "get": { "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.", "operationId": "watchAppsV1NamespacedStatefulSet", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "name of the StatefulSet", "in": "path", "name": "name", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] }, "/apis/apps/v1/watch/replicasets": { "get": { "description": "watch individual changes to a list of ReplicaSet. deprecated: use the 'watch' parameter with a list operation instead.", "operationId": "watchAppsV1ReplicaSetListForAllNamespaces", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "ReplicaSet", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] }, "/apis/apps/v1/watch/statefulsets": { "get": { "description": "watch individual changes to a list of StatefulSet. deprecated: use the 'watch' parameter with a list operation instead.", "operationId": "watchAppsV1StatefulSetListForAllNamespaces", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/json;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/vnd.kubernetes.protobuf;stream=watch": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "apps_v1" ], "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "apps", "kind": "StatefulSet", "version": "v1" } }, "parameters": [ { "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.", "in": "query", "name": "allowWatchBookmarks", "schema": { "type": "boolean", "uniqueItems": true } }, { "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.", "in": "query", "name": "continue", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", "in": "query", "name": "fieldSelector", "schema": { "type": "string", "uniqueItems": true } }, { "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", "in": "query", "name": "labelSelector", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "limit", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersion", "schema": { "type": "string", "uniqueItems": true } }, { "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", "in": "query", "name": "resourceVersionMatch", "schema": { "type": "string", "uniqueItems": true } }, { "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", "in": "query", "name": "timeoutSeconds", "schema": { "type": "integer", "uniqueItems": true } }, { "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", "in": "query", "name": "watch", "schema": { "type": "boolean", "uniqueItems": true } } ] } } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/spec3/testdata/authorizationv1spec.json000066400000000000000000002030461453663023200307470ustar00rootroot00000000000000{ "components": { "schemas": { "io.k8s.api.authorization.v1.LocalSubjectAccessReview": { "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.", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } ], "default": {}, "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" }, "spec": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SubjectAccessReviewSpec" } ], "default": {}, "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." }, "status": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SubjectAccessReviewStatus" } ], "default": {}, "description": "Status is filled in by the server and indicates whether the request is allowed or not" } }, "required": [ "spec" ], "type": "object", "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "LocalSubjectAccessReview", "version": "v1" } ] }, "io.k8s.api.authorization.v1.NonResourceAttributes": { "description": "NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface", "properties": { "path": { "description": "Path is the URL path of the request", "type": "string" }, "verb": { "description": "Verb is the standard HTTP verb", "type": "string" } }, "type": "object" }, "io.k8s.api.authorization.v1.NonResourceRule": { "description": "NonResourceRule holds information that describes a rule for the non-resource", "properties": { "nonResourceURLs": { "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.", "items": { "default": "", "type": "string" }, "type": "array" }, "verbs": { "description": "Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options. \"*\" means all.", "items": { "default": "", "type": "string" }, "type": "array" } }, "required": [ "verbs" ], "type": "object" }, "io.k8s.api.authorization.v1.ResourceAttributes": { "description": "ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface", "properties": { "group": { "description": "Group is the API Group of the Resource. \"*\" means all.", "type": "string" }, "name": { "description": "Name is the name of the resource being requested for a \"get\" or deleted for a \"delete\". \"\" (empty) means all.", "type": "string" }, "namespace": { "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", "type": "string" }, "resource": { "description": "Resource is one of the existing resource types. \"*\" means all.", "type": "string" }, "subresource": { "description": "Subresource is one of the existing resource types. \"\" means none.", "type": "string" }, "verb": { "description": "Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. \"*\" means all.", "type": "string" }, "version": { "description": "Version is the API Version of the Resource. \"*\" means all.", "type": "string" } }, "type": "object" }, "io.k8s.api.authorization.v1.ResourceRule": { "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.", "properties": { "apiGroups": { "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.", "items": { "default": "", "type": "string" }, "type": "array" }, "resourceNames": { "description": "ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. \"*\" means all.", "items": { "default": "", "type": "string" }, "type": "array" }, "resources": { "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.", "items": { "default": "", "type": "string" }, "type": "array" }, "verbs": { "description": "Verb is a list of kubernetes resource API verbs, like: get, list, watch, create, update, delete, proxy. \"*\" means all.", "items": { "default": "", "type": "string" }, "type": "array" } }, "required": [ "verbs" ], "type": "object" }, "io.k8s.api.authorization.v1.SelfSubjectAccessReview": { "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", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } ], "default": {}, "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" }, "spec": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec" } ], "default": {}, "description": "Spec holds information about the request being evaluated. user and groups must be empty" }, "status": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SubjectAccessReviewStatus" } ], "default": {}, "description": "Status is filled in by the server and indicates whether the request is allowed or not" } }, "required": [ "spec" ], "type": "object", "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "SelfSubjectAccessReview", "version": "v1" } ] }, "io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec": { "description": "SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set", "properties": { "nonResourceAttributes": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.NonResourceAttributes" } ], "description": "NonResourceAttributes describes information for a non-resource access request" }, "resourceAttributes": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.ResourceAttributes" } ], "description": "ResourceAuthorizationAttributes describes information for a resource access request" } }, "type": "object" }, "io.k8s.api.authorization.v1.SelfSubjectRulesReview": { "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.", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } ], "default": {}, "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" }, "spec": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectRulesReviewSpec" } ], "default": {}, "description": "Spec holds information about the request being evaluated." }, "status": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SubjectRulesReviewStatus" } ], "default": {}, "description": "Status is filled in by the server and indicates the set of actions a user can perform." } }, "required": [ "spec" ], "type": "object", "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "SelfSubjectRulesReview", "version": "v1" } ] }, "io.k8s.api.authorization.v1.SelfSubjectRulesReviewSpec": { "description": "SelfSubjectRulesReviewSpec defines the specification for SelfSubjectRulesReview.", "properties": { "namespace": { "description": "Namespace to evaluate rules for. Required.", "type": "string" } }, "type": "object" }, "io.k8s.api.authorization.v1.SubjectAccessReview": { "description": "SubjectAccessReview checks whether or not a user or group can perform an action.", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } ], "default": {}, "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" }, "spec": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SubjectAccessReviewSpec" } ], "default": {}, "description": "Spec holds information about the request being evaluated" }, "status": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SubjectAccessReviewStatus" } ], "default": {}, "description": "Status is filled in by the server and indicates whether the request is allowed or not" } }, "required": [ "spec" ], "type": "object", "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "SubjectAccessReview", "version": "v1" } ] }, "io.k8s.api.authorization.v1.SubjectAccessReviewSpec": { "description": "SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set", "properties": { "extra": { "additionalProperties": { "items": { "default": "", "type": "string" }, "type": "array" }, "description": "Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.", "type": "object" }, "groups": { "description": "Groups is the groups you're testing for.", "items": { "default": "", "type": "string" }, "type": "array" }, "nonResourceAttributes": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.NonResourceAttributes" } ], "description": "NonResourceAttributes describes information for a non-resource access request" }, "resourceAttributes": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.ResourceAttributes" } ], "description": "ResourceAuthorizationAttributes describes information for a resource access request" }, "uid": { "description": "UID information about the requesting user.", "type": "string" }, "user": { "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", "type": "string" } }, "type": "object" }, "io.k8s.api.authorization.v1.SubjectAccessReviewStatus": { "description": "SubjectAccessReviewStatus", "properties": { "allowed": { "default": false, "description": "Allowed is required. True if the action would be allowed, false otherwise.", "type": "boolean" }, "denied": { "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.", "type": "boolean" }, "evaluationError": { "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.", "type": "string" }, "reason": { "description": "Reason is optional. It indicates why a request was allowed or denied.", "type": "string" } }, "required": [ "allowed" ], "type": "object" }, "io.k8s.api.authorization.v1.SubjectRulesReviewStatus": { "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.", "properties": { "evaluationError": { "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.", "type": "string" }, "incomplete": { "default": false, "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.", "type": "boolean" }, "nonResourceRules": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.NonResourceRule" } ], "default": {} }, "type": "array" }, "resourceRules": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.ResourceRule" } ], "default": {} }, "type": "array" } }, "required": [ "resourceRules", "nonResourceRules", "incomplete" ], "type": "object" }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIResource": { "description": "APIResource specifies the name of a resource and whether it is namespaced.", "properties": { "categories": { "description": "categories is a list of the grouped resources this resource belongs to (e.g. 'all')", "items": { "default": "", "type": "string" }, "type": "array" }, "group": { "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\".", "type": "string" }, "kind": { "default": "", "description": "kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')", "type": "string" }, "name": { "default": "", "description": "name is the plural name of the resource.", "type": "string" }, "namespaced": { "default": false, "description": "namespaced indicates if a resource is namespaced or not.", "type": "boolean" }, "shortNames": { "description": "shortNames is a list of suggested short names of the resource.", "items": { "default": "", "type": "string" }, "type": "array" }, "singularName": { "default": "", "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.", "type": "string" }, "storageVersionHash": { "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.", "type": "string" }, "verbs": { "description": "verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)", "items": { "default": "", "type": "string" }, "type": "array" }, "version": { "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)\".", "type": "string" } }, "required": [ "name", "singularName", "namespaced", "kind", "verbs" ], "type": "object" }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList": { "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.", "properties": { "apiVersion": { "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", "type": "string" }, "groupVersion": { "default": "", "description": "groupVersion is the group and version this APIResourceList is for.", "type": "string" }, "kind": { "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", "type": "string" }, "resources": { "description": "resources contains the name of the resources and if they are namespaced.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResource" } ], "default": {} }, "type": "array" } }, "required": [ "groupVersion", "resources" ], "type": "object", "x-kubernetes-group-version-kind": [ { "group": "", "kind": "APIResourceList", "version": "v1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1": { "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:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where 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", "type": "object" }, "io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry": { "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", "properties": { "apiVersion": { "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.", "type": "string" }, "fieldsType": { "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", "type": "string" }, "fieldsV1": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1" } ], "description": "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type." }, "manager": { "description": "Manager is an identifier of the workflow managing these fields.", "type": "string" }, "operation": { "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'.", "type": "string" }, "subresource": { "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.", "type": "string" }, "time": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } ], "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." } }, "type": "object" }, "io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta": { "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", "properties": { "annotations": { "additionalProperties": { "default": "", "type": "string" }, "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: http://kubernetes.io/docs/user-guide/annotations", "type": "object" }, "creationTimestamp": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } ], "default": {}, "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" }, "deletionGracePeriodSeconds": { "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.", "format": "int64", "type": "integer" }, "deletionTimestamp": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } ], "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" }, "finalizers": { "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.", "items": { "default": "", "type": "string" }, "type": "array", "x-kubernetes-patch-strategy": "merge" }, "generateName": { "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", "type": "string" }, "generation": { "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", "format": "int64", "type": "integer" }, "labels": { "additionalProperties": { "default": "", "type": "string" }, "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: http://kubernetes.io/docs/user-guide/labels", "type": "object" }, "managedFields": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry" } ], "default": {} }, "type": "array" }, "name": { "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: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string" }, "namespace": { "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: http://kubernetes.io/docs/user-guide/namespaces", "type": "string" }, "ownerReferences": { "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.", "items": { "allOf": [ { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference" } ], "default": {} }, "type": "array", "x-kubernetes-patch-merge-key": "uid", "x-kubernetes-patch-strategy": "merge" }, "resourceVersion": { "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", "type": "string" }, "selfLink": { "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.", "type": "string" }, "uid": { "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: http://kubernetes.io/docs/user-guide/identifiers#uids", "type": "string" } }, "type": "object" }, "io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference": { "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.", "properties": { "apiVersion": { "default": "", "description": "API version of the referent.", "type": "string" }, "blockOwnerDeletion": { "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.", "type": "boolean" }, "controller": { "description": "If true, this reference points to the managing controller.", "type": "boolean" }, "kind": { "default": "", "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "name": { "default": "", "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string" }, "uid": { "default": "", "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", "type": "string" } }, "required": [ "apiVersion", "kind", "name", "uid" ], "type": "object", "x-kubernetes-map-type": "atomic" }, "io.k8s.apimachinery.pkg.apis.meta.v1.Time": { "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.", "format": "date-time", "type": "string" } }, "securitySchemes": { "BearerToken": { "description": "Bearer Token authentication", "in": "header", "name": "authorization", "type": "apiKey" } } }, "info": { "title": "Kubernetes", "version": "unversioned" }, "openapi": "3.0.0", "paths": { "/apis/authorization.k8s.io/v1/": { "get": { "description": "get available resources", "operationId": "getAuthorizationV1APIResources", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList" } } }, "description": "OK" }, "401": { "description": "Unauthorized" } }, "tags": [ "authorization_v1" ] } }, "/apis/authorization.k8s.io/v1/namespaces/{namespace}/localsubjectaccessreviews": { "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } }, { "description": "object name and auth scope, such as for teams and projects", "in": "path", "name": "namespace", "required": true, "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "post": { "description": "create a LocalSubjectAccessReview", "operationId": "createAuthorizationV1NamespacedLocalSubjectAccessReview", "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.LocalSubjectAccessReview" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.LocalSubjectAccessReview" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.LocalSubjectAccessReview" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.LocalSubjectAccessReview" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.LocalSubjectAccessReview" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.LocalSubjectAccessReview" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.LocalSubjectAccessReview" } } }, "description": "Created" }, "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.LocalSubjectAccessReview" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.LocalSubjectAccessReview" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.LocalSubjectAccessReview" } } }, "description": "Accepted" }, "401": { "description": "Unauthorized" } }, "tags": [ "authorization_v1" ], "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "authorization.k8s.io", "kind": "LocalSubjectAccessReview", "version": "v1" } } }, "/apis/authorization.k8s.io/v1/selfsubjectaccessreviews": { "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "post": { "description": "create a SelfSubjectAccessReview", "operationId": "createAuthorizationV1SelfSubjectAccessReview", "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectAccessReview" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectAccessReview" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectAccessReview" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectAccessReview" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectAccessReview" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectAccessReview" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectAccessReview" } } }, "description": "Created" }, "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectAccessReview" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectAccessReview" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectAccessReview" } } }, "description": "Accepted" }, "401": { "description": "Unauthorized" } }, "tags": [ "authorization_v1" ], "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "authorization.k8s.io", "kind": "SelfSubjectAccessReview", "version": "v1" } } }, "/apis/authorization.k8s.io/v1/selfsubjectrulesreviews": { "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "post": { "description": "create a SelfSubjectRulesReview", "operationId": "createAuthorizationV1SelfSubjectRulesReview", "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectRulesReview" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectRulesReview" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectRulesReview" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectRulesReview" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectRulesReview" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectRulesReview" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectRulesReview" } } }, "description": "Created" }, "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectRulesReview" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectRulesReview" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SelfSubjectRulesReview" } } }, "description": "Accepted" }, "401": { "description": "Unauthorized" } }, "tags": [ "authorization_v1" ], "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "authorization.k8s.io", "kind": "SelfSubjectRulesReview", "version": "v1" } } }, "/apis/authorization.k8s.io/v1/subjectaccessreviews": { "parameters": [ { "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", "in": "query", "name": "dryRun", "schema": { "type": "string", "uniqueItems": true } }, { "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.", "in": "query", "name": "fieldManager", "schema": { "type": "string", "uniqueItems": true } }, { "description": "fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.", "in": "query", "name": "fieldValidation", "schema": { "type": "string", "uniqueItems": true } }, { "description": "If 'true', then the output is pretty printed.", "in": "query", "name": "pretty", "schema": { "type": "string", "uniqueItems": true } } ], "post": { "description": "create a SubjectAccessReview", "operationId": "createAuthorizationV1SubjectAccessReview", "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SubjectAccessReview" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SubjectAccessReview" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SubjectAccessReview" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SubjectAccessReview" } } }, "description": "OK" }, "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SubjectAccessReview" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SubjectAccessReview" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SubjectAccessReview" } } }, "description": "Created" }, "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SubjectAccessReview" } }, "application/vnd.kubernetes.protobuf": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SubjectAccessReview" } }, "application/yaml": { "schema": { "$ref": "#/components/schemas/io.k8s.api.authorization.v1.SubjectAccessReview" } } }, "description": "Accepted" }, "401": { "description": "Unauthorized" } }, "tags": [ "authorization_v1" ], "x-kubernetes-action": "post", "x-kubernetes-group-version-kind": { "group": "authorization.k8s.io", "kind": "SubjectAccessReview", "version": "v1" } } } } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/000077500000000000000000000000001453663023200221545ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/jsontesting/000077500000000000000000000000001453663023200245235ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/jsontesting/json_roundtrip.go000066400000000000000000000100331453663023200301260ustar00rootroot00000000000000/* Copyright 2022 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package jsontesting import ( "encoding/json" "fmt" "reflect" "strings" kjson "sigs.k8s.io/json" "github.com/go-openapi/jsonreference" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" ) func JsonCompare(got, want []byte) error { if d := cmp.Diff(got, want, cmp.Transformer("JSONBytes", func(in []byte) (out interface{}) { if strictErrors, err := kjson.UnmarshalStrict(in, &out); strictErrors != nil || err != nil { return in } return out })); d != "" { return fmt.Errorf("JSON mismatch (-got +want):\n%s", d) } return nil } type RoundTripTestCase struct { Name string JSON string Object json.Marshaler // An error that is expected when `Object` is marshalled to json // If `Object` does not exist, then it is inferred from the provided JSON ExpectedMarshalError string // An error that is expected when the provided JSON is unmarshalled // If `JSON` does not exist then this it is inferred from the provided `Object` ExpectedUnmarshalError string } type MarshalerUnmarshaler interface { json.Unmarshaler json.Marshaler } func (t RoundTripTestCase) RoundTripTest(example MarshalerUnmarshaler) error { var jsonBytes []byte var err error // Tests whether the provided error matches the given pattern, and says // whether the test is finished, and the error to return expectError := func(e error, name string, expected string) (testFinished bool, err error) { if len(expected) > 0 { if e == nil || !strings.Contains(e.Error(), expected) { return true, fmt.Errorf("expected %v error containing substring: '%s'. but got actual error '%v'", name, expected, e) } // If an error was expected and achieved, we stop the test // since it cannot be continued. But the return nil error since it // was expected. return true, nil } else if e != nil { return true, fmt.Errorf("unexpected %v error: %w", name, e) } return false, nil } // If user did not provide JSON and instead provided Object, infer JSON // from the provided object. if len(t.JSON) == 0 { jsonBytes, err = json.Marshal(t.Object) if testFinished, err := expectError(err, "marshal", t.ExpectedMarshalError); testFinished { return err } } else { jsonBytes = []byte(t.JSON) } err = example.UnmarshalJSON(jsonBytes) if testFinished, err := expectError(err, "unmarshal", t.ExpectedUnmarshalError); testFinished { return err } if t.Object != nil && !reflect.DeepEqual(t.Object, example) { return fmt.Errorf("test case expected to unmarshal to specific value: %v", cmp.Diff(t.Object, example, cmpopts.IgnoreUnexported(jsonreference.Ref{}))) } reEncoded, err := json.Marshal(example) if err != nil { return fmt.Errorf("failed to marshal decoded value: %w", err) } // Check expected marshal error if it has not yet been checked // (for case where JSON is provided, and object is not) if testFinished, err := expectError(err, "marshal", t.ExpectedMarshalError); testFinished { return err } // Marshal both re-encoded, and original JSON into interface // to compare them without ordering issues var expected map[string]interface{} var actual map[string]interface{} if err = json.Unmarshal(jsonBytes, &expected); err != nil { return fmt.Errorf("failed to unmarshal test json: %w", err) } if err = json.Unmarshal(reEncoded, &actual); err != nil { return fmt.Errorf("failed to unmarshal actual data: %w", err) } if !reflect.DeepEqual(expected, actual) { return fmt.Errorf("expected equal values: %v", cmp.Diff(expected, actual)) } return nil } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/000077500000000000000000000000001453663023200233175ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/OWNERS000066400000000000000000000000261453663023200242550ustar00rootroot00000000000000approvers: - apelisse golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/doc.go000066400000000000000000000013711453663023200244150ustar00rootroot00000000000000/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ // Package proto is a collection of libraries for parsing and indexing the type definitions. // The openapi spec contains the object model definitions and extensions metadata. package proto golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/document.go000066400000000000000000000253551453663023200254760ustar00rootroot00000000000000/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package proto import ( "fmt" "sort" "strings" openapi_v2 "github.com/google/gnostic-models/openapiv2" "gopkg.in/yaml.v2" ) func newSchemaError(path *Path, format string, a ...interface{}) error { err := fmt.Sprintf(format, a...) if path.Len() == 0 { return fmt.Errorf("SchemaError: %v", err) } return fmt.Errorf("SchemaError(%v): %v", path, err) } // VendorExtensionToMap converts openapi VendorExtension to a map. func VendorExtensionToMap(e []*openapi_v2.NamedAny) map[string]interface{} { values := map[string]interface{}{} for _, na := range e { if na.GetName() == "" || na.GetValue() == nil { continue } if na.GetValue().GetYaml() == "" { continue } var value interface{} err := yaml.Unmarshal([]byte(na.GetValue().GetYaml()), &value) if err != nil { continue } values[na.GetName()] = value } return values } // Definitions is an implementation of `Models`. It looks for // models in an openapi Schema. type Definitions struct { models map[string]Schema } var _ Models = &Definitions{} // NewOpenAPIData creates a new `Models` out of the openapi document. func NewOpenAPIData(doc *openapi_v2.Document) (Models, error) { definitions := Definitions{ models: map[string]Schema{}, } // Save the list of all models first. This will allow us to // validate that we don't have any dangling reference. for _, namedSchema := range doc.GetDefinitions().GetAdditionalProperties() { definitions.models[namedSchema.GetName()] = nil } // Now, parse each model. We can validate that references exists. for _, namedSchema := range doc.GetDefinitions().GetAdditionalProperties() { path := NewPath(namedSchema.GetName()) schema, err := definitions.ParseSchema(namedSchema.GetValue(), &path) if err != nil { return nil, err } definitions.models[namedSchema.GetName()] = schema } return &definitions, nil } // We believe the schema is a reference, verify that and returns a new // Schema func (d *Definitions) parseReference(s *openapi_v2.Schema, path *Path) (Schema, error) { // TODO(wrong): a schema with a $ref can have properties. We can ignore them (would be incomplete), but we cannot return an error. if len(s.GetProperties().GetAdditionalProperties()) > 0 { return nil, newSchemaError(path, "unallowed embedded type definition") } // TODO(wrong): a schema with a $ref can have a type. We can ignore it (would be incomplete), but we cannot return an error. if len(s.GetType().GetValue()) > 0 { return nil, newSchemaError(path, "definition reference can't have a type") } // TODO(wrong): $refs outside of the definitions are completely valid. We can ignore them (would be incomplete), but we cannot return an error. if !strings.HasPrefix(s.GetXRef(), "#/definitions/") { return nil, newSchemaError(path, "unallowed reference to non-definition %q", s.GetXRef()) } reference := strings.TrimPrefix(s.GetXRef(), "#/definitions/") if _, ok := d.models[reference]; !ok { return nil, newSchemaError(path, "unknown model in reference: %q", reference) } base, err := d.parseBaseSchema(s, path) if err != nil { return nil, err } return &Ref{ BaseSchema: base, reference: reference, definitions: d, }, nil } func parseDefault(def *openapi_v2.Any) (interface{}, error) { if def == nil { return nil, nil } var i interface{} if err := yaml.Unmarshal([]byte(def.Yaml), &i); err != nil { return nil, err } return i, nil } func (d *Definitions) parseBaseSchema(s *openapi_v2.Schema, path *Path) (BaseSchema, error) { def, err := parseDefault(s.GetDefault()) if err != nil { return BaseSchema{}, err } return BaseSchema{ Description: s.GetDescription(), Default: def, Extensions: VendorExtensionToMap(s.GetVendorExtension()), Path: *path, }, nil } // We believe the schema is a map, verify and return a new schema func (d *Definitions) parseMap(s *openapi_v2.Schema, path *Path) (Schema, error) { if len(s.GetType().GetValue()) != 0 && s.GetType().GetValue()[0] != object { return nil, newSchemaError(path, "invalid object type") } var sub Schema // TODO(incomplete): this misses the boolean case as AdditionalProperties is a bool+schema sum type. if s.GetAdditionalProperties().GetSchema() == nil { base, err := d.parseBaseSchema(s, path) if err != nil { return nil, err } sub = &Arbitrary{ BaseSchema: base, } } else { var err error sub, err = d.ParseSchema(s.GetAdditionalProperties().GetSchema(), path) if err != nil { return nil, err } } base, err := d.parseBaseSchema(s, path) if err != nil { return nil, err } return &Map{ BaseSchema: base, SubType: sub, }, nil } func (d *Definitions) parsePrimitive(s *openapi_v2.Schema, path *Path) (Schema, error) { var t string if len(s.GetType().GetValue()) > 1 { return nil, newSchemaError(path, "primitive can't have more than 1 type") } if len(s.GetType().GetValue()) == 1 { t = s.GetType().GetValue()[0] } switch t { case String: // do nothing case Number: // do nothing case Integer: // do nothing case Boolean: // do nothing // TODO(wrong): this misses "null". Would skip the null case (would be incomplete), but we cannot return an error. default: return nil, newSchemaError(path, "Unknown primitive type: %q", t) } base, err := d.parseBaseSchema(s, path) if err != nil { return nil, err } return &Primitive{ BaseSchema: base, Type: t, Format: s.GetFormat(), }, nil } func (d *Definitions) parseArray(s *openapi_v2.Schema, path *Path) (Schema, error) { if len(s.GetType().GetValue()) != 1 { return nil, newSchemaError(path, "array should have exactly one type") } if s.GetType().GetValue()[0] != array { return nil, newSchemaError(path, `array should have type "array"`) } if len(s.GetItems().GetSchema()) != 1 { // TODO(wrong): Items can have multiple elements. We can ignore Items then (would be incomplete), but we cannot return an error. // TODO(wrong): "type: array" witohut any items at all is completely valid. return nil, newSchemaError(path, "array should have exactly one sub-item") } sub, err := d.ParseSchema(s.GetItems().GetSchema()[0], path) if err != nil { return nil, err } base, err := d.parseBaseSchema(s, path) if err != nil { return nil, err } return &Array{ BaseSchema: base, SubType: sub, }, nil } func (d *Definitions) parseKind(s *openapi_v2.Schema, path *Path) (Schema, error) { if len(s.GetType().GetValue()) != 0 && s.GetType().GetValue()[0] != object { return nil, newSchemaError(path, "invalid object type") } if s.GetProperties() == nil { return nil, newSchemaError(path, "object doesn't have properties") } fields := map[string]Schema{} fieldOrder := []string{} for _, namedSchema := range s.GetProperties().GetAdditionalProperties() { var err error name := namedSchema.GetName() path := path.FieldPath(name) fields[name], err = d.ParseSchema(namedSchema.GetValue(), &path) if err != nil { return nil, err } fieldOrder = append(fieldOrder, name) } base, err := d.parseBaseSchema(s, path) if err != nil { return nil, err } return &Kind{ BaseSchema: base, RequiredFields: s.GetRequired(), Fields: fields, FieldOrder: fieldOrder, }, nil } func (d *Definitions) parseArbitrary(s *openapi_v2.Schema, path *Path) (Schema, error) { base, err := d.parseBaseSchema(s, path) if err != nil { return nil, err } return &Arbitrary{ BaseSchema: base, }, nil } // ParseSchema creates a walkable Schema from an openapi schema. While // this function is public, it doesn't leak through the interface. func (d *Definitions) ParseSchema(s *openapi_v2.Schema, path *Path) (Schema, error) { if s.GetXRef() != "" { // TODO(incomplete): ignoring the rest of s is wrong. As long as there are no conflict, everything from s must be considered // Reference: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#path-item-object return d.parseReference(s, path) } objectTypes := s.GetType().GetValue() switch len(objectTypes) { case 0: // in the OpenAPI schema served by older k8s versions, object definitions created from structs did not include // the type:object property (they only included the "properties" property), so we need to handle this case // TODO: validate that we ever published empty, non-nil properties. JSON roundtripping nils them. if s.GetProperties() != nil { // TODO(wrong): when verifying a non-object later against this, it will be rejected as invalid type. // TODO(CRD validation schema publishing): we have to filter properties (empty or not) if type=object is not given return d.parseKind(s, path) } else { // Definition has no type and no properties. Treat it as an arbitrary value // TODO(incomplete): what if it has additionalProperties=false or patternProperties? // ANSWER: parseArbitrary is less strict than it has to be with patternProperties (which is ignored). So this is correct (of course not complete). return d.parseArbitrary(s, path) } case 1: t := objectTypes[0] switch t { case object: if s.GetProperties() != nil { return d.parseKind(s, path) } else { return d.parseMap(s, path) } case array: return d.parseArray(s, path) } return d.parsePrimitive(s, path) default: // the OpenAPI generator never generates (nor it ever did in the past) OpenAPI type definitions with multiple types // TODO(wrong): this is rejecting a completely valid OpenAPI spec // TODO(CRD validation schema publishing): filter these out return nil, newSchemaError(path, "definitions with multiple types aren't supported") } } // LookupModel is public through the interface of Models. It // returns a visitable schema from the given model name. func (d *Definitions) LookupModel(model string) Schema { return d.models[model] } func (d *Definitions) ListModels() []string { models := []string{} for model := range d.models { models = append(models, model) } sort.Strings(models) return models } type Ref struct { BaseSchema reference string definitions *Definitions } var _ Reference = &Ref{} func (r *Ref) Reference() string { return r.reference } func (r *Ref) SubSchema() Schema { return r.definitions.models[r.reference] } func (r *Ref) Accept(v SchemaVisitor) { v.VisitReference(r) } func (r *Ref) GetName() string { return fmt.Sprintf("Reference to %q", r.reference) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/document_v3.go000066400000000000000000000206201453663023200260740ustar00rootroot00000000000000/* Copyright 2022 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package proto import ( "fmt" "reflect" "strings" openapi_v3 "github.com/google/gnostic-models/openapiv3" "gopkg.in/yaml.v3" ) // Temporary parse implementation to be used until gnostic->kube-openapi conversion // is possible. func NewOpenAPIV3Data(doc *openapi_v3.Document) (Models, error) { definitions := Definitions{ models: map[string]Schema{}, } schemas := doc.GetComponents().GetSchemas() if schemas == nil { return &definitions, nil } // Save the list of all models first. This will allow us to // validate that we don't have any dangling reference. for _, namedSchema := range schemas.GetAdditionalProperties() { definitions.models[namedSchema.GetName()] = nil } // Now, parse each model. We can validate that references exists. for _, namedSchema := range schemas.GetAdditionalProperties() { path := NewPath(namedSchema.GetName()) val := namedSchema.GetValue() if val == nil { continue } if schema, err := definitions.ParseV3SchemaOrReference(namedSchema.GetValue(), &path); err != nil { return nil, err } else if schema != nil { // Schema may be nil if we hit incompleteness in the conversion, // but not a fatal error definitions.models[namedSchema.GetName()] = schema } } return &definitions, nil } func (d *Definitions) ParseV3SchemaReference(s *openapi_v3.Reference, path *Path) (Schema, error) { base := &BaseSchema{ Description: s.Description, } if !strings.HasPrefix(s.GetXRef(), "#/components/schemas") { // Only resolve references to components/schemas. We may add support // later for other in-spec paths, but otherwise treat unrecognized // refs as arbitrary/unknown values. return &Arbitrary{ BaseSchema: *base, }, nil } reference := strings.TrimPrefix(s.GetXRef(), "#/components/schemas/") if _, ok := d.models[reference]; !ok { return nil, newSchemaError(path, "unknown model in reference: %q", reference) } return &Ref{ BaseSchema: BaseSchema{ Description: s.Description, }, reference: reference, definitions: d, }, nil } func (d *Definitions) ParseV3SchemaOrReference(s *openapi_v3.SchemaOrReference, path *Path) (Schema, error) { var schema Schema var err error switch v := s.GetOneof().(type) { case *openapi_v3.SchemaOrReference_Reference: // Any references stored in #!/components/... are bound to refer // to external documents. This API does not support such a // feature. // // In the weird case that this is a reference to a schema that is // not external, we attempt to parse anyway schema, err = d.ParseV3SchemaReference(v.Reference, path) case *openapi_v3.SchemaOrReference_Schema: schema, err = d.ParseSchemaV3(v.Schema, path) default: panic("unexpected type") } return schema, err } // ParseSchema creates a walkable Schema from an openapi v3 schema. While // this function is public, it doesn't leak through the interface. func (d *Definitions) ParseSchemaV3(s *openapi_v3.Schema, path *Path) (Schema, error) { switch s.GetType() { case object: for _, extension := range s.GetSpecificationExtension() { if extension.Name == "x-kubernetes-group-version-kind" { // Objects with x-kubernetes-group-version-kind are always top // level types. return d.parseV3Kind(s, path) } } if len(s.GetProperties().GetAdditionalProperties()) > 0 { return d.parseV3Kind(s, path) } return d.parseV3Map(s, path) case array: return d.parseV3Array(s, path) case String, Number, Integer, Boolean: return d.parseV3Primitive(s, path) default: return d.parseV3Arbitrary(s, path) } } func (d *Definitions) parseV3Kind(s *openapi_v3.Schema, path *Path) (Schema, error) { if s.GetType() != object { return nil, newSchemaError(path, "invalid object type") } else if s.GetProperties() == nil { return nil, newSchemaError(path, "object doesn't have properties") } fields := map[string]Schema{} fieldOrder := []string{} for _, namedSchema := range s.GetProperties().GetAdditionalProperties() { var err error name := namedSchema.GetName() path := path.FieldPath(name) fields[name], err = d.ParseV3SchemaOrReference(namedSchema.GetValue(), &path) if err != nil { return nil, err } fieldOrder = append(fieldOrder, name) } base, err := d.parseV3BaseSchema(s, path) if err != nil { return nil, err } return &Kind{ BaseSchema: *base, RequiredFields: s.GetRequired(), Fields: fields, FieldOrder: fieldOrder, }, nil } func (d *Definitions) parseV3Arbitrary(s *openapi_v3.Schema, path *Path) (Schema, error) { base, err := d.parseV3BaseSchema(s, path) if err != nil { return nil, err } return &Arbitrary{ BaseSchema: *base, }, nil } func (d *Definitions) parseV3Primitive(s *openapi_v3.Schema, path *Path) (Schema, error) { switch s.GetType() { case String: // do nothing case Number: // do nothing case Integer: // do nothing case Boolean: // do nothing default: // Unsupported primitive type. Treat as arbitrary type return d.parseV3Arbitrary(s, path) } base, err := d.parseV3BaseSchema(s, path) if err != nil { return nil, err } return &Primitive{ BaseSchema: *base, Type: s.GetType(), Format: s.GetFormat(), }, nil } func (d *Definitions) parseV3Array(s *openapi_v3.Schema, path *Path) (Schema, error) { if s.GetType() != array { return nil, newSchemaError(path, `array should have type "array"`) } else if len(s.GetItems().GetSchemaOrReference()) != 1 { // This array can have multiple types in it (or no types at all) // This is not supported by this conversion. // Just return an arbitrary type return d.parseV3Arbitrary(s, path) } sub, err := d.ParseV3SchemaOrReference(s.GetItems().GetSchemaOrReference()[0], path) if err != nil { return nil, err } base, err := d.parseV3BaseSchema(s, path) if err != nil { return nil, err } return &Array{ BaseSchema: *base, SubType: sub, }, nil } // We believe the schema is a map, verify and return a new schema func (d *Definitions) parseV3Map(s *openapi_v3.Schema, path *Path) (Schema, error) { if s.GetType() != object { return nil, newSchemaError(path, "invalid object type") } var sub Schema switch p := s.GetAdditionalProperties().GetOneof().(type) { case *openapi_v3.AdditionalPropertiesItem_Boolean: // What does this boolean even mean? base, err := d.parseV3BaseSchema(s, path) if err != nil { return nil, err } sub = &Arbitrary{ BaseSchema: *base, } case *openapi_v3.AdditionalPropertiesItem_SchemaOrReference: if schema, err := d.ParseV3SchemaOrReference(p.SchemaOrReference, path); err != nil { return nil, err } else { sub = schema } case nil: // no subtype? sub = &Arbitrary{} default: panic("unrecognized type " + reflect.TypeOf(p).Name()) } base, err := d.parseV3BaseSchema(s, path) if err != nil { return nil, err } return &Map{ BaseSchema: *base, SubType: sub, }, nil } func parseV3Interface(def *yaml.Node) (interface{}, error) { if def == nil { return nil, nil } var i interface{} if err := def.Decode(&i); err != nil { return nil, err } return i, nil } func (d *Definitions) parseV3BaseSchema(s *openapi_v3.Schema, path *Path) (*BaseSchema, error) { if s == nil { return nil, fmt.Errorf("cannot initialize BaseSchema from nil") } def, err := parseV3Interface(s.GetDefault().ToRawInfo()) if err != nil { return nil, err } return &BaseSchema{ Description: s.GetDescription(), Default: def, Extensions: SpecificationExtensionToMap(s.GetSpecificationExtension()), Path: *path, }, nil } func SpecificationExtensionToMap(e []*openapi_v3.NamedAny) map[string]interface{} { values := map[string]interface{}{} for _, na := range e { if na.GetName() == "" || na.GetValue() == nil { continue } if na.GetValue().GetYaml() == "" { continue } var value interface{} err := yaml.Unmarshal([]byte(na.GetValue().GetYaml()), &value) if err != nil { continue } values[na.GetName()] = value } return values } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/openapi.go000066400000000000000000000144421453663023200253060ustar00rootroot00000000000000/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package proto import ( "fmt" "sort" "strings" ) // Defines openapi types. const ( Integer = "integer" Number = "number" String = "string" Boolean = "boolean" // These types are private as they should never leak, and are // represented by actual structs. array = "array" object = "object" ) // Models interface describe a model provider. They can give you the // schema for a specific model. type Models interface { LookupModel(string) Schema ListModels() []string } // SchemaVisitor is an interface that you need to implement if you want // to "visit" an openapi schema. A dispatch on the Schema type will call // the appropriate function based on its actual type: // - Array is a list of one and only one given subtype // - Map is a map of string to one and only one given subtype // - Primitive can be string, integer, number and boolean. // - Kind is an object with specific fields mapping to specific types. // - Reference is a link to another definition. type SchemaVisitor interface { VisitArray(*Array) VisitMap(*Map) VisitPrimitive(*Primitive) VisitKind(*Kind) VisitReference(Reference) } // SchemaVisitorArbitrary is an additional visitor interface which handles // arbitrary types. For backwards compatibility, it's a separate interface // which is checked for at runtime. type SchemaVisitorArbitrary interface { SchemaVisitor VisitArbitrary(*Arbitrary) } // Schema is the base definition of an openapi type. type Schema interface { // Giving a visitor here will let you visit the actual type. Accept(SchemaVisitor) // Pretty print the name of the type. GetName() string // Describes how to access this field. GetPath() *Path // Describes the field. GetDescription() string // Default for that schema. GetDefault() interface{} // Returns type extensions. GetExtensions() map[string]interface{} } // Path helps us keep track of type paths type Path struct { parent *Path key string } func NewPath(key string) Path { return Path{key: key} } func (p *Path) Get() []string { if p == nil { return []string{} } if p.key == "" { return p.parent.Get() } return append(p.parent.Get(), p.key) } func (p *Path) Len() int { return len(p.Get()) } func (p *Path) String() string { return strings.Join(p.Get(), "") } // ArrayPath appends an array index and creates a new path func (p *Path) ArrayPath(i int) Path { return Path{ parent: p, key: fmt.Sprintf("[%d]", i), } } // FieldPath appends a field name and creates a new path func (p *Path) FieldPath(field string) Path { return Path{ parent: p, key: fmt.Sprintf(".%s", field), } } // BaseSchema holds data used by each types of schema. type BaseSchema struct { Description string Extensions map[string]interface{} Default interface{} Path Path } func (b *BaseSchema) GetDescription() string { return b.Description } func (b *BaseSchema) GetExtensions() map[string]interface{} { return b.Extensions } func (b *BaseSchema) GetDefault() interface{} { return b.Default } func (b *BaseSchema) GetPath() *Path { return &b.Path } // Array must have all its element of the same `SubType`. type Array struct { BaseSchema SubType Schema } var _ Schema = &Array{} func (a *Array) Accept(v SchemaVisitor) { v.VisitArray(a) } func (a *Array) GetName() string { return fmt.Sprintf("Array of %s", a.SubType.GetName()) } // Kind is a complex object. It can have multiple different // subtypes for each field, as defined in the `Fields` field. Mandatory // fields are listed in `RequiredFields`. The key of the object is // always of type `string`. type Kind struct { BaseSchema // Lists names of required fields. RequiredFields []string // Maps field names to types. Fields map[string]Schema // FieldOrder reports the canonical order for the fields. FieldOrder []string } var _ Schema = &Kind{} func (k *Kind) Accept(v SchemaVisitor) { v.VisitKind(k) } func (k *Kind) GetName() string { properties := []string{} for key := range k.Fields { properties = append(properties, key) } return fmt.Sprintf("Kind(%v)", properties) } // IsRequired returns true if `field` is a required field for this type. func (k *Kind) IsRequired(field string) bool { for _, f := range k.RequiredFields { if f == field { return true } } return false } // Keys returns a alphabetically sorted list of keys. func (k *Kind) Keys() []string { keys := make([]string, 0) for key := range k.Fields { keys = append(keys, key) } sort.Strings(keys) return keys } // Map is an object who values must all be of the same `SubType`. // The key of the object is always of type `string`. type Map struct { BaseSchema SubType Schema } var _ Schema = &Map{} func (m *Map) Accept(v SchemaVisitor) { v.VisitMap(m) } func (m *Map) GetName() string { return fmt.Sprintf("Map of %s", m.SubType.GetName()) } // Primitive is a literal. There can be multiple types of primitives, // and this subtype can be visited through the `subType` field. type Primitive struct { BaseSchema // Type of a primitive must be one of: integer, number, string, boolean. Type string Format string } var _ Schema = &Primitive{} func (p *Primitive) Accept(v SchemaVisitor) { v.VisitPrimitive(p) } func (p *Primitive) GetName() string { if p.Format == "" { return p.Type } return fmt.Sprintf("%s (%s)", p.Type, p.Format) } // Arbitrary is a value of any type (primitive, object or array) type Arbitrary struct { BaseSchema } var _ Schema = &Arbitrary{} func (a *Arbitrary) Accept(v SchemaVisitor) { if visitor, ok := v.(SchemaVisitorArbitrary); ok { visitor.VisitArbitrary(a) } } func (a *Arbitrary) GetName() string { return "Arbitrary value (primitive, object or array)" } // Reference implementation depends on the type of document. type Reference interface { Schema Reference() string SubSchema() Schema } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/openapi_suite_test.go000066400000000000000000000013761453663023200275600ustar00rootroot00000000000000/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package proto_test import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "testing" ) func TestOpenapi(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "Openapi Suite") } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/openapi_test.go000066400000000000000000000340521453663023200263440ustar00rootroot00000000000000/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package proto_test import ( "path/filepath" openapi_v3 "github.com/google/gnostic-models/openapiv3" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "k8s.io/kube-openapi/pkg/util/proto" "k8s.io/kube-openapi/pkg/util/proto/testing" ) var fakeSchema = testing.Fake{Path: filepath.Join("testdata", "swagger.json")} var fakeSchemaNext = testing.Fake{Path: filepath.Join("testdata", "swagger_next.json")} var fakeSchemaV300 = testing.FakeV3{Path: filepath.Join("testdata", "openapi_v3_0_0")} var _ = Describe("Reading apps/v1beta1/Deployment from v1.8 openAPIData", func() { var models proto.Models BeforeEach(func() { s, err := fakeSchema.OpenAPISchema() Expect(err).To(BeNil()) models, err = proto.NewOpenAPIData(s) Expect(err).To(BeNil()) }) model := "io.k8s.api.apps.v1beta1.Deployment" var schema proto.Schema It("should lookup the Schema by its model name", func() { schema = models.LookupModel(model) Expect(schema).ToNot(BeNil()) }) var deployment *proto.Kind It("should be a Kind", func() { deployment = schema.(*proto.Kind) Expect(deployment).ToNot(BeNil()) }) It("should have a path", func() { Expect(deployment.GetPath().Get()).To(Equal([]string{"io.k8s.api.apps.v1beta1.Deployment"})) }) It("should have a kind key of type string", func() { Expect(deployment.Fields).To(HaveKey("kind")) key := deployment.Fields["kind"].(*proto.Primitive) Expect(key).ToNot(BeNil()) Expect(key.Type).To(Equal("string")) Expect(key.GetPath().Get()).To(Equal([]string{"io.k8s.api.apps.v1beta1.Deployment", ".kind"})) }) It("should have a apiVersion key of type string", func() { Expect(deployment.Fields).To(HaveKey("apiVersion")) key := deployment.Fields["apiVersion"].(*proto.Primitive) Expect(key).ToNot(BeNil()) Expect(key.Type).To(Equal("string")) Expect(key.GetPath().Get()).To(Equal([]string{"io.k8s.api.apps.v1beta1.Deployment", ".apiVersion"})) }) It("should have a metadata key of type Reference", func() { Expect(deployment.Fields).To(HaveKey("metadata")) key := deployment.Fields["metadata"].(proto.Reference) Expect(key).ToNot(BeNil()) Expect(key.Reference()).To(Equal("io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta")) subSchema := key.SubSchema().(*proto.Kind) Expect(subSchema).ToNot(BeNil()) }) var status *proto.Kind It("should have a status key of type Reference", func() { Expect(deployment.Fields).To(HaveKey("status")) key := deployment.Fields["status"].(proto.Reference) Expect(key).ToNot(BeNil()) Expect(key.Reference()).To(Equal("io.k8s.api.apps.v1beta1.DeploymentStatus")) status = key.SubSchema().(*proto.Kind) Expect(status).ToNot(BeNil()) }) It("should have a valid DeploymentStatus", func() { By("having availableReplicas key") Expect(status.Fields).To(HaveKey("availableReplicas")) replicas := status.Fields["availableReplicas"].(*proto.Primitive) Expect(replicas).ToNot(BeNil()) Expect(replicas.Type).To(Equal("integer")) By("having conditions key") Expect(status.Fields).To(HaveKey("conditions")) conditions := status.Fields["conditions"].(*proto.Array) Expect(conditions).ToNot(BeNil()) Expect(conditions.GetName()).To(Equal(`Array of Reference to "io.k8s.api.apps.v1beta1.DeploymentCondition"`)) Expect(conditions.GetExtensions()).To(Equal(map[string]interface{}{ "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge", })) condition := conditions.SubType.(proto.Reference) Expect(condition.Reference()).To(Equal("io.k8s.api.apps.v1beta1.DeploymentCondition")) }) var spec *proto.Kind It("should have a spec key of type Reference", func() { Expect(deployment.Fields).To(HaveKey("spec")) key := deployment.Fields["spec"].(proto.Reference) Expect(key).ToNot(BeNil()) Expect(key.Reference()).To(Equal("io.k8s.api.apps.v1beta1.DeploymentSpec")) spec = key.SubSchema().(*proto.Kind) Expect(spec).ToNot(BeNil()) }) It("should have a spec with no gvk", func() { _, found := spec.GetExtensions()["x-kubernetes-group-version-kind"] Expect(found).To(BeFalse()) }) It("should have a spec with a PodTemplateSpec sub-field", func() { Expect(spec.Fields).To(HaveKey("template")) key := spec.Fields["template"].(proto.Reference) Expect(key).ToNot(BeNil()) Expect(key.Reference()).To(Equal("io.k8s.api.core.v1.PodTemplateSpec")) }) }) var _ = Describe("Reading apps/v1beta1/Deployment from v1.11 openAPIData", func() { var models proto.Models BeforeEach(func() { s, err := fakeSchemaNext.OpenAPISchema() Expect(err).To(BeNil()) models, err = proto.NewOpenAPIData(s) Expect(err).To(BeNil()) }) model := "io.k8s.api.apps.v1beta1.Deployment" var schema proto.Schema It("should lookup the Schema by its model name", func() { schema = models.LookupModel(model) Expect(schema).ToNot(BeNil()) }) var deployment *proto.Kind It("should be a Kind", func() { deployment = schema.(*proto.Kind) Expect(deployment).ToNot(BeNil()) }) }) var _ = Describe("Reading apps/v1beta1/ControllerRevision from v1.11 openAPIData", func() { var models proto.Models BeforeEach(func() { s, err := fakeSchemaNext.OpenAPISchema() Expect(err).To(BeNil()) models, err = proto.NewOpenAPIData(s) Expect(err).To(BeNil()) }) model := "io.k8s.api.apps.v1beta1.ControllerRevision" var schema proto.Schema It("should lookup the Schema by its model name", func() { schema = models.LookupModel(model) Expect(schema).ToNot(BeNil()) }) var cr *proto.Kind It("data property should be map[string]Arbitrary", func() { cr = schema.(*proto.Kind) Expect(cr).ToNot(BeNil()) Expect(cr.Fields).To(HaveKey("data")) data := cr.Fields["data"].(*proto.Map) Expect(data).ToNot(BeNil()) Expect(data.GetName()).To(Equal("Map of Arbitrary value (primitive, object or array)")) Expect(data.GetPath().Get()).To(Equal([]string{"io.k8s.api.apps.v1beta1.ControllerRevision", ".data"})) arbitrary := data.SubType.(*proto.Arbitrary) Expect(arbitrary).ToNot(BeNil()) Expect(arbitrary.GetName()).To(Equal("Arbitrary value (primitive, object or array)")) Expect(arbitrary.GetPath().Get()).To(Equal([]string{"io.k8s.api.apps.v1beta1.ControllerRevision", ".data"})) }) }) var _ = Describe("Reading authorization.k8s.io/v1/SubjectAccessReview from openAPIData", func() { var models proto.Models BeforeEach(func() { s, err := fakeSchema.OpenAPISchema() Expect(err).To(BeNil()) models, err = proto.NewOpenAPIData(s) Expect(err).To(BeNil()) }) model := "io.k8s.api.authorization.v1.LocalSubjectAccessReview" var schema proto.Schema It("should lookup the Schema by its model", func() { schema = models.LookupModel(model) Expect(schema).ToNot(BeNil()) }) var sarspec *proto.Kind It("should be a Kind and have a spec", func() { sar := schema.(*proto.Kind) Expect(sar).ToNot(BeNil()) Expect(sar.Fields).To(HaveKey("spec")) specRef := sar.Fields["spec"].(proto.Reference) Expect(specRef).ToNot(BeNil()) Expect(specRef.Reference()).To(Equal("io.k8s.api.authorization.v1.SubjectAccessReviewSpec")) sarspec = specRef.SubSchema().(*proto.Kind) Expect(sarspec).ToNot(BeNil()) }) It("should have a valid SubjectAccessReviewSpec", func() { Expect(sarspec.Fields).To(HaveKey("extra")) extra := sarspec.Fields["extra"].(*proto.Map) Expect(extra).ToNot(BeNil()) Expect(extra.GetName()).To(Equal("Map of Array of string")) Expect(extra.GetPath().Get()).To(Equal([]string{"io.k8s.api.authorization.v1.SubjectAccessReviewSpec", ".extra"})) array := extra.SubType.(*proto.Array) Expect(array).ToNot(BeNil()) Expect(array.GetName()).To(Equal("Array of string")) Expect(array.GetPath().Get()).To(Equal([]string{"io.k8s.api.authorization.v1.SubjectAccessReviewSpec", ".extra"})) str := array.SubType.(*proto.Primitive) Expect(str).ToNot(BeNil()) Expect(str.Type).To(Equal("string")) Expect(str.GetName()).To(Equal("string")) Expect(str.GetPath().Get()).To(Equal([]string{"io.k8s.api.authorization.v1.SubjectAccessReviewSpec", ".extra"})) }) }) var _ = Describe("Path", func() { It("can be created by NewPath", func() { path := proto.NewPath("key") Expect(path.String()).To(Equal("key")) }) It("can create and print complex paths", func() { key := proto.NewPath("key") array := key.ArrayPath(12) field := array.FieldPath("subKey") Expect(field.String()).To(Equal("key[12].subKey")) }) It("has a length", func() { key := proto.NewPath("key") array := key.ArrayPath(12) field := array.FieldPath("subKey") Expect(field.Len()).To(Equal(3)) }) It("can look like an array", func() { key := proto.NewPath("key") array := key.ArrayPath(12) field := array.FieldPath("subKey") Expect(field.Get()).To(Equal([]string{"key", "[12]", ".subKey"})) }) }) var _ = Describe("Reading apps/v1/Deployment from v3.0.0 openAPIData", func() { var deployment *proto.Kind BeforeEach(func() { var models proto.Models s, schemaErr := fakeSchemaV300.OpenAPIV3Schema("apps/v1") models, modelsErr := proto.NewOpenAPIV3Data(s) Expect(schemaErr).To(BeNil()) Expect(modelsErr).To(BeNil()) model := "io.k8s.api.apps.v1.Deployment" schema := models.LookupModel(model) Expect(schema).ToNot(BeNil()) deployment = schema.(*proto.Kind) Expect(deployment).ToNot(BeNil()) }) It("should have a path", func() { Expect(deployment.GetPath().Get()).To(Equal([]string{"io.k8s.api.apps.v1.Deployment"})) }) It("should have a kind key of type string", func() { Expect(deployment.Fields).To(HaveKey("kind")) key := deployment.Fields["kind"].(*proto.Primitive) Expect(key).ToNot(BeNil()) Expect(key.Type).To(Equal("string")) Expect(key.GetPath().Get()).To(Equal([]string{"io.k8s.api.apps.v1.Deployment", ".kind"})) }) It("should have a apiVersion key of type string", func() { Expect(deployment.Fields).To(HaveKey("apiVersion")) key := deployment.Fields["apiVersion"].(*proto.Primitive) Expect(key).ToNot(BeNil()) Expect(key.Type).To(Equal("string")) Expect(key.GetPath().Get()).To(Equal([]string{"io.k8s.api.apps.v1.Deployment", ".apiVersion"})) }) It("should have a metadata key of type Reference", func() { Expect(deployment.Fields).To(HaveKey("metadata")) key := deployment.Fields["metadata"].(proto.Reference) Expect(key).ToNot(BeNil()) Expect(key.Reference()).To(Equal("io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta")) subSchema := key.SubSchema().(*proto.Kind) Expect(subSchema).ToNot(BeNil()) }) Describe("status", func() { var status *proto.Kind BeforeEach(func() { Expect(deployment.Fields).To(HaveKey("status")) key := deployment.Fields["status"].(proto.Reference) Expect(key).ToNot(BeNil()) Expect(key.Reference()).To(Equal("io.k8s.api.apps.v1.DeploymentStatus")) status = key.SubSchema().(*proto.Kind) Expect(status).ToNot(BeNil()) }) It("should have a valid DeploymentStatus", func() { By("having availableReplicas key") Expect(status.Fields).To(HaveKey("availableReplicas")) replicas := status.Fields["availableReplicas"].(*proto.Primitive) Expect(replicas).ToNot(BeNil()) Expect(replicas.Type).To(Equal("integer")) By("having conditions key") Expect(status.Fields).To(HaveKey("conditions")) conditions := status.Fields["conditions"].(*proto.Array) Expect(conditions).ToNot(BeNil()) Expect(conditions.GetName()).To(Equal(`Array of Reference to "io.k8s.api.apps.v1.DeploymentCondition"`)) Expect(conditions.GetExtensions()).To(Equal(map[string]interface{}{ "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge", })) condition := conditions.SubType.(proto.Reference) Expect(condition.Reference()).To(Equal("io.k8s.api.apps.v1.DeploymentCondition")) }) }) Describe("spec subschema", func() { var spec *proto.Kind BeforeEach(func() { Expect(deployment.Fields).To(HaveKey("spec")) key, _ := deployment.Fields["spec"].(proto.Reference) Expect(key).ToNot(BeNil()) Expect(key.Reference()).To(Equal("io.k8s.api.apps.v1.DeploymentSpec")) spec = key.SubSchema().(*proto.Kind) Expect(spec).ToNot(BeNil()) }) It("should have a spec with no gvk", func() { _, found := spec.GetExtensions()["x-kubernetes-group-version-kind"] Expect(found).To(BeFalse()) }) It("should have a spec with a PodTemplateSpec sub-field", func() { Expect(spec.Fields).To(HaveKey("template")) key := spec.Fields["template"].(proto.Reference) Expect(key).ToNot(BeNil()) Expect(key.Reference()).To(Equal("io.k8s.api.core.v1.PodTemplateSpec")) }) }) }) var _ = Describe("Reading v3 OpenAPI spec with x-kubernetes-group-version-kind", func() { spec := []byte(`{ "openapi": "3.0.0", "info": { "title": "Kubernetes", "version": "v1.24.0" }, "paths": { "/foo": { "get": { "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Foo" } } } } } } } }, "components": { "schemas": { "Foo": { "type": "object", "properties": {}, "x-kubernetes-group-version-kind": [ { "group": "foo", "kind": "Foo", "version": "v1" } ] } } } }`) var schema proto.Schema BeforeEach(func() { document, err := openapi_v3.ParseDocument(spec) Expect(err).To(BeNil()) models, modelsErr := proto.NewOpenAPIV3Data(document) Expect(modelsErr).To(BeNil()) model := "Foo" schema = models.LookupModel(model) Expect(schema).ToNot(BeNil()) }) It("should have an extension with gvk", func() { _, found := schema.GetExtensions()["x-kubernetes-group-version-kind"] Expect(found).To(BeTrue()) }) It("should convert to proto.Kind type", func() { foo, ok := schema.(*proto.Kind) Expect(ok).To(BeTrue()) Expect(foo).ToNot(BeNil()) }) }) golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/testdata/000077500000000000000000000000001453663023200251305ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/testdata/openapi_v3_0_0/000077500000000000000000000000001453663023200276315ustar00rootroot00000000000000apiextensions.k8s.io/000077500000000000000000000000001453663023200335555ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/testdata/openapi_v3_0_0v1.json000066400000000000000000003431621453663023200350070ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/testdata/openapi_v3_0_0/apiextensions.k8s.io{"openapi":"3.0.0","info":{"title":"Kubernetes","version":"v1.24.0"},"paths":{"/apis/apiextensions.k8s.io/v1/":{"get":{"tags":["apiextensions_v1"],"description":"get available resources","operationId":"getApiextensionsV1APIResources","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}}}}}}},"/apis/apiextensions.k8s.io/v1/customresourcedefinitions":{"get":{"tags":["apiextensions_v1"],"description":"list or watch objects of kind CustomResourceDefinition","operationId":"listApiextensionsV1CustomResourceDefinition","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList"}}}}}},"post":{"tags":["apiextensions_v1"],"description":"create a CustomResourceDefinition","operationId":"createApiextensionsV1CustomResourceDefinition","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}}}},"delete":{"tags":["apiextensions_v1"],"description":"delete collection of CustomResourceDefinition","operationId":"deleteApiextensionsV1CollectionCustomResourceDefinition","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}":{"get":{"tags":["apiextensions_v1"],"description":"read the specified CustomResourceDefinition","operationId":"readApiextensionsV1CustomResourceDefinition","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}}}},"put":{"tags":["apiextensions_v1"],"description":"replace the specified CustomResourceDefinition","operationId":"replaceApiextensionsV1CustomResourceDefinition","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}}}},"delete":{"tags":["apiextensions_v1"],"description":"delete a CustomResourceDefinition","operationId":"deleteApiextensionsV1CustomResourceDefinition","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"patch":{"tags":["apiextensions_v1"],"description":"partially update the specified CustomResourceDefinition","operationId":"patchApiextensionsV1CustomResourceDefinition","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the CustomResourceDefinition","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apiextensions.k8s.io/v1/customresourcedefinitions/{name}/status":{"get":{"tags":["apiextensions_v1"],"description":"read status of the specified CustomResourceDefinition","operationId":"readApiextensionsV1CustomResourceDefinitionStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}}}},"put":{"tags":["apiextensions_v1"],"description":"replace status of the specified CustomResourceDefinition","operationId":"replaceApiextensionsV1CustomResourceDefinitionStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}}}},"patch":{"tags":["apiextensions_v1"],"description":"partially update status of the specified CustomResourceDefinition","operationId":"patchApiextensionsV1CustomResourceDefinitionStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the CustomResourceDefinition","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apiextensions.k8s.io/v1/watch/customresourcedefinitions":{"get":{"tags":["apiextensions_v1"],"description":"watch individual changes to a list of CustomResourceDefinition. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchApiextensionsV1CustomResourceDefinitionList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apiextensions.k8s.io/v1/watch/customresourcedefinitions/{name}":{"get":{"tags":["apiextensions_v1"],"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.","operationId":"watchApiextensionsV1CustomResourceDefinition","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the CustomResourceDefinition","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]}},"components":{"schemas":{"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition":{"description":"CustomResourceColumnDefinition specifies a column for server side printing.","type":"object","required":["name","type","jsonPath"],"properties":{"description":{"description":"description is a human readable description of this column.","type":"string"},"format":{"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.","type":"string"},"jsonPath":{"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.","type":"string","default":""},"name":{"description":"name is a human readable name for the column.","type":"string","default":""},"priority":{"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.","type":"integer","format":"int32"},"type":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion":{"description":"CustomResourceConversion describes how to convert different versions of a CR.","type":"object","required":["strategy"],"properties":{"strategy":{"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.","type":"string","default":""},"webhook":{"description":"webhook describes how to call the conversion webhook. Required when `strategy` is set to `Webhook`.","$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition":{"description":"CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format \u003c.spec.name\u003e.\u003c.spec.group\u003e.","type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"spec describes how the user wants the resources to appear","default":{},"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec"},"status":{"description":"status indicates the actual state of the CustomResourceDefinition","default":{},"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus"}},"x-kubernetes-group-version-kind":[{"group":"apiextensions.k8s.io","kind":"CustomResourceDefinition","version":"v1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition":{"description":"CustomResourceDefinitionCondition contains details for the current condition of this pod.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"lastTransitionTime last time the condition transitioned from one status to another.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"message is a human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"reason is a unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"description":"status is the status of the condition. Can be True, False, Unknown.","type":"string","default":""},"type":{"description":"type is the type of the condition. Types include Established, NamesAccepted and Terminating.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList":{"description":"CustomResourceDefinitionList is a list of CustomResourceDefinition objects.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"items list individual CustomResourceDefinition objects","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"apiextensions.k8s.io","kind":"CustomResourceDefinitionList","version":"v1"}]},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames":{"description":"CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition","type":"object","required":["plural","kind"],"properties":{"categories":{"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`.","type":"array","items":{"type":"string","default":""}},"kind":{"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.","type":"string","default":""},"listKind":{"description":"listKind is the serialized kind of the list for this resource. Defaults to \"`kind`List\".","type":"string"},"plural":{"description":"plural is the plural name of the resource to serve. The custom resources are served under `/apis/\u003cgroup\u003e/\u003cversion\u003e/.../\u003cplural\u003e`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`). Must be all lowercase.","type":"string","default":""},"shortNames":{"description":"shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get \u003cshortname\u003e`. It must be all lowercase.","type":"array","items":{"type":"string","default":""}},"singular":{"description":"singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec":{"description":"CustomResourceDefinitionSpec describes how a user wants their resource to appear","type":"object","required":["group","names","scope","versions"],"properties":{"conversion":{"description":"conversion defines conversion settings for the CRD.","$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion"},"group":{"description":"group is the API group of the defined custom resource. The custom resources are served under `/apis/\u003cgroup\u003e/...`. Must match the name of the CustomResourceDefinition (in the form `\u003cnames.plural\u003e.\u003cgroup\u003e`).","type":"string","default":""},"names":{"description":"names specify the resource and kind names for the custom resource.","default":{},"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"preserveUnknownFields":{"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/access-kubernetes-api/custom-resources/custom-resource-definitions/#pruning-versus-preserving-unknown-fields for details.","type":"boolean"},"scope":{"description":"scope indicates whether the defined custom resource is cluster- or namespace-scoped. Allowed values are `Cluster` and `Namespaced`.","type":"string","default":""},"versions":{"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 \u003e beta \u003e 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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion"}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus":{"description":"CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition","type":"object","properties":{"acceptedNames":{"description":"acceptedNames are the names that are actually being used to serve discovery. They may be different than the names in spec.","default":{},"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames"},"conditions":{"description":"conditions indicate state for particular aspects of a CustomResourceDefinition","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition"},"x-kubernetes-list-map-keys":["type"],"x-kubernetes-list-type":"map"},"storedVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion":{"description":"CustomResourceDefinitionVersion describes a version for CRD.","type":"object","required":["name","served","storage"],"properties":{"additionalPrinterColumns":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition"}},"deprecated":{"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.","type":"boolean"},"deprecationWarning":{"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.","type":"string"},"name":{"description":"name is the version name, e.g. “v1â€, “v2beta1â€, etc. The custom resources are served under this version at `/apis/\u003cgroup\u003e/\u003cversion\u003e/...` if `served` is true.","type":"string","default":""},"schema":{"description":"schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource.","$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation"},"served":{"description":"served is a flag enabling/disabling this version from being served via REST APIs","type":"boolean","default":false},"storage":{"description":"storage indicates this version should be used when persisting custom resources to storage. There must be exactly one version with storage=true.","type":"boolean","default":false},"subresources":{"description":"subresources specify what subresources this version of the defined custom resource have.","$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale":{"description":"CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.","type":"object","required":["specReplicasPath","statusReplicasPath"],"properties":{"labelSelectorPath":{"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.","type":"string"},"specReplicasPath":{"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.","type":"string","default":""},"statusReplicasPath":{"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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus":{"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","type":"object"},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources":{"description":"CustomResourceSubresources defines the status and scale subresources for CustomResources.","type":"object","properties":{"scale":{"description":"scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.","$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale"},"status":{"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.","$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation":{"description":"CustomResourceValidation is a list of validation methods for CustomResources.","type":"object","properties":{"openAPIV3Schema":{"description":"openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.","$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation":{"description":"ExternalDocumentation allows referencing an external resource for extended documentation.","type":"object","properties":{"description":{"type":"string"},"url":{"type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON":{"description":"JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps":{"description":"JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).","type":"object","properties":{"$ref":{"type":"string"},"$schema":{"type":"string"},"additionalItems":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"additionalProperties":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool"},"allOf":{"type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"anyOf":{"type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"default":{"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.","$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"definitions":{"type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"dependencies":{"type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray"}},"description":{"type":"string"},"enum":{"type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"}},"example":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON"},"exclusiveMaximum":{"type":"boolean"},"exclusiveMinimum":{"type":"boolean"},"externalDocs":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation"},"format":{"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.","type":"string"},"id":{"type":"string"},"items":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray"},"maxItems":{"type":"integer","format":"int64"},"maxLength":{"type":"integer","format":"int64"},"maxProperties":{"type":"integer","format":"int64"},"maximum":{"type":"number","format":"double"},"minItems":{"type":"integer","format":"int64"},"minLength":{"type":"integer","format":"int64"},"minProperties":{"type":"integer","format":"int64"},"minimum":{"type":"number","format":"double"},"multipleOf":{"type":"number","format":"double"},"not":{"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"},"nullable":{"type":"boolean"},"oneOf":{"type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"pattern":{"type":"string"},"patternProperties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"properties":{"type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps"}},"required":{"type":"array","items":{"type":"string","default":""}},"title":{"type":"string"},"type":{"type":"string"},"uniqueItems":{"type":"boolean"},"x-kubernetes-embedded-resource":{"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).","type":"boolean"},"x-kubernetes-int-or-string":{"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","type":"boolean"},"x-kubernetes-list-map-keys":{"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.","type":"array","items":{"type":"string","default":""}},"x-kubernetes-list-type":{"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.","type":"string"},"x-kubernetes-map-type":{"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.","type":"string"},"x-kubernetes-preserve-unknown-fields":{"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.","type":"boolean"},"x-kubernetes-validations":{"description":"x-kubernetes-validations describes a list of validation rules written in the CEL expression language. This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule"},"x-kubernetes-list-map-keys":["rule"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"rule","x-kubernetes-patch-strategy":"merge"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray":{"description":"JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool":{"description":"JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray":{"description":"JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array."},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference":{"description":"ServiceReference holds a reference to Service.legacy.k8s.io","type":"object","required":["namespace","name"],"properties":{"name":{"description":"name is the name of the service. Required","type":"string","default":""},"namespace":{"description":"namespace is the namespace of the service. Required","type":"string","default":""},"path":{"description":"path is an optional URL path at which the webhook will be contacted.","type":"string"},"port":{"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.","type":"integer","format":"int32"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule":{"description":"ValidationRule describes a validation rule written in the CEL expression language.","type":"object","required":["rule"],"properties":{"message":{"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\"","type":"string"},"rule":{"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 \u003c= 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 \u003c 10\"} - Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value \u003e= 0 \u0026\u0026 value \u003c 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__ \u003e 0\"}\n - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop \u003e 0\"}\n - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d \u003e 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.","type":"string","default":""}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig":{"description":"WebhookClientConfig contains the information to make a TLS connection with the webhook.","type":"object","properties":{"caBundle":{"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.","type":"string","format":"byte"},"service":{"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`.","$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference"},"url":{"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.","type":"string"}}},"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion":{"description":"WebhookConversion describes how to call a conversion webhook","type":"object","required":["conversionReviewVersions"],"properties":{"clientConfig":{"description":"clientConfig is the instructions for how to call the webhook if strategy is `Webhook`.","$ref":"#/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig"},"conversionReviewVersions":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResource":{"description":"APIResource specifies the name of a resource and whether it is namespaced.","type":"object","required":["name","singularName","namespaced","kind","verbs"],"properties":{"categories":{"description":"categories is a list of the grouped resources this resource belongs to (e.g. 'all')","type":"array","items":{"type":"string","default":""}},"group":{"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\".","type":"string"},"kind":{"description":"kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')","type":"string","default":""},"name":{"description":"name is the plural name of the resource.","type":"string","default":""},"namespaced":{"description":"namespaced indicates if a resource is namespaced or not.","type":"boolean","default":false},"shortNames":{"description":"shortNames is a list of suggested short names of the resource.","type":"array","items":{"type":"string","default":""}},"singularName":{"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.","type":"string","default":""},"storageVersionHash":{"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.","type":"string"},"verbs":{"description":"verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)","type":"array","items":{"type":"string","default":""}},"version":{"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)\".","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList":{"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.","type":"object","required":["groupVersion","resources"],"properties":{"apiVersion":{"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","type":"string"},"groupVersion":{"description":"groupVersion is the group and version this APIResourceList is for.","type":"string","default":""},"kind":{"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","type":"string"},"resources":{"description":"resources contains the name of the resources and if they are namespaced.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResource"}}},"x-kubernetes-group-version-kind":[{"group":"","kind":"APIResourceList","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"},"propagationPolicy":{"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.","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta2"},{"group":"batch","kind":"DeleteOptions","version":"v1"},{"group":"batch","kind":"DeleteOptions","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"extensions","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"policy","kind":"DeleteOptions","version":"v1"},{"group":"policy","kind":"DeleteOptions","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"selfLink is DEPRECATED read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"clusterName":{"description":"The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.","type":"string"},"creationTimestamp":{"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","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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 NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"selfLink is DEPRECATED read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"},"reason":{"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.","type":"string"},"status":{"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","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Status","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"},"io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent":{"description":"Event represents a single event to a watched resource.","type":"object","required":["type","object"],"properties":{"object":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.runtime.RawExtension"},"type":{"type":"string","default":""}},"x-kubernetes-group-version-kind":[{"group":"","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1"},{"group":"apps","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta2"},{"group":"batch","kind":"WatchEvent","version":"v1"},{"group":"batch","kind":"WatchEvent","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"extensions","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"policy","kind":"WatchEvent","version":"v1"},{"group":"policy","kind":"WatchEvent","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.runtime.RawExtension":{"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: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.Object `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// External package: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.RawExtension `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// On the wire, the JSON will look something like this: {\n\t\"kind\":\"MyAPIObject\",\n\t\"apiVersion\":\"v1\",\n\t\"myPlugin\": {\n\t\t\"kind\":\"PluginA\",\n\t\t\"aOption\":\"foo\",\n\t},\n}\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.)","type":"object"}}}}golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/testdata/openapi_v3_0_0/apps/000077500000000000000000000000001453663023200305745ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/testdata/openapi_v3_0_0/apps/v1.json000066400000000000000000017004061453663023200320250ustar00rootroot00000000000000{"openapi":"3.0.0","info":{"title":"Kubernetes","version":"v1.24.0"},"paths":{"/apis/apps/v1/":{"get":{"tags":["apps_v1"],"description":"get available resources","operationId":"getAppsV1APIResources","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}}}}}}},"/apis/apps/v1/controllerrevisions":{"get":{"tags":["apps_v1"],"description":"list or watch objects of kind ControllerRevision","operationId":"listAppsV1ControllerRevisionForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apps/v1/daemonsets":{"get":{"tags":["apps_v1"],"description":"list or watch objects of kind DaemonSet","operationId":"listAppsV1DaemonSetForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSetList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSetList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSetList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSetList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSetList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apps/v1/deployments":{"get":{"tags":["apps_v1"],"description":"list or watch objects of kind Deployment","operationId":"listAppsV1DeploymentForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DeploymentList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DeploymentList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DeploymentList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DeploymentList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DeploymentList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apps/v1/namespaces/{namespace}/controllerrevisions":{"get":{"tags":["apps_v1"],"description":"list or watch objects of kind ControllerRevision","operationId":"listAppsV1NamespacedControllerRevision","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevisionList"}}}}}},"post":{"tags":["apps_v1"],"description":"create a ControllerRevision","operationId":"createAppsV1NamespacedControllerRevision","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}}}}}},"delete":{"tags":["apps_v1"],"description":"delete collection of ControllerRevision","operationId":"deleteAppsV1CollectionNamespacedControllerRevision","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}":{"get":{"tags":["apps_v1"],"description":"read the specified ControllerRevision","operationId":"readAppsV1NamespacedControllerRevision","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}}}}}},"put":{"tags":["apps_v1"],"description":"replace the specified ControllerRevision","operationId":"replaceAppsV1NamespacedControllerRevision","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}}}}}},"delete":{"tags":["apps_v1"],"description":"delete a ControllerRevision","operationId":"deleteAppsV1NamespacedControllerRevision","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"patch":{"tags":["apps_v1"],"description":"partially update the specified ControllerRevision","operationId":"patchAppsV1NamespacedControllerRevision","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the ControllerRevision","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apps/v1/namespaces/{namespace}/daemonsets":{"get":{"tags":["apps_v1"],"description":"list or watch objects of kind DaemonSet","operationId":"listAppsV1NamespacedDaemonSet","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSetList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSetList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSetList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSetList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSetList"}}}}}},"post":{"tags":["apps_v1"],"description":"create a DaemonSet","operationId":"createAppsV1NamespacedDaemonSet","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}}}}}},"delete":{"tags":["apps_v1"],"description":"delete collection of DaemonSet","operationId":"deleteAppsV1CollectionNamespacedDaemonSet","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apps/v1/namespaces/{namespace}/daemonsets/{name}":{"get":{"tags":["apps_v1"],"description":"read the specified DaemonSet","operationId":"readAppsV1NamespacedDaemonSet","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}}}}}},"put":{"tags":["apps_v1"],"description":"replace the specified DaemonSet","operationId":"replaceAppsV1NamespacedDaemonSet","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}}}}}},"delete":{"tags":["apps_v1"],"description":"delete a DaemonSet","operationId":"deleteAppsV1NamespacedDaemonSet","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"patch":{"tags":["apps_v1"],"description":"partially update the specified DaemonSet","operationId":"patchAppsV1NamespacedDaemonSet","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the DaemonSet","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status":{"get":{"tags":["apps_v1"],"description":"read status of the specified DaemonSet","operationId":"readAppsV1NamespacedDaemonSetStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}}}}}},"put":{"tags":["apps_v1"],"description":"replace status of the specified DaemonSet","operationId":"replaceAppsV1NamespacedDaemonSetStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}}}}}},"patch":{"tags":["apps_v1"],"description":"partially update status of the specified DaemonSet","operationId":"patchAppsV1NamespacedDaemonSetStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the DaemonSet","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apps/v1/namespaces/{namespace}/deployments":{"get":{"tags":["apps_v1"],"description":"list or watch objects of kind Deployment","operationId":"listAppsV1NamespacedDeployment","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DeploymentList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DeploymentList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DeploymentList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DeploymentList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.DeploymentList"}}}}}},"post":{"tags":["apps_v1"],"description":"create a Deployment","operationId":"createAppsV1NamespacedDeployment","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}}}}}},"delete":{"tags":["apps_v1"],"description":"delete collection of Deployment","operationId":"deleteAppsV1CollectionNamespacedDeployment","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apps/v1/namespaces/{namespace}/deployments/{name}":{"get":{"tags":["apps_v1"],"description":"read the specified Deployment","operationId":"readAppsV1NamespacedDeployment","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}}}}}},"put":{"tags":["apps_v1"],"description":"replace the specified Deployment","operationId":"replaceAppsV1NamespacedDeployment","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}}}}}},"delete":{"tags":["apps_v1"],"description":"delete a Deployment","operationId":"deleteAppsV1NamespacedDeployment","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"patch":{"tags":["apps_v1"],"description":"partially update the specified Deployment","operationId":"patchAppsV1NamespacedDeployment","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Deployment","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apps/v1/namespaces/{namespace}/deployments/{name}/scale":{"get":{"tags":["apps_v1"],"description":"read scale of the specified Deployment","operationId":"readAppsV1NamespacedDeploymentScale","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}}}},"put":{"tags":["apps_v1"],"description":"replace scale of the specified Deployment","operationId":"replaceAppsV1NamespacedDeploymentScale","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}}}},"patch":{"tags":["apps_v1"],"description":"partially update scale of the specified Deployment","operationId":"patchAppsV1NamespacedDeploymentScale","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Scale","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apps/v1/namespaces/{namespace}/deployments/{name}/status":{"get":{"tags":["apps_v1"],"description":"read status of the specified Deployment","operationId":"readAppsV1NamespacedDeploymentStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}}}}}},"put":{"tags":["apps_v1"],"description":"replace status of the specified Deployment","operationId":"replaceAppsV1NamespacedDeploymentStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}}}}}},"patch":{"tags":["apps_v1"],"description":"partially update status of the specified Deployment","operationId":"patchAppsV1NamespacedDeploymentStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Deployment","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apps/v1/namespaces/{namespace}/replicasets":{"get":{"tags":["apps_v1"],"description":"list or watch objects of kind ReplicaSet","operationId":"listAppsV1NamespacedReplicaSet","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList"}}}}}},"post":{"tags":["apps_v1"],"description":"create a ReplicaSet","operationId":"createAppsV1NamespacedReplicaSet","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}}}}}},"delete":{"tags":["apps_v1"],"description":"delete collection of ReplicaSet","operationId":"deleteAppsV1CollectionNamespacedReplicaSet","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apps/v1/namespaces/{namespace}/replicasets/{name}":{"get":{"tags":["apps_v1"],"description":"read the specified ReplicaSet","operationId":"readAppsV1NamespacedReplicaSet","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}}}}}},"put":{"tags":["apps_v1"],"description":"replace the specified ReplicaSet","operationId":"replaceAppsV1NamespacedReplicaSet","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}}}}}},"delete":{"tags":["apps_v1"],"description":"delete a ReplicaSet","operationId":"deleteAppsV1NamespacedReplicaSet","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"patch":{"tags":["apps_v1"],"description":"partially update the specified ReplicaSet","operationId":"patchAppsV1NamespacedReplicaSet","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the ReplicaSet","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apps/v1/namespaces/{namespace}/replicasets/{name}/scale":{"get":{"tags":["apps_v1"],"description":"read scale of the specified ReplicaSet","operationId":"readAppsV1NamespacedReplicaSetScale","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}}}},"put":{"tags":["apps_v1"],"description":"replace scale of the specified ReplicaSet","operationId":"replaceAppsV1NamespacedReplicaSetScale","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}}}},"patch":{"tags":["apps_v1"],"description":"partially update scale of the specified ReplicaSet","operationId":"patchAppsV1NamespacedReplicaSetScale","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Scale","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status":{"get":{"tags":["apps_v1"],"description":"read status of the specified ReplicaSet","operationId":"readAppsV1NamespacedReplicaSetStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}}}}}},"put":{"tags":["apps_v1"],"description":"replace status of the specified ReplicaSet","operationId":"replaceAppsV1NamespacedReplicaSetStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}}}}}},"patch":{"tags":["apps_v1"],"description":"partially update status of the specified ReplicaSet","operationId":"patchAppsV1NamespacedReplicaSetStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the ReplicaSet","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apps/v1/namespaces/{namespace}/statefulsets":{"get":{"tags":["apps_v1"],"description":"list or watch objects of kind StatefulSet","operationId":"listAppsV1NamespacedStatefulSet","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSetList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSetList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSetList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSetList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSetList"}}}}}},"post":{"tags":["apps_v1"],"description":"create a StatefulSet","operationId":"createAppsV1NamespacedStatefulSet","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}}}}}},"delete":{"tags":["apps_v1"],"description":"delete collection of StatefulSet","operationId":"deleteAppsV1CollectionNamespacedStatefulSet","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}":{"get":{"tags":["apps_v1"],"description":"read the specified StatefulSet","operationId":"readAppsV1NamespacedStatefulSet","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}}}}}},"put":{"tags":["apps_v1"],"description":"replace the specified StatefulSet","operationId":"replaceAppsV1NamespacedStatefulSet","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}}}}}},"delete":{"tags":["apps_v1"],"description":"delete a StatefulSet","operationId":"deleteAppsV1NamespacedStatefulSet","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"patch":{"tags":["apps_v1"],"description":"partially update the specified StatefulSet","operationId":"patchAppsV1NamespacedStatefulSet","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the StatefulSet","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/scale":{"get":{"tags":["apps_v1"],"description":"read scale of the specified StatefulSet","operationId":"readAppsV1NamespacedStatefulSetScale","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}}}},"put":{"tags":["apps_v1"],"description":"replace scale of the specified StatefulSet","operationId":"replaceAppsV1NamespacedStatefulSetScale","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}}}},"patch":{"tags":["apps_v1"],"description":"partially update scale of the specified StatefulSet","operationId":"patchAppsV1NamespacedStatefulSetScale","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Scale","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status":{"get":{"tags":["apps_v1"],"description":"read status of the specified StatefulSet","operationId":"readAppsV1NamespacedStatefulSetStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}}}}}},"put":{"tags":["apps_v1"],"description":"replace status of the specified StatefulSet","operationId":"replaceAppsV1NamespacedStatefulSetStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}}}}}},"patch":{"tags":["apps_v1"],"description":"partially update status of the specified StatefulSet","operationId":"patchAppsV1NamespacedStatefulSetStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the StatefulSet","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/apps/v1/replicasets":{"get":{"tags":["apps_v1"],"description":"list or watch objects of kind ReplicaSet","operationId":"listAppsV1ReplicaSetForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSetList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apps/v1/statefulsets":{"get":{"tags":["apps_v1"],"description":"list or watch objects of kind StatefulSet","operationId":"listAppsV1StatefulSetForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSetList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSetList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSetList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSetList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSetList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apps/v1/watch/controllerrevisions":{"get":{"tags":["apps_v1"],"description":"watch individual changes to a list of ControllerRevision. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchAppsV1ControllerRevisionListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apps/v1/watch/daemonsets":{"get":{"tags":["apps_v1"],"description":"watch individual changes to a list of DaemonSet. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchAppsV1DaemonSetListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apps/v1/watch/deployments":{"get":{"tags":["apps_v1"],"description":"watch individual changes to a list of Deployment. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchAppsV1DeploymentListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apps/v1/watch/namespaces/{namespace}/controllerrevisions":{"get":{"tags":["apps_v1"],"description":"watch individual changes to a list of ControllerRevision. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchAppsV1NamespacedControllerRevisionList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apps/v1/watch/namespaces/{namespace}/controllerrevisions/{name}":{"get":{"tags":["apps_v1"],"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.","operationId":"watchAppsV1NamespacedControllerRevision","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the ControllerRevision","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apps/v1/watch/namespaces/{namespace}/daemonsets":{"get":{"tags":["apps_v1"],"description":"watch individual changes to a list of DaemonSet. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchAppsV1NamespacedDaemonSetList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apps/v1/watch/namespaces/{namespace}/daemonsets/{name}":{"get":{"tags":["apps_v1"],"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.","operationId":"watchAppsV1NamespacedDaemonSet","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the DaemonSet","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apps/v1/watch/namespaces/{namespace}/deployments":{"get":{"tags":["apps_v1"],"description":"watch individual changes to a list of Deployment. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchAppsV1NamespacedDeploymentList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apps/v1/watch/namespaces/{namespace}/deployments/{name}":{"get":{"tags":["apps_v1"],"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.","operationId":"watchAppsV1NamespacedDeployment","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Deployment","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apps/v1/watch/namespaces/{namespace}/replicasets":{"get":{"tags":["apps_v1"],"description":"watch individual changes to a list of ReplicaSet. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchAppsV1NamespacedReplicaSetList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apps/v1/watch/namespaces/{namespace}/replicasets/{name}":{"get":{"tags":["apps_v1"],"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.","operationId":"watchAppsV1NamespacedReplicaSet","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the ReplicaSet","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apps/v1/watch/namespaces/{namespace}/statefulsets":{"get":{"tags":["apps_v1"],"description":"watch individual changes to a list of StatefulSet. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchAppsV1NamespacedStatefulSetList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apps/v1/watch/namespaces/{namespace}/statefulsets/{name}":{"get":{"tags":["apps_v1"],"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.","operationId":"watchAppsV1NamespacedStatefulSet","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the StatefulSet","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apps/v1/watch/replicasets":{"get":{"tags":["apps_v1"],"description":"watch individual changes to a list of ReplicaSet. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchAppsV1ReplicaSetListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/apps/v1/watch/statefulsets":{"get":{"tags":["apps_v1"],"description":"watch individual changes to a list of StatefulSet. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchAppsV1StatefulSetListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]}},"components":{"schemas":{"io.k8s.api.apps.v1.ControllerRevision":{"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.","type":"object","required":["revision"],"properties":{"apiVersion":{"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","type":"string"},"data":{"description":"Data is the serialized representation of the state.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.runtime.RawExtension"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"revision":{"description":"Revision indicates the revision of the state represented by Data.","type":"integer","format":"int64","default":0}},"x-kubernetes-group-version-kind":[{"group":"apps","kind":"ControllerRevision","version":"v1"}]},"io.k8s.api.apps.v1.ControllerRevisionList":{"description":"ControllerRevisionList is a resource containing a list of ControllerRevision objects.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"Items is the list of ControllerRevisions","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.apps.v1.ControllerRevision"}},"kind":{"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","type":"string"},"metadata":{"description":"More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"apps","kind":"ControllerRevisionList","version":"v1"}]},"io.k8s.api.apps.v1.DaemonSet":{"description":"DaemonSet represents the configuration of a daemon set.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSetSpec"},"status":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSetStatus"}},"x-kubernetes-group-version-kind":[{"group":"apps","kind":"DaemonSet","version":"v1"}]},"io.k8s.api.apps.v1.DaemonSetCondition":{"description":"DaemonSetCondition describes the state of a DaemonSet at a certain point.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"A human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The reason for the condition's last transition.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string","default":""},"type":{"description":"Type of DaemonSet condition.","type":"string","default":""}}},"io.k8s.api.apps.v1.DaemonSetList":{"description":"DaemonSetList is a collection of daemon sets.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"A list of daemon sets.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSet"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"apps","kind":"DaemonSetList","version":"v1"}]},"io.k8s.api.apps.v1.DaemonSetSpec":{"description":"DaemonSetSpec is the specification of a daemon set.","type":"object","required":["selector","template"],"properties":{"minReadySeconds":{"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).","type":"integer","format":"int32"},"revisionHistoryLimit":{"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.","type":"integer","format":"int32"},"selector":{"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","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"template":{"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). More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateSpec"},"updateStrategy":{"description":"An update strategy to replace existing DaemonSet pods with new pods.","default":{},"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSetUpdateStrategy"}}},"io.k8s.api.apps.v1.DaemonSetStatus":{"description":"DaemonSetStatus represents the current status of a daemon set.","type":"object","required":["currentNumberScheduled","numberMisscheduled","desiredNumberScheduled","numberReady"],"properties":{"collisionCount":{"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.","type":"integer","format":"int32"},"conditions":{"description":"Represents the latest available observations of a DaemonSet's current state.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.apps.v1.DaemonSetCondition"},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"currentNumberScheduled":{"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/","type":"integer","format":"int32","default":0},"desiredNumberScheduled":{"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/","type":"integer","format":"int32","default":0},"numberAvailable":{"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)","type":"integer","format":"int32"},"numberMisscheduled":{"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/","type":"integer","format":"int32","default":0},"numberReady":{"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.","type":"integer","format":"int32","default":0},"numberUnavailable":{"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)","type":"integer","format":"int32"},"observedGeneration":{"description":"The most recent generation observed by the daemon set controller.","type":"integer","format":"int64"},"updatedNumberScheduled":{"description":"The total number of nodes that are running updated daemon pod","type":"integer","format":"int32"}}},"io.k8s.api.apps.v1.DaemonSetUpdateStrategy":{"description":"DaemonSetUpdateStrategy is a struct used to control the update strategy for a DaemonSet.","type":"object","properties":{"rollingUpdate":{"description":"Rolling update config params. Present only if type = \"RollingUpdate\".","$ref":"#/components/schemas/io.k8s.api.apps.v1.RollingUpdateDaemonSet"},"type":{"description":"Type of daemon set update. Can be \"RollingUpdate\" or \"OnDelete\". Default is RollingUpdate.\n\n","type":"string"}}},"io.k8s.api.apps.v1.Deployment":{"description":"Deployment enables declarative updates for Pods and ReplicaSets.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"Specification of the desired behavior of the Deployment.","default":{},"$ref":"#/components/schemas/io.k8s.api.apps.v1.DeploymentSpec"},"status":{"description":"Most recently observed status of the Deployment.","default":{},"$ref":"#/components/schemas/io.k8s.api.apps.v1.DeploymentStatus"}},"x-kubernetes-group-version-kind":[{"group":"apps","kind":"Deployment","version":"v1"}]},"io.k8s.api.apps.v1.DeploymentCondition":{"description":"DeploymentCondition describes the state of a deployment at a certain point.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"lastUpdateTime":{"description":"The last time this condition was updated.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"A human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The reason for the condition's last transition.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string","default":""},"type":{"description":"Type of deployment condition.","type":"string","default":""}}},"io.k8s.api.apps.v1.DeploymentList":{"description":"DeploymentList is a list of Deployments.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"Items is the list of Deployments.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.apps.v1.Deployment"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"apps","kind":"DeploymentList","version":"v1"}]},"io.k8s.api.apps.v1.DeploymentSpec":{"description":"DeploymentSpec is the specification of the desired behavior of the Deployment.","type":"object","required":["selector","template"],"properties":{"minReadySeconds":{"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)","type":"integer","format":"int32"},"paused":{"description":"Indicates that the deployment is paused.","type":"boolean"},"progressDeadlineSeconds":{"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.","type":"integer","format":"int32"},"replicas":{"description":"Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.","type":"integer","format":"int32"},"revisionHistoryLimit":{"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.","type":"integer","format":"int32"},"selector":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"strategy":{"description":"The deployment strategy to use to replace existing pods with new ones.","default":{},"x-kubernetes-patch-strategy":"retainKeys","$ref":"#/components/schemas/io.k8s.api.apps.v1.DeploymentStrategy"},"template":{"description":"Template describes the pods that will be created.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateSpec"}}},"io.k8s.api.apps.v1.DeploymentStatus":{"description":"DeploymentStatus is the most recently observed status of the Deployment.","type":"object","properties":{"availableReplicas":{"description":"Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.","type":"integer","format":"int32"},"collisionCount":{"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.","type":"integer","format":"int32"},"conditions":{"description":"Represents the latest available observations of a deployment's current state.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.apps.v1.DeploymentCondition"},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"observedGeneration":{"description":"The generation observed by the deployment controller.","type":"integer","format":"int64"},"readyReplicas":{"description":"readyReplicas is the number of pods targeted by this Deployment with a Ready Condition.","type":"integer","format":"int32"},"replicas":{"description":"Total number of non-terminated pods targeted by this deployment (their labels match the selector).","type":"integer","format":"int32"},"unavailableReplicas":{"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.","type":"integer","format":"int32"},"updatedReplicas":{"description":"Total number of non-terminated pods targeted by this deployment that have the desired template spec.","type":"integer","format":"int32"}}},"io.k8s.api.apps.v1.DeploymentStrategy":{"description":"DeploymentStrategy describes how to replace existing pods with new ones.","type":"object","properties":{"rollingUpdate":{"description":"Rolling update config params. Present only if DeploymentStrategyType = RollingUpdate.","$ref":"#/components/schemas/io.k8s.api.apps.v1.RollingUpdateDeployment"},"type":{"description":"Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default is RollingUpdate.\n\n","type":"string"}}},"io.k8s.api.apps.v1.ReplicaSet":{"description":"ReplicaSet ensures that a specified number of pod replicas are running at any given time.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"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","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSetSpec"},"status":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSetStatus"}},"x-kubernetes-group-version-kind":[{"group":"apps","kind":"ReplicaSet","version":"v1"}]},"io.k8s.api.apps.v1.ReplicaSetCondition":{"description":"ReplicaSetCondition describes the state of a replica set at a certain point.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"The last time the condition transitioned from one status to another.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"A human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The reason for the condition's last transition.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string","default":""},"type":{"description":"Type of replica set condition.","type":"string","default":""}}},"io.k8s.api.apps.v1.ReplicaSetList":{"description":"ReplicaSetList is a collection of ReplicaSets.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of ReplicaSets. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSet"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"apps","kind":"ReplicaSetList","version":"v1"}]},"io.k8s.api.apps.v1.ReplicaSetSpec":{"description":"ReplicaSetSpec is the specification of a ReplicaSet.","type":"object","required":["selector"],"properties":{"minReadySeconds":{"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)","type":"integer","format":"int32"},"replicas":{"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","type":"integer","format":"int32"},"selector":{"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","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"template":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateSpec"}}},"io.k8s.api.apps.v1.ReplicaSetStatus":{"description":"ReplicaSetStatus represents the current status of a ReplicaSet.","type":"object","required":["replicas"],"properties":{"availableReplicas":{"description":"The number of available replicas (ready for at least minReadySeconds) for this replica set.","type":"integer","format":"int32"},"conditions":{"description":"Represents the latest available observations of a replica set's current state.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.apps.v1.ReplicaSetCondition"},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"fullyLabeledReplicas":{"description":"The number of pods that have labels matching the labels of the pod template of the replicaset.","type":"integer","format":"int32"},"observedGeneration":{"description":"ObservedGeneration reflects the generation of the most recently observed ReplicaSet.","type":"integer","format":"int64"},"readyReplicas":{"description":"readyReplicas is the number of pods targeted by this ReplicaSet with a Ready Condition.","type":"integer","format":"int32"},"replicas":{"description":"Replicas is the most recently oberved number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller","type":"integer","format":"int32","default":0}}},"io.k8s.api.apps.v1.RollingUpdateDaemonSet":{"description":"Spec to control the desired behavior of daemon set rolling update.","type":"object","properties":{"maxSurge":{"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. This is beta field and enabled/disabled by DaemonSetUpdateSurge feature gate.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString"},"maxUnavailable":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString"}}},"io.k8s.api.apps.v1.RollingUpdateDeployment":{"description":"Spec to control the desired behavior of rolling update.","type":"object","properties":{"maxSurge":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString"},"maxUnavailable":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString"}}},"io.k8s.api.apps.v1.RollingUpdateStatefulSetStrategy":{"description":"RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.","type":"object","properties":{"partition":{"description":"Partition indicates the ordinal at which the StatefulSet should be partitioned. Default value is 0.","type":"integer","format":"int32"}}},"io.k8s.api.apps.v1.StatefulSet":{"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.\nThe StatefulSet guarantees that a given network identity will always map to the same storage identity.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"Spec defines the desired identities of pods in this set.","default":{},"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSetSpec"},"status":{"description":"Status is the current status of Pods in this StatefulSet. This data may be out of date by some window of time.","default":{},"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSetStatus"}},"x-kubernetes-group-version-kind":[{"group":"apps","kind":"StatefulSet","version":"v1"}]},"io.k8s.api.apps.v1.StatefulSetCondition":{"description":"StatefulSetCondition describes the state of a statefulset at a certain point.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"A human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The reason for the condition's last transition.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string","default":""},"type":{"description":"Type of statefulset condition.","type":"string","default":""}}},"io.k8s.api.apps.v1.StatefulSetList":{"description":"StatefulSetList is a collection of StatefulSets.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"Items is the list of stateful sets.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSet"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"apps","kind":"StatefulSetList","version":"v1"}]},"io.k8s.api.apps.v1.StatefulSetPersistentVolumeClaimRetentionPolicy":{"description":"StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates.","type":"object","properties":{"whenDeleted":{"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.","type":"string"},"whenScaled":{"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.","type":"string"}}},"io.k8s.api.apps.v1.StatefulSetSpec":{"description":"A StatefulSetSpec is the specification of a StatefulSet.","type":"object","required":["selector","template","serviceName"],"properties":{"minReadySeconds":{"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) This is an alpha field and requires enabling StatefulSetMinReadySeconds feature gate.","type":"integer","format":"int32"},"persistentVolumeClaimRetentionPolicy":{"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 alpha. +optional","$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSetPersistentVolumeClaimRetentionPolicy"},"podManagementPolicy":{"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\n","type":"string"},"replicas":{"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.","type":"integer","format":"int32"},"revisionHistoryLimit":{"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.","type":"integer","format":"int32"},"selector":{"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","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"serviceName":{"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.","type":"string","default":""},"template":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateSpec"},"updateStrategy":{"description":"updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template.","default":{},"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSetUpdateStrategy"},"volumeClaimTemplates":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"io.k8s.api.apps.v1.StatefulSetStatus":{"description":"StatefulSetStatus represents the current state of a StatefulSet.","type":"object","required":["replicas","availableReplicas"],"properties":{"availableReplicas":{"description":"Total number of available pods (ready for at least minReadySeconds) targeted by this statefulset. This is a beta field and enabled/disabled by StatefulSetMinReadySeconds feature gate.","type":"integer","format":"int32","default":0},"collisionCount":{"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.","type":"integer","format":"int32"},"conditions":{"description":"Represents the latest available observations of a statefulset's current state.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.apps.v1.StatefulSetCondition"},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"currentReplicas":{"description":"currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision.","type":"integer","format":"int32"},"currentRevision":{"description":"currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).","type":"string"},"observedGeneration":{"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.","type":"integer","format":"int64"},"readyReplicas":{"description":"readyReplicas is the number of pods created for this StatefulSet with a Ready Condition.","type":"integer","format":"int32"},"replicas":{"description":"replicas is the number of Pods created by the StatefulSet controller.","type":"integer","format":"int32","default":0},"updateRevision":{"description":"updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)","type":"string"},"updatedReplicas":{"description":"updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision.","type":"integer","format":"int32"}}},"io.k8s.api.apps.v1.StatefulSetUpdateStrategy":{"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.","type":"object","properties":{"rollingUpdate":{"description":"RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType.","$ref":"#/components/schemas/io.k8s.api.apps.v1.RollingUpdateStatefulSetStrategy"},"type":{"description":"Type indicates the type of the StatefulSetUpdateStrategy. Default is RollingUpdate.\n\n","type":"string"}}},"io.k8s.api.autoscaling.v1.Scale":{"description":"Scale represents a scaling request for a resource.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.","default":{},"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.ScaleSpec"},"status":{"description":"current status of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. Read-only.","default":{},"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.ScaleStatus"}},"x-kubernetes-group-version-kind":[{"group":"autoscaling","kind":"Scale","version":"v1"}]},"io.k8s.api.autoscaling.v1.ScaleSpec":{"description":"ScaleSpec describes the attributes of a scale subresource.","type":"object","properties":{"replicas":{"description":"desired number of instances for the scaled object.","type":"integer","format":"int32"}}},"io.k8s.api.autoscaling.v1.ScaleStatus":{"description":"ScaleStatus represents the current status of a scale subresource.","type":"object","required":["replicas"],"properties":{"replicas":{"description":"actual number of observed instances of the scaled object.","type":"integer","format":"int32","default":0},"selector":{"description":"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: http://kubernetes.io/docs/user-guide/labels#label-selectors","type":"string"}}},"io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource":{"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.","type":"object","required":["volumeID"],"properties":{"fsType":{"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","type":"string"},"partition":{"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).","type":"integer","format":"int32"},"readOnly":{"description":"readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore","type":"boolean"},"volumeID":{"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","type":"string","default":""}}},"io.k8s.api.core.v1.Affinity":{"description":"Affinity is a group of affinity scheduling rules.","type":"object","properties":{"nodeAffinity":{"description":"Describes node affinity scheduling rules for the pod.","$ref":"#/components/schemas/io.k8s.api.core.v1.NodeAffinity"},"podAffinity":{"description":"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).","$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinity"},"podAntiAffinity":{"description":"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).","$ref":"#/components/schemas/io.k8s.api.core.v1.PodAntiAffinity"}}},"io.k8s.api.core.v1.AzureDiskVolumeSource":{"description":"AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.","type":"object","required":["diskName","diskURI"],"properties":{"cachingMode":{"description":"cachingMode is the Host Caching mode: None, Read Only, Read Write.","type":"string"},"diskName":{"description":"diskName is the Name of the data disk in the blob storage","type":"string","default":""},"diskURI":{"description":"diskURI is the URI of data disk in the blob storage","type":"string","default":""},"fsType":{"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.","type":"string"},"kind":{"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","type":"string"},"readOnly":{"description":"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"}}},"io.k8s.api.core.v1.AzureFileVolumeSource":{"description":"AzureFile represents an Azure File Service mount on the host and bind mount to the pod.","type":"object","required":["secretName","shareName"],"properties":{"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretName":{"description":"secretName is the name of secret that contains Azure Storage Account Name and Key","type":"string","default":""},"shareName":{"description":"shareName is the azure share Name","type":"string","default":""}}},"io.k8s.api.core.v1.CSIVolumeSource":{"description":"Represents a source location of a volume to mount, managed by an external CSI driver","type":"object","required":["driver"],"properties":{"driver":{"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.","type":"string","default":""},"fsType":{"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.","type":"string"},"nodePublishSecretRef":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"readOnly":{"description":"readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).","type":"boolean"},"volumeAttributes":{"description":"volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.","type":"object","additionalProperties":{"type":"string","default":""}}}},"io.k8s.api.core.v1.Capabilities":{"description":"Adds and removes POSIX capabilities from running containers.","type":"object","properties":{"add":{"description":"Added capabilities","type":"array","items":{"type":"string","default":""}},"drop":{"description":"Removed capabilities","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.CephFSVolumeSource":{"description":"Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["monitors"],"properties":{"monitors":{"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","type":"array","items":{"type":"string","default":""}},"path":{"description":"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /","type":"string"},"readOnly":{"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","type":"boolean"},"secretFile":{"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","type":"string"},"secretRef":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"user":{"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","type":"string"}}},"io.k8s.api.core.v1.CinderVolumeSource":{"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.","type":"object","required":["volumeID"],"properties":{"fsType":{"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","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"description":"secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"volumeID":{"description":"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","type":"string","default":""}}},"io.k8s.api.core.v1.ConfigMapEnvSource":{"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.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the ConfigMap must be defined","type":"boolean"}}},"io.k8s.api.core.v1.ConfigMapKeySelector":{"description":"Selects a key from a ConfigMap.","type":"object","required":["key"],"properties":{"key":{"description":"The key to select.","type":"string","default":""},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the ConfigMap or its key must be defined","type":"boolean"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ConfigMapProjection":{"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.","type":"object","properties":{"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional specify whether the ConfigMap or its keys must be defined","type":"boolean"}}},"io.k8s.api.core.v1.ConfigMapVolumeSource":{"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.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional specify whether the ConfigMap or its keys must be defined","type":"boolean"}}},"io.k8s.api.core.v1.Container":{"description":"A single application container that you want to run within a pod.","type":"object","required":["name"],"properties":{"args":{"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","type":"array","items":{"type":"string","default":""}},"command":{"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","type":"array","items":{"type":"string","default":""}},"env":{"description":"List of environment variables to set in the container. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvVar"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"envFrom":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvFromSource"}},"image":{"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.","type":"string"},"imagePullPolicy":{"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\n","type":"string"},"lifecycle":{"description":"Actions that the management system should take in response to container lifecycle events. Cannot be updated.","$ref":"#/components/schemas/io.k8s.api.core.v1.Lifecycle"},"livenessProbe":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"name":{"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.","type":"string","default":""},"ports":{"description":"List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. 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. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerPort"},"x-kubernetes-list-map-keys":["containerPort","protocol"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"containerPort","x-kubernetes-patch-strategy":"merge"},"readinessProbe":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"resources":{"description":"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceRequirements"},"securityContext":{"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/","$ref":"#/components/schemas/io.k8s.api.core.v1.SecurityContext"},"startupProbe":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"stdin":{"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.","type":"boolean"},"stdinOnce":{"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","type":"boolean"},"terminationMessagePath":{"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.","type":"string"},"terminationMessagePolicy":{"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\n","type":"string"},"tty":{"description":"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.","type":"boolean"},"volumeDevices":{"description":"volumeDevices is the list of block devices to be used by the container.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeDevice"},"x-kubernetes-patch-merge-key":"devicePath","x-kubernetes-patch-strategy":"merge"},"volumeMounts":{"description":"Pod volumes to mount into the container's filesystem. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeMount"},"x-kubernetes-patch-merge-key":"mountPath","x-kubernetes-patch-strategy":"merge"},"workingDir":{"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.","type":"string"}}},"io.k8s.api.core.v1.ContainerPort":{"description":"ContainerPort represents a network port in a single container.","type":"object","required":["containerPort"],"properties":{"containerPort":{"description":"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \u003c x \u003c 65536.","type":"integer","format":"int32","default":0},"hostIP":{"description":"What host IP to bind the external port to.","type":"string"},"hostPort":{"description":"Number of port to expose on the host. If specified, this must be a valid port number, 0 \u003c x \u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.","type":"integer","format":"int32"},"name":{"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.","type":"string"},"protocol":{"description":"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n\n","type":"string","default":"TCP"}}},"io.k8s.api.core.v1.DownwardAPIProjection":{"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.","type":"object","properties":{"items":{"description":"Items is a list of DownwardAPIVolume file","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeFile"}}}},"io.k8s.api.core.v1.DownwardAPIVolumeFile":{"description":"DownwardAPIVolumeFile represents information to create the file containing the pod field","type":"object","required":["path"],"properties":{"fieldRef":{"description":"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.","$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectFieldSelector"},"mode":{"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.","type":"integer","format":"int32"},"path":{"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 '..'","type":"string","default":""},"resourceFieldRef":{"description":"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.","$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceFieldSelector"}}},"io.k8s.api.core.v1.DownwardAPIVolumeSource":{"description":"DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"description":"Items is a list of downward API volume file","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeFile"}}}},"io.k8s.api.core.v1.EmptyDirVolumeSource":{"description":"Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.","type":"object","properties":{"medium":{"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","type":"string"},"sizeLimit":{"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: http://kubernetes.io/docs/user-guide/volumes#emptydir","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}}},"io.k8s.api.core.v1.EnvFromSource":{"description":"EnvFromSource represents the source of a set of ConfigMaps","type":"object","properties":{"configMapRef":{"description":"The ConfigMap to select from","$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapEnvSource"},"prefix":{"description":"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.","type":"string"},"secretRef":{"description":"The Secret to select from","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretEnvSource"}}},"io.k8s.api.core.v1.EnvVar":{"description":"EnvVar represents an environment variable present in a Container.","type":"object","required":["name"],"properties":{"name":{"description":"Name of the environment variable. Must be a C_IDENTIFIER.","type":"string","default":""},"value":{"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 \"\".","type":"string"},"valueFrom":{"description":"Source for the environment variable's value. Cannot be used if value is not empty.","$ref":"#/components/schemas/io.k8s.api.core.v1.EnvVarSource"}}},"io.k8s.api.core.v1.EnvVarSource":{"description":"EnvVarSource represents a source for the value of an EnvVar.","type":"object","properties":{"configMapKeyRef":{"description":"Selects a key of a ConfigMap.","$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapKeySelector"},"fieldRef":{"description":"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\u003cKEY\u003e']`, `metadata.annotations['\u003cKEY\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.","$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectFieldSelector"},"resourceFieldRef":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceFieldSelector"},"secretKeyRef":{"description":"Selects a key of a secret in the pod's namespace","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretKeySelector"}}},"io.k8s.api.core.v1.EphemeralContainer":{"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\nThis is a beta feature available on clusters that haven't disabled the EphemeralContainers feature gate.","type":"object","required":["name"],"properties":{"args":{"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","type":"array","items":{"type":"string","default":""}},"command":{"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","type":"array","items":{"type":"string","default":""}},"env":{"description":"List of environment variables to set in the container. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvVar"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"envFrom":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvFromSource"}},"image":{"description":"Container image name. More info: https://kubernetes.io/docs/concepts/containers/images","type":"string"},"imagePullPolicy":{"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\n","type":"string"},"lifecycle":{"description":"Lifecycle is not allowed for ephemeral containers.","$ref":"#/components/schemas/io.k8s.api.core.v1.Lifecycle"},"livenessProbe":{"description":"Probes are not allowed for ephemeral containers.","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"name":{"description":"Name of the ephemeral container specified as a DNS_LABEL. This name must be unique among all containers, init containers and ephemeral containers.","type":"string","default":""},"ports":{"description":"Ports are not allowed for ephemeral containers.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerPort"},"x-kubernetes-list-map-keys":["containerPort","protocol"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"containerPort","x-kubernetes-patch-strategy":"merge"},"readinessProbe":{"description":"Probes are not allowed for ephemeral containers.","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"resources":{"description":"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources already allocated to the pod.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceRequirements"},"securityContext":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SecurityContext"},"startupProbe":{"description":"Probes are not allowed for ephemeral containers.","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"stdin":{"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.","type":"boolean"},"stdinOnce":{"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","type":"boolean"},"targetContainerName":{"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.","type":"string"},"terminationMessagePath":{"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.","type":"string"},"terminationMessagePolicy":{"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\n","type":"string"},"tty":{"description":"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.","type":"boolean"},"volumeDevices":{"description":"volumeDevices is the list of block devices to be used by the container.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeDevice"},"x-kubernetes-patch-merge-key":"devicePath","x-kubernetes-patch-strategy":"merge"},"volumeMounts":{"description":"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeMount"},"x-kubernetes-patch-merge-key":"mountPath","x-kubernetes-patch-strategy":"merge"},"workingDir":{"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.","type":"string"}}},"io.k8s.api.core.v1.EphemeralVolumeSource":{"description":"Represents an ephemeral volume that is handled by a normal storage driver.","type":"object","properties":{"volumeClaimTemplate":{"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 `\u003cpod name\u003e-\u003cvolume name\u003e` where `\u003cvolume name\u003e` 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.","$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimTemplate"}}},"io.k8s.api.core.v1.ExecAction":{"description":"ExecAction describes a \"run in container\" action.","type":"object","properties":{"command":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.FCVolumeSource":{"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.","type":"object","properties":{"fsType":{"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.","type":"string"},"lun":{"description":"lun is Optional: FC target lun number","type":"integer","format":"int32"},"readOnly":{"description":"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"targetWWNs":{"description":"targetWWNs is Optional: FC target worldwide names (WWNs)","type":"array","items":{"type":"string","default":""}},"wwids":{"description":"wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.FlexVolumeSource":{"description":"FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.","type":"object","required":["driver"],"properties":{"driver":{"description":"driver is the name of the driver to use for this volume.","type":"string","default":""},"fsType":{"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.","type":"string"},"options":{"description":"options is Optional: this field holds extra command options if any.","type":"object","additionalProperties":{"type":"string","default":""}},"readOnly":{"description":"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}}},"io.k8s.api.core.v1.FlockerVolumeSource":{"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.","type":"object","properties":{"datasetName":{"description":"datasetName is Name of the dataset stored as metadata -\u003e name on the dataset for Flocker should be considered as deprecated","type":"string"},"datasetUUID":{"description":"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset","type":"string"}}},"io.k8s.api.core.v1.GCEPersistentDiskVolumeSource":{"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.","type":"object","required":["pdName"],"properties":{"fsType":{"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","type":"string"},"partition":{"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","type":"integer","format":"int32"},"pdName":{"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","type":"string","default":""},"readOnly":{"description":"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk","type":"boolean"}}},"io.k8s.api.core.v1.GRPCAction":{"type":"object","required":["port"],"properties":{"port":{"description":"Port number of the gRPC service. Number must be in the range 1 to 65535.","type":"integer","format":"int32","default":0},"service":{"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.","type":"string","default":""}}},"io.k8s.api.core.v1.GitRepoVolumeSource":{"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.","type":"object","required":["repository"],"properties":{"directory":{"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.","type":"string"},"repository":{"description":"repository is the URL","type":"string","default":""},"revision":{"description":"revision is the commit hash for the specified revision.","type":"string"}}},"io.k8s.api.core.v1.GlusterfsVolumeSource":{"description":"Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["endpoints","path"],"properties":{"endpoints":{"description":"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"path":{"description":"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"readOnly":{"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","type":"boolean"}}},"io.k8s.api.core.v1.HTTPGetAction":{"description":"HTTPGetAction describes an action based on HTTP Get requests.","type":"object","required":["port"],"properties":{"host":{"description":"Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.","type":"string"},"httpHeaders":{"description":"Custom headers to set in the request. HTTP allows repeated headers.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.HTTPHeader"}},"path":{"description":"Path to access on the HTTP server.","type":"string"},"port":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString"},"scheme":{"description":"Scheme to use for connecting to the host. Defaults to HTTP.\n\n","type":"string"}}},"io.k8s.api.core.v1.HTTPHeader":{"description":"HTTPHeader describes a custom header to be used in HTTP probes","type":"object","required":["name","value"],"properties":{"name":{"description":"The header field name","type":"string","default":""},"value":{"description":"The header field value","type":"string","default":""}}},"io.k8s.api.core.v1.HostAlias":{"description":"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.","type":"object","properties":{"hostnames":{"description":"Hostnames for the above IP address.","type":"array","items":{"type":"string","default":""}},"ip":{"description":"IP address of the host file entry.","type":"string"}}},"io.k8s.api.core.v1.HostPathVolumeSource":{"description":"Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.","type":"object","required":["path"],"properties":{"path":{"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","type":"string","default":""},"type":{"description":"type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath","type":"string"}}},"io.k8s.api.core.v1.ISCSIVolumeSource":{"description":"Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.","type":"object","required":["targetPortal","iqn","lun"],"properties":{"chapAuthDiscovery":{"description":"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication","type":"boolean"},"chapAuthSession":{"description":"chapAuthSession defines whether support iSCSI Session CHAP authentication","type":"boolean"},"fsType":{"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","type":"string"},"initiatorName":{"description":"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \u003ctarget portal\u003e:\u003cvolume name\u003e will be created for the connection.","type":"string"},"iqn":{"description":"iqn is the target iSCSI Qualified Name.","type":"string","default":""},"iscsiInterface":{"description":"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).","type":"string"},"lun":{"description":"lun represents iSCSI Target Lun number.","type":"integer","format":"int32","default":0},"portals":{"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).","type":"array","items":{"type":"string","default":""}},"readOnly":{"description":"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.","type":"boolean"},"secretRef":{"description":"secretRef is the CHAP Secret for iSCSI target and initiator authentication","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"targetPortal":{"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).","type":"string","default":""}}},"io.k8s.api.core.v1.KeyToPath":{"description":"Maps a string key to a path within a volume.","type":"object","required":["key","path"],"properties":{"key":{"description":"key is the key to project.","type":"string","default":""},"mode":{"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.","type":"integer","format":"int32"},"path":{"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 '..'.","type":"string","default":""}}},"io.k8s.api.core.v1.Lifecycle":{"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.","type":"object","properties":{"postStart":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.LifecycleHandler"},"preStop":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.LifecycleHandler"}}},"io.k8s.api.core.v1.LifecycleHandler":{"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.","type":"object","properties":{"exec":{"description":"Exec specifies the action to take.","$ref":"#/components/schemas/io.k8s.api.core.v1.ExecAction"},"httpGet":{"description":"HTTPGet specifies the http request to perform.","$ref":"#/components/schemas/io.k8s.api.core.v1.HTTPGetAction"},"tcpSocket":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.TCPSocketAction"}}},"io.k8s.api.core.v1.LocalObjectReference":{"description":"LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.NFSVolumeSource":{"description":"Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.","type":"object","required":["server","path"],"properties":{"path":{"description":"path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs","type":"string","default":""},"readOnly":{"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","type":"boolean"},"server":{"description":"server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs","type":"string","default":""}}},"io.k8s.api.core.v1.NodeAffinity":{"description":"Node affinity is a group of node affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PreferredSchedulingTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelector"}}},"io.k8s.api.core.v1.NodeSelector":{"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.","type":"object","required":["nodeSelectorTerms"],"properties":{"nodeSelectorTerms":{"description":"Required. A list of node selector terms. The terms are ORed.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorTerm"}}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.NodeSelectorRequirement":{"description":"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.","type":"object","required":["key","operator"],"properties":{"key":{"description":"The label key that the selector applies to.","type":"string","default":""},"operator":{"description":"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n\n","type":"string","default":""},"values":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.NodeSelectorTerm":{"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.","type":"object","properties":{"matchExpressions":{"description":"A list of node selector requirements by node's labels.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorRequirement"}},"matchFields":{"description":"A list of node selector requirements by node's fields.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorRequirement"}}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ObjectFieldSelector":{"description":"ObjectFieldSelector selects an APIVersioned field of an object.","type":"object","required":["fieldPath"],"properties":{"apiVersion":{"description":"Version of the schema the FieldPath is written in terms of, defaults to \"v1\".","type":"string"},"fieldPath":{"description":"Path of the field to select in the specified API version.","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.PersistentVolumeClaim":{"description":"PersistentVolumeClaim is a user's request for and claim to a persistent volume","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimSpec"},"status":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimStatus"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PersistentVolumeClaim","version":"v1"}]},"io.k8s.api.core.v1.PersistentVolumeClaimCondition":{"description":"PersistentVolumeClaimCondition contails details about state of pvc","type":"object","required":["type","status"],"properties":{"lastProbeTime":{"description":"lastProbeTime is the time we probed the condition.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"lastTransitionTime":{"description":"lastTransitionTime is the time the condition transitioned from one status to another.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"message is the human-readable message indicating details about last transition.","type":"string"},"reason":{"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 \"ResizeStarted\" that means the underlying persistent volume is being resized.","type":"string"},"status":{"type":"string","default":""},"type":{"description":"\n\n\n","type":"string","default":""}}},"io.k8s.api.core.v1.PersistentVolumeClaimSpec":{"description":"PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes","type":"object","properties":{"accessModes":{"description":"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1","type":"array","items":{"type":"string","default":""}},"dataSource":{"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. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.","$ref":"#/components/schemas/io.k8s.api.core.v1.TypedLocalObjectReference"},"dataSourceRef":{"description":"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local 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, 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. There are two 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(Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled.","$ref":"#/components/schemas/io.k8s.api.core.v1.TypedLocalObjectReference"},"resources":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceRequirements"},"selector":{"description":"selector is a label query over volumes to consider for binding.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"storageClassName":{"description":"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1","type":"string"},"volumeMode":{"description":"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.","type":"string"},"volumeName":{"description":"volumeName is the binding reference to the PersistentVolume backing this claim.","type":"string"}}},"io.k8s.api.core.v1.PersistentVolumeClaimStatus":{"description":"PersistentVolumeClaimStatus is the current status of a persistent volume claim.","type":"object","properties":{"accessModes":{"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","type":"array","items":{"type":"string","default":""}},"allocatedResources":{"description":"allocatedResources is the storage resource within AllocatedResources tracks the capacity allocated to a PVC. It 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. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"capacity":{"description":"capacity represents the actual resources of the underlying volume.","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"conditions":{"description":"conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimCondition"},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"phase":{"description":"phase represents the current phase of PersistentVolumeClaim.\n\n","type":"string"},"resizeStatus":{"description":"resizeStatus stores status of resize operation. ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty string by resize controller or kubelet. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.","type":"string"}}},"io.k8s.api.core.v1.PersistentVolumeClaimTemplate":{"description":"PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource.","type":"object","required":["spec"],"properties":{"metadata":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimSpec"}}},"io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource":{"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).","type":"object","required":["claimName"],"properties":{"claimName":{"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","type":"string","default":""},"readOnly":{"description":"readOnly Will force the ReadOnly setting in VolumeMounts. Default false.","type":"boolean"}}},"io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource":{"description":"Represents a Photon Controller persistent disk resource.","type":"object","required":["pdID"],"properties":{"fsType":{"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.","type":"string"},"pdID":{"description":"pdID is the ID that identifies Photon Controller persistent disk","type":"string","default":""}}},"io.k8s.api.core.v1.PodAffinity":{"description":"Pod affinity is a group of inter pod affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.WeightedPodAffinityTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm"}}}},"io.k8s.api.core.v1.PodAffinityTerm":{"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 \u003ctopologyKey\u003e matches that of any node on which a pod of the set of pods is running","type":"object","required":["topologyKey"],"properties":{"labelSelector":{"description":"A label query over a set of resources, in this case pods.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"namespaceSelector":{"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. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"namespaces":{"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\"","type":"array","items":{"type":"string","default":""}},"topologyKey":{"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.","type":"string","default":""}}},"io.k8s.api.core.v1.PodAntiAffinity":{"description":"Pod anti affinity is a group of inter pod anti affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.WeightedPodAffinityTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm"}}}},"io.k8s.api.core.v1.PodDNSConfig":{"description":"PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.","type":"object","properties":{"nameservers":{"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.","type":"array","items":{"type":"string","default":""}},"options":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodDNSConfigOption"}},"searches":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.PodDNSConfigOption":{"description":"PodDNSConfigOption defines DNS resolver options of a pod.","type":"object","properties":{"name":{"description":"Required.","type":"string"},"value":{"type":"string"}}},"io.k8s.api.core.v1.PodOS":{"description":"PodOS defines the OS parameters of a pod.","type":"object","required":["name"],"properties":{"name":{"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","type":"string","default":""}}},"io.k8s.api.core.v1.PodReadinessGate":{"description":"PodReadinessGate contains the reference to a pod condition","type":"object","required":["conditionType"],"properties":{"conditionType":{"description":"ConditionType refers to a condition in the pod's condition list with matching type.\n\n","type":"string","default":""}}},"io.k8s.api.core.v1.PodSecurityContext":{"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.","type":"object","properties":{"fsGroup":{"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.","type":"integer","format":"int64"},"fsGroupChangePolicy":{"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.","type":"string"},"runAsGroup":{"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.","type":"integer","format":"int64"},"runAsNonRoot":{"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.","type":"boolean"},"runAsUser":{"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.","type":"integer","format":"int64"},"seLinuxOptions":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SELinuxOptions"},"seccompProfile":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SeccompProfile"},"supplementalGroups":{"description":"A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container. Note that this field cannot be set when spec.os.name is windows.","type":"array","items":{"type":"integer","format":"int64","default":0}},"sysctls":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Sysctl"}},"windowsOptions":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.WindowsSecurityContextOptions"}}},"io.k8s.api.core.v1.PodSpec":{"description":"PodSpec is a description of a pod.","type":"object","required":["containers"],"properties":{"activeDeadlineSeconds":{"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.","type":"integer","format":"int64"},"affinity":{"description":"If specified, the pod's scheduling constraints","$ref":"#/components/schemas/io.k8s.api.core.v1.Affinity"},"automountServiceAccountToken":{"description":"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.","type":"boolean"},"containers":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Container"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"dnsConfig":{"description":"Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.","$ref":"#/components/schemas/io.k8s.api.core.v1.PodDNSConfig"},"dnsPolicy":{"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\n","type":"string"},"enableServiceLinks":{"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.","type":"boolean"},"ephemeralContainers":{"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. This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EphemeralContainer"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"hostAliases":{"description":"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.HostAlias"},"x-kubernetes-patch-merge-key":"ip","x-kubernetes-patch-strategy":"merge"},"hostIPC":{"description":"Use the host's ipc namespace. Optional: Default to false.","type":"boolean"},"hostNetwork":{"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.","type":"boolean"},"hostPID":{"description":"Use the host's pid namespace. Optional: Default to false.","type":"boolean"},"hostname":{"description":"Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.","type":"string"},"imagePullSecrets":{"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. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"initContainers":{"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/","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Container"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"nodeName":{"description":"NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.","type":"string"},"nodeSelector":{"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/","type":"object","additionalProperties":{"type":"string","default":""},"x-kubernetes-map-type":"atomic"},"os":{"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.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.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 This is an alpha field and requires the IdentifyPodOS feature","$ref":"#/components/schemas/io.k8s.api.core.v1.PodOS"},"overhead":{"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 This field is beta-level as of Kubernetes v1.18, and is only honored by servers that enable the PodOverhead feature.","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"preemptionPolicy":{"description":"PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset.","type":"string"},"priority":{"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.","type":"integer","format":"int32"},"priorityClassName":{"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.","type":"string"},"readinessGates":{"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","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodReadinessGate"}},"restartPolicy":{"description":"Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\n\n","type":"string"},"runtimeClassName":{"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 This is a beta feature as of Kubernetes v1.14.","type":"string"},"schedulerName":{"description":"If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.","type":"string"},"securityContext":{"description":"SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.","$ref":"#/components/schemas/io.k8s.api.core.v1.PodSecurityContext"},"serviceAccount":{"description":"DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.","type":"string"},"serviceAccountName":{"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/","type":"string"},"setHostnameAsFQDN":{"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.","type":"boolean"},"shareProcessNamespace":{"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.","type":"boolean"},"subdomain":{"description":"If specified, the fully qualified Pod hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the pod will not have a domainname at all.","type":"string"},"terminationGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"tolerations":{"description":"If specified, the pod's tolerations.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Toleration"}},"topologySpreadConstraints":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.TopologySpreadConstraint"},"x-kubernetes-list-map-keys":["topologyKey","whenUnsatisfiable"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"topologyKey","x-kubernetes-patch-strategy":"merge"},"volumes":{"description":"List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Volume"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge,retainKeys"}}},"io.k8s.api.core.v1.PodTemplateSpec":{"description":"PodTemplateSpec describes the data a pod should have when created from a template","type":"object","properties":{"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodSpec"}}},"io.k8s.api.core.v1.PortworxVolumeSource":{"description":"PortworxVolumeSource represents a Portworx volume resource.","type":"object","required":["volumeID"],"properties":{"fsType":{"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.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"volumeID":{"description":"volumeID uniquely identifies a Portworx volume","type":"string","default":""}}},"io.k8s.api.core.v1.PreferredSchedulingTerm":{"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).","type":"object","required":["weight","preference"],"properties":{"preference":{"description":"A node selector term, associated with the corresponding weight.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorTerm"},"weight":{"description":"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.Probe":{"description":"Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.","type":"object","properties":{"exec":{"description":"Exec specifies the action to take.","$ref":"#/components/schemas/io.k8s.api.core.v1.ExecAction"},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.","type":"integer","format":"int32"},"grpc":{"description":"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.","$ref":"#/components/schemas/io.k8s.api.core.v1.GRPCAction"},"httpGet":{"description":"HTTPGet specifies the http request to perform.","$ref":"#/components/schemas/io.k8s.api.core.v1.HTTPGetAction"},"initialDelaySeconds":{"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","type":"integer","format":"int32"},"periodSeconds":{"description":"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.","type":"integer","format":"int32"},"successThreshold":{"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.","type":"integer","format":"int32"},"tcpSocket":{"description":"TCPSocket specifies an action involving a TCP port.","$ref":"#/components/schemas/io.k8s.api.core.v1.TCPSocketAction"},"terminationGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"timeoutSeconds":{"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","type":"integer","format":"int32"}}},"io.k8s.api.core.v1.ProjectedVolumeSource":{"description":"Represents a projected volume source","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"sources":{"description":"sources is the list of volume projections","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeProjection"}}}},"io.k8s.api.core.v1.QuobyteVolumeSource":{"description":"Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.","type":"object","required":["registry","volume"],"properties":{"group":{"description":"group to map volume access to Default is no group","type":"string"},"readOnly":{"description":"readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.","type":"boolean"},"registry":{"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","type":"string","default":""},"tenant":{"description":"tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin","type":"string"},"user":{"description":"user to map volume access to Defaults to serivceaccount user","type":"string"},"volume":{"description":"volume is a string that references an already created Quobyte volume by name.","type":"string","default":""}}},"io.k8s.api.core.v1.RBDVolumeSource":{"description":"Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.","type":"object","required":["monitors","image"],"properties":{"fsType":{"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","type":"string"},"image":{"description":"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string","default":""},"keyring":{"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","type":"string"},"monitors":{"description":"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"array","items":{"type":"string","default":""}},"pool":{"description":"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"user":{"description":"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"}}},"io.k8s.api.core.v1.ResourceFieldSelector":{"description":"ResourceFieldSelector represents container resources (cpu, memory) and their output format","type":"object","required":["resource"],"properties":{"containerName":{"description":"Container name: required for volumes, optional for env vars","type":"string"},"divisor":{"description":"Specifies the output format of the exposed resources, defaults to \"1\"","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"},"resource":{"description":"Required: resource to select","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ResourceRequirements":{"description":"ResourceRequirements describes the compute resource requirements.","type":"object","properties":{"limits":{"description":"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"requests":{"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. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}}}},"io.k8s.api.core.v1.SELinuxOptions":{"description":"SELinuxOptions are the labels to be applied to the container","type":"object","properties":{"level":{"description":"Level is SELinux level label that applies to the container.","type":"string"},"role":{"description":"Role is a SELinux role label that applies to the container.","type":"string"},"type":{"description":"Type is a SELinux type label that applies to the container.","type":"string"},"user":{"description":"User is a SELinux user label that applies to the container.","type":"string"}}},"io.k8s.api.core.v1.ScaleIOVolumeSource":{"description":"ScaleIOVolumeSource represents a persistent ScaleIO volume","type":"object","required":["gateway","system","secretRef"],"properties":{"fsType":{"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\".","type":"string"},"gateway":{"description":"gateway is the host address of the ScaleIO API Gateway.","type":"string","default":""},"protectionDomain":{"description":"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.","type":"string"},"readOnly":{"description":"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"sslEnabled":{"description":"sslEnabled Flag enable/disable SSL communication with Gateway, default false","type":"boolean"},"storageMode":{"description":"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.","type":"string"},"storagePool":{"description":"storagePool is the ScaleIO Storage Pool associated with the protection domain.","type":"string"},"system":{"description":"system is the name of the storage system as configured in ScaleIO.","type":"string","default":""},"volumeName":{"description":"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.","type":"string"}}},"io.k8s.api.core.v1.SeccompProfile":{"description":"SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set.","type":"object","required":["type"],"properties":{"localhostProfile":{"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 only be set if type is \"Localhost\".","type":"string"},"type":{"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\n","type":"string","default":""}},"x-kubernetes-unions":[{"discriminator":"type","fields-to-discriminateBy":{"localhostProfile":"LocalhostProfile"}}]},"io.k8s.api.core.v1.SecretEnvSource":{"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.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the Secret must be defined","type":"boolean"}}},"io.k8s.api.core.v1.SecretKeySelector":{"description":"SecretKeySelector selects a key of a Secret.","type":"object","required":["key"],"properties":{"key":{"description":"The key of the secret to select from. Must be a valid secret key.","type":"string","default":""},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the Secret or its key must be defined","type":"boolean"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.SecretProjection":{"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.","type":"object","properties":{"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional field specify whether the Secret or its key must be defined","type":"boolean"}}},"io.k8s.api.core.v1.SecretVolumeSource":{"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.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}},"optional":{"description":"optional field specify whether the Secret or its keys must be defined","type":"boolean"},"secretName":{"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","type":"string"}}},"io.k8s.api.core.v1.SecurityContext":{"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.","type":"object","properties":{"allowPrivilegeEscalation":{"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.","type":"boolean"},"capabilities":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.Capabilities"},"privileged":{"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.","type":"boolean"},"procMount":{"description":"procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount 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.","type":"string"},"readOnlyRootFilesystem":{"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.","type":"boolean"},"runAsGroup":{"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.","type":"integer","format":"int64"},"runAsNonRoot":{"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.","type":"boolean"},"runAsUser":{"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.","type":"integer","format":"int64"},"seLinuxOptions":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SELinuxOptions"},"seccompProfile":{"description":"The seccomp options to use by this container. If seccomp options are provided at both the pod \u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.","$ref":"#/components/schemas/io.k8s.api.core.v1.SeccompProfile"},"windowsOptions":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.WindowsSecurityContextOptions"}}},"io.k8s.api.core.v1.ServiceAccountTokenProjection":{"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).","type":"object","required":["path"],"properties":{"audience":{"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.","type":"string"},"expirationSeconds":{"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.","type":"integer","format":"int64"},"path":{"description":"path is the path relative to the mount point of the file to project the token into.","type":"string","default":""}}},"io.k8s.api.core.v1.StorageOSVolumeSource":{"description":"Represents a StorageOS persistent volume resource.","type":"object","properties":{"fsType":{"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.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"volumeName":{"description":"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.","type":"string"},"volumeNamespace":{"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.","type":"string"}}},"io.k8s.api.core.v1.Sysctl":{"description":"Sysctl defines a kernel parameter to be set","type":"object","required":["name","value"],"properties":{"name":{"description":"Name of a property to set","type":"string","default":""},"value":{"description":"Value of a property to set","type":"string","default":""}}},"io.k8s.api.core.v1.TCPSocketAction":{"description":"TCPSocketAction describes an action based on opening a socket","type":"object","required":["port"],"properties":{"host":{"description":"Optional: Host name to connect to, defaults to the pod IP.","type":"string"},"port":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString"}}},"io.k8s.api.core.v1.Toleration":{"description":"The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.","type":"object","properties":{"effect":{"description":"Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n\n","type":"string"},"key":{"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.","type":"string"},"operator":{"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\n","type":"string"},"tolerationSeconds":{"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.","type":"integer","format":"int64"},"value":{"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.","type":"string"}}},"io.k8s.api.core.v1.TopologySpreadConstraint":{"description":"TopologySpreadConstraint specifies how to spread matching pods among the given topology.","type":"object","required":["maxSkew","topologyKey","whenUnsatisfiable"],"properties":{"labelSelector":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"maxSkew":{"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. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) 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.","type":"integer","format":"int32","default":0},"topologyKey":{"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 \u003ckey, value\u003e as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.","type":"string","default":""},"whenUnsatisfiable":{"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\n","type":"string","default":""}}},"io.k8s.api.core.v1.TypedLocalObjectReference":{"description":"TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.","type":"object","required":["kind","name"],"properties":{"apiGroup":{"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.","type":"string"},"kind":{"description":"Kind is the type of resource being referenced","type":"string","default":""},"name":{"description":"Name is the name of resource being referenced","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.Volume":{"description":"Volume represents a named volume in a pod that may be accessed by any container in the pod.","type":"object","required":["name"],"properties":{"awsElasticBlockStore":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource"},"azureDisk":{"description":"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.","$ref":"#/components/schemas/io.k8s.api.core.v1.AzureDiskVolumeSource"},"azureFile":{"description":"azureFile represents an Azure File Service mount on the host and bind mount to the pod.","$ref":"#/components/schemas/io.k8s.api.core.v1.AzureFileVolumeSource"},"cephfs":{"description":"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime","$ref":"#/components/schemas/io.k8s.api.core.v1.CephFSVolumeSource"},"cinder":{"description":"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","$ref":"#/components/schemas/io.k8s.api.core.v1.CinderVolumeSource"},"configMap":{"description":"configMap represents a configMap that should populate this volume","$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapVolumeSource"},"csi":{"description":"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).","$ref":"#/components/schemas/io.k8s.api.core.v1.CSIVolumeSource"},"downwardAPI":{"description":"downwardAPI represents downward API about the pod that should populate this volume","$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeSource"},"emptyDir":{"description":"emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir","$ref":"#/components/schemas/io.k8s.api.core.v1.EmptyDirVolumeSource"},"ephemeral":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.EphemeralVolumeSource"},"fc":{"description":"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.","$ref":"#/components/schemas/io.k8s.api.core.v1.FCVolumeSource"},"flexVolume":{"description":"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.","$ref":"#/components/schemas/io.k8s.api.core.v1.FlexVolumeSource"},"flocker":{"description":"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running","$ref":"#/components/schemas/io.k8s.api.core.v1.FlockerVolumeSource"},"gcePersistentDisk":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource"},"gitRepo":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.GitRepoVolumeSource"},"glusterfs":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.GlusterfsVolumeSource"},"hostPath":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.HostPathVolumeSource"},"iscsi":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.ISCSIVolumeSource"},"name":{"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","type":"string","default":""},"nfs":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.NFSVolumeSource"},"persistentVolumeClaim":{"description":"persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims","$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource"},"photonPersistentDisk":{"description":"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine","$ref":"#/components/schemas/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource"},"portworxVolume":{"description":"portworxVolume represents a portworx volume attached and mounted on kubelets host machine","$ref":"#/components/schemas/io.k8s.api.core.v1.PortworxVolumeSource"},"projected":{"description":"projected items for all in one resources secrets, configmaps, and downward API","$ref":"#/components/schemas/io.k8s.api.core.v1.ProjectedVolumeSource"},"quobyte":{"description":"quobyte represents a Quobyte mount on the host that shares a pod's lifetime","$ref":"#/components/schemas/io.k8s.api.core.v1.QuobyteVolumeSource"},"rbd":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.RBDVolumeSource"},"scaleIO":{"description":"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.","$ref":"#/components/schemas/io.k8s.api.core.v1.ScaleIOVolumeSource"},"secret":{"description":"secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretVolumeSource"},"storageos":{"description":"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.","$ref":"#/components/schemas/io.k8s.api.core.v1.StorageOSVolumeSource"},"vsphereVolume":{"description":"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine","$ref":"#/components/schemas/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource"}}},"io.k8s.api.core.v1.VolumeDevice":{"description":"volumeDevice describes a mapping of a raw block device within a container.","type":"object","required":["name","devicePath"],"properties":{"devicePath":{"description":"devicePath is the path inside of the container that the device will be mapped to.","type":"string","default":""},"name":{"description":"name must match the name of a persistentVolumeClaim in the pod","type":"string","default":""}}},"io.k8s.api.core.v1.VolumeMount":{"description":"VolumeMount describes a mounting of a Volume within a container.","type":"object","required":["name","mountPath"],"properties":{"mountPath":{"description":"Path within the container at which the volume should be mounted. Must not contain ':'.","type":"string","default":""},"mountPropagation":{"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.","type":"string"},"name":{"description":"This must match the Name of a Volume.","type":"string","default":""},"readOnly":{"description":"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.","type":"boolean"},"subPath":{"description":"Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).","type":"string"},"subPathExpr":{"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.","type":"string"}}},"io.k8s.api.core.v1.VolumeProjection":{"description":"Projection that may be projected along with other supported volume types","type":"object","properties":{"configMap":{"description":"configMap information about the configMap data to project","$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapProjection"},"downwardAPI":{"description":"downwardAPI information about the downwardAPI data to project","$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIProjection"},"secret":{"description":"secret information about the secret data to project","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretProjection"},"serviceAccountToken":{"description":"serviceAccountToken is information about the serviceAccountToken data to project","$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountTokenProjection"}}},"io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource":{"description":"Represents a vSphere volume resource.","type":"object","required":["volumePath"],"properties":{"fsType":{"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.","type":"string"},"storagePolicyID":{"description":"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.","type":"string"},"storagePolicyName":{"description":"storagePolicyName is the storage Policy Based Management (SPBM) profile name.","type":"string"},"volumePath":{"description":"volumePath is the path that identifies vSphere volume vmdk","type":"string","default":""}}},"io.k8s.api.core.v1.WeightedPodAffinityTerm":{"description":"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)","type":"object","required":["weight","podAffinityTerm"],"properties":{"podAffinityTerm":{"description":"Required. A pod affinity term, associated with the corresponding weight.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm"},"weight":{"description":"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.WindowsSecurityContextOptions":{"description":"WindowsSecurityContextOptions contain Windows-specific options and credentials.","type":"object","properties":{"gmsaCredentialSpec":{"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.","type":"string"},"gmsaCredentialSpecName":{"description":"GMSACredentialSpecName is the name of the GMSA credential spec to use.","type":"string"},"hostProcess":{"description":"HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. 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.","type":"boolean"},"runAsUserName":{"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.","type":"string"}}},"io.k8s.apimachinery.pkg.api.resource.Quantity":{"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\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\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 a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 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.","type":"string"},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResource":{"description":"APIResource specifies the name of a resource and whether it is namespaced.","type":"object","required":["name","singularName","namespaced","kind","verbs"],"properties":{"categories":{"description":"categories is a list of the grouped resources this resource belongs to (e.g. 'all')","type":"array","items":{"type":"string","default":""}},"group":{"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\".","type":"string"},"kind":{"description":"kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')","type":"string","default":""},"name":{"description":"name is the plural name of the resource.","type":"string","default":""},"namespaced":{"description":"namespaced indicates if a resource is namespaced or not.","type":"boolean","default":false},"shortNames":{"description":"shortNames is a list of suggested short names of the resource.","type":"array","items":{"type":"string","default":""}},"singularName":{"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.","type":"string","default":""},"storageVersionHash":{"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.","type":"string"},"verbs":{"description":"verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)","type":"array","items":{"type":"string","default":""}},"version":{"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)\".","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList":{"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.","type":"object","required":["groupVersion","resources"],"properties":{"apiVersion":{"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","type":"string"},"groupVersion":{"description":"groupVersion is the group and version this APIResourceList is for.","type":"string","default":""},"kind":{"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","type":"string"},"resources":{"description":"resources contains the name of the resources and if they are namespaced.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResource"}}},"x-kubernetes-group-version-kind":[{"group":"","kind":"APIResourceList","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"},"propagationPolicy":{"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.","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta2"},{"group":"batch","kind":"DeleteOptions","version":"v1"},{"group":"batch","kind":"DeleteOptions","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"extensions","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"policy","kind":"DeleteOptions","version":"v1"},{"group":"policy","kind":"DeleteOptions","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector":{"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.","type":"object","properties":{"matchExpressions":{"description":"matchExpressions is a list of label selector requirements. The requirements are ANDed.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement"}},"matchLabels":{"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.","type":"object","additionalProperties":{"type":"string","default":""}}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement":{"description":"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.","type":"object","required":["key","operator"],"properties":{"key":{"description":"key is the label key that the selector applies to.","type":"string","default":"","x-kubernetes-patch-merge-key":"key","x-kubernetes-patch-strategy":"merge"},"operator":{"description":"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.","type":"string","default":""},"values":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"selfLink is DEPRECATED read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"clusterName":{"description":"The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.","type":"string"},"creationTimestamp":{"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","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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 NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"selfLink is DEPRECATED read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"},"reason":{"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.","type":"string"},"status":{"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","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Status","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"},"io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent":{"description":"Event represents a single event to a watched resource.","type":"object","required":["type","object"],"properties":{"object":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.runtime.RawExtension"},"type":{"type":"string","default":""}},"x-kubernetes-group-version-kind":[{"group":"","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1"},{"group":"apps","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta2"},{"group":"batch","kind":"WatchEvent","version":"v1"},{"group":"batch","kind":"WatchEvent","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"extensions","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"policy","kind":"WatchEvent","version":"v1"},{"group":"policy","kind":"WatchEvent","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.runtime.RawExtension":{"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: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.Object `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// External package: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.RawExtension `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// On the wire, the JSON will look something like this: {\n\t\"kind\":\"MyAPIObject\",\n\t\"apiVersion\":\"v1\",\n\t\"myPlugin\": {\n\t\t\"kind\":\"PluginA\",\n\t\t\"aOption\":\"foo\",\n\t},\n}\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.)","type":"object"},"io.k8s.apimachinery.pkg.util.intstr.IntOrString":{"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.","type":"string","format":"int-or-string"}}}}golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/testdata/openapi_v3_0_0/batch/000077500000000000000000000000001453663023200307125ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/testdata/openapi_v3_0_0/batch/v1.json000066400000000000000000011074221453663023200321420ustar00rootroot00000000000000{"openapi":"3.0.0","info":{"title":"Kubernetes","version":"v1.24.0"},"paths":{"/apis/batch/v1/":{"get":{"tags":["batch_v1"],"description":"get available resources","operationId":"getBatchV1APIResources","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}}}}}}},"/apis/batch/v1/cronjobs":{"get":{"tags":["batch_v1"],"description":"list or watch objects of kind CronJob","operationId":"listBatchV1CronJobForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/batch/v1/jobs":{"get":{"tags":["batch_v1"],"description":"list or watch objects of kind Job","operationId":"listBatchV1JobForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/batch/v1/namespaces/{namespace}/cronjobs":{"get":{"tags":["batch_v1"],"description":"list or watch objects of kind CronJob","operationId":"listBatchV1NamespacedCronJob","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobList"}}}}}},"post":{"tags":["batch_v1"],"description":"create a CronJob","operationId":"createBatchV1NamespacedCronJob","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}}}},"delete":{"tags":["batch_v1"],"description":"delete collection of CronJob","operationId":"deleteBatchV1CollectionNamespacedCronJob","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/batch/v1/namespaces/{namespace}/cronjobs/{name}":{"get":{"tags":["batch_v1"],"description":"read the specified CronJob","operationId":"readBatchV1NamespacedCronJob","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}}}},"put":{"tags":["batch_v1"],"description":"replace the specified CronJob","operationId":"replaceBatchV1NamespacedCronJob","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}}}},"delete":{"tags":["batch_v1"],"description":"delete a CronJob","operationId":"deleteBatchV1NamespacedCronJob","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"patch":{"tags":["batch_v1"],"description":"partially update the specified CronJob","operationId":"patchBatchV1NamespacedCronJob","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the CronJob","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/batch/v1/namespaces/{namespace}/cronjobs/{name}/status":{"get":{"tags":["batch_v1"],"description":"read status of the specified CronJob","operationId":"readBatchV1NamespacedCronJobStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}}}},"put":{"tags":["batch_v1"],"description":"replace status of the specified CronJob","operationId":"replaceBatchV1NamespacedCronJobStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}}}},"patch":{"tags":["batch_v1"],"description":"partially update status of the specified CronJob","operationId":"patchBatchV1NamespacedCronJobStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the CronJob","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/batch/v1/namespaces/{namespace}/jobs":{"get":{"tags":["batch_v1"],"description":"list or watch objects of kind Job","operationId":"listBatchV1NamespacedJob","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobList"}}}}}},"post":{"tags":["batch_v1"],"description":"create a Job","operationId":"createBatchV1NamespacedJob","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}}}},"delete":{"tags":["batch_v1"],"description":"delete collection of Job","operationId":"deleteBatchV1CollectionNamespacedJob","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/batch/v1/namespaces/{namespace}/jobs/{name}":{"get":{"tags":["batch_v1"],"description":"read the specified Job","operationId":"readBatchV1NamespacedJob","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}}}},"put":{"tags":["batch_v1"],"description":"replace the specified Job","operationId":"replaceBatchV1NamespacedJob","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}}}},"delete":{"tags":["batch_v1"],"description":"delete a Job","operationId":"deleteBatchV1NamespacedJob","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"patch":{"tags":["batch_v1"],"description":"partially update the specified Job","operationId":"patchBatchV1NamespacedJob","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Job","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/batch/v1/namespaces/{namespace}/jobs/{name}/status":{"get":{"tags":["batch_v1"],"description":"read status of the specified Job","operationId":"readBatchV1NamespacedJobStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}}}},"put":{"tags":["batch_v1"],"description":"replace status of the specified Job","operationId":"replaceBatchV1NamespacedJobStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}}}},"patch":{"tags":["batch_v1"],"description":"partially update status of the specified Job","operationId":"patchBatchV1NamespacedJobStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Job","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/batch/v1/watch/cronjobs":{"get":{"tags":["batch_v1"],"description":"watch individual changes to a list of CronJob. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchBatchV1CronJobListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/batch/v1/watch/jobs":{"get":{"tags":["batch_v1"],"description":"watch individual changes to a list of Job. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchBatchV1JobListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/batch/v1/watch/namespaces/{namespace}/cronjobs":{"get":{"tags":["batch_v1"],"description":"watch individual changes to a list of CronJob. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchBatchV1NamespacedCronJobList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/batch/v1/watch/namespaces/{namespace}/cronjobs/{name}":{"get":{"tags":["batch_v1"],"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.","operationId":"watchBatchV1NamespacedCronJob","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the CronJob","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/batch/v1/watch/namespaces/{namespace}/jobs":{"get":{"tags":["batch_v1"],"description":"watch individual changes to a list of Job. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchBatchV1NamespacedJobList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/batch/v1/watch/namespaces/{namespace}/jobs/{name}":{"get":{"tags":["batch_v1"],"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.","operationId":"watchBatchV1NamespacedJob","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Job","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]}},"components":{"schemas":{"io.k8s.api.batch.v1.CronJob":{"description":"CronJob represents the configuration of a single cron job.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobSpec"},"status":{"description":"Current status of a cron job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status","default":{},"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJobStatus"}},"x-kubernetes-group-version-kind":[{"group":"batch","kind":"CronJob","version":"v1"}]},"io.k8s.api.batch.v1.CronJobList":{"description":"CronJobList is a collection of cron jobs.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"items is the list of CronJobs.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.batch.v1.CronJob"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"batch","kind":"CronJobList","version":"v1"}]},"io.k8s.api.batch.v1.CronJobSpec":{"description":"CronJobSpec describes how the job execution will look like and when it will actually run.","type":"object","required":["schedule","jobTemplate"],"properties":{"concurrencyPolicy":{"description":"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\n","type":"string"},"failedJobsHistoryLimit":{"description":"The number of failed finished jobs to retain. Value must be non-negative integer. Defaults to 1.","type":"integer","format":"int32"},"jobTemplate":{"description":"Specifies the job that will be created when executing a CronJob.","default":{},"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobTemplateSpec"},"schedule":{"description":"The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.","type":"string","default":""},"startingDeadlineSeconds":{"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.","type":"integer","format":"int64"},"successfulJobsHistoryLimit":{"description":"The number of successful finished jobs to retain. Value must be non-negative integer. Defaults to 3.","type":"integer","format":"int32"},"suspend":{"description":"This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.","type":"boolean"}}},"io.k8s.api.batch.v1.CronJobStatus":{"description":"CronJobStatus represents the current state of a cron job.","type":"object","properties":{"active":{"description":"A list of pointers to currently running jobs.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectReference"},"x-kubernetes-list-type":"atomic"},"lastScheduleTime":{"description":"Information when was the last time the job was successfully scheduled.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"lastSuccessfulTime":{"description":"Information when was the last time the job successfully completed.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.api.batch.v1.Job":{"description":"Job represents the configuration of a single job.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobSpec"},"status":{"description":"Current status of a job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status","default":{},"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobStatus"}},"x-kubernetes-group-version-kind":[{"group":"batch","kind":"Job","version":"v1"}]},"io.k8s.api.batch.v1.JobCondition":{"description":"JobCondition describes current state of a job.","type":"object","required":["type","status"],"properties":{"lastProbeTime":{"description":"Last time the condition was checked.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"lastTransitionTime":{"description":"Last time the condition transit from one status to another.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"Human readable message indicating details about last transition.","type":"string"},"reason":{"description":"(brief) reason for the condition's last transition.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string","default":""},"type":{"description":"Type of job condition, Complete or Failed.\n\n","type":"string","default":""}}},"io.k8s.api.batch.v1.JobList":{"description":"JobList is a collection of jobs.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"items is the list of Jobs.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.batch.v1.Job"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"batch","kind":"JobList","version":"v1"}]},"io.k8s.api.batch.v1.JobSpec":{"description":"JobSpec describes how the job execution will look like.","type":"object","required":["template"],"properties":{"activeDeadlineSeconds":{"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.","type":"integer","format":"int64"},"backoffLimit":{"description":"Specifies the number of retries before marking this job failed. Defaults to 6","type":"integer","format":"int32"},"completionMode":{"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\nThis field is beta-level. More completion modes can be added in the future. If the Job controller observes a mode that it doesn't recognize, the controller skips updates for the Job.","type":"string"},"completions":{"description":"Specifies the desired number of successfully finished pods the job should be run with. Setting to nil 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/","type":"integer","format":"int32"},"manualSelector":{"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","type":"boolean"},"parallelism":{"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) \u003c .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/","type":"integer","format":"int32"},"selector":{"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","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"suspend":{"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\nThis field is beta-level, gated by SuspendJob feature flag (enabled by default).","type":"boolean"},"template":{"description":"Describes the pod that will be created when executing a job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateSpec"},"ttlSecondsAfterFinished":{"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.","type":"integer","format":"int32"}}},"io.k8s.api.batch.v1.JobStatus":{"description":"JobStatus represents the current state of a Job.","type":"object","properties":{"active":{"description":"The number of pending and running pods.","type":"integer","format":"int32"},"completedIndexes":{"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\".","type":"string"},"completionTime":{"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 only set when the job finishes successfully.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"conditions":{"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. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobCondition"},"x-kubernetes-list-type":"atomic","x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"failed":{"description":"The number of pods which reached phase Failed.","type":"integer","format":"int32"},"ready":{"description":"The number of pods which have a Ready condition.\n\nThis field is alpha-level. The job controller populates the field when the feature gate JobReadyPods is enabled (disabled by default).","type":"integer","format":"int32"},"startTime":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"succeeded":{"description":"The number of pods which reached phase Succeeded.","type":"integer","format":"int32"},"uncountedTerminatedPods":{"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: (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\nThis field is beta-level. The job controller only makes use of this field when the feature gate JobTrackingWithFinalizers is enabled (enabled by default). Old jobs might not be tracked using this field, in which case the field remains null.","$ref":"#/components/schemas/io.k8s.api.batch.v1.UncountedTerminatedPods"}}},"io.k8s.api.batch.v1.JobTemplateSpec":{"description":"JobTemplateSpec describes the data a Job should have when created from a template","type":"object","properties":{"metadata":{"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","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobSpec"}}},"io.k8s.api.batch.v1.UncountedTerminatedPods":{"description":"UncountedTerminatedPods holds UIDs of Pods that have terminated but haven't been accounted in Job status counters.","type":"object","properties":{"failed":{"description":"Failed holds UIDs of failed Pods.","type":"array","items":{"type":"string","default":""},"x-kubernetes-list-type":"set"},"succeeded":{"description":"Succeeded holds UIDs of succeeded Pods.","type":"array","items":{"type":"string","default":""},"x-kubernetes-list-type":"set"}}},"io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource":{"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.","type":"object","required":["volumeID"],"properties":{"fsType":{"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","type":"string"},"partition":{"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).","type":"integer","format":"int32"},"readOnly":{"description":"readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore","type":"boolean"},"volumeID":{"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","type":"string","default":""}}},"io.k8s.api.core.v1.Affinity":{"description":"Affinity is a group of affinity scheduling rules.","type":"object","properties":{"nodeAffinity":{"description":"Describes node affinity scheduling rules for the pod.","$ref":"#/components/schemas/io.k8s.api.core.v1.NodeAffinity"},"podAffinity":{"description":"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).","$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinity"},"podAntiAffinity":{"description":"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).","$ref":"#/components/schemas/io.k8s.api.core.v1.PodAntiAffinity"}}},"io.k8s.api.core.v1.AzureDiskVolumeSource":{"description":"AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.","type":"object","required":["diskName","diskURI"],"properties":{"cachingMode":{"description":"cachingMode is the Host Caching mode: None, Read Only, Read Write.","type":"string"},"diskName":{"description":"diskName is the Name of the data disk in the blob storage","type":"string","default":""},"diskURI":{"description":"diskURI is the URI of data disk in the blob storage","type":"string","default":""},"fsType":{"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.","type":"string"},"kind":{"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","type":"string"},"readOnly":{"description":"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"}}},"io.k8s.api.core.v1.AzureFileVolumeSource":{"description":"AzureFile represents an Azure File Service mount on the host and bind mount to the pod.","type":"object","required":["secretName","shareName"],"properties":{"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretName":{"description":"secretName is the name of secret that contains Azure Storage Account Name and Key","type":"string","default":""},"shareName":{"description":"shareName is the azure share Name","type":"string","default":""}}},"io.k8s.api.core.v1.CSIVolumeSource":{"description":"Represents a source location of a volume to mount, managed by an external CSI driver","type":"object","required":["driver"],"properties":{"driver":{"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.","type":"string","default":""},"fsType":{"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.","type":"string"},"nodePublishSecretRef":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"readOnly":{"description":"readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).","type":"boolean"},"volumeAttributes":{"description":"volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.","type":"object","additionalProperties":{"type":"string","default":""}}}},"io.k8s.api.core.v1.Capabilities":{"description":"Adds and removes POSIX capabilities from running containers.","type":"object","properties":{"add":{"description":"Added capabilities","type":"array","items":{"type":"string","default":""}},"drop":{"description":"Removed capabilities","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.CephFSVolumeSource":{"description":"Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["monitors"],"properties":{"monitors":{"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","type":"array","items":{"type":"string","default":""}},"path":{"description":"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /","type":"string"},"readOnly":{"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","type":"boolean"},"secretFile":{"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","type":"string"},"secretRef":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"user":{"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","type":"string"}}},"io.k8s.api.core.v1.CinderVolumeSource":{"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.","type":"object","required":["volumeID"],"properties":{"fsType":{"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","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"description":"secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"volumeID":{"description":"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","type":"string","default":""}}},"io.k8s.api.core.v1.ConfigMapEnvSource":{"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.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the ConfigMap must be defined","type":"boolean"}}},"io.k8s.api.core.v1.ConfigMapKeySelector":{"description":"Selects a key from a ConfigMap.","type":"object","required":["key"],"properties":{"key":{"description":"The key to select.","type":"string","default":""},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the ConfigMap or its key must be defined","type":"boolean"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ConfigMapProjection":{"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.","type":"object","properties":{"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional specify whether the ConfigMap or its keys must be defined","type":"boolean"}}},"io.k8s.api.core.v1.ConfigMapVolumeSource":{"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.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional specify whether the ConfigMap or its keys must be defined","type":"boolean"}}},"io.k8s.api.core.v1.Container":{"description":"A single application container that you want to run within a pod.","type":"object","required":["name"],"properties":{"args":{"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","type":"array","items":{"type":"string","default":""}},"command":{"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","type":"array","items":{"type":"string","default":""}},"env":{"description":"List of environment variables to set in the container. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvVar"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"envFrom":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvFromSource"}},"image":{"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.","type":"string"},"imagePullPolicy":{"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\n","type":"string"},"lifecycle":{"description":"Actions that the management system should take in response to container lifecycle events. Cannot be updated.","$ref":"#/components/schemas/io.k8s.api.core.v1.Lifecycle"},"livenessProbe":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"name":{"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.","type":"string","default":""},"ports":{"description":"List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. 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. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerPort"},"x-kubernetes-list-map-keys":["containerPort","protocol"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"containerPort","x-kubernetes-patch-strategy":"merge"},"readinessProbe":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"resources":{"description":"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceRequirements"},"securityContext":{"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/","$ref":"#/components/schemas/io.k8s.api.core.v1.SecurityContext"},"startupProbe":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"stdin":{"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.","type":"boolean"},"stdinOnce":{"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","type":"boolean"},"terminationMessagePath":{"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.","type":"string"},"terminationMessagePolicy":{"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\n","type":"string"},"tty":{"description":"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.","type":"boolean"},"volumeDevices":{"description":"volumeDevices is the list of block devices to be used by the container.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeDevice"},"x-kubernetes-patch-merge-key":"devicePath","x-kubernetes-patch-strategy":"merge"},"volumeMounts":{"description":"Pod volumes to mount into the container's filesystem. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeMount"},"x-kubernetes-patch-merge-key":"mountPath","x-kubernetes-patch-strategy":"merge"},"workingDir":{"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.","type":"string"}}},"io.k8s.api.core.v1.ContainerPort":{"description":"ContainerPort represents a network port in a single container.","type":"object","required":["containerPort"],"properties":{"containerPort":{"description":"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \u003c x \u003c 65536.","type":"integer","format":"int32","default":0},"hostIP":{"description":"What host IP to bind the external port to.","type":"string"},"hostPort":{"description":"Number of port to expose on the host. If specified, this must be a valid port number, 0 \u003c x \u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.","type":"integer","format":"int32"},"name":{"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.","type":"string"},"protocol":{"description":"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n\n","type":"string","default":"TCP"}}},"io.k8s.api.core.v1.DownwardAPIProjection":{"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.","type":"object","properties":{"items":{"description":"Items is a list of DownwardAPIVolume file","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeFile"}}}},"io.k8s.api.core.v1.DownwardAPIVolumeFile":{"description":"DownwardAPIVolumeFile represents information to create the file containing the pod field","type":"object","required":["path"],"properties":{"fieldRef":{"description":"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.","$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectFieldSelector"},"mode":{"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.","type":"integer","format":"int32"},"path":{"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 '..'","type":"string","default":""},"resourceFieldRef":{"description":"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.","$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceFieldSelector"}}},"io.k8s.api.core.v1.DownwardAPIVolumeSource":{"description":"DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"description":"Items is a list of downward API volume file","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeFile"}}}},"io.k8s.api.core.v1.EmptyDirVolumeSource":{"description":"Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.","type":"object","properties":{"medium":{"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","type":"string"},"sizeLimit":{"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: http://kubernetes.io/docs/user-guide/volumes#emptydir","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}}},"io.k8s.api.core.v1.EnvFromSource":{"description":"EnvFromSource represents the source of a set of ConfigMaps","type":"object","properties":{"configMapRef":{"description":"The ConfigMap to select from","$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapEnvSource"},"prefix":{"description":"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.","type":"string"},"secretRef":{"description":"The Secret to select from","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretEnvSource"}}},"io.k8s.api.core.v1.EnvVar":{"description":"EnvVar represents an environment variable present in a Container.","type":"object","required":["name"],"properties":{"name":{"description":"Name of the environment variable. Must be a C_IDENTIFIER.","type":"string","default":""},"value":{"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 \"\".","type":"string"},"valueFrom":{"description":"Source for the environment variable's value. Cannot be used if value is not empty.","$ref":"#/components/schemas/io.k8s.api.core.v1.EnvVarSource"}}},"io.k8s.api.core.v1.EnvVarSource":{"description":"EnvVarSource represents a source for the value of an EnvVar.","type":"object","properties":{"configMapKeyRef":{"description":"Selects a key of a ConfigMap.","$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapKeySelector"},"fieldRef":{"description":"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\u003cKEY\u003e']`, `metadata.annotations['\u003cKEY\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.","$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectFieldSelector"},"resourceFieldRef":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceFieldSelector"},"secretKeyRef":{"description":"Selects a key of a secret in the pod's namespace","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretKeySelector"}}},"io.k8s.api.core.v1.EphemeralContainer":{"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\nThis is a beta feature available on clusters that haven't disabled the EphemeralContainers feature gate.","type":"object","required":["name"],"properties":{"args":{"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","type":"array","items":{"type":"string","default":""}},"command":{"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","type":"array","items":{"type":"string","default":""}},"env":{"description":"List of environment variables to set in the container. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvVar"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"envFrom":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvFromSource"}},"image":{"description":"Container image name. More info: https://kubernetes.io/docs/concepts/containers/images","type":"string"},"imagePullPolicy":{"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\n","type":"string"},"lifecycle":{"description":"Lifecycle is not allowed for ephemeral containers.","$ref":"#/components/schemas/io.k8s.api.core.v1.Lifecycle"},"livenessProbe":{"description":"Probes are not allowed for ephemeral containers.","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"name":{"description":"Name of the ephemeral container specified as a DNS_LABEL. This name must be unique among all containers, init containers and ephemeral containers.","type":"string","default":""},"ports":{"description":"Ports are not allowed for ephemeral containers.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerPort"},"x-kubernetes-list-map-keys":["containerPort","protocol"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"containerPort","x-kubernetes-patch-strategy":"merge"},"readinessProbe":{"description":"Probes are not allowed for ephemeral containers.","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"resources":{"description":"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources already allocated to the pod.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceRequirements"},"securityContext":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SecurityContext"},"startupProbe":{"description":"Probes are not allowed for ephemeral containers.","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"stdin":{"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.","type":"boolean"},"stdinOnce":{"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","type":"boolean"},"targetContainerName":{"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.","type":"string"},"terminationMessagePath":{"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.","type":"string"},"terminationMessagePolicy":{"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\n","type":"string"},"tty":{"description":"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.","type":"boolean"},"volumeDevices":{"description":"volumeDevices is the list of block devices to be used by the container.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeDevice"},"x-kubernetes-patch-merge-key":"devicePath","x-kubernetes-patch-strategy":"merge"},"volumeMounts":{"description":"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeMount"},"x-kubernetes-patch-merge-key":"mountPath","x-kubernetes-patch-strategy":"merge"},"workingDir":{"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.","type":"string"}}},"io.k8s.api.core.v1.EphemeralVolumeSource":{"description":"Represents an ephemeral volume that is handled by a normal storage driver.","type":"object","properties":{"volumeClaimTemplate":{"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 `\u003cpod name\u003e-\u003cvolume name\u003e` where `\u003cvolume name\u003e` 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.","$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimTemplate"}}},"io.k8s.api.core.v1.ExecAction":{"description":"ExecAction describes a \"run in container\" action.","type":"object","properties":{"command":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.FCVolumeSource":{"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.","type":"object","properties":{"fsType":{"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.","type":"string"},"lun":{"description":"lun is Optional: FC target lun number","type":"integer","format":"int32"},"readOnly":{"description":"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"targetWWNs":{"description":"targetWWNs is Optional: FC target worldwide names (WWNs)","type":"array","items":{"type":"string","default":""}},"wwids":{"description":"wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.FlexVolumeSource":{"description":"FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.","type":"object","required":["driver"],"properties":{"driver":{"description":"driver is the name of the driver to use for this volume.","type":"string","default":""},"fsType":{"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.","type":"string"},"options":{"description":"options is Optional: this field holds extra command options if any.","type":"object","additionalProperties":{"type":"string","default":""}},"readOnly":{"description":"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}}},"io.k8s.api.core.v1.FlockerVolumeSource":{"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.","type":"object","properties":{"datasetName":{"description":"datasetName is Name of the dataset stored as metadata -\u003e name on the dataset for Flocker should be considered as deprecated","type":"string"},"datasetUUID":{"description":"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset","type":"string"}}},"io.k8s.api.core.v1.GCEPersistentDiskVolumeSource":{"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.","type":"object","required":["pdName"],"properties":{"fsType":{"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","type":"string"},"partition":{"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","type":"integer","format":"int32"},"pdName":{"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","type":"string","default":""},"readOnly":{"description":"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk","type":"boolean"}}},"io.k8s.api.core.v1.GRPCAction":{"type":"object","required":["port"],"properties":{"port":{"description":"Port number of the gRPC service. Number must be in the range 1 to 65535.","type":"integer","format":"int32","default":0},"service":{"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.","type":"string","default":""}}},"io.k8s.api.core.v1.GitRepoVolumeSource":{"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.","type":"object","required":["repository"],"properties":{"directory":{"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.","type":"string"},"repository":{"description":"repository is the URL","type":"string","default":""},"revision":{"description":"revision is the commit hash for the specified revision.","type":"string"}}},"io.k8s.api.core.v1.GlusterfsVolumeSource":{"description":"Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["endpoints","path"],"properties":{"endpoints":{"description":"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"path":{"description":"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"readOnly":{"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","type":"boolean"}}},"io.k8s.api.core.v1.HTTPGetAction":{"description":"HTTPGetAction describes an action based on HTTP Get requests.","type":"object","required":["port"],"properties":{"host":{"description":"Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.","type":"string"},"httpHeaders":{"description":"Custom headers to set in the request. HTTP allows repeated headers.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.HTTPHeader"}},"path":{"description":"Path to access on the HTTP server.","type":"string"},"port":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString"},"scheme":{"description":"Scheme to use for connecting to the host. Defaults to HTTP.\n\n","type":"string"}}},"io.k8s.api.core.v1.HTTPHeader":{"description":"HTTPHeader describes a custom header to be used in HTTP probes","type":"object","required":["name","value"],"properties":{"name":{"description":"The header field name","type":"string","default":""},"value":{"description":"The header field value","type":"string","default":""}}},"io.k8s.api.core.v1.HostAlias":{"description":"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.","type":"object","properties":{"hostnames":{"description":"Hostnames for the above IP address.","type":"array","items":{"type":"string","default":""}},"ip":{"description":"IP address of the host file entry.","type":"string"}}},"io.k8s.api.core.v1.HostPathVolumeSource":{"description":"Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.","type":"object","required":["path"],"properties":{"path":{"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","type":"string","default":""},"type":{"description":"type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath","type":"string"}}},"io.k8s.api.core.v1.ISCSIVolumeSource":{"description":"Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.","type":"object","required":["targetPortal","iqn","lun"],"properties":{"chapAuthDiscovery":{"description":"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication","type":"boolean"},"chapAuthSession":{"description":"chapAuthSession defines whether support iSCSI Session CHAP authentication","type":"boolean"},"fsType":{"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","type":"string"},"initiatorName":{"description":"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \u003ctarget portal\u003e:\u003cvolume name\u003e will be created for the connection.","type":"string"},"iqn":{"description":"iqn is the target iSCSI Qualified Name.","type":"string","default":""},"iscsiInterface":{"description":"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).","type":"string"},"lun":{"description":"lun represents iSCSI Target Lun number.","type":"integer","format":"int32","default":0},"portals":{"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).","type":"array","items":{"type":"string","default":""}},"readOnly":{"description":"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.","type":"boolean"},"secretRef":{"description":"secretRef is the CHAP Secret for iSCSI target and initiator authentication","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"targetPortal":{"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).","type":"string","default":""}}},"io.k8s.api.core.v1.KeyToPath":{"description":"Maps a string key to a path within a volume.","type":"object","required":["key","path"],"properties":{"key":{"description":"key is the key to project.","type":"string","default":""},"mode":{"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.","type":"integer","format":"int32"},"path":{"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 '..'.","type":"string","default":""}}},"io.k8s.api.core.v1.Lifecycle":{"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.","type":"object","properties":{"postStart":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.LifecycleHandler"},"preStop":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.LifecycleHandler"}}},"io.k8s.api.core.v1.LifecycleHandler":{"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.","type":"object","properties":{"exec":{"description":"Exec specifies the action to take.","$ref":"#/components/schemas/io.k8s.api.core.v1.ExecAction"},"httpGet":{"description":"HTTPGet specifies the http request to perform.","$ref":"#/components/schemas/io.k8s.api.core.v1.HTTPGetAction"},"tcpSocket":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.TCPSocketAction"}}},"io.k8s.api.core.v1.LocalObjectReference":{"description":"LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.NFSVolumeSource":{"description":"Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.","type":"object","required":["server","path"],"properties":{"path":{"description":"path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs","type":"string","default":""},"readOnly":{"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","type":"boolean"},"server":{"description":"server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs","type":"string","default":""}}},"io.k8s.api.core.v1.NodeAffinity":{"description":"Node affinity is a group of node affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PreferredSchedulingTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelector"}}},"io.k8s.api.core.v1.NodeSelector":{"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.","type":"object","required":["nodeSelectorTerms"],"properties":{"nodeSelectorTerms":{"description":"Required. A list of node selector terms. The terms are ORed.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorTerm"}}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.NodeSelectorRequirement":{"description":"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.","type":"object","required":["key","operator"],"properties":{"key":{"description":"The label key that the selector applies to.","type":"string","default":""},"operator":{"description":"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n\n","type":"string","default":""},"values":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.NodeSelectorTerm":{"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.","type":"object","properties":{"matchExpressions":{"description":"A list of node selector requirements by node's labels.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorRequirement"}},"matchFields":{"description":"A list of node selector requirements by node's fields.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorRequirement"}}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ObjectFieldSelector":{"description":"ObjectFieldSelector selects an APIVersioned field of an object.","type":"object","required":["fieldPath"],"properties":{"apiVersion":{"description":"Version of the schema the FieldPath is written in terms of, defaults to \"v1\".","type":"string"},"fieldPath":{"description":"Path of the field to select in the specified API version.","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ObjectReference":{"description":"ObjectReference contains enough information to let you inspect or modify the referred object.","type":"object","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"fieldPath":{"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.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"},"resourceVersion":{"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","type":"string"},"uid":{"description":"UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids","type":"string"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.PersistentVolumeClaimSpec":{"description":"PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes","type":"object","properties":{"accessModes":{"description":"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1","type":"array","items":{"type":"string","default":""}},"dataSource":{"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. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.","$ref":"#/components/schemas/io.k8s.api.core.v1.TypedLocalObjectReference"},"dataSourceRef":{"description":"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local 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, 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. There are two 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(Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled.","$ref":"#/components/schemas/io.k8s.api.core.v1.TypedLocalObjectReference"},"resources":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceRequirements"},"selector":{"description":"selector is a label query over volumes to consider for binding.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"storageClassName":{"description":"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1","type":"string"},"volumeMode":{"description":"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.","type":"string"},"volumeName":{"description":"volumeName is the binding reference to the PersistentVolume backing this claim.","type":"string"}}},"io.k8s.api.core.v1.PersistentVolumeClaimTemplate":{"description":"PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource.","type":"object","required":["spec"],"properties":{"metadata":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimSpec"}}},"io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource":{"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).","type":"object","required":["claimName"],"properties":{"claimName":{"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","type":"string","default":""},"readOnly":{"description":"readOnly Will force the ReadOnly setting in VolumeMounts. Default false.","type":"boolean"}}},"io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource":{"description":"Represents a Photon Controller persistent disk resource.","type":"object","required":["pdID"],"properties":{"fsType":{"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.","type":"string"},"pdID":{"description":"pdID is the ID that identifies Photon Controller persistent disk","type":"string","default":""}}},"io.k8s.api.core.v1.PodAffinity":{"description":"Pod affinity is a group of inter pod affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.WeightedPodAffinityTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm"}}}},"io.k8s.api.core.v1.PodAffinityTerm":{"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 \u003ctopologyKey\u003e matches that of any node on which a pod of the set of pods is running","type":"object","required":["topologyKey"],"properties":{"labelSelector":{"description":"A label query over a set of resources, in this case pods.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"namespaceSelector":{"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. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"namespaces":{"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\"","type":"array","items":{"type":"string","default":""}},"topologyKey":{"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.","type":"string","default":""}}},"io.k8s.api.core.v1.PodAntiAffinity":{"description":"Pod anti affinity is a group of inter pod anti affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.WeightedPodAffinityTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm"}}}},"io.k8s.api.core.v1.PodDNSConfig":{"description":"PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.","type":"object","properties":{"nameservers":{"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.","type":"array","items":{"type":"string","default":""}},"options":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodDNSConfigOption"}},"searches":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.PodDNSConfigOption":{"description":"PodDNSConfigOption defines DNS resolver options of a pod.","type":"object","properties":{"name":{"description":"Required.","type":"string"},"value":{"type":"string"}}},"io.k8s.api.core.v1.PodOS":{"description":"PodOS defines the OS parameters of a pod.","type":"object","required":["name"],"properties":{"name":{"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","type":"string","default":""}}},"io.k8s.api.core.v1.PodReadinessGate":{"description":"PodReadinessGate contains the reference to a pod condition","type":"object","required":["conditionType"],"properties":{"conditionType":{"description":"ConditionType refers to a condition in the pod's condition list with matching type.\n\n","type":"string","default":""}}},"io.k8s.api.core.v1.PodSecurityContext":{"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.","type":"object","properties":{"fsGroup":{"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.","type":"integer","format":"int64"},"fsGroupChangePolicy":{"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.","type":"string"},"runAsGroup":{"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.","type":"integer","format":"int64"},"runAsNonRoot":{"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.","type":"boolean"},"runAsUser":{"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.","type":"integer","format":"int64"},"seLinuxOptions":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SELinuxOptions"},"seccompProfile":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SeccompProfile"},"supplementalGroups":{"description":"A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container. Note that this field cannot be set when spec.os.name is windows.","type":"array","items":{"type":"integer","format":"int64","default":0}},"sysctls":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Sysctl"}},"windowsOptions":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.WindowsSecurityContextOptions"}}},"io.k8s.api.core.v1.PodSpec":{"description":"PodSpec is a description of a pod.","type":"object","required":["containers"],"properties":{"activeDeadlineSeconds":{"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.","type":"integer","format":"int64"},"affinity":{"description":"If specified, the pod's scheduling constraints","$ref":"#/components/schemas/io.k8s.api.core.v1.Affinity"},"automountServiceAccountToken":{"description":"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.","type":"boolean"},"containers":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Container"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"dnsConfig":{"description":"Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.","$ref":"#/components/schemas/io.k8s.api.core.v1.PodDNSConfig"},"dnsPolicy":{"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\n","type":"string"},"enableServiceLinks":{"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.","type":"boolean"},"ephemeralContainers":{"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. This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EphemeralContainer"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"hostAliases":{"description":"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.HostAlias"},"x-kubernetes-patch-merge-key":"ip","x-kubernetes-patch-strategy":"merge"},"hostIPC":{"description":"Use the host's ipc namespace. Optional: Default to false.","type":"boolean"},"hostNetwork":{"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.","type":"boolean"},"hostPID":{"description":"Use the host's pid namespace. Optional: Default to false.","type":"boolean"},"hostname":{"description":"Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.","type":"string"},"imagePullSecrets":{"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. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"initContainers":{"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/","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Container"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"nodeName":{"description":"NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.","type":"string"},"nodeSelector":{"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/","type":"object","additionalProperties":{"type":"string","default":""},"x-kubernetes-map-type":"atomic"},"os":{"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.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.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 This is an alpha field and requires the IdentifyPodOS feature","$ref":"#/components/schemas/io.k8s.api.core.v1.PodOS"},"overhead":{"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 This field is beta-level as of Kubernetes v1.18, and is only honored by servers that enable the PodOverhead feature.","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"preemptionPolicy":{"description":"PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset.","type":"string"},"priority":{"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.","type":"integer","format":"int32"},"priorityClassName":{"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.","type":"string"},"readinessGates":{"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","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodReadinessGate"}},"restartPolicy":{"description":"Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\n\n","type":"string"},"runtimeClassName":{"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 This is a beta feature as of Kubernetes v1.14.","type":"string"},"schedulerName":{"description":"If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.","type":"string"},"securityContext":{"description":"SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.","$ref":"#/components/schemas/io.k8s.api.core.v1.PodSecurityContext"},"serviceAccount":{"description":"DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.","type":"string"},"serviceAccountName":{"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/","type":"string"},"setHostnameAsFQDN":{"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.","type":"boolean"},"shareProcessNamespace":{"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.","type":"boolean"},"subdomain":{"description":"If specified, the fully qualified Pod hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the pod will not have a domainname at all.","type":"string"},"terminationGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"tolerations":{"description":"If specified, the pod's tolerations.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Toleration"}},"topologySpreadConstraints":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.TopologySpreadConstraint"},"x-kubernetes-list-map-keys":["topologyKey","whenUnsatisfiable"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"topologyKey","x-kubernetes-patch-strategy":"merge"},"volumes":{"description":"List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Volume"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge,retainKeys"}}},"io.k8s.api.core.v1.PodTemplateSpec":{"description":"PodTemplateSpec describes the data a pod should have when created from a template","type":"object","properties":{"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodSpec"}}},"io.k8s.api.core.v1.PortworxVolumeSource":{"description":"PortworxVolumeSource represents a Portworx volume resource.","type":"object","required":["volumeID"],"properties":{"fsType":{"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.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"volumeID":{"description":"volumeID uniquely identifies a Portworx volume","type":"string","default":""}}},"io.k8s.api.core.v1.PreferredSchedulingTerm":{"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).","type":"object","required":["weight","preference"],"properties":{"preference":{"description":"A node selector term, associated with the corresponding weight.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorTerm"},"weight":{"description":"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.Probe":{"description":"Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.","type":"object","properties":{"exec":{"description":"Exec specifies the action to take.","$ref":"#/components/schemas/io.k8s.api.core.v1.ExecAction"},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.","type":"integer","format":"int32"},"grpc":{"description":"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.","$ref":"#/components/schemas/io.k8s.api.core.v1.GRPCAction"},"httpGet":{"description":"HTTPGet specifies the http request to perform.","$ref":"#/components/schemas/io.k8s.api.core.v1.HTTPGetAction"},"initialDelaySeconds":{"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","type":"integer","format":"int32"},"periodSeconds":{"description":"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.","type":"integer","format":"int32"},"successThreshold":{"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.","type":"integer","format":"int32"},"tcpSocket":{"description":"TCPSocket specifies an action involving a TCP port.","$ref":"#/components/schemas/io.k8s.api.core.v1.TCPSocketAction"},"terminationGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"timeoutSeconds":{"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","type":"integer","format":"int32"}}},"io.k8s.api.core.v1.ProjectedVolumeSource":{"description":"Represents a projected volume source","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"sources":{"description":"sources is the list of volume projections","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeProjection"}}}},"io.k8s.api.core.v1.QuobyteVolumeSource":{"description":"Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.","type":"object","required":["registry","volume"],"properties":{"group":{"description":"group to map volume access to Default is no group","type":"string"},"readOnly":{"description":"readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.","type":"boolean"},"registry":{"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","type":"string","default":""},"tenant":{"description":"tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin","type":"string"},"user":{"description":"user to map volume access to Defaults to serivceaccount user","type":"string"},"volume":{"description":"volume is a string that references an already created Quobyte volume by name.","type":"string","default":""}}},"io.k8s.api.core.v1.RBDVolumeSource":{"description":"Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.","type":"object","required":["monitors","image"],"properties":{"fsType":{"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","type":"string"},"image":{"description":"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string","default":""},"keyring":{"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","type":"string"},"monitors":{"description":"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"array","items":{"type":"string","default":""}},"pool":{"description":"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"user":{"description":"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"}}},"io.k8s.api.core.v1.ResourceFieldSelector":{"description":"ResourceFieldSelector represents container resources (cpu, memory) and their output format","type":"object","required":["resource"],"properties":{"containerName":{"description":"Container name: required for volumes, optional for env vars","type":"string"},"divisor":{"description":"Specifies the output format of the exposed resources, defaults to \"1\"","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"},"resource":{"description":"Required: resource to select","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ResourceRequirements":{"description":"ResourceRequirements describes the compute resource requirements.","type":"object","properties":{"limits":{"description":"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"requests":{"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. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}}}},"io.k8s.api.core.v1.SELinuxOptions":{"description":"SELinuxOptions are the labels to be applied to the container","type":"object","properties":{"level":{"description":"Level is SELinux level label that applies to the container.","type":"string"},"role":{"description":"Role is a SELinux role label that applies to the container.","type":"string"},"type":{"description":"Type is a SELinux type label that applies to the container.","type":"string"},"user":{"description":"User is a SELinux user label that applies to the container.","type":"string"}}},"io.k8s.api.core.v1.ScaleIOVolumeSource":{"description":"ScaleIOVolumeSource represents a persistent ScaleIO volume","type":"object","required":["gateway","system","secretRef"],"properties":{"fsType":{"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\".","type":"string"},"gateway":{"description":"gateway is the host address of the ScaleIO API Gateway.","type":"string","default":""},"protectionDomain":{"description":"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.","type":"string"},"readOnly":{"description":"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"sslEnabled":{"description":"sslEnabled Flag enable/disable SSL communication with Gateway, default false","type":"boolean"},"storageMode":{"description":"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.","type":"string"},"storagePool":{"description":"storagePool is the ScaleIO Storage Pool associated with the protection domain.","type":"string"},"system":{"description":"system is the name of the storage system as configured in ScaleIO.","type":"string","default":""},"volumeName":{"description":"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.","type":"string"}}},"io.k8s.api.core.v1.SeccompProfile":{"description":"SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set.","type":"object","required":["type"],"properties":{"localhostProfile":{"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 only be set if type is \"Localhost\".","type":"string"},"type":{"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\n","type":"string","default":""}},"x-kubernetes-unions":[{"discriminator":"type","fields-to-discriminateBy":{"localhostProfile":"LocalhostProfile"}}]},"io.k8s.api.core.v1.SecretEnvSource":{"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.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the Secret must be defined","type":"boolean"}}},"io.k8s.api.core.v1.SecretKeySelector":{"description":"SecretKeySelector selects a key of a Secret.","type":"object","required":["key"],"properties":{"key":{"description":"The key of the secret to select from. Must be a valid secret key.","type":"string","default":""},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the Secret or its key must be defined","type":"boolean"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.SecretProjection":{"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.","type":"object","properties":{"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional field specify whether the Secret or its key must be defined","type":"boolean"}}},"io.k8s.api.core.v1.SecretVolumeSource":{"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.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}},"optional":{"description":"optional field specify whether the Secret or its keys must be defined","type":"boolean"},"secretName":{"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","type":"string"}}},"io.k8s.api.core.v1.SecurityContext":{"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.","type":"object","properties":{"allowPrivilegeEscalation":{"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.","type":"boolean"},"capabilities":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.Capabilities"},"privileged":{"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.","type":"boolean"},"procMount":{"description":"procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount 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.","type":"string"},"readOnlyRootFilesystem":{"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.","type":"boolean"},"runAsGroup":{"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.","type":"integer","format":"int64"},"runAsNonRoot":{"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.","type":"boolean"},"runAsUser":{"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.","type":"integer","format":"int64"},"seLinuxOptions":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SELinuxOptions"},"seccompProfile":{"description":"The seccomp options to use by this container. If seccomp options are provided at both the pod \u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.","$ref":"#/components/schemas/io.k8s.api.core.v1.SeccompProfile"},"windowsOptions":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.WindowsSecurityContextOptions"}}},"io.k8s.api.core.v1.ServiceAccountTokenProjection":{"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).","type":"object","required":["path"],"properties":{"audience":{"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.","type":"string"},"expirationSeconds":{"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.","type":"integer","format":"int64"},"path":{"description":"path is the path relative to the mount point of the file to project the token into.","type":"string","default":""}}},"io.k8s.api.core.v1.StorageOSVolumeSource":{"description":"Represents a StorageOS persistent volume resource.","type":"object","properties":{"fsType":{"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.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"volumeName":{"description":"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.","type":"string"},"volumeNamespace":{"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.","type":"string"}}},"io.k8s.api.core.v1.Sysctl":{"description":"Sysctl defines a kernel parameter to be set","type":"object","required":["name","value"],"properties":{"name":{"description":"Name of a property to set","type":"string","default":""},"value":{"description":"Value of a property to set","type":"string","default":""}}},"io.k8s.api.core.v1.TCPSocketAction":{"description":"TCPSocketAction describes an action based on opening a socket","type":"object","required":["port"],"properties":{"host":{"description":"Optional: Host name to connect to, defaults to the pod IP.","type":"string"},"port":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString"}}},"io.k8s.api.core.v1.Toleration":{"description":"The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.","type":"object","properties":{"effect":{"description":"Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n\n","type":"string"},"key":{"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.","type":"string"},"operator":{"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\n","type":"string"},"tolerationSeconds":{"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.","type":"integer","format":"int64"},"value":{"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.","type":"string"}}},"io.k8s.api.core.v1.TopologySpreadConstraint":{"description":"TopologySpreadConstraint specifies how to spread matching pods among the given topology.","type":"object","required":["maxSkew","topologyKey","whenUnsatisfiable"],"properties":{"labelSelector":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"maxSkew":{"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. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) 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.","type":"integer","format":"int32","default":0},"topologyKey":{"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 \u003ckey, value\u003e as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.","type":"string","default":""},"whenUnsatisfiable":{"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\n","type":"string","default":""}}},"io.k8s.api.core.v1.TypedLocalObjectReference":{"description":"TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.","type":"object","required":["kind","name"],"properties":{"apiGroup":{"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.","type":"string"},"kind":{"description":"Kind is the type of resource being referenced","type":"string","default":""},"name":{"description":"Name is the name of resource being referenced","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.Volume":{"description":"Volume represents a named volume in a pod that may be accessed by any container in the pod.","type":"object","required":["name"],"properties":{"awsElasticBlockStore":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource"},"azureDisk":{"description":"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.","$ref":"#/components/schemas/io.k8s.api.core.v1.AzureDiskVolumeSource"},"azureFile":{"description":"azureFile represents an Azure File Service mount on the host and bind mount to the pod.","$ref":"#/components/schemas/io.k8s.api.core.v1.AzureFileVolumeSource"},"cephfs":{"description":"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime","$ref":"#/components/schemas/io.k8s.api.core.v1.CephFSVolumeSource"},"cinder":{"description":"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","$ref":"#/components/schemas/io.k8s.api.core.v1.CinderVolumeSource"},"configMap":{"description":"configMap represents a configMap that should populate this volume","$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapVolumeSource"},"csi":{"description":"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).","$ref":"#/components/schemas/io.k8s.api.core.v1.CSIVolumeSource"},"downwardAPI":{"description":"downwardAPI represents downward API about the pod that should populate this volume","$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeSource"},"emptyDir":{"description":"emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir","$ref":"#/components/schemas/io.k8s.api.core.v1.EmptyDirVolumeSource"},"ephemeral":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.EphemeralVolumeSource"},"fc":{"description":"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.","$ref":"#/components/schemas/io.k8s.api.core.v1.FCVolumeSource"},"flexVolume":{"description":"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.","$ref":"#/components/schemas/io.k8s.api.core.v1.FlexVolumeSource"},"flocker":{"description":"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running","$ref":"#/components/schemas/io.k8s.api.core.v1.FlockerVolumeSource"},"gcePersistentDisk":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource"},"gitRepo":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.GitRepoVolumeSource"},"glusterfs":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.GlusterfsVolumeSource"},"hostPath":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.HostPathVolumeSource"},"iscsi":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.ISCSIVolumeSource"},"name":{"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","type":"string","default":""},"nfs":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.NFSVolumeSource"},"persistentVolumeClaim":{"description":"persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims","$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource"},"photonPersistentDisk":{"description":"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine","$ref":"#/components/schemas/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource"},"portworxVolume":{"description":"portworxVolume represents a portworx volume attached and mounted on kubelets host machine","$ref":"#/components/schemas/io.k8s.api.core.v1.PortworxVolumeSource"},"projected":{"description":"projected items for all in one resources secrets, configmaps, and downward API","$ref":"#/components/schemas/io.k8s.api.core.v1.ProjectedVolumeSource"},"quobyte":{"description":"quobyte represents a Quobyte mount on the host that shares a pod's lifetime","$ref":"#/components/schemas/io.k8s.api.core.v1.QuobyteVolumeSource"},"rbd":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.RBDVolumeSource"},"scaleIO":{"description":"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.","$ref":"#/components/schemas/io.k8s.api.core.v1.ScaleIOVolumeSource"},"secret":{"description":"secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretVolumeSource"},"storageos":{"description":"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.","$ref":"#/components/schemas/io.k8s.api.core.v1.StorageOSVolumeSource"},"vsphereVolume":{"description":"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine","$ref":"#/components/schemas/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource"}}},"io.k8s.api.core.v1.VolumeDevice":{"description":"volumeDevice describes a mapping of a raw block device within a container.","type":"object","required":["name","devicePath"],"properties":{"devicePath":{"description":"devicePath is the path inside of the container that the device will be mapped to.","type":"string","default":""},"name":{"description":"name must match the name of a persistentVolumeClaim in the pod","type":"string","default":""}}},"io.k8s.api.core.v1.VolumeMount":{"description":"VolumeMount describes a mounting of a Volume within a container.","type":"object","required":["name","mountPath"],"properties":{"mountPath":{"description":"Path within the container at which the volume should be mounted. Must not contain ':'.","type":"string","default":""},"mountPropagation":{"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.","type":"string"},"name":{"description":"This must match the Name of a Volume.","type":"string","default":""},"readOnly":{"description":"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.","type":"boolean"},"subPath":{"description":"Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).","type":"string"},"subPathExpr":{"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.","type":"string"}}},"io.k8s.api.core.v1.VolumeProjection":{"description":"Projection that may be projected along with other supported volume types","type":"object","properties":{"configMap":{"description":"configMap information about the configMap data to project","$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapProjection"},"downwardAPI":{"description":"downwardAPI information about the downwardAPI data to project","$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIProjection"},"secret":{"description":"secret information about the secret data to project","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretProjection"},"serviceAccountToken":{"description":"serviceAccountToken is information about the serviceAccountToken data to project","$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountTokenProjection"}}},"io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource":{"description":"Represents a vSphere volume resource.","type":"object","required":["volumePath"],"properties":{"fsType":{"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.","type":"string"},"storagePolicyID":{"description":"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.","type":"string"},"storagePolicyName":{"description":"storagePolicyName is the storage Policy Based Management (SPBM) profile name.","type":"string"},"volumePath":{"description":"volumePath is the path that identifies vSphere volume vmdk","type":"string","default":""}}},"io.k8s.api.core.v1.WeightedPodAffinityTerm":{"description":"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)","type":"object","required":["weight","podAffinityTerm"],"properties":{"podAffinityTerm":{"description":"Required. A pod affinity term, associated with the corresponding weight.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm"},"weight":{"description":"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.WindowsSecurityContextOptions":{"description":"WindowsSecurityContextOptions contain Windows-specific options and credentials.","type":"object","properties":{"gmsaCredentialSpec":{"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.","type":"string"},"gmsaCredentialSpecName":{"description":"GMSACredentialSpecName is the name of the GMSA credential spec to use.","type":"string"},"hostProcess":{"description":"HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. 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.","type":"boolean"},"runAsUserName":{"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.","type":"string"}}},"io.k8s.apimachinery.pkg.api.resource.Quantity":{"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\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\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 a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 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.","type":"string"},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResource":{"description":"APIResource specifies the name of a resource and whether it is namespaced.","type":"object","required":["name","singularName","namespaced","kind","verbs"],"properties":{"categories":{"description":"categories is a list of the grouped resources this resource belongs to (e.g. 'all')","type":"array","items":{"type":"string","default":""}},"group":{"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\".","type":"string"},"kind":{"description":"kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')","type":"string","default":""},"name":{"description":"name is the plural name of the resource.","type":"string","default":""},"namespaced":{"description":"namespaced indicates if a resource is namespaced or not.","type":"boolean","default":false},"shortNames":{"description":"shortNames is a list of suggested short names of the resource.","type":"array","items":{"type":"string","default":""}},"singularName":{"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.","type":"string","default":""},"storageVersionHash":{"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.","type":"string"},"verbs":{"description":"verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)","type":"array","items":{"type":"string","default":""}},"version":{"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)\".","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList":{"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.","type":"object","required":["groupVersion","resources"],"properties":{"apiVersion":{"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","type":"string"},"groupVersion":{"description":"groupVersion is the group and version this APIResourceList is for.","type":"string","default":""},"kind":{"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","type":"string"},"resources":{"description":"resources contains the name of the resources and if they are namespaced.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResource"}}},"x-kubernetes-group-version-kind":[{"group":"","kind":"APIResourceList","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"},"propagationPolicy":{"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.","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta2"},{"group":"batch","kind":"DeleteOptions","version":"v1"},{"group":"batch","kind":"DeleteOptions","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"extensions","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"policy","kind":"DeleteOptions","version":"v1"},{"group":"policy","kind":"DeleteOptions","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector":{"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.","type":"object","properties":{"matchExpressions":{"description":"matchExpressions is a list of label selector requirements. The requirements are ANDed.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement"}},"matchLabels":{"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.","type":"object","additionalProperties":{"type":"string","default":""}}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement":{"description":"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.","type":"object","required":["key","operator"],"properties":{"key":{"description":"key is the label key that the selector applies to.","type":"string","default":"","x-kubernetes-patch-merge-key":"key","x-kubernetes-patch-strategy":"merge"},"operator":{"description":"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.","type":"string","default":""},"values":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"selfLink is DEPRECATED read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"clusterName":{"description":"The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.","type":"string"},"creationTimestamp":{"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","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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 NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"selfLink is DEPRECATED read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"},"reason":{"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.","type":"string"},"status":{"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","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Status","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"},"io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent":{"description":"Event represents a single event to a watched resource.","type":"object","required":["type","object"],"properties":{"object":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.runtime.RawExtension"},"type":{"type":"string","default":""}},"x-kubernetes-group-version-kind":[{"group":"","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1"},{"group":"apps","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta2"},{"group":"batch","kind":"WatchEvent","version":"v1"},{"group":"batch","kind":"WatchEvent","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"extensions","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"policy","kind":"WatchEvent","version":"v1"},{"group":"policy","kind":"WatchEvent","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.runtime.RawExtension":{"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: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.Object `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// External package: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.RawExtension `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// On the wire, the JSON will look something like this: {\n\t\"kind\":\"MyAPIObject\",\n\t\"apiVersion\":\"v1\",\n\t\"myPlugin\": {\n\t\t\"kind\":\"PluginA\",\n\t\t\"aOption\":\"foo\",\n\t},\n}\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.)","type":"object"},"io.k8s.apimachinery.pkg.util.intstr.IntOrString":{"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.","type":"string","format":"int-or-string"}}}}v1beta1.json000066400000000000000000007275721453663023200330150ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/testdata/openapi_v3_0_0/batch{"openapi":"3.0.0","info":{"title":"Kubernetes","version":"v1.24.0"},"paths":{"/apis/batch/v1beta1/":{"get":{"tags":["batch_v1beta1"],"description":"get available resources","operationId":"getBatchV1beta1APIResources","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}}}}}}},"/apis/batch/v1beta1/cronjobs":{"get":{"tags":["batch_v1beta1"],"description":"list or watch objects of kind CronJob","operationId":"listBatchV1beta1CronJobForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJobList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJobList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJobList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJobList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJobList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/batch/v1beta1/namespaces/{namespace}/cronjobs":{"get":{"tags":["batch_v1beta1"],"description":"list or watch objects of kind CronJob","operationId":"listBatchV1beta1NamespacedCronJob","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJobList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJobList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJobList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJobList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJobList"}}}}}},"post":{"tags":["batch_v1beta1"],"description":"create a CronJob","operationId":"createBatchV1beta1NamespacedCronJob","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}}}}}},"delete":{"tags":["batch_v1beta1"],"description":"delete collection of CronJob","operationId":"deleteBatchV1beta1CollectionNamespacedCronJob","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/batch/v1beta1/namespaces/{namespace}/cronjobs/{name}":{"get":{"tags":["batch_v1beta1"],"description":"read the specified CronJob","operationId":"readBatchV1beta1NamespacedCronJob","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}}}}}},"put":{"tags":["batch_v1beta1"],"description":"replace the specified CronJob","operationId":"replaceBatchV1beta1NamespacedCronJob","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}}}}}},"delete":{"tags":["batch_v1beta1"],"description":"delete a CronJob","operationId":"deleteBatchV1beta1NamespacedCronJob","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"patch":{"tags":["batch_v1beta1"],"description":"partially update the specified CronJob","operationId":"patchBatchV1beta1NamespacedCronJob","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the CronJob","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/batch/v1beta1/namespaces/{namespace}/cronjobs/{name}/status":{"get":{"tags":["batch_v1beta1"],"description":"read status of the specified CronJob","operationId":"readBatchV1beta1NamespacedCronJobStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}}}}}},"put":{"tags":["batch_v1beta1"],"description":"replace status of the specified CronJob","operationId":"replaceBatchV1beta1NamespacedCronJobStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}}}}}},"patch":{"tags":["batch_v1beta1"],"description":"partially update status of the specified CronJob","operationId":"patchBatchV1beta1NamespacedCronJobStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the CronJob","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/apis/batch/v1beta1/watch/cronjobs":{"get":{"tags":["batch_v1beta1"],"description":"watch individual changes to a list of CronJob. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchBatchV1beta1CronJobListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/batch/v1beta1/watch/namespaces/{namespace}/cronjobs":{"get":{"tags":["batch_v1beta1"],"description":"watch individual changes to a list of CronJob. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchBatchV1beta1NamespacedCronJobList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/apis/batch/v1beta1/watch/namespaces/{namespace}/cronjobs/{name}":{"get":{"tags":["batch_v1beta1"],"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.","operationId":"watchBatchV1beta1NamespacedCronJob","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the CronJob","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]}},"components":{"schemas":{"io.k8s.api.batch.v1.JobSpec":{"description":"JobSpec describes how the job execution will look like.","type":"object","required":["template"],"properties":{"activeDeadlineSeconds":{"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.","type":"integer","format":"int64"},"backoffLimit":{"description":"Specifies the number of retries before marking this job failed. Defaults to 6","type":"integer","format":"int32"},"completionMode":{"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\nThis field is beta-level. More completion modes can be added in the future. If the Job controller observes a mode that it doesn't recognize, the controller skips updates for the Job.","type":"string"},"completions":{"description":"Specifies the desired number of successfully finished pods the job should be run with. Setting to nil 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/","type":"integer","format":"int32"},"manualSelector":{"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","type":"boolean"},"parallelism":{"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) \u003c .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/","type":"integer","format":"int32"},"selector":{"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","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"suspend":{"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\nThis field is beta-level, gated by SuspendJob feature flag (enabled by default).","type":"boolean"},"template":{"description":"Describes the pod that will be created when executing a job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateSpec"},"ttlSecondsAfterFinished":{"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.","type":"integer","format":"int32"}}},"io.k8s.api.batch.v1beta1.CronJob":{"description":"CronJob represents the configuration of a single cron job.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJobSpec"},"status":{"description":"Current status of a cron job. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status","default":{},"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJobStatus"}},"x-kubernetes-group-version-kind":[{"group":"batch","kind":"CronJob","version":"v1beta1"}]},"io.k8s.api.batch.v1beta1.CronJobList":{"description":"CronJobList is a collection of cron jobs.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"items is the list of CronJobs.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.CronJob"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"batch","kind":"CronJobList","version":"v1beta1"}]},"io.k8s.api.batch.v1beta1.CronJobSpec":{"description":"CronJobSpec describes how the job execution will look like and when it will actually run.","type":"object","required":["schedule","jobTemplate"],"properties":{"concurrencyPolicy":{"description":"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","type":"string"},"failedJobsHistoryLimit":{"description":"The number of failed finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.","type":"integer","format":"int32"},"jobTemplate":{"description":"Specifies the job that will be created when executing a CronJob.","default":{},"$ref":"#/components/schemas/io.k8s.api.batch.v1beta1.JobTemplateSpec"},"schedule":{"description":"The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.","type":"string","default":""},"startingDeadlineSeconds":{"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.","type":"integer","format":"int64"},"successfulJobsHistoryLimit":{"description":"The number of successful finished jobs to retain. This is a pointer to distinguish between explicit zero and not specified. Defaults to 3.","type":"integer","format":"int32"},"suspend":{"description":"This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.","type":"boolean"}}},"io.k8s.api.batch.v1beta1.CronJobStatus":{"description":"CronJobStatus represents the current state of a cron job.","type":"object","properties":{"active":{"description":"A list of pointers to currently running jobs.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectReference"},"x-kubernetes-list-type":"atomic"},"lastScheduleTime":{"description":"Information when was the last time the job was successfully scheduled.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"lastSuccessfulTime":{"description":"Information when was the last time the job successfully completed.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.api.batch.v1beta1.JobTemplateSpec":{"description":"JobTemplateSpec describes the data a Job should have when created from a template","type":"object","properties":{"metadata":{"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","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.batch.v1.JobSpec"}}},"io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource":{"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.","type":"object","required":["volumeID"],"properties":{"fsType":{"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","type":"string"},"partition":{"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).","type":"integer","format":"int32"},"readOnly":{"description":"readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore","type":"boolean"},"volumeID":{"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","type":"string","default":""}}},"io.k8s.api.core.v1.Affinity":{"description":"Affinity is a group of affinity scheduling rules.","type":"object","properties":{"nodeAffinity":{"description":"Describes node affinity scheduling rules for the pod.","$ref":"#/components/schemas/io.k8s.api.core.v1.NodeAffinity"},"podAffinity":{"description":"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).","$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinity"},"podAntiAffinity":{"description":"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).","$ref":"#/components/schemas/io.k8s.api.core.v1.PodAntiAffinity"}}},"io.k8s.api.core.v1.AzureDiskVolumeSource":{"description":"AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.","type":"object","required":["diskName","diskURI"],"properties":{"cachingMode":{"description":"cachingMode is the Host Caching mode: None, Read Only, Read Write.","type":"string"},"diskName":{"description":"diskName is the Name of the data disk in the blob storage","type":"string","default":""},"diskURI":{"description":"diskURI is the URI of data disk in the blob storage","type":"string","default":""},"fsType":{"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.","type":"string"},"kind":{"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","type":"string"},"readOnly":{"description":"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"}}},"io.k8s.api.core.v1.AzureFileVolumeSource":{"description":"AzureFile represents an Azure File Service mount on the host and bind mount to the pod.","type":"object","required":["secretName","shareName"],"properties":{"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretName":{"description":"secretName is the name of secret that contains Azure Storage Account Name and Key","type":"string","default":""},"shareName":{"description":"shareName is the azure share Name","type":"string","default":""}}},"io.k8s.api.core.v1.CSIVolumeSource":{"description":"Represents a source location of a volume to mount, managed by an external CSI driver","type":"object","required":["driver"],"properties":{"driver":{"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.","type":"string","default":""},"fsType":{"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.","type":"string"},"nodePublishSecretRef":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"readOnly":{"description":"readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).","type":"boolean"},"volumeAttributes":{"description":"volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.","type":"object","additionalProperties":{"type":"string","default":""}}}},"io.k8s.api.core.v1.Capabilities":{"description":"Adds and removes POSIX capabilities from running containers.","type":"object","properties":{"add":{"description":"Added capabilities","type":"array","items":{"type":"string","default":""}},"drop":{"description":"Removed capabilities","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.CephFSVolumeSource":{"description":"Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["monitors"],"properties":{"monitors":{"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","type":"array","items":{"type":"string","default":""}},"path":{"description":"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /","type":"string"},"readOnly":{"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","type":"boolean"},"secretFile":{"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","type":"string"},"secretRef":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"user":{"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","type":"string"}}},"io.k8s.api.core.v1.CinderVolumeSource":{"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.","type":"object","required":["volumeID"],"properties":{"fsType":{"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","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"description":"secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"volumeID":{"description":"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","type":"string","default":""}}},"io.k8s.api.core.v1.ConfigMapEnvSource":{"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.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the ConfigMap must be defined","type":"boolean"}}},"io.k8s.api.core.v1.ConfigMapKeySelector":{"description":"Selects a key from a ConfigMap.","type":"object","required":["key"],"properties":{"key":{"description":"The key to select.","type":"string","default":""},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the ConfigMap or its key must be defined","type":"boolean"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ConfigMapProjection":{"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.","type":"object","properties":{"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional specify whether the ConfigMap or its keys must be defined","type":"boolean"}}},"io.k8s.api.core.v1.ConfigMapVolumeSource":{"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.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional specify whether the ConfigMap or its keys must be defined","type":"boolean"}}},"io.k8s.api.core.v1.Container":{"description":"A single application container that you want to run within a pod.","type":"object","required":["name"],"properties":{"args":{"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","type":"array","items":{"type":"string","default":""}},"command":{"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","type":"array","items":{"type":"string","default":""}},"env":{"description":"List of environment variables to set in the container. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvVar"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"envFrom":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvFromSource"}},"image":{"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.","type":"string"},"imagePullPolicy":{"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\n","type":"string"},"lifecycle":{"description":"Actions that the management system should take in response to container lifecycle events. Cannot be updated.","$ref":"#/components/schemas/io.k8s.api.core.v1.Lifecycle"},"livenessProbe":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"name":{"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.","type":"string","default":""},"ports":{"description":"List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. 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. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerPort"},"x-kubernetes-list-map-keys":["containerPort","protocol"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"containerPort","x-kubernetes-patch-strategy":"merge"},"readinessProbe":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"resources":{"description":"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceRequirements"},"securityContext":{"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/","$ref":"#/components/schemas/io.k8s.api.core.v1.SecurityContext"},"startupProbe":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"stdin":{"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.","type":"boolean"},"stdinOnce":{"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","type":"boolean"},"terminationMessagePath":{"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.","type":"string"},"terminationMessagePolicy":{"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\n","type":"string"},"tty":{"description":"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.","type":"boolean"},"volumeDevices":{"description":"volumeDevices is the list of block devices to be used by the container.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeDevice"},"x-kubernetes-patch-merge-key":"devicePath","x-kubernetes-patch-strategy":"merge"},"volumeMounts":{"description":"Pod volumes to mount into the container's filesystem. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeMount"},"x-kubernetes-patch-merge-key":"mountPath","x-kubernetes-patch-strategy":"merge"},"workingDir":{"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.","type":"string"}}},"io.k8s.api.core.v1.ContainerPort":{"description":"ContainerPort represents a network port in a single container.","type":"object","required":["containerPort"],"properties":{"containerPort":{"description":"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \u003c x \u003c 65536.","type":"integer","format":"int32","default":0},"hostIP":{"description":"What host IP to bind the external port to.","type":"string"},"hostPort":{"description":"Number of port to expose on the host. If specified, this must be a valid port number, 0 \u003c x \u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.","type":"integer","format":"int32"},"name":{"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.","type":"string"},"protocol":{"description":"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n\n","type":"string","default":"TCP"}}},"io.k8s.api.core.v1.DownwardAPIProjection":{"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.","type":"object","properties":{"items":{"description":"Items is a list of DownwardAPIVolume file","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeFile"}}}},"io.k8s.api.core.v1.DownwardAPIVolumeFile":{"description":"DownwardAPIVolumeFile represents information to create the file containing the pod field","type":"object","required":["path"],"properties":{"fieldRef":{"description":"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.","$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectFieldSelector"},"mode":{"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.","type":"integer","format":"int32"},"path":{"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 '..'","type":"string","default":""},"resourceFieldRef":{"description":"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.","$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceFieldSelector"}}},"io.k8s.api.core.v1.DownwardAPIVolumeSource":{"description":"DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"description":"Items is a list of downward API volume file","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeFile"}}}},"io.k8s.api.core.v1.EmptyDirVolumeSource":{"description":"Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.","type":"object","properties":{"medium":{"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","type":"string"},"sizeLimit":{"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: http://kubernetes.io/docs/user-guide/volumes#emptydir","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}}},"io.k8s.api.core.v1.EnvFromSource":{"description":"EnvFromSource represents the source of a set of ConfigMaps","type":"object","properties":{"configMapRef":{"description":"The ConfigMap to select from","$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapEnvSource"},"prefix":{"description":"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.","type":"string"},"secretRef":{"description":"The Secret to select from","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretEnvSource"}}},"io.k8s.api.core.v1.EnvVar":{"description":"EnvVar represents an environment variable present in a Container.","type":"object","required":["name"],"properties":{"name":{"description":"Name of the environment variable. Must be a C_IDENTIFIER.","type":"string","default":""},"value":{"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 \"\".","type":"string"},"valueFrom":{"description":"Source for the environment variable's value. Cannot be used if value is not empty.","$ref":"#/components/schemas/io.k8s.api.core.v1.EnvVarSource"}}},"io.k8s.api.core.v1.EnvVarSource":{"description":"EnvVarSource represents a source for the value of an EnvVar.","type":"object","properties":{"configMapKeyRef":{"description":"Selects a key of a ConfigMap.","$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapKeySelector"},"fieldRef":{"description":"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\u003cKEY\u003e']`, `metadata.annotations['\u003cKEY\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.","$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectFieldSelector"},"resourceFieldRef":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceFieldSelector"},"secretKeyRef":{"description":"Selects a key of a secret in the pod's namespace","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretKeySelector"}}},"io.k8s.api.core.v1.EphemeralContainer":{"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\nThis is a beta feature available on clusters that haven't disabled the EphemeralContainers feature gate.","type":"object","required":["name"],"properties":{"args":{"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","type":"array","items":{"type":"string","default":""}},"command":{"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","type":"array","items":{"type":"string","default":""}},"env":{"description":"List of environment variables to set in the container. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvVar"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"envFrom":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvFromSource"}},"image":{"description":"Container image name. More info: https://kubernetes.io/docs/concepts/containers/images","type":"string"},"imagePullPolicy":{"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\n","type":"string"},"lifecycle":{"description":"Lifecycle is not allowed for ephemeral containers.","$ref":"#/components/schemas/io.k8s.api.core.v1.Lifecycle"},"livenessProbe":{"description":"Probes are not allowed for ephemeral containers.","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"name":{"description":"Name of the ephemeral container specified as a DNS_LABEL. This name must be unique among all containers, init containers and ephemeral containers.","type":"string","default":""},"ports":{"description":"Ports are not allowed for ephemeral containers.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerPort"},"x-kubernetes-list-map-keys":["containerPort","protocol"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"containerPort","x-kubernetes-patch-strategy":"merge"},"readinessProbe":{"description":"Probes are not allowed for ephemeral containers.","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"resources":{"description":"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources already allocated to the pod.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceRequirements"},"securityContext":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SecurityContext"},"startupProbe":{"description":"Probes are not allowed for ephemeral containers.","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"stdin":{"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.","type":"boolean"},"stdinOnce":{"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","type":"boolean"},"targetContainerName":{"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.","type":"string"},"terminationMessagePath":{"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.","type":"string"},"terminationMessagePolicy":{"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\n","type":"string"},"tty":{"description":"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.","type":"boolean"},"volumeDevices":{"description":"volumeDevices is the list of block devices to be used by the container.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeDevice"},"x-kubernetes-patch-merge-key":"devicePath","x-kubernetes-patch-strategy":"merge"},"volumeMounts":{"description":"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeMount"},"x-kubernetes-patch-merge-key":"mountPath","x-kubernetes-patch-strategy":"merge"},"workingDir":{"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.","type":"string"}}},"io.k8s.api.core.v1.EphemeralVolumeSource":{"description":"Represents an ephemeral volume that is handled by a normal storage driver.","type":"object","properties":{"volumeClaimTemplate":{"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 `\u003cpod name\u003e-\u003cvolume name\u003e` where `\u003cvolume name\u003e` 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.","$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimTemplate"}}},"io.k8s.api.core.v1.ExecAction":{"description":"ExecAction describes a \"run in container\" action.","type":"object","properties":{"command":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.FCVolumeSource":{"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.","type":"object","properties":{"fsType":{"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.","type":"string"},"lun":{"description":"lun is Optional: FC target lun number","type":"integer","format":"int32"},"readOnly":{"description":"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"targetWWNs":{"description":"targetWWNs is Optional: FC target worldwide names (WWNs)","type":"array","items":{"type":"string","default":""}},"wwids":{"description":"wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.FlexVolumeSource":{"description":"FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.","type":"object","required":["driver"],"properties":{"driver":{"description":"driver is the name of the driver to use for this volume.","type":"string","default":""},"fsType":{"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.","type":"string"},"options":{"description":"options is Optional: this field holds extra command options if any.","type":"object","additionalProperties":{"type":"string","default":""}},"readOnly":{"description":"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}}},"io.k8s.api.core.v1.FlockerVolumeSource":{"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.","type":"object","properties":{"datasetName":{"description":"datasetName is Name of the dataset stored as metadata -\u003e name on the dataset for Flocker should be considered as deprecated","type":"string"},"datasetUUID":{"description":"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset","type":"string"}}},"io.k8s.api.core.v1.GCEPersistentDiskVolumeSource":{"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.","type":"object","required":["pdName"],"properties":{"fsType":{"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","type":"string"},"partition":{"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","type":"integer","format":"int32"},"pdName":{"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","type":"string","default":""},"readOnly":{"description":"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk","type":"boolean"}}},"io.k8s.api.core.v1.GRPCAction":{"type":"object","required":["port"],"properties":{"port":{"description":"Port number of the gRPC service. Number must be in the range 1 to 65535.","type":"integer","format":"int32","default":0},"service":{"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.","type":"string","default":""}}},"io.k8s.api.core.v1.GitRepoVolumeSource":{"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.","type":"object","required":["repository"],"properties":{"directory":{"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.","type":"string"},"repository":{"description":"repository is the URL","type":"string","default":""},"revision":{"description":"revision is the commit hash for the specified revision.","type":"string"}}},"io.k8s.api.core.v1.GlusterfsVolumeSource":{"description":"Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["endpoints","path"],"properties":{"endpoints":{"description":"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"path":{"description":"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"readOnly":{"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","type":"boolean"}}},"io.k8s.api.core.v1.HTTPGetAction":{"description":"HTTPGetAction describes an action based on HTTP Get requests.","type":"object","required":["port"],"properties":{"host":{"description":"Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.","type":"string"},"httpHeaders":{"description":"Custom headers to set in the request. HTTP allows repeated headers.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.HTTPHeader"}},"path":{"description":"Path to access on the HTTP server.","type":"string"},"port":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString"},"scheme":{"description":"Scheme to use for connecting to the host. Defaults to HTTP.\n\n","type":"string"}}},"io.k8s.api.core.v1.HTTPHeader":{"description":"HTTPHeader describes a custom header to be used in HTTP probes","type":"object","required":["name","value"],"properties":{"name":{"description":"The header field name","type":"string","default":""},"value":{"description":"The header field value","type":"string","default":""}}},"io.k8s.api.core.v1.HostAlias":{"description":"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.","type":"object","properties":{"hostnames":{"description":"Hostnames for the above IP address.","type":"array","items":{"type":"string","default":""}},"ip":{"description":"IP address of the host file entry.","type":"string"}}},"io.k8s.api.core.v1.HostPathVolumeSource":{"description":"Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.","type":"object","required":["path"],"properties":{"path":{"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","type":"string","default":""},"type":{"description":"type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath","type":"string"}}},"io.k8s.api.core.v1.ISCSIVolumeSource":{"description":"Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.","type":"object","required":["targetPortal","iqn","lun"],"properties":{"chapAuthDiscovery":{"description":"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication","type":"boolean"},"chapAuthSession":{"description":"chapAuthSession defines whether support iSCSI Session CHAP authentication","type":"boolean"},"fsType":{"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","type":"string"},"initiatorName":{"description":"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \u003ctarget portal\u003e:\u003cvolume name\u003e will be created for the connection.","type":"string"},"iqn":{"description":"iqn is the target iSCSI Qualified Name.","type":"string","default":""},"iscsiInterface":{"description":"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).","type":"string"},"lun":{"description":"lun represents iSCSI Target Lun number.","type":"integer","format":"int32","default":0},"portals":{"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).","type":"array","items":{"type":"string","default":""}},"readOnly":{"description":"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.","type":"boolean"},"secretRef":{"description":"secretRef is the CHAP Secret for iSCSI target and initiator authentication","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"targetPortal":{"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).","type":"string","default":""}}},"io.k8s.api.core.v1.KeyToPath":{"description":"Maps a string key to a path within a volume.","type":"object","required":["key","path"],"properties":{"key":{"description":"key is the key to project.","type":"string","default":""},"mode":{"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.","type":"integer","format":"int32"},"path":{"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 '..'.","type":"string","default":""}}},"io.k8s.api.core.v1.Lifecycle":{"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.","type":"object","properties":{"postStart":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.LifecycleHandler"},"preStop":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.LifecycleHandler"}}},"io.k8s.api.core.v1.LifecycleHandler":{"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.","type":"object","properties":{"exec":{"description":"Exec specifies the action to take.","$ref":"#/components/schemas/io.k8s.api.core.v1.ExecAction"},"httpGet":{"description":"HTTPGet specifies the http request to perform.","$ref":"#/components/schemas/io.k8s.api.core.v1.HTTPGetAction"},"tcpSocket":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.TCPSocketAction"}}},"io.k8s.api.core.v1.LocalObjectReference":{"description":"LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.NFSVolumeSource":{"description":"Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.","type":"object","required":["server","path"],"properties":{"path":{"description":"path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs","type":"string","default":""},"readOnly":{"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","type":"boolean"},"server":{"description":"server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs","type":"string","default":""}}},"io.k8s.api.core.v1.NodeAffinity":{"description":"Node affinity is a group of node affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PreferredSchedulingTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelector"}}},"io.k8s.api.core.v1.NodeSelector":{"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.","type":"object","required":["nodeSelectorTerms"],"properties":{"nodeSelectorTerms":{"description":"Required. A list of node selector terms. The terms are ORed.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorTerm"}}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.NodeSelectorRequirement":{"description":"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.","type":"object","required":["key","operator"],"properties":{"key":{"description":"The label key that the selector applies to.","type":"string","default":""},"operator":{"description":"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n\n","type":"string","default":""},"values":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.NodeSelectorTerm":{"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.","type":"object","properties":{"matchExpressions":{"description":"A list of node selector requirements by node's labels.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorRequirement"}},"matchFields":{"description":"A list of node selector requirements by node's fields.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorRequirement"}}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ObjectFieldSelector":{"description":"ObjectFieldSelector selects an APIVersioned field of an object.","type":"object","required":["fieldPath"],"properties":{"apiVersion":{"description":"Version of the schema the FieldPath is written in terms of, defaults to \"v1\".","type":"string"},"fieldPath":{"description":"Path of the field to select in the specified API version.","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ObjectReference":{"description":"ObjectReference contains enough information to let you inspect or modify the referred object.","type":"object","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"fieldPath":{"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.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"},"resourceVersion":{"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","type":"string"},"uid":{"description":"UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids","type":"string"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.PersistentVolumeClaimSpec":{"description":"PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes","type":"object","properties":{"accessModes":{"description":"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1","type":"array","items":{"type":"string","default":""}},"dataSource":{"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. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.","$ref":"#/components/schemas/io.k8s.api.core.v1.TypedLocalObjectReference"},"dataSourceRef":{"description":"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local 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, 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. There are two 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(Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled.","$ref":"#/components/schemas/io.k8s.api.core.v1.TypedLocalObjectReference"},"resources":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceRequirements"},"selector":{"description":"selector is a label query over volumes to consider for binding.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"storageClassName":{"description":"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1","type":"string"},"volumeMode":{"description":"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.","type":"string"},"volumeName":{"description":"volumeName is the binding reference to the PersistentVolume backing this claim.","type":"string"}}},"io.k8s.api.core.v1.PersistentVolumeClaimTemplate":{"description":"PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource.","type":"object","required":["spec"],"properties":{"metadata":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimSpec"}}},"io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource":{"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).","type":"object","required":["claimName"],"properties":{"claimName":{"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","type":"string","default":""},"readOnly":{"description":"readOnly Will force the ReadOnly setting in VolumeMounts. Default false.","type":"boolean"}}},"io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource":{"description":"Represents a Photon Controller persistent disk resource.","type":"object","required":["pdID"],"properties":{"fsType":{"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.","type":"string"},"pdID":{"description":"pdID is the ID that identifies Photon Controller persistent disk","type":"string","default":""}}},"io.k8s.api.core.v1.PodAffinity":{"description":"Pod affinity is a group of inter pod affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.WeightedPodAffinityTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm"}}}},"io.k8s.api.core.v1.PodAffinityTerm":{"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 \u003ctopologyKey\u003e matches that of any node on which a pod of the set of pods is running","type":"object","required":["topologyKey"],"properties":{"labelSelector":{"description":"A label query over a set of resources, in this case pods.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"namespaceSelector":{"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. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"namespaces":{"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\"","type":"array","items":{"type":"string","default":""}},"topologyKey":{"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.","type":"string","default":""}}},"io.k8s.api.core.v1.PodAntiAffinity":{"description":"Pod anti affinity is a group of inter pod anti affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.WeightedPodAffinityTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm"}}}},"io.k8s.api.core.v1.PodDNSConfig":{"description":"PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.","type":"object","properties":{"nameservers":{"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.","type":"array","items":{"type":"string","default":""}},"options":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodDNSConfigOption"}},"searches":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.PodDNSConfigOption":{"description":"PodDNSConfigOption defines DNS resolver options of a pod.","type":"object","properties":{"name":{"description":"Required.","type":"string"},"value":{"type":"string"}}},"io.k8s.api.core.v1.PodOS":{"description":"PodOS defines the OS parameters of a pod.","type":"object","required":["name"],"properties":{"name":{"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","type":"string","default":""}}},"io.k8s.api.core.v1.PodReadinessGate":{"description":"PodReadinessGate contains the reference to a pod condition","type":"object","required":["conditionType"],"properties":{"conditionType":{"description":"ConditionType refers to a condition in the pod's condition list with matching type.\n\n","type":"string","default":""}}},"io.k8s.api.core.v1.PodSecurityContext":{"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.","type":"object","properties":{"fsGroup":{"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.","type":"integer","format":"int64"},"fsGroupChangePolicy":{"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.","type":"string"},"runAsGroup":{"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.","type":"integer","format":"int64"},"runAsNonRoot":{"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.","type":"boolean"},"runAsUser":{"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.","type":"integer","format":"int64"},"seLinuxOptions":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SELinuxOptions"},"seccompProfile":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SeccompProfile"},"supplementalGroups":{"description":"A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container. Note that this field cannot be set when spec.os.name is windows.","type":"array","items":{"type":"integer","format":"int64","default":0}},"sysctls":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Sysctl"}},"windowsOptions":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.WindowsSecurityContextOptions"}}},"io.k8s.api.core.v1.PodSpec":{"description":"PodSpec is a description of a pod.","type":"object","required":["containers"],"properties":{"activeDeadlineSeconds":{"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.","type":"integer","format":"int64"},"affinity":{"description":"If specified, the pod's scheduling constraints","$ref":"#/components/schemas/io.k8s.api.core.v1.Affinity"},"automountServiceAccountToken":{"description":"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.","type":"boolean"},"containers":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Container"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"dnsConfig":{"description":"Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.","$ref":"#/components/schemas/io.k8s.api.core.v1.PodDNSConfig"},"dnsPolicy":{"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\n","type":"string"},"enableServiceLinks":{"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.","type":"boolean"},"ephemeralContainers":{"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. This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EphemeralContainer"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"hostAliases":{"description":"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.HostAlias"},"x-kubernetes-patch-merge-key":"ip","x-kubernetes-patch-strategy":"merge"},"hostIPC":{"description":"Use the host's ipc namespace. Optional: Default to false.","type":"boolean"},"hostNetwork":{"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.","type":"boolean"},"hostPID":{"description":"Use the host's pid namespace. Optional: Default to false.","type":"boolean"},"hostname":{"description":"Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.","type":"string"},"imagePullSecrets":{"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. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"initContainers":{"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/","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Container"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"nodeName":{"description":"NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.","type":"string"},"nodeSelector":{"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/","type":"object","additionalProperties":{"type":"string","default":""},"x-kubernetes-map-type":"atomic"},"os":{"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.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.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 This is an alpha field and requires the IdentifyPodOS feature","$ref":"#/components/schemas/io.k8s.api.core.v1.PodOS"},"overhead":{"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 This field is beta-level as of Kubernetes v1.18, and is only honored by servers that enable the PodOverhead feature.","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"preemptionPolicy":{"description":"PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset.","type":"string"},"priority":{"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.","type":"integer","format":"int32"},"priorityClassName":{"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.","type":"string"},"readinessGates":{"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","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodReadinessGate"}},"restartPolicy":{"description":"Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\n\n","type":"string"},"runtimeClassName":{"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 This is a beta feature as of Kubernetes v1.14.","type":"string"},"schedulerName":{"description":"If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.","type":"string"},"securityContext":{"description":"SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.","$ref":"#/components/schemas/io.k8s.api.core.v1.PodSecurityContext"},"serviceAccount":{"description":"DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.","type":"string"},"serviceAccountName":{"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/","type":"string"},"setHostnameAsFQDN":{"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.","type":"boolean"},"shareProcessNamespace":{"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.","type":"boolean"},"subdomain":{"description":"If specified, the fully qualified Pod hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the pod will not have a domainname at all.","type":"string"},"terminationGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"tolerations":{"description":"If specified, the pod's tolerations.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Toleration"}},"topologySpreadConstraints":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.TopologySpreadConstraint"},"x-kubernetes-list-map-keys":["topologyKey","whenUnsatisfiable"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"topologyKey","x-kubernetes-patch-strategy":"merge"},"volumes":{"description":"List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Volume"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge,retainKeys"}}},"io.k8s.api.core.v1.PodTemplateSpec":{"description":"PodTemplateSpec describes the data a pod should have when created from a template","type":"object","properties":{"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodSpec"}}},"io.k8s.api.core.v1.PortworxVolumeSource":{"description":"PortworxVolumeSource represents a Portworx volume resource.","type":"object","required":["volumeID"],"properties":{"fsType":{"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.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"volumeID":{"description":"volumeID uniquely identifies a Portworx volume","type":"string","default":""}}},"io.k8s.api.core.v1.PreferredSchedulingTerm":{"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).","type":"object","required":["weight","preference"],"properties":{"preference":{"description":"A node selector term, associated with the corresponding weight.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorTerm"},"weight":{"description":"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.Probe":{"description":"Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.","type":"object","properties":{"exec":{"description":"Exec specifies the action to take.","$ref":"#/components/schemas/io.k8s.api.core.v1.ExecAction"},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.","type":"integer","format":"int32"},"grpc":{"description":"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.","$ref":"#/components/schemas/io.k8s.api.core.v1.GRPCAction"},"httpGet":{"description":"HTTPGet specifies the http request to perform.","$ref":"#/components/schemas/io.k8s.api.core.v1.HTTPGetAction"},"initialDelaySeconds":{"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","type":"integer","format":"int32"},"periodSeconds":{"description":"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.","type":"integer","format":"int32"},"successThreshold":{"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.","type":"integer","format":"int32"},"tcpSocket":{"description":"TCPSocket specifies an action involving a TCP port.","$ref":"#/components/schemas/io.k8s.api.core.v1.TCPSocketAction"},"terminationGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"timeoutSeconds":{"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","type":"integer","format":"int32"}}},"io.k8s.api.core.v1.ProjectedVolumeSource":{"description":"Represents a projected volume source","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"sources":{"description":"sources is the list of volume projections","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeProjection"}}}},"io.k8s.api.core.v1.QuobyteVolumeSource":{"description":"Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.","type":"object","required":["registry","volume"],"properties":{"group":{"description":"group to map volume access to Default is no group","type":"string"},"readOnly":{"description":"readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.","type":"boolean"},"registry":{"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","type":"string","default":""},"tenant":{"description":"tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin","type":"string"},"user":{"description":"user to map volume access to Defaults to serivceaccount user","type":"string"},"volume":{"description":"volume is a string that references an already created Quobyte volume by name.","type":"string","default":""}}},"io.k8s.api.core.v1.RBDVolumeSource":{"description":"Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.","type":"object","required":["monitors","image"],"properties":{"fsType":{"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","type":"string"},"image":{"description":"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string","default":""},"keyring":{"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","type":"string"},"monitors":{"description":"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"array","items":{"type":"string","default":""}},"pool":{"description":"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"user":{"description":"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"}}},"io.k8s.api.core.v1.ResourceFieldSelector":{"description":"ResourceFieldSelector represents container resources (cpu, memory) and their output format","type":"object","required":["resource"],"properties":{"containerName":{"description":"Container name: required for volumes, optional for env vars","type":"string"},"divisor":{"description":"Specifies the output format of the exposed resources, defaults to \"1\"","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"},"resource":{"description":"Required: resource to select","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ResourceRequirements":{"description":"ResourceRequirements describes the compute resource requirements.","type":"object","properties":{"limits":{"description":"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"requests":{"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. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}}}},"io.k8s.api.core.v1.SELinuxOptions":{"description":"SELinuxOptions are the labels to be applied to the container","type":"object","properties":{"level":{"description":"Level is SELinux level label that applies to the container.","type":"string"},"role":{"description":"Role is a SELinux role label that applies to the container.","type":"string"},"type":{"description":"Type is a SELinux type label that applies to the container.","type":"string"},"user":{"description":"User is a SELinux user label that applies to the container.","type":"string"}}},"io.k8s.api.core.v1.ScaleIOVolumeSource":{"description":"ScaleIOVolumeSource represents a persistent ScaleIO volume","type":"object","required":["gateway","system","secretRef"],"properties":{"fsType":{"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\".","type":"string"},"gateway":{"description":"gateway is the host address of the ScaleIO API Gateway.","type":"string","default":""},"protectionDomain":{"description":"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.","type":"string"},"readOnly":{"description":"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"sslEnabled":{"description":"sslEnabled Flag enable/disable SSL communication with Gateway, default false","type":"boolean"},"storageMode":{"description":"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.","type":"string"},"storagePool":{"description":"storagePool is the ScaleIO Storage Pool associated with the protection domain.","type":"string"},"system":{"description":"system is the name of the storage system as configured in ScaleIO.","type":"string","default":""},"volumeName":{"description":"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.","type":"string"}}},"io.k8s.api.core.v1.SeccompProfile":{"description":"SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set.","type":"object","required":["type"],"properties":{"localhostProfile":{"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 only be set if type is \"Localhost\".","type":"string"},"type":{"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\n","type":"string","default":""}},"x-kubernetes-unions":[{"discriminator":"type","fields-to-discriminateBy":{"localhostProfile":"LocalhostProfile"}}]},"io.k8s.api.core.v1.SecretEnvSource":{"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.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the Secret must be defined","type":"boolean"}}},"io.k8s.api.core.v1.SecretKeySelector":{"description":"SecretKeySelector selects a key of a Secret.","type":"object","required":["key"],"properties":{"key":{"description":"The key of the secret to select from. Must be a valid secret key.","type":"string","default":""},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the Secret or its key must be defined","type":"boolean"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.SecretProjection":{"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.","type":"object","properties":{"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional field specify whether the Secret or its key must be defined","type":"boolean"}}},"io.k8s.api.core.v1.SecretVolumeSource":{"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.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}},"optional":{"description":"optional field specify whether the Secret or its keys must be defined","type":"boolean"},"secretName":{"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","type":"string"}}},"io.k8s.api.core.v1.SecurityContext":{"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.","type":"object","properties":{"allowPrivilegeEscalation":{"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.","type":"boolean"},"capabilities":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.Capabilities"},"privileged":{"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.","type":"boolean"},"procMount":{"description":"procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount 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.","type":"string"},"readOnlyRootFilesystem":{"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.","type":"boolean"},"runAsGroup":{"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.","type":"integer","format":"int64"},"runAsNonRoot":{"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.","type":"boolean"},"runAsUser":{"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.","type":"integer","format":"int64"},"seLinuxOptions":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SELinuxOptions"},"seccompProfile":{"description":"The seccomp options to use by this container. If seccomp options are provided at both the pod \u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.","$ref":"#/components/schemas/io.k8s.api.core.v1.SeccompProfile"},"windowsOptions":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.WindowsSecurityContextOptions"}}},"io.k8s.api.core.v1.ServiceAccountTokenProjection":{"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).","type":"object","required":["path"],"properties":{"audience":{"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.","type":"string"},"expirationSeconds":{"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.","type":"integer","format":"int64"},"path":{"description":"path is the path relative to the mount point of the file to project the token into.","type":"string","default":""}}},"io.k8s.api.core.v1.StorageOSVolumeSource":{"description":"Represents a StorageOS persistent volume resource.","type":"object","properties":{"fsType":{"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.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"volumeName":{"description":"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.","type":"string"},"volumeNamespace":{"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.","type":"string"}}},"io.k8s.api.core.v1.Sysctl":{"description":"Sysctl defines a kernel parameter to be set","type":"object","required":["name","value"],"properties":{"name":{"description":"Name of a property to set","type":"string","default":""},"value":{"description":"Value of a property to set","type":"string","default":""}}},"io.k8s.api.core.v1.TCPSocketAction":{"description":"TCPSocketAction describes an action based on opening a socket","type":"object","required":["port"],"properties":{"host":{"description":"Optional: Host name to connect to, defaults to the pod IP.","type":"string"},"port":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString"}}},"io.k8s.api.core.v1.Toleration":{"description":"The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.","type":"object","properties":{"effect":{"description":"Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n\n","type":"string"},"key":{"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.","type":"string"},"operator":{"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\n","type":"string"},"tolerationSeconds":{"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.","type":"integer","format":"int64"},"value":{"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.","type":"string"}}},"io.k8s.api.core.v1.TopologySpreadConstraint":{"description":"TopologySpreadConstraint specifies how to spread matching pods among the given topology.","type":"object","required":["maxSkew","topologyKey","whenUnsatisfiable"],"properties":{"labelSelector":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"maxSkew":{"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. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) 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.","type":"integer","format":"int32","default":0},"topologyKey":{"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 \u003ckey, value\u003e as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.","type":"string","default":""},"whenUnsatisfiable":{"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\n","type":"string","default":""}}},"io.k8s.api.core.v1.TypedLocalObjectReference":{"description":"TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.","type":"object","required":["kind","name"],"properties":{"apiGroup":{"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.","type":"string"},"kind":{"description":"Kind is the type of resource being referenced","type":"string","default":""},"name":{"description":"Name is the name of resource being referenced","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.Volume":{"description":"Volume represents a named volume in a pod that may be accessed by any container in the pod.","type":"object","required":["name"],"properties":{"awsElasticBlockStore":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource"},"azureDisk":{"description":"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.","$ref":"#/components/schemas/io.k8s.api.core.v1.AzureDiskVolumeSource"},"azureFile":{"description":"azureFile represents an Azure File Service mount on the host and bind mount to the pod.","$ref":"#/components/schemas/io.k8s.api.core.v1.AzureFileVolumeSource"},"cephfs":{"description":"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime","$ref":"#/components/schemas/io.k8s.api.core.v1.CephFSVolumeSource"},"cinder":{"description":"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","$ref":"#/components/schemas/io.k8s.api.core.v1.CinderVolumeSource"},"configMap":{"description":"configMap represents a configMap that should populate this volume","$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapVolumeSource"},"csi":{"description":"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).","$ref":"#/components/schemas/io.k8s.api.core.v1.CSIVolumeSource"},"downwardAPI":{"description":"downwardAPI represents downward API about the pod that should populate this volume","$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeSource"},"emptyDir":{"description":"emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir","$ref":"#/components/schemas/io.k8s.api.core.v1.EmptyDirVolumeSource"},"ephemeral":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.EphemeralVolumeSource"},"fc":{"description":"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.","$ref":"#/components/schemas/io.k8s.api.core.v1.FCVolumeSource"},"flexVolume":{"description":"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.","$ref":"#/components/schemas/io.k8s.api.core.v1.FlexVolumeSource"},"flocker":{"description":"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running","$ref":"#/components/schemas/io.k8s.api.core.v1.FlockerVolumeSource"},"gcePersistentDisk":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource"},"gitRepo":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.GitRepoVolumeSource"},"glusterfs":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.GlusterfsVolumeSource"},"hostPath":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.HostPathVolumeSource"},"iscsi":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.ISCSIVolumeSource"},"name":{"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","type":"string","default":""},"nfs":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.NFSVolumeSource"},"persistentVolumeClaim":{"description":"persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims","$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource"},"photonPersistentDisk":{"description":"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine","$ref":"#/components/schemas/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource"},"portworxVolume":{"description":"portworxVolume represents a portworx volume attached and mounted on kubelets host machine","$ref":"#/components/schemas/io.k8s.api.core.v1.PortworxVolumeSource"},"projected":{"description":"projected items for all in one resources secrets, configmaps, and downward API","$ref":"#/components/schemas/io.k8s.api.core.v1.ProjectedVolumeSource"},"quobyte":{"description":"quobyte represents a Quobyte mount on the host that shares a pod's lifetime","$ref":"#/components/schemas/io.k8s.api.core.v1.QuobyteVolumeSource"},"rbd":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.RBDVolumeSource"},"scaleIO":{"description":"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.","$ref":"#/components/schemas/io.k8s.api.core.v1.ScaleIOVolumeSource"},"secret":{"description":"secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretVolumeSource"},"storageos":{"description":"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.","$ref":"#/components/schemas/io.k8s.api.core.v1.StorageOSVolumeSource"},"vsphereVolume":{"description":"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine","$ref":"#/components/schemas/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource"}}},"io.k8s.api.core.v1.VolumeDevice":{"description":"volumeDevice describes a mapping of a raw block device within a container.","type":"object","required":["name","devicePath"],"properties":{"devicePath":{"description":"devicePath is the path inside of the container that the device will be mapped to.","type":"string","default":""},"name":{"description":"name must match the name of a persistentVolumeClaim in the pod","type":"string","default":""}}},"io.k8s.api.core.v1.VolumeMount":{"description":"VolumeMount describes a mounting of a Volume within a container.","type":"object","required":["name","mountPath"],"properties":{"mountPath":{"description":"Path within the container at which the volume should be mounted. Must not contain ':'.","type":"string","default":""},"mountPropagation":{"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.","type":"string"},"name":{"description":"This must match the Name of a Volume.","type":"string","default":""},"readOnly":{"description":"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.","type":"boolean"},"subPath":{"description":"Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).","type":"string"},"subPathExpr":{"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.","type":"string"}}},"io.k8s.api.core.v1.VolumeProjection":{"description":"Projection that may be projected along with other supported volume types","type":"object","properties":{"configMap":{"description":"configMap information about the configMap data to project","$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapProjection"},"downwardAPI":{"description":"downwardAPI information about the downwardAPI data to project","$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIProjection"},"secret":{"description":"secret information about the secret data to project","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretProjection"},"serviceAccountToken":{"description":"serviceAccountToken is information about the serviceAccountToken data to project","$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountTokenProjection"}}},"io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource":{"description":"Represents a vSphere volume resource.","type":"object","required":["volumePath"],"properties":{"fsType":{"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.","type":"string"},"storagePolicyID":{"description":"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.","type":"string"},"storagePolicyName":{"description":"storagePolicyName is the storage Policy Based Management (SPBM) profile name.","type":"string"},"volumePath":{"description":"volumePath is the path that identifies vSphere volume vmdk","type":"string","default":""}}},"io.k8s.api.core.v1.WeightedPodAffinityTerm":{"description":"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)","type":"object","required":["weight","podAffinityTerm"],"properties":{"podAffinityTerm":{"description":"Required. A pod affinity term, associated with the corresponding weight.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm"},"weight":{"description":"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.WindowsSecurityContextOptions":{"description":"WindowsSecurityContextOptions contain Windows-specific options and credentials.","type":"object","properties":{"gmsaCredentialSpec":{"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.","type":"string"},"gmsaCredentialSpecName":{"description":"GMSACredentialSpecName is the name of the GMSA credential spec to use.","type":"string"},"hostProcess":{"description":"HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. 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.","type":"boolean"},"runAsUserName":{"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.","type":"string"}}},"io.k8s.apimachinery.pkg.api.resource.Quantity":{"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\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\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 a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 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.","type":"string"},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResource":{"description":"APIResource specifies the name of a resource and whether it is namespaced.","type":"object","required":["name","singularName","namespaced","kind","verbs"],"properties":{"categories":{"description":"categories is a list of the grouped resources this resource belongs to (e.g. 'all')","type":"array","items":{"type":"string","default":""}},"group":{"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\".","type":"string"},"kind":{"description":"kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')","type":"string","default":""},"name":{"description":"name is the plural name of the resource.","type":"string","default":""},"namespaced":{"description":"namespaced indicates if a resource is namespaced or not.","type":"boolean","default":false},"shortNames":{"description":"shortNames is a list of suggested short names of the resource.","type":"array","items":{"type":"string","default":""}},"singularName":{"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.","type":"string","default":""},"storageVersionHash":{"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.","type":"string"},"verbs":{"description":"verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)","type":"array","items":{"type":"string","default":""}},"version":{"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)\".","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList":{"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.","type":"object","required":["groupVersion","resources"],"properties":{"apiVersion":{"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","type":"string"},"groupVersion":{"description":"groupVersion is the group and version this APIResourceList is for.","type":"string","default":""},"kind":{"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","type":"string"},"resources":{"description":"resources contains the name of the resources and if they are namespaced.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResource"}}},"x-kubernetes-group-version-kind":[{"group":"","kind":"APIResourceList","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"},"propagationPolicy":{"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.","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta2"},{"group":"batch","kind":"DeleteOptions","version":"v1"},{"group":"batch","kind":"DeleteOptions","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"extensions","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"policy","kind":"DeleteOptions","version":"v1"},{"group":"policy","kind":"DeleteOptions","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector":{"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.","type":"object","properties":{"matchExpressions":{"description":"matchExpressions is a list of label selector requirements. The requirements are ANDed.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement"}},"matchLabels":{"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.","type":"object","additionalProperties":{"type":"string","default":""}}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement":{"description":"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.","type":"object","required":["key","operator"],"properties":{"key":{"description":"key is the label key that the selector applies to.","type":"string","default":"","x-kubernetes-patch-merge-key":"key","x-kubernetes-patch-strategy":"merge"},"operator":{"description":"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.","type":"string","default":""},"values":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"selfLink is DEPRECATED read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"clusterName":{"description":"The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.","type":"string"},"creationTimestamp":{"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","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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 NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"selfLink is DEPRECATED read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"},"reason":{"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.","type":"string"},"status":{"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","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Status","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"},"io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent":{"description":"Event represents a single event to a watched resource.","type":"object","required":["type","object"],"properties":{"object":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.runtime.RawExtension"},"type":{"type":"string","default":""}},"x-kubernetes-group-version-kind":[{"group":"","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1"},{"group":"apps","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta2"},{"group":"batch","kind":"WatchEvent","version":"v1"},{"group":"batch","kind":"WatchEvent","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"extensions","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"policy","kind":"WatchEvent","version":"v1"},{"group":"policy","kind":"WatchEvent","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.runtime.RawExtension":{"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: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.Object `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// External package: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.RawExtension `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// On the wire, the JSON will look something like this: {\n\t\"kind\":\"MyAPIObject\",\n\t\"apiVersion\":\"v1\",\n\t\"myPlugin\": {\n\t\t\"kind\":\"PluginA\",\n\t\t\"aOption\":\"foo\",\n\t},\n}\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.)","type":"object"},"io.k8s.apimachinery.pkg.util.intstr.IntOrString":{"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.","type":"string","format":"int-or-string"}}}}golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/testdata/openapi_v3_0_0/v1.json000066400000000000000000040312121453663023200310550ustar00rootroot00000000000000{"openapi":"3.0.0","info":{"title":"Kubernetes","version":"v1.24.0"},"paths":{"/api/v1/":{"get":{"tags":["core_v1"],"description":"get available resources","operationId":"getCoreV1APIResources","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList"}}}}}}},"/api/v1/componentstatuses":{"get":{"tags":["core_v1"],"description":"list objects of kind ComponentStatus","operationId":"listCoreV1ComponentStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentStatusList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentStatusList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentStatusList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentStatusList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentStatusList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/componentstatuses/{name}":{"get":{"tags":["core_v1"],"description":"read the specified ComponentStatus","operationId":"readCoreV1ComponentStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentStatus"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentStatus"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentStatus"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the ComponentStatus","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/configmaps":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind ConfigMap","operationId":"listCoreV1ConfigMapForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/endpoints":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Endpoints","operationId":"listCoreV1EndpointsForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/events":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Event","operationId":"listCoreV1EventForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/limitranges":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind LimitRange","operationId":"listCoreV1LimitRangeForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/namespaces":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Namespace","operationId":"listCoreV1Namespace","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NamespaceList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NamespaceList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NamespaceList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NamespaceList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NamespaceList"}}}}}},"post":{"tags":["core_v1"],"description":"create a Namespace","operationId":"createCoreV1Namespace","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}}}},"parameters":[{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/bindings":{"post":{"tags":["core_v1"],"description":"create a Binding","operationId":"createCoreV1NamespacedBinding","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}}}}}},"parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/configmaps":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind ConfigMap","operationId":"listCoreV1NamespacedConfigMap","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapList"}}}}}},"post":{"tags":["core_v1"],"description":"create a ConfigMap","operationId":"createCoreV1NamespacedConfigMap","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}}}},"delete":{"tags":["core_v1"],"description":"delete collection of ConfigMap","operationId":"deleteCoreV1CollectionNamespacedConfigMap","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/configmaps/{name}":{"get":{"tags":["core_v1"],"description":"read the specified ConfigMap","operationId":"readCoreV1NamespacedConfigMap","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}}}},"put":{"tags":["core_v1"],"description":"replace the specified ConfigMap","operationId":"replaceCoreV1NamespacedConfigMap","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}}}},"delete":{"tags":["core_v1"],"description":"delete a ConfigMap","operationId":"deleteCoreV1NamespacedConfigMap","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update the specified ConfigMap","operationId":"patchCoreV1NamespacedConfigMap","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the ConfigMap","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/endpoints":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Endpoints","operationId":"listCoreV1NamespacedEndpoints","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointsList"}}}}}},"post":{"tags":["core_v1"],"description":"create Endpoints","operationId":"createCoreV1NamespacedEndpoints","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}}}},"delete":{"tags":["core_v1"],"description":"delete collection of Endpoints","operationId":"deleteCoreV1CollectionNamespacedEndpoints","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/endpoints/{name}":{"get":{"tags":["core_v1"],"description":"read the specified Endpoints","operationId":"readCoreV1NamespacedEndpoints","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}}}},"put":{"tags":["core_v1"],"description":"replace the specified Endpoints","operationId":"replaceCoreV1NamespacedEndpoints","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}}}},"delete":{"tags":["core_v1"],"description":"delete Endpoints","operationId":"deleteCoreV1NamespacedEndpoints","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update the specified Endpoints","operationId":"patchCoreV1NamespacedEndpoints","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Endpoints","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/events":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Event","operationId":"listCoreV1NamespacedEvent","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.EventList"}}}}}},"post":{"tags":["core_v1"],"description":"create an Event","operationId":"createCoreV1NamespacedEvent","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}}}},"delete":{"tags":["core_v1"],"description":"delete collection of Event","operationId":"deleteCoreV1CollectionNamespacedEvent","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/events/{name}":{"get":{"tags":["core_v1"],"description":"read the specified Event","operationId":"readCoreV1NamespacedEvent","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}}}},"put":{"tags":["core_v1"],"description":"replace the specified Event","operationId":"replaceCoreV1NamespacedEvent","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}}}},"delete":{"tags":["core_v1"],"description":"delete an Event","operationId":"deleteCoreV1NamespacedEvent","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update the specified Event","operationId":"patchCoreV1NamespacedEvent","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Event","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/limitranges":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind LimitRange","operationId":"listCoreV1NamespacedLimitRange","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeList"}}}}}},"post":{"tags":["core_v1"],"description":"create a LimitRange","operationId":"createCoreV1NamespacedLimitRange","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}}}},"delete":{"tags":["core_v1"],"description":"delete collection of LimitRange","operationId":"deleteCoreV1CollectionNamespacedLimitRange","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/limitranges/{name}":{"get":{"tags":["core_v1"],"description":"read the specified LimitRange","operationId":"readCoreV1NamespacedLimitRange","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}}}},"put":{"tags":["core_v1"],"description":"replace the specified LimitRange","operationId":"replaceCoreV1NamespacedLimitRange","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}}}},"delete":{"tags":["core_v1"],"description":"delete a LimitRange","operationId":"deleteCoreV1NamespacedLimitRange","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update the specified LimitRange","operationId":"patchCoreV1NamespacedLimitRange","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the LimitRange","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/persistentvolumeclaims":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind PersistentVolumeClaim","operationId":"listCoreV1NamespacedPersistentVolumeClaim","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}}}}}},"post":{"tags":["core_v1"],"description":"create a PersistentVolumeClaim","operationId":"createCoreV1NamespacedPersistentVolumeClaim","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}}}},"delete":{"tags":["core_v1"],"description":"delete collection of PersistentVolumeClaim","operationId":"deleteCoreV1CollectionNamespacedPersistentVolumeClaim","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}":{"get":{"tags":["core_v1"],"description":"read the specified PersistentVolumeClaim","operationId":"readCoreV1NamespacedPersistentVolumeClaim","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}}}},"put":{"tags":["core_v1"],"description":"replace the specified PersistentVolumeClaim","operationId":"replaceCoreV1NamespacedPersistentVolumeClaim","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}}}},"delete":{"tags":["core_v1"],"description":"delete a PersistentVolumeClaim","operationId":"deleteCoreV1NamespacedPersistentVolumeClaim","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update the specified PersistentVolumeClaim","operationId":"patchCoreV1NamespacedPersistentVolumeClaim","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the PersistentVolumeClaim","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status":{"get":{"tags":["core_v1"],"description":"read status of the specified PersistentVolumeClaim","operationId":"readCoreV1NamespacedPersistentVolumeClaimStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}}}},"put":{"tags":["core_v1"],"description":"replace status of the specified PersistentVolumeClaim","operationId":"replaceCoreV1NamespacedPersistentVolumeClaimStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update status of the specified PersistentVolumeClaim","operationId":"patchCoreV1NamespacedPersistentVolumeClaimStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the PersistentVolumeClaim","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Pod","operationId":"listCoreV1NamespacedPod","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}}}}}},"post":{"tags":["core_v1"],"description":"create a Pod","operationId":"createCoreV1NamespacedPod","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}}}},"delete":{"tags":["core_v1"],"description":"delete collection of Pod","operationId":"deleteCoreV1CollectionNamespacedPod","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}":{"get":{"tags":["core_v1"],"description":"read the specified Pod","operationId":"readCoreV1NamespacedPod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}}}},"put":{"tags":["core_v1"],"description":"replace the specified Pod","operationId":"replaceCoreV1NamespacedPod","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}}}},"delete":{"tags":["core_v1"],"description":"delete a Pod","operationId":"deleteCoreV1NamespacedPod","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update the specified Pod","operationId":"patchCoreV1NamespacedPod","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Pod","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/attach":{"get":{"tags":["core_v1"],"description":"connect GET requests to attach of Pod","operationId":"connectCoreV1GetNamespacedPodAttach","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"post":{"tags":["core_v1"],"description":"connect POST requests to attach of Pod","operationId":"connectCoreV1PostNamespacedPodAttach","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"parameters":[{"name":"container","in":"query","description":"The container in which to execute the command. Defaults to only container if there is only one container in the pod.","schema":{"type":"string","uniqueItems":true}},{"name":"name","in":"path","description":"name of the PodAttachOptions","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"stderr","in":"query","description":"Stderr if true indicates that stderr is to be redirected for the attach call. Defaults to true.","schema":{"type":"boolean","uniqueItems":true}},{"name":"stdin","in":"query","description":"Stdin if true, redirects the standard input stream of the pod for this call. Defaults to false.","schema":{"type":"boolean","uniqueItems":true}},{"name":"stdout","in":"query","description":"Stdout if true indicates that stdout is to be redirected for the attach call. Defaults to true.","schema":{"type":"boolean","uniqueItems":true}},{"name":"tty","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/binding":{"post":{"tags":["core_v1"],"description":"create binding of a Pod","operationId":"createCoreV1NamespacedPodBinding","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Binding"}}}}}},"parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Binding","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers":{"get":{"tags":["core_v1"],"description":"read ephemeralcontainers of the specified Pod","operationId":"readCoreV1NamespacedPodEphemeralcontainers","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}}}},"put":{"tags":["core_v1"],"description":"replace ephemeralcontainers of the specified Pod","operationId":"replaceCoreV1NamespacedPodEphemeralcontainers","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update ephemeralcontainers of the specified Pod","operationId":"patchCoreV1NamespacedPodEphemeralcontainers","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Pod","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/eviction":{"post":{"tags":["core_v1"],"description":"create eviction of a Pod","operationId":"createCoreV1NamespacedPodEviction","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.policy.v1.Eviction"}}}}}},"parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Eviction","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/exec":{"get":{"tags":["core_v1"],"description":"connect GET requests to exec of Pod","operationId":"connectCoreV1GetNamespacedPodExec","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"post":{"tags":["core_v1"],"description":"connect POST requests to exec of Pod","operationId":"connectCoreV1PostNamespacedPodExec","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"parameters":[{"name":"command","in":"query","description":"Command is the remote command to execute. argv array. Not executed within a shell.","schema":{"type":"string","uniqueItems":true}},{"name":"container","in":"query","description":"Container in which to execute the command. Defaults to only container if there is only one container in the pod.","schema":{"type":"string","uniqueItems":true}},{"name":"name","in":"path","description":"name of the PodExecOptions","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"stderr","in":"query","description":"Redirect the standard error stream of the pod for this call.","schema":{"type":"boolean","uniqueItems":true}},{"name":"stdin","in":"query","description":"Redirect the standard input stream of the pod for this call. Defaults to false.","schema":{"type":"boolean","uniqueItems":true}},{"name":"stdout","in":"query","description":"Redirect the standard output stream of the pod for this call.","schema":{"type":"boolean","uniqueItems":true}},{"name":"tty","in":"query","description":"TTY if true indicates that a tty will be allocated for the exec call. Defaults to false.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/log":{"get":{"tags":["core_v1"],"description":"read log of the specified Pod","operationId":"readCoreV1NamespacedPodLog","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}},"application/vnd.kubernetes.protobuf":{"schema":{"type":"string"}},"application/yaml":{"schema":{"type":"string"}},"text/plain":{"schema":{"type":"string"}}}}}},"parameters":[{"name":"container","in":"query","description":"The container for which to stream logs. Defaults to only container if there is one container in the pod.","schema":{"type":"string","uniqueItems":true}},{"name":"follow","in":"query","description":"Follow the log stream of the pod. Defaults to false.","schema":{"type":"boolean","uniqueItems":true}},{"name":"insecureSkipTLSVerifyBackend","in":"query","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).","schema":{"type":"boolean","uniqueItems":true}},{"name":"limitBytes","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Pod","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"previous","in":"query","description":"Return previous terminated container logs. Defaults to false.","schema":{"type":"boolean","uniqueItems":true}},{"name":"sinceSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"tailLines","in":"query","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","schema":{"type":"integer","uniqueItems":true}},{"name":"timestamps","in":"query","description":"If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line of log output. Defaults to false.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/portforward":{"get":{"tags":["core_v1"],"description":"connect GET requests to portforward of Pod","operationId":"connectCoreV1GetNamespacedPodPortforward","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"post":{"tags":["core_v1"],"description":"connect POST requests to portforward of Pod","operationId":"connectCoreV1PostNamespacedPodPortforward","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the PodPortForwardOptions","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"ports","in":"query","description":"List of ports to forward Required when using WebSockets","schema":{"type":"integer","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/proxy":{"get":{"tags":["core_v1"],"description":"connect GET requests to proxy of Pod","operationId":"connectCoreV1GetNamespacedPodProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"put":{"tags":["core_v1"],"description":"connect PUT requests to proxy of Pod","operationId":"connectCoreV1PutNamespacedPodProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"post":{"tags":["core_v1"],"description":"connect POST requests to proxy of Pod","operationId":"connectCoreV1PostNamespacedPodProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"delete":{"tags":["core_v1"],"description":"connect DELETE requests to proxy of Pod","operationId":"connectCoreV1DeleteNamespacedPodProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"options":{"tags":["core_v1"],"description":"connect OPTIONS requests to proxy of Pod","operationId":"connectCoreV1OptionsNamespacedPodProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"head":{"tags":["core_v1"],"description":"connect HEAD requests to proxy of Pod","operationId":"connectCoreV1HeadNamespacedPodProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"patch":{"tags":["core_v1"],"description":"connect PATCH requests to proxy of Pod","operationId":"connectCoreV1PatchNamespacedPodProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the PodProxyOptions","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"path","in":"query","description":"Path is the URL path to use for the current proxy request to pod.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/proxy/{path}":{"get":{"tags":["core_v1"],"description":"connect GET requests to proxy of Pod","operationId":"connectCoreV1GetNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"put":{"tags":["core_v1"],"description":"connect PUT requests to proxy of Pod","operationId":"connectCoreV1PutNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"post":{"tags":["core_v1"],"description":"connect POST requests to proxy of Pod","operationId":"connectCoreV1PostNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"delete":{"tags":["core_v1"],"description":"connect DELETE requests to proxy of Pod","operationId":"connectCoreV1DeleteNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"options":{"tags":["core_v1"],"description":"connect OPTIONS requests to proxy of Pod","operationId":"connectCoreV1OptionsNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"head":{"tags":["core_v1"],"description":"connect HEAD requests to proxy of Pod","operationId":"connectCoreV1HeadNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"patch":{"tags":["core_v1"],"description":"connect PATCH requests to proxy of Pod","operationId":"connectCoreV1PatchNamespacedPodProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the PodProxyOptions","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"path","in":"path","description":"path to the resource","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"path","in":"query","description":"Path is the URL path to use for the current proxy request to pod.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/pods/{name}/status":{"get":{"tags":["core_v1"],"description":"read status of the specified Pod","operationId":"readCoreV1NamespacedPodStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}}}},"put":{"tags":["core_v1"],"description":"replace status of the specified Pod","operationId":"replaceCoreV1NamespacedPodStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update status of the specified Pod","operationId":"patchCoreV1NamespacedPodStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Pod","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/podtemplates":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind PodTemplate","operationId":"listCoreV1NamespacedPodTemplate","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}}}}}},"post":{"tags":["core_v1"],"description":"create a PodTemplate","operationId":"createCoreV1NamespacedPodTemplate","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}}}},"delete":{"tags":["core_v1"],"description":"delete collection of PodTemplate","operationId":"deleteCoreV1CollectionNamespacedPodTemplate","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/podtemplates/{name}":{"get":{"tags":["core_v1"],"description":"read the specified PodTemplate","operationId":"readCoreV1NamespacedPodTemplate","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}}}},"put":{"tags":["core_v1"],"description":"replace the specified PodTemplate","operationId":"replaceCoreV1NamespacedPodTemplate","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}}}},"delete":{"tags":["core_v1"],"description":"delete a PodTemplate","operationId":"deleteCoreV1NamespacedPodTemplate","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update the specified PodTemplate","operationId":"patchCoreV1NamespacedPodTemplate","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the PodTemplate","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/replicationcontrollers":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind ReplicationController","operationId":"listCoreV1NamespacedReplicationController","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}}}}}},"post":{"tags":["core_v1"],"description":"create a ReplicationController","operationId":"createCoreV1NamespacedReplicationController","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}}}},"delete":{"tags":["core_v1"],"description":"delete collection of ReplicationController","operationId":"deleteCoreV1CollectionNamespacedReplicationController","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/replicationcontrollers/{name}":{"get":{"tags":["core_v1"],"description":"read the specified ReplicationController","operationId":"readCoreV1NamespacedReplicationController","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}}}},"put":{"tags":["core_v1"],"description":"replace the specified ReplicationController","operationId":"replaceCoreV1NamespacedReplicationController","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}}}},"delete":{"tags":["core_v1"],"description":"delete a ReplicationController","operationId":"deleteCoreV1NamespacedReplicationController","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update the specified ReplicationController","operationId":"patchCoreV1NamespacedReplicationController","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the ReplicationController","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/scale":{"get":{"tags":["core_v1"],"description":"read scale of the specified ReplicationController","operationId":"readCoreV1NamespacedReplicationControllerScale","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}}}},"put":{"tags":["core_v1"],"description":"replace scale of the specified ReplicationController","operationId":"replaceCoreV1NamespacedReplicationControllerScale","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update scale of the specified ReplicationController","operationId":"patchCoreV1NamespacedReplicationControllerScale","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.Scale"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Scale","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status":{"get":{"tags":["core_v1"],"description":"read status of the specified ReplicationController","operationId":"readCoreV1NamespacedReplicationControllerStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}}}},"put":{"tags":["core_v1"],"description":"replace status of the specified ReplicationController","operationId":"replaceCoreV1NamespacedReplicationControllerStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update status of the specified ReplicationController","operationId":"patchCoreV1NamespacedReplicationControllerStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the ReplicationController","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/resourcequotas":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind ResourceQuota","operationId":"listCoreV1NamespacedResourceQuota","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}}}}}},"post":{"tags":["core_v1"],"description":"create a ResourceQuota","operationId":"createCoreV1NamespacedResourceQuota","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}}}},"delete":{"tags":["core_v1"],"description":"delete collection of ResourceQuota","operationId":"deleteCoreV1CollectionNamespacedResourceQuota","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/resourcequotas/{name}":{"get":{"tags":["core_v1"],"description":"read the specified ResourceQuota","operationId":"readCoreV1NamespacedResourceQuota","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}}}},"put":{"tags":["core_v1"],"description":"replace the specified ResourceQuota","operationId":"replaceCoreV1NamespacedResourceQuota","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}}}},"delete":{"tags":["core_v1"],"description":"delete a ResourceQuota","operationId":"deleteCoreV1NamespacedResourceQuota","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update the specified ResourceQuota","operationId":"patchCoreV1NamespacedResourceQuota","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the ResourceQuota","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/resourcequotas/{name}/status":{"get":{"tags":["core_v1"],"description":"read status of the specified ResourceQuota","operationId":"readCoreV1NamespacedResourceQuotaStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}}}},"put":{"tags":["core_v1"],"description":"replace status of the specified ResourceQuota","operationId":"replaceCoreV1NamespacedResourceQuotaStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update status of the specified ResourceQuota","operationId":"patchCoreV1NamespacedResourceQuotaStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the ResourceQuota","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/secrets":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Secret","operationId":"listCoreV1NamespacedSecret","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}}}}}},"post":{"tags":["core_v1"],"description":"create a Secret","operationId":"createCoreV1NamespacedSecret","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}}}},"delete":{"tags":["core_v1"],"description":"delete collection of Secret","operationId":"deleteCoreV1CollectionNamespacedSecret","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/secrets/{name}":{"get":{"tags":["core_v1"],"description":"read the specified Secret","operationId":"readCoreV1NamespacedSecret","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}}}},"put":{"tags":["core_v1"],"description":"replace the specified Secret","operationId":"replaceCoreV1NamespacedSecret","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}}}},"delete":{"tags":["core_v1"],"description":"delete a Secret","operationId":"deleteCoreV1NamespacedSecret","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update the specified Secret","operationId":"patchCoreV1NamespacedSecret","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Secret","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/serviceaccounts":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind ServiceAccount","operationId":"listCoreV1NamespacedServiceAccount","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}}}}}},"post":{"tags":["core_v1"],"description":"create a ServiceAccount","operationId":"createCoreV1NamespacedServiceAccount","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}}}},"delete":{"tags":["core_v1"],"description":"delete collection of ServiceAccount","operationId":"deleteCoreV1CollectionNamespacedServiceAccount","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/serviceaccounts/{name}":{"get":{"tags":["core_v1"],"description":"read the specified ServiceAccount","operationId":"readCoreV1NamespacedServiceAccount","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}}}},"put":{"tags":["core_v1"],"description":"replace the specified ServiceAccount","operationId":"replaceCoreV1NamespacedServiceAccount","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}}}},"delete":{"tags":["core_v1"],"description":"delete a ServiceAccount","operationId":"deleteCoreV1NamespacedServiceAccount","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update the specified ServiceAccount","operationId":"patchCoreV1NamespacedServiceAccount","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the ServiceAccount","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/serviceaccounts/{name}/token":{"post":{"tags":["core_v1"],"description":"create token of a ServiceAccount","operationId":"createCoreV1NamespacedServiceAccountToken","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequest"}}}}}},"parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"name","in":"path","description":"name of the TokenRequest","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/services":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Service","operationId":"listCoreV1NamespacedService","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}}}}}},"post":{"tags":["core_v1"],"description":"create a Service","operationId":"createCoreV1NamespacedService","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}}}},"delete":{"tags":["core_v1"],"description":"delete collection of Service","operationId":"deleteCoreV1CollectionNamespacedService","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/services/{name}":{"get":{"tags":["core_v1"],"description":"read the specified Service","operationId":"readCoreV1NamespacedService","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}}}},"put":{"tags":["core_v1"],"description":"replace the specified Service","operationId":"replaceCoreV1NamespacedService","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}}}},"delete":{"tags":["core_v1"],"description":"delete a Service","operationId":"deleteCoreV1NamespacedService","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update the specified Service","operationId":"patchCoreV1NamespacedService","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Service","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/services/{name}/proxy":{"get":{"tags":["core_v1"],"description":"connect GET requests to proxy of Service","operationId":"connectCoreV1GetNamespacedServiceProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"put":{"tags":["core_v1"],"description":"connect PUT requests to proxy of Service","operationId":"connectCoreV1PutNamespacedServiceProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"post":{"tags":["core_v1"],"description":"connect POST requests to proxy of Service","operationId":"connectCoreV1PostNamespacedServiceProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"delete":{"tags":["core_v1"],"description":"connect DELETE requests to proxy of Service","operationId":"connectCoreV1DeleteNamespacedServiceProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"options":{"tags":["core_v1"],"description":"connect OPTIONS requests to proxy of Service","operationId":"connectCoreV1OptionsNamespacedServiceProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"head":{"tags":["core_v1"],"description":"connect HEAD requests to proxy of Service","operationId":"connectCoreV1HeadNamespacedServiceProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"patch":{"tags":["core_v1"],"description":"connect PATCH requests to proxy of Service","operationId":"connectCoreV1PatchNamespacedServiceProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the ServiceProxyOptions","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"path","in":"query","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.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/services/{name}/proxy/{path}":{"get":{"tags":["core_v1"],"description":"connect GET requests to proxy of Service","operationId":"connectCoreV1GetNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"put":{"tags":["core_v1"],"description":"connect PUT requests to proxy of Service","operationId":"connectCoreV1PutNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"post":{"tags":["core_v1"],"description":"connect POST requests to proxy of Service","operationId":"connectCoreV1PostNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"delete":{"tags":["core_v1"],"description":"connect DELETE requests to proxy of Service","operationId":"connectCoreV1DeleteNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"options":{"tags":["core_v1"],"description":"connect OPTIONS requests to proxy of Service","operationId":"connectCoreV1OptionsNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"head":{"tags":["core_v1"],"description":"connect HEAD requests to proxy of Service","operationId":"connectCoreV1HeadNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"patch":{"tags":["core_v1"],"description":"connect PATCH requests to proxy of Service","operationId":"connectCoreV1PatchNamespacedServiceProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the ServiceProxyOptions","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"path","in":"path","description":"path to the resource","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"path","in":"query","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.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{namespace}/services/{name}/status":{"get":{"tags":["core_v1"],"description":"read status of the specified Service","operationId":"readCoreV1NamespacedServiceStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}}}},"put":{"tags":["core_v1"],"description":"replace status of the specified Service","operationId":"replaceCoreV1NamespacedServiceStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update status of the specified Service","operationId":"patchCoreV1NamespacedServiceStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Service","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{name}":{"get":{"tags":["core_v1"],"description":"read the specified Namespace","operationId":"readCoreV1Namespace","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}}}},"put":{"tags":["core_v1"],"description":"replace the specified Namespace","operationId":"replaceCoreV1Namespace","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}}}},"delete":{"tags":["core_v1"],"description":"delete a Namespace","operationId":"deleteCoreV1Namespace","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update the specified Namespace","operationId":"patchCoreV1Namespace","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Namespace","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{name}/finalize":{"put":{"tags":["core_v1"],"description":"replace finalize of the specified Namespace","operationId":"replaceCoreV1NamespaceFinalize","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}}}},"parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Namespace","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/namespaces/{name}/status":{"get":{"tags":["core_v1"],"description":"read status of the specified Namespace","operationId":"readCoreV1NamespaceStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}}}},"put":{"tags":["core_v1"],"description":"replace status of the specified Namespace","operationId":"replaceCoreV1NamespaceStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update status of the specified Namespace","operationId":"patchCoreV1NamespaceStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Namespace","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/nodes":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Node","operationId":"listCoreV1Node","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeList"}}}}}},"post":{"tags":["core_v1"],"description":"create a Node","operationId":"createCoreV1Node","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}}}},"delete":{"tags":["core_v1"],"description":"delete collection of Node","operationId":"deleteCoreV1CollectionNode","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/nodes/{name}":{"get":{"tags":["core_v1"],"description":"read the specified Node","operationId":"readCoreV1Node","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}}}},"put":{"tags":["core_v1"],"description":"replace the specified Node","operationId":"replaceCoreV1Node","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}}}},"delete":{"tags":["core_v1"],"description":"delete a Node","operationId":"deleteCoreV1Node","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update the specified Node","operationId":"patchCoreV1Node","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Node","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/nodes/{name}/proxy":{"get":{"tags":["core_v1"],"description":"connect GET requests to proxy of Node","operationId":"connectCoreV1GetNodeProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"put":{"tags":["core_v1"],"description":"connect PUT requests to proxy of Node","operationId":"connectCoreV1PutNodeProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"post":{"tags":["core_v1"],"description":"connect POST requests to proxy of Node","operationId":"connectCoreV1PostNodeProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"delete":{"tags":["core_v1"],"description":"connect DELETE requests to proxy of Node","operationId":"connectCoreV1DeleteNodeProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"options":{"tags":["core_v1"],"description":"connect OPTIONS requests to proxy of Node","operationId":"connectCoreV1OptionsNodeProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"head":{"tags":["core_v1"],"description":"connect HEAD requests to proxy of Node","operationId":"connectCoreV1HeadNodeProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"patch":{"tags":["core_v1"],"description":"connect PATCH requests to proxy of Node","operationId":"connectCoreV1PatchNodeProxy","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the NodeProxyOptions","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"path","in":"query","description":"Path is the URL path to use for the current proxy request to node.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/nodes/{name}/proxy/{path}":{"get":{"tags":["core_v1"],"description":"connect GET requests to proxy of Node","operationId":"connectCoreV1GetNodeProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"put":{"tags":["core_v1"],"description":"connect PUT requests to proxy of Node","operationId":"connectCoreV1PutNodeProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"post":{"tags":["core_v1"],"description":"connect POST requests to proxy of Node","operationId":"connectCoreV1PostNodeProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"delete":{"tags":["core_v1"],"description":"connect DELETE requests to proxy of Node","operationId":"connectCoreV1DeleteNodeProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"options":{"tags":["core_v1"],"description":"connect OPTIONS requests to proxy of Node","operationId":"connectCoreV1OptionsNodeProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"head":{"tags":["core_v1"],"description":"connect HEAD requests to proxy of Node","operationId":"connectCoreV1HeadNodeProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"patch":{"tags":["core_v1"],"description":"connect PATCH requests to proxy of Node","operationId":"connectCoreV1PatchNodeProxyWithPath","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the NodeProxyOptions","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"path","in":"path","description":"path to the resource","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"path","in":"query","description":"Path is the URL path to use for the current proxy request to node.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/nodes/{name}/status":{"get":{"tags":["core_v1"],"description":"read status of the specified Node","operationId":"readCoreV1NodeStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}}}},"put":{"tags":["core_v1"],"description":"replace status of the specified Node","operationId":"replaceCoreV1NodeStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update status of the specified Node","operationId":"patchCoreV1NodeStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the Node","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/persistentvolumeclaims":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind PersistentVolumeClaim","operationId":"listCoreV1PersistentVolumeClaimForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/persistentvolumes":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind PersistentVolume","operationId":"listCoreV1PersistentVolume","parameters":[{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}},{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeList"}}}}}},"post":{"tags":["core_v1"],"description":"create a PersistentVolume","operationId":"createCoreV1PersistentVolume","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}}}},"delete":{"tags":["core_v1"],"description":"delete collection of PersistentVolume","operationId":"deleteCoreV1CollectionPersistentVolume","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Status"}}}}}},"parameters":[{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/persistentvolumes/{name}":{"get":{"tags":["core_v1"],"description":"read the specified PersistentVolume","operationId":"readCoreV1PersistentVolume","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}}}},"put":{"tags":["core_v1"],"description":"replace the specified PersistentVolume","operationId":"replaceCoreV1PersistentVolume","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}}}},"delete":{"tags":["core_v1"],"description":"delete a PersistentVolume","operationId":"deleteCoreV1PersistentVolume","parameters":[{"name":"gracePeriodSeconds","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"orphanDependents","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"propagationPolicy","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update the specified PersistentVolume","operationId":"patchCoreV1PersistentVolume","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the PersistentVolume","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/persistentvolumes/{name}/status":{"get":{"tags":["core_v1"],"description":"read status of the specified PersistentVolume","operationId":"readCoreV1PersistentVolumeStatus","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}}}},"put":{"tags":["core_v1"],"description":"replace status of the specified PersistentVolume","operationId":"replaceCoreV1PersistentVolumeStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"fieldManager","in":"query","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.","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}}}},"patch":{"tags":["core_v1"],"description":"partially update status of the specified PersistentVolume","operationId":"patchCoreV1PersistentVolumeStatus","parameters":[{"name":"dryRun","in":"query","description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","schema":{"type":"string","uniqueItems":true}},{"name":"force","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"fieldManager","in":"query","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).","schema":{"type":"string","uniqueItems":true}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Patch"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}}}}}},"parameters":[{"name":"name","in":"path","description":"name of the PersistentVolume","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}}]},"/api/v1/pods":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Pod","operationId":"listCoreV1PodForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/podtemplates":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind PodTemplate","operationId":"listCoreV1PodTemplateForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/replicationcontrollers":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind ReplicationController","operationId":"listCoreV1ReplicationControllerForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/resourcequotas":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind ResourceQuota","operationId":"listCoreV1ResourceQuotaForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/secrets":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Secret","operationId":"listCoreV1SecretForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.SecretList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/serviceaccounts":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind ServiceAccount","operationId":"listCoreV1ServiceAccountForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/services":{"get":{"tags":["core_v1"],"description":"list or watch objects of kind Service","operationId":"listCoreV1ServiceForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceList"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/configmaps":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of ConfigMap. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1ConfigMapListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/endpoints":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Endpoints. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1EndpointsListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/events":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Event. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1EventListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/limitranges":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of LimitRange. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1LimitRangeListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Namespace. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespaceList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/configmaps":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of ConfigMap. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedConfigMapList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/configmaps/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedConfigMap","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the ConfigMap","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/endpoints":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Endpoints. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedEndpointsList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/endpoints/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedEndpoints","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Endpoints","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/events":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Event. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedEventList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/events/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedEvent","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Event","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/limitranges":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of LimitRange. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedLimitRangeList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/limitranges/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedLimitRange","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the LimitRange","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/persistentvolumeclaims":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of PersistentVolumeClaim. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedPersistentVolumeClaimList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/persistentvolumeclaims/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedPersistentVolumeClaim","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the PersistentVolumeClaim","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/pods":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Pod. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedPodList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/pods/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedPod","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Pod","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/podtemplates":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of PodTemplate. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedPodTemplateList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/podtemplates/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedPodTemplate","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the PodTemplate","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/replicationcontrollers":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of ReplicationController. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedReplicationControllerList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/replicationcontrollers/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedReplicationController","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the ReplicationController","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/resourcequotas":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of ResourceQuota. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedResourceQuotaList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/resourcequotas/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedResourceQuota","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the ResourceQuota","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/secrets":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Secret. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedSecretList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/secrets/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedSecret","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Secret","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/serviceaccounts":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of ServiceAccount. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedServiceAccountList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/serviceaccounts/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedServiceAccount","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the ServiceAccount","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/services":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Service. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NamespacedServiceList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{namespace}/services/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1NamespacedService","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Service","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"namespace","in":"path","description":"object name and auth scope, such as for teams and projects","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/namespaces/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1Namespace","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Namespace","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/nodes":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Node. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1NodeList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/nodes/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1Node","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the Node","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/persistentvolumeclaims":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of PersistentVolumeClaim. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1PersistentVolumeClaimListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/persistentvolumes":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of PersistentVolume. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1PersistentVolumeList","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/persistentvolumes/{name}":{"get":{"tags":["core_v1"],"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.","operationId":"watchCoreV1PersistentVolume","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"name","in":"path","description":"name of the PersistentVolume","required":true,"schema":{"type":"string","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/pods":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Pod. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1PodListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/podtemplates":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of PodTemplate. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1PodTemplateListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/replicationcontrollers":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of ReplicationController. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1ReplicationControllerListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/resourcequotas":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of ResourceQuota. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1ResourceQuotaListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/secrets":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Secret. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1SecretListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/serviceaccounts":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of ServiceAccount. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1ServiceAccountListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]},"/api/v1/watch/services":{"get":{"tags":["core_v1"],"description":"watch individual changes to a list of Service. deprecated: use the 'watch' parameter with a list operation instead.","operationId":"watchCoreV1ServiceListForAllNamespaces","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/json;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/vnd.kubernetes.protobuf;stream=watch":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}},"application/yaml":{"schema":{"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent"}}}}}},"parameters":[{"name":"allowWatchBookmarks","in":"query","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.","schema":{"type":"boolean","uniqueItems":true}},{"name":"continue","in":"query","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.","schema":{"type":"string","uniqueItems":true}},{"name":"fieldSelector","in":"query","description":"A selector to restrict the list of returned objects by their fields. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"labelSelector","in":"query","description":"A selector to restrict the list of returned objects by their labels. Defaults to everything.","schema":{"type":"string","uniqueItems":true}},{"name":"limit","in":"query","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.","schema":{"type":"integer","uniqueItems":true}},{"name":"pretty","in":"query","description":"If 'true', then the output is pretty printed.","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersion","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"resourceVersionMatch","in":"query","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","schema":{"type":"string","uniqueItems":true}},{"name":"timeoutSeconds","in":"query","description":"Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.","schema":{"type":"integer","uniqueItems":true}},{"name":"watch","in":"query","description":"Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.","schema":{"type":"boolean","uniqueItems":true}}]}},"components":{"schemas":{"io.k8s.api.authentication.v1.BoundObjectReference":{"description":"BoundObjectReference is a reference to an object that a token is bound to.","type":"object","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"kind":{"description":"Kind of the referent. Valid kinds are 'Pod' and 'Secret'.","type":"string"},"name":{"description":"Name of the referent.","type":"string"},"uid":{"description":"UID of the referent.","type":"string"}}},"io.k8s.api.authentication.v1.TokenRequest":{"description":"TokenRequest requests a token for a given service account.","type":"object","required":["spec"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"Spec holds information about the request being evaluated","default":{},"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequestSpec"},"status":{"description":"Status is filled in by the server and indicates whether the token can be authenticated.","default":{},"$ref":"#/components/schemas/io.k8s.api.authentication.v1.TokenRequestStatus"}},"x-kubernetes-group-version-kind":[{"group":"authentication.k8s.io","kind":"TokenRequest","version":"v1"}]},"io.k8s.api.authentication.v1.TokenRequestSpec":{"description":"TokenRequestSpec contains client provided parameters of a token request.","type":"object","required":["audiences"],"properties":{"audiences":{"description":"Audiences are the intendend audiences of the token. A recipient of a token must identitfy 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.","type":"array","items":{"type":"string","default":""}},"boundObjectRef":{"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.","$ref":"#/components/schemas/io.k8s.api.authentication.v1.BoundObjectReference"},"expirationSeconds":{"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.","type":"integer","format":"int64"}}},"io.k8s.api.authentication.v1.TokenRequestStatus":{"description":"TokenRequestStatus is the result of a token request.","type":"object","required":["token","expirationTimestamp"],"properties":{"expirationTimestamp":{"description":"ExpirationTimestamp is the time of expiration of the returned token.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"token":{"description":"Token is the opaque bearer token.","type":"string","default":""}}},"io.k8s.api.autoscaling.v1.Scale":{"description":"Scale represents a scaling request for a resource.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.","default":{},"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.ScaleSpec"},"status":{"description":"current status of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. Read-only.","default":{},"$ref":"#/components/schemas/io.k8s.api.autoscaling.v1.ScaleStatus"}},"x-kubernetes-group-version-kind":[{"group":"autoscaling","kind":"Scale","version":"v1"}]},"io.k8s.api.autoscaling.v1.ScaleSpec":{"description":"ScaleSpec describes the attributes of a scale subresource.","type":"object","properties":{"replicas":{"description":"desired number of instances for the scaled object.","type":"integer","format":"int32"}}},"io.k8s.api.autoscaling.v1.ScaleStatus":{"description":"ScaleStatus represents the current status of a scale subresource.","type":"object","required":["replicas"],"properties":{"replicas":{"description":"actual number of observed instances of the scaled object.","type":"integer","format":"int32","default":0},"selector":{"description":"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: http://kubernetes.io/docs/user-guide/labels#label-selectors","type":"string"}}},"io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource":{"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.","type":"object","required":["volumeID"],"properties":{"fsType":{"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","type":"string"},"partition":{"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).","type":"integer","format":"int32"},"readOnly":{"description":"readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore","type":"boolean"},"volumeID":{"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","type":"string","default":""}}},"io.k8s.api.core.v1.Affinity":{"description":"Affinity is a group of affinity scheduling rules.","type":"object","properties":{"nodeAffinity":{"description":"Describes node affinity scheduling rules for the pod.","$ref":"#/components/schemas/io.k8s.api.core.v1.NodeAffinity"},"podAffinity":{"description":"Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).","$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinity"},"podAntiAffinity":{"description":"Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).","$ref":"#/components/schemas/io.k8s.api.core.v1.PodAntiAffinity"}}},"io.k8s.api.core.v1.AttachedVolume":{"description":"AttachedVolume describes a volume attached to a node","type":"object","required":["name","devicePath"],"properties":{"devicePath":{"description":"DevicePath represents the device path where the volume should be available","type":"string","default":""},"name":{"description":"Name of the attached volume","type":"string","default":""}}},"io.k8s.api.core.v1.AzureDiskVolumeSource":{"description":"AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.","type":"object","required":["diskName","diskURI"],"properties":{"cachingMode":{"description":"cachingMode is the Host Caching mode: None, Read Only, Read Write.","type":"string"},"diskName":{"description":"diskName is the Name of the data disk in the blob storage","type":"string","default":""},"diskURI":{"description":"diskURI is the URI of data disk in the blob storage","type":"string","default":""},"fsType":{"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.","type":"string"},"kind":{"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","type":"string"},"readOnly":{"description":"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"}}},"io.k8s.api.core.v1.AzureFilePersistentVolumeSource":{"description":"AzureFile represents an Azure File Service mount on the host and bind mount to the pod.","type":"object","required":["secretName","shareName"],"properties":{"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretName":{"description":"secretName is the name of secret that contains Azure Storage Account Name and Key","type":"string","default":""},"secretNamespace":{"description":"secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod","type":"string"},"shareName":{"description":"shareName is the azure Share Name","type":"string","default":""}}},"io.k8s.api.core.v1.AzureFileVolumeSource":{"description":"AzureFile represents an Azure File Service mount on the host and bind mount to the pod.","type":"object","required":["secretName","shareName"],"properties":{"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretName":{"description":"secretName is the name of secret that contains Azure Storage Account Name and Key","type":"string","default":""},"shareName":{"description":"shareName is the azure share Name","type":"string","default":""}}},"io.k8s.api.core.v1.Binding":{"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.","type":"object","required":["target"],"properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"target":{"description":"The target object that you want to bind to the standard object.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectReference"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Binding","version":"v1"}]},"io.k8s.api.core.v1.CSIPersistentVolumeSource":{"description":"Represents storage that is managed by an external CSI volume driver (Beta feature)","type":"object","required":["driver","volumeHandle"],"properties":{"controllerExpandSecretRef":{"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 is an alpha field and requires enabling ExpandCSIVolumes feature gate. 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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"},"controllerPublishSecretRef":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"},"driver":{"description":"driver is the name of the driver to use for this volume. Required.","type":"string","default":""},"fsType":{"description":"fsType to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\".","type":"string"},"nodePublishSecretRef":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"},"nodeStageSecretRef":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"},"readOnly":{"description":"readOnly value to pass to ControllerPublishVolumeRequest. Defaults to false (read/write).","type":"boolean"},"volumeAttributes":{"description":"volumeAttributes of the volume to publish.","type":"object","additionalProperties":{"type":"string","default":""}},"volumeHandle":{"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.","type":"string","default":""}}},"io.k8s.api.core.v1.CSIVolumeSource":{"description":"Represents a source location of a volume to mount, managed by an external CSI driver","type":"object","required":["driver"],"properties":{"driver":{"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.","type":"string","default":""},"fsType":{"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.","type":"string"},"nodePublishSecretRef":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"readOnly":{"description":"readOnly specifies a read-only configuration for the volume. Defaults to false (read/write).","type":"boolean"},"volumeAttributes":{"description":"volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values.","type":"object","additionalProperties":{"type":"string","default":""}}}},"io.k8s.api.core.v1.Capabilities":{"description":"Adds and removes POSIX capabilities from running containers.","type":"object","properties":{"add":{"description":"Added capabilities","type":"array","items":{"type":"string","default":""}},"drop":{"description":"Removed capabilities","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.CephFSPersistentVolumeSource":{"description":"Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["monitors"],"properties":{"monitors":{"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","type":"array","items":{"type":"string","default":""}},"path":{"description":"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /","type":"string"},"readOnly":{"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","type":"boolean"},"secretFile":{"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","type":"string"},"secretRef":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"},"user":{"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","type":"string"}}},"io.k8s.api.core.v1.CephFSVolumeSource":{"description":"Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["monitors"],"properties":{"monitors":{"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","type":"array","items":{"type":"string","default":""}},"path":{"description":"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /","type":"string"},"readOnly":{"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","type":"boolean"},"secretFile":{"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","type":"string"},"secretRef":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"user":{"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","type":"string"}}},"io.k8s.api.core.v1.CinderPersistentVolumeSource":{"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.","type":"object","required":["volumeID"],"properties":{"fsType":{"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","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"description":"secretRef is Optional: points to a secret object containing parameters used to connect to OpenStack.","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"},"volumeID":{"description":"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","type":"string","default":""}}},"io.k8s.api.core.v1.CinderVolumeSource":{"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.","type":"object","required":["volumeID"],"properties":{"fsType":{"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","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"description":"secretRef is optional: points to a secret object containing parameters used to connect to OpenStack.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"volumeID":{"description":"volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","type":"string","default":""}}},"io.k8s.api.core.v1.ClientIPConfig":{"description":"ClientIPConfig represents the configurations of Client IP based session affinity.","type":"object","properties":{"timeoutSeconds":{"description":"timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be \u003e0 \u0026\u0026 \u003c=86400(for 1 day) if ServiceAffinity == \"ClientIP\". Default value is 10800(for 3 hours).","type":"integer","format":"int32"}}},"io.k8s.api.core.v1.ComponentCondition":{"description":"Information about the condition of a component.","type":"object","required":["type","status"],"properties":{"error":{"description":"Condition error code for a component. For example, a health check error code.","type":"string"},"message":{"description":"Message about the condition for a component. For example, information about a health check.","type":"string"},"status":{"description":"Status of the condition for a component. Valid values for \"Healthy\": \"True\", \"False\", or \"Unknown\".","type":"string","default":""},"type":{"description":"Type of condition for a component. Valid value: \"Healthy\"","type":"string","default":""}}},"io.k8s.api.core.v1.ComponentStatus":{"description":"ComponentStatus (and ComponentStatusList) holds the cluster validation info. Deprecated: This API is deprecated in v1.19+","type":"object","properties":{"apiVersion":{"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","type":"string"},"conditions":{"description":"List of component conditions observed","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentCondition"},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ComponentStatus","version":"v1"}]},"io.k8s.api.core.v1.ComponentStatusList":{"description":"Status of all the conditions for the component as a list of ComponentStatus objects. Deprecated: This API is deprecated in v1.19+","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of ComponentStatus objects.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ComponentStatus"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ComponentStatusList","version":"v1"}]},"io.k8s.api.core.v1.ConfigMap":{"description":"ConfigMap holds configuration data for pods to consume.","type":"object","properties":{"apiVersion":{"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","type":"string"},"binaryData":{"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.","type":"object","additionalProperties":{"type":"string","format":"byte"}},"data":{"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.","type":"object","additionalProperties":{"type":"string","default":""}},"immutable":{"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.","type":"boolean"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ConfigMap","version":"v1"}]},"io.k8s.api.core.v1.ConfigMapEnvSource":{"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.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the ConfigMap must be defined","type":"boolean"}}},"io.k8s.api.core.v1.ConfigMapKeySelector":{"description":"Selects a key from a ConfigMap.","type":"object","required":["key"],"properties":{"key":{"description":"The key to select.","type":"string","default":""},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the ConfigMap or its key must be defined","type":"boolean"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ConfigMapList":{"description":"ConfigMapList is a resource containing a list of ConfigMap objects.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"Items is the list of ConfigMaps.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMap"}},"kind":{"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","type":"string"},"metadata":{"description":"More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ConfigMapList","version":"v1"}]},"io.k8s.api.core.v1.ConfigMapNodeConfigSource":{"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","type":"object","required":["namespace","name","kubeletConfigKey"],"properties":{"kubeletConfigKey":{"description":"KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.","type":"string","default":""},"name":{"description":"Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.","type":"string","default":""},"namespace":{"description":"Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.","type":"string","default":""},"resourceVersion":{"description":"ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.","type":"string"},"uid":{"description":"UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.","type":"string"}}},"io.k8s.api.core.v1.ConfigMapProjection":{"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.","type":"object","properties":{"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional specify whether the ConfigMap or its keys must be defined","type":"boolean"}}},"io.k8s.api.core.v1.ConfigMapVolumeSource":{"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.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional specify whether the ConfigMap or its keys must be defined","type":"boolean"}}},"io.k8s.api.core.v1.Container":{"description":"A single application container that you want to run within a pod.","type":"object","required":["name"],"properties":{"args":{"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","type":"array","items":{"type":"string","default":""}},"command":{"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","type":"array","items":{"type":"string","default":""}},"env":{"description":"List of environment variables to set in the container. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvVar"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"envFrom":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvFromSource"}},"image":{"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.","type":"string"},"imagePullPolicy":{"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\n","type":"string"},"lifecycle":{"description":"Actions that the management system should take in response to container lifecycle events. Cannot be updated.","$ref":"#/components/schemas/io.k8s.api.core.v1.Lifecycle"},"livenessProbe":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"name":{"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.","type":"string","default":""},"ports":{"description":"List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. 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. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerPort"},"x-kubernetes-list-map-keys":["containerPort","protocol"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"containerPort","x-kubernetes-patch-strategy":"merge"},"readinessProbe":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"resources":{"description":"Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceRequirements"},"securityContext":{"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/","$ref":"#/components/schemas/io.k8s.api.core.v1.SecurityContext"},"startupProbe":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"stdin":{"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.","type":"boolean"},"stdinOnce":{"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","type":"boolean"},"terminationMessagePath":{"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.","type":"string"},"terminationMessagePolicy":{"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\n","type":"string"},"tty":{"description":"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.","type":"boolean"},"volumeDevices":{"description":"volumeDevices is the list of block devices to be used by the container.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeDevice"},"x-kubernetes-patch-merge-key":"devicePath","x-kubernetes-patch-strategy":"merge"},"volumeMounts":{"description":"Pod volumes to mount into the container's filesystem. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeMount"},"x-kubernetes-patch-merge-key":"mountPath","x-kubernetes-patch-strategy":"merge"},"workingDir":{"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.","type":"string"}}},"io.k8s.api.core.v1.ContainerImage":{"description":"Describe a container image","type":"object","properties":{"names":{"description":"Names by which this image is known. e.g. [\"k8s.gcr.io/hyperkube:v1.0.7\", \"dockerhub.io/google_containers/hyperkube:v1.0.7\"]","type":"array","items":{"type":"string","default":""}},"sizeBytes":{"description":"The size of the image in bytes.","type":"integer","format":"int64"}}},"io.k8s.api.core.v1.ContainerPort":{"description":"ContainerPort represents a network port in a single container.","type":"object","required":["containerPort"],"properties":{"containerPort":{"description":"Number of port to expose on the pod's IP address. This must be a valid port number, 0 \u003c x \u003c 65536.","type":"integer","format":"int32","default":0},"hostIP":{"description":"What host IP to bind the external port to.","type":"string"},"hostPort":{"description":"Number of port to expose on the host. If specified, this must be a valid port number, 0 \u003c x \u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.","type":"integer","format":"int32"},"name":{"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.","type":"string"},"protocol":{"description":"Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n\n","type":"string","default":"TCP"}}},"io.k8s.api.core.v1.ContainerState":{"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.","type":"object","properties":{"running":{"description":"Details about a running container","$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerStateRunning"},"terminated":{"description":"Details about a terminated container","$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerStateTerminated"},"waiting":{"description":"Details about a waiting container","$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerStateWaiting"}}},"io.k8s.api.core.v1.ContainerStateRunning":{"description":"ContainerStateRunning is a running state of a container.","type":"object","properties":{"startedAt":{"description":"Time at which the container was last (re-)started","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.api.core.v1.ContainerStateTerminated":{"description":"ContainerStateTerminated is a terminated state of a container.","type":"object","required":["exitCode"],"properties":{"containerID":{"description":"Container's ID in the format '\u003ctype\u003e://\u003ccontainer_id\u003e'","type":"string"},"exitCode":{"description":"Exit status from the last termination of the container","type":"integer","format":"int32","default":0},"finishedAt":{"description":"Time at which the container last terminated","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"Message regarding the last termination of the container","type":"string"},"reason":{"description":"(brief) reason from the last termination of the container","type":"string"},"signal":{"description":"Signal from the last termination of the container","type":"integer","format":"int32"},"startedAt":{"description":"Time at which previous execution of the container started","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.api.core.v1.ContainerStateWaiting":{"description":"ContainerStateWaiting is a waiting state of a container.","type":"object","properties":{"message":{"description":"Message regarding why the container is not yet running.","type":"string"},"reason":{"description":"(brief) reason the container is not yet running.","type":"string"}}},"io.k8s.api.core.v1.ContainerStatus":{"description":"ContainerStatus contains details for the current status of this container.","type":"object","required":["name","ready","restartCount","image","imageID"],"properties":{"containerID":{"description":"Container's ID in the format '\u003ctype\u003e://\u003ccontainer_id\u003e'.","type":"string"},"image":{"description":"The image the container is running. More info: https://kubernetes.io/docs/concepts/containers/images.","type":"string","default":""},"imageID":{"description":"ImageID of the container's image.","type":"string","default":""},"lastState":{"description":"Details about the container's last termination condition.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerState"},"name":{"description":"This must be a DNS_LABEL. Each container in a pod must have a unique name. Cannot be updated.","type":"string","default":""},"ready":{"description":"Specifies whether the container has passed its readiness probe.","type":"boolean","default":false},"restartCount":{"description":"The number of times the container has been restarted.","type":"integer","format":"int32","default":0},"started":{"description":"Specifies whether the container has 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. Is always true when no startupProbe is defined.","type":"boolean"},"state":{"description":"Details about the container's current condition.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerState"}}},"io.k8s.api.core.v1.DaemonEndpoint":{"description":"DaemonEndpoint contains information about a single Daemon endpoint.","type":"object","required":["Port"],"properties":{"Port":{"description":"Port number of the given endpoint.","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.DownwardAPIProjection":{"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.","type":"object","properties":{"items":{"description":"Items is a list of DownwardAPIVolume file","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeFile"}}}},"io.k8s.api.core.v1.DownwardAPIVolumeFile":{"description":"DownwardAPIVolumeFile represents information to create the file containing the pod field","type":"object","required":["path"],"properties":{"fieldRef":{"description":"Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.","$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectFieldSelector"},"mode":{"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.","type":"integer","format":"int32"},"path":{"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 '..'","type":"string","default":""},"resourceFieldRef":{"description":"Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.","$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceFieldSelector"}}},"io.k8s.api.core.v1.DownwardAPIVolumeSource":{"description":"DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"description":"Items is a list of downward API volume file","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeFile"}}}},"io.k8s.api.core.v1.EmptyDirVolumeSource":{"description":"Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.","type":"object","properties":{"medium":{"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","type":"string"},"sizeLimit":{"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: http://kubernetes.io/docs/user-guide/volumes#emptydir","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}}},"io.k8s.api.core.v1.EndpointAddress":{"description":"EndpointAddress is a tuple that describes single IP address.","type":"object","required":["ip"],"properties":{"hostname":{"description":"The Hostname of this endpoint","type":"string"},"ip":{"description":"The IP of this endpoint. May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), or link-local multicast ((224.0.0.0/24). IPv6 is also accepted but not fully supported on all platforms. Also, certain kubernetes components, like kube-proxy, are not IPv6 ready.","type":"string","default":""},"nodeName":{"description":"Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.","type":"string"},"targetRef":{"description":"Reference to object providing the endpoint.","$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectReference"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.EndpointPort":{"description":"EndpointPort is a tuple that describes a single port.","type":"object","required":["port"],"properties":{"appProtocol":{"description":"The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol.","type":"string"},"name":{"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.","type":"string"},"port":{"description":"The port number of the endpoint.","type":"integer","format":"int32","default":0},"protocol":{"description":"The IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP.\n\n","type":"string"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.EndpointSubset":{"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 Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n }\nThe resulting set of endpoints can be viewed 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 ]","type":"object","properties":{"addresses":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointAddress"}},"notReadyAddresses":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointAddress"}},"ports":{"description":"Port numbers available on the related IP addresses.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointPort"}}}},"io.k8s.api.core.v1.Endpoints":{"description":"Endpoints is a collection of endpoints that implement the actual service. Example:\n Name: \"mysvc\",\n Subsets: [\n {\n Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n },\n {\n Addresses: [{\"ip\": \"10.10.3.3\"}],\n Ports: [{\"name\": \"a\", \"port\": 93}, {\"name\": \"b\", \"port\": 76}]\n },\n ]","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"subsets":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EndpointSubset"}}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Endpoints","version":"v1"}]},"io.k8s.api.core.v1.EndpointsList":{"description":"EndpointsList is a list of endpoints.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of endpoints.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Endpoints"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"EndpointsList","version":"v1"}]},"io.k8s.api.core.v1.EnvFromSource":{"description":"EnvFromSource represents the source of a set of ConfigMaps","type":"object","properties":{"configMapRef":{"description":"The ConfigMap to select from","$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapEnvSource"},"prefix":{"description":"An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.","type":"string"},"secretRef":{"description":"The Secret to select from","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretEnvSource"}}},"io.k8s.api.core.v1.EnvVar":{"description":"EnvVar represents an environment variable present in a Container.","type":"object","required":["name"],"properties":{"name":{"description":"Name of the environment variable. Must be a C_IDENTIFIER.","type":"string","default":""},"value":{"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 \"\".","type":"string"},"valueFrom":{"description":"Source for the environment variable's value. Cannot be used if value is not empty.","$ref":"#/components/schemas/io.k8s.api.core.v1.EnvVarSource"}}},"io.k8s.api.core.v1.EnvVarSource":{"description":"EnvVarSource represents a source for the value of an EnvVar.","type":"object","properties":{"configMapKeyRef":{"description":"Selects a key of a ConfigMap.","$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapKeySelector"},"fieldRef":{"description":"Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\u003cKEY\u003e']`, `metadata.annotations['\u003cKEY\u003e']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.","$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectFieldSelector"},"resourceFieldRef":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceFieldSelector"},"secretKeyRef":{"description":"Selects a key of a secret in the pod's namespace","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretKeySelector"}}},"io.k8s.api.core.v1.EphemeralContainer":{"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\nThis is a beta feature available on clusters that haven't disabled the EphemeralContainers feature gate.","type":"object","required":["name"],"properties":{"args":{"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","type":"array","items":{"type":"string","default":""}},"command":{"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","type":"array","items":{"type":"string","default":""}},"env":{"description":"List of environment variables to set in the container. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvVar"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"envFrom":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EnvFromSource"}},"image":{"description":"Container image name. More info: https://kubernetes.io/docs/concepts/containers/images","type":"string"},"imagePullPolicy":{"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\n","type":"string"},"lifecycle":{"description":"Lifecycle is not allowed for ephemeral containers.","$ref":"#/components/schemas/io.k8s.api.core.v1.Lifecycle"},"livenessProbe":{"description":"Probes are not allowed for ephemeral containers.","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"name":{"description":"Name of the ephemeral container specified as a DNS_LABEL. This name must be unique among all containers, init containers and ephemeral containers.","type":"string","default":""},"ports":{"description":"Ports are not allowed for ephemeral containers.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerPort"},"x-kubernetes-list-map-keys":["containerPort","protocol"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"containerPort","x-kubernetes-patch-strategy":"merge"},"readinessProbe":{"description":"Probes are not allowed for ephemeral containers.","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"resources":{"description":"Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources already allocated to the pod.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceRequirements"},"securityContext":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SecurityContext"},"startupProbe":{"description":"Probes are not allowed for ephemeral containers.","$ref":"#/components/schemas/io.k8s.api.core.v1.Probe"},"stdin":{"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.","type":"boolean"},"stdinOnce":{"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","type":"boolean"},"targetContainerName":{"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.","type":"string"},"terminationMessagePath":{"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.","type":"string"},"terminationMessagePolicy":{"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\n","type":"string"},"tty":{"description":"Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.","type":"boolean"},"volumeDevices":{"description":"volumeDevices is the list of block devices to be used by the container.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeDevice"},"x-kubernetes-patch-merge-key":"devicePath","x-kubernetes-patch-strategy":"merge"},"volumeMounts":{"description":"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers. Cannot be updated.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeMount"},"x-kubernetes-patch-merge-key":"mountPath","x-kubernetes-patch-strategy":"merge"},"workingDir":{"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.","type":"string"}}},"io.k8s.api.core.v1.EphemeralVolumeSource":{"description":"Represents an ephemeral volume that is handled by a normal storage driver.","type":"object","properties":{"volumeClaimTemplate":{"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 `\u003cpod name\u003e-\u003cvolume name\u003e` where `\u003cvolume name\u003e` 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.","$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimTemplate"}}},"io.k8s.api.core.v1.Event":{"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.","type":"object","required":["metadata","involvedObject"],"properties":{"action":{"description":"What action was taken/failed regarding to the Regarding object.","type":"string"},"apiVersion":{"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","type":"string"},"count":{"description":"The number of times this event has occurred.","type":"integer","format":"int32"},"eventTime":{"description":"Time when this Event was first observed.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime"},"firstTimestamp":{"description":"The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"involvedObject":{"description":"The object that this event is about.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectReference"},"kind":{"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","type":"string"},"lastTimestamp":{"description":"The time at which the most recent occurrence of this event was recorded.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"reason":{"description":"This should be a short, machine understandable string that gives the reason for the transition into the object's current status.","type":"string"},"related":{"description":"Optional secondary object for more complex actions.","$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectReference"},"reportingComponent":{"description":"Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.","type":"string","default":""},"reportingInstance":{"description":"ID of the controller instance, e.g. `kubelet-xyzf`.","type":"string","default":""},"series":{"description":"Data about the Event series this event represents or nil if it's a singleton Event.","$ref":"#/components/schemas/io.k8s.api.core.v1.EventSeries"},"source":{"description":"The component reporting this event. Should be a short machine understandable string.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EventSource"},"type":{"description":"Type of this event (Normal, Warning), new types could be added in the future","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Event","version":"v1"}]},"io.k8s.api.core.v1.EventList":{"description":"EventList is a list of events.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of events","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Event"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"EventList","version":"v1"}]},"io.k8s.api.core.v1.EventSeries":{"description":"EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time.","type":"object","properties":{"count":{"description":"Number of occurrences in this series up to the last heartbeat time","type":"integer","format":"int32"},"lastObservedTime":{"description":"Time of the last occurrence observed","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime"}}},"io.k8s.api.core.v1.EventSource":{"description":"EventSource contains information for an event.","type":"object","properties":{"component":{"description":"Component from which the event is generated.","type":"string"},"host":{"description":"Node name on which the event is generated.","type":"string"}}},"io.k8s.api.core.v1.ExecAction":{"description":"ExecAction describes a \"run in container\" action.","type":"object","properties":{"command":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.FCVolumeSource":{"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.","type":"object","properties":{"fsType":{"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.","type":"string"},"lun":{"description":"lun is Optional: FC target lun number","type":"integer","format":"int32"},"readOnly":{"description":"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"targetWWNs":{"description":"targetWWNs is Optional: FC target worldwide names (WWNs)","type":"array","items":{"type":"string","default":""}},"wwids":{"description":"wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.FlexPersistentVolumeSource":{"description":"FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.","type":"object","required":["driver"],"properties":{"driver":{"description":"driver is the name of the driver to use for this volume.","type":"string","default":""},"fsType":{"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.","type":"string"},"options":{"description":"options is Optional: this field holds extra command options if any.","type":"object","additionalProperties":{"type":"string","default":""}},"readOnly":{"description":"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"}}},"io.k8s.api.core.v1.FlexVolumeSource":{"description":"FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.","type":"object","required":["driver"],"properties":{"driver":{"description":"driver is the name of the driver to use for this volume.","type":"string","default":""},"fsType":{"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.","type":"string"},"options":{"description":"options is Optional: this field holds extra command options if any.","type":"object","additionalProperties":{"type":"string","default":""}},"readOnly":{"description":"readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}}},"io.k8s.api.core.v1.FlockerVolumeSource":{"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.","type":"object","properties":{"datasetName":{"description":"datasetName is Name of the dataset stored as metadata -\u003e name on the dataset for Flocker should be considered as deprecated","type":"string"},"datasetUUID":{"description":"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset","type":"string"}}},"io.k8s.api.core.v1.GCEPersistentDiskVolumeSource":{"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.","type":"object","required":["pdName"],"properties":{"fsType":{"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","type":"string"},"partition":{"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","type":"integer","format":"int32"},"pdName":{"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","type":"string","default":""},"readOnly":{"description":"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk","type":"boolean"}}},"io.k8s.api.core.v1.GRPCAction":{"type":"object","required":["port"],"properties":{"port":{"description":"Port number of the gRPC service. Number must be in the range 1 to 65535.","type":"integer","format":"int32","default":0},"service":{"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.","type":"string","default":""}}},"io.k8s.api.core.v1.GitRepoVolumeSource":{"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.","type":"object","required":["repository"],"properties":{"directory":{"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.","type":"string"},"repository":{"description":"repository is the URL","type":"string","default":""},"revision":{"description":"revision is the commit hash for the specified revision.","type":"string"}}},"io.k8s.api.core.v1.GlusterfsPersistentVolumeSource":{"description":"Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["endpoints","path"],"properties":{"endpoints":{"description":"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"endpointsNamespace":{"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","type":"string"},"path":{"description":"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"readOnly":{"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","type":"boolean"}}},"io.k8s.api.core.v1.GlusterfsVolumeSource":{"description":"Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.","type":"object","required":["endpoints","path"],"properties":{"endpoints":{"description":"endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"path":{"description":"path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod","type":"string","default":""},"readOnly":{"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","type":"boolean"}}},"io.k8s.api.core.v1.HTTPGetAction":{"description":"HTTPGetAction describes an action based on HTTP Get requests.","type":"object","required":["port"],"properties":{"host":{"description":"Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.","type":"string"},"httpHeaders":{"description":"Custom headers to set in the request. HTTP allows repeated headers.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.HTTPHeader"}},"path":{"description":"Path to access on the HTTP server.","type":"string"},"port":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString"},"scheme":{"description":"Scheme to use for connecting to the host. Defaults to HTTP.\n\n","type":"string"}}},"io.k8s.api.core.v1.HTTPHeader":{"description":"HTTPHeader describes a custom header to be used in HTTP probes","type":"object","required":["name","value"],"properties":{"name":{"description":"The header field name","type":"string","default":""},"value":{"description":"The header field value","type":"string","default":""}}},"io.k8s.api.core.v1.HostAlias":{"description":"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.","type":"object","properties":{"hostnames":{"description":"Hostnames for the above IP address.","type":"array","items":{"type":"string","default":""}},"ip":{"description":"IP address of the host file entry.","type":"string"}}},"io.k8s.api.core.v1.HostPathVolumeSource":{"description":"Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.","type":"object","required":["path"],"properties":{"path":{"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","type":"string","default":""},"type":{"description":"type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath","type":"string"}}},"io.k8s.api.core.v1.ISCSIPersistentVolumeSource":{"description":"ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.","type":"object","required":["targetPortal","iqn","lun"],"properties":{"chapAuthDiscovery":{"description":"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication","type":"boolean"},"chapAuthSession":{"description":"chapAuthSession defines whether support iSCSI Session CHAP authentication","type":"boolean"},"fsType":{"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","type":"string"},"initiatorName":{"description":"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \u003ctarget portal\u003e:\u003cvolume name\u003e will be created for the connection.","type":"string"},"iqn":{"description":"iqn is Target iSCSI Qualified Name.","type":"string","default":""},"iscsiInterface":{"description":"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).","type":"string"},"lun":{"description":"lun is iSCSI Target Lun number.","type":"integer","format":"int32","default":0},"portals":{"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).","type":"array","items":{"type":"string","default":""}},"readOnly":{"description":"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.","type":"boolean"},"secretRef":{"description":"secretRef is the CHAP Secret for iSCSI target and initiator authentication","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"},"targetPortal":{"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).","type":"string","default":""}}},"io.k8s.api.core.v1.ISCSIVolumeSource":{"description":"Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.","type":"object","required":["targetPortal","iqn","lun"],"properties":{"chapAuthDiscovery":{"description":"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication","type":"boolean"},"chapAuthSession":{"description":"chapAuthSession defines whether support iSCSI Session CHAP authentication","type":"boolean"},"fsType":{"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","type":"string"},"initiatorName":{"description":"initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \u003ctarget portal\u003e:\u003cvolume name\u003e will be created for the connection.","type":"string"},"iqn":{"description":"iqn is the target iSCSI Qualified Name.","type":"string","default":""},"iscsiInterface":{"description":"iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp).","type":"string"},"lun":{"description":"lun represents iSCSI Target Lun number.","type":"integer","format":"int32","default":0},"portals":{"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).","type":"array","items":{"type":"string","default":""}},"readOnly":{"description":"readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.","type":"boolean"},"secretRef":{"description":"secretRef is the CHAP Secret for iSCSI target and initiator authentication","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"targetPortal":{"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).","type":"string","default":""}}},"io.k8s.api.core.v1.KeyToPath":{"description":"Maps a string key to a path within a volume.","type":"object","required":["key","path"],"properties":{"key":{"description":"key is the key to project.","type":"string","default":""},"mode":{"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.","type":"integer","format":"int32"},"path":{"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 '..'.","type":"string","default":""}}},"io.k8s.api.core.v1.Lifecycle":{"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.","type":"object","properties":{"postStart":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.LifecycleHandler"},"preStop":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.LifecycleHandler"}}},"io.k8s.api.core.v1.LifecycleHandler":{"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.","type":"object","properties":{"exec":{"description":"Exec specifies the action to take.","$ref":"#/components/schemas/io.k8s.api.core.v1.ExecAction"},"httpGet":{"description":"HTTPGet specifies the http request to perform.","$ref":"#/components/schemas/io.k8s.api.core.v1.HTTPGetAction"},"tcpSocket":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.TCPSocketAction"}}},"io.k8s.api.core.v1.LimitRange":{"description":"LimitRange sets resource usage limits for each kind of resource in a Namespace.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"Spec defines the limits enforced. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeSpec"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"LimitRange","version":"v1"}]},"io.k8s.api.core.v1.LimitRangeItem":{"description":"LimitRangeItem defines a min/max usage limit for any resource that matches on kind.","type":"object","required":["type"],"properties":{"default":{"description":"Default resource requirement limit value by resource name if resource limit is omitted.","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"defaultRequest":{"description":"DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"max":{"description":"Max usage constraints on this kind by resource name.","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"maxLimitRequestRatio":{"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.","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"min":{"description":"Min usage constraints on this kind by resource name.","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"type":{"description":"Type of resource that this limit applies to.\n\n","type":"string","default":""}}},"io.k8s.api.core.v1.LimitRangeList":{"description":"LimitRangeList is a list of LimitRange items.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"Items is a list of LimitRange objects. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRange"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"LimitRangeList","version":"v1"}]},"io.k8s.api.core.v1.LimitRangeSpec":{"description":"LimitRangeSpec defines a min/max usage limit for resources that match on kind.","type":"object","required":["limits"],"properties":{"limits":{"description":"Limits is the list of LimitRangeItem objects that are enforced.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.LimitRangeItem"}}}},"io.k8s.api.core.v1.LoadBalancerIngress":{"description":"LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.","type":"object","properties":{"hostname":{"description":"Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers)","type":"string"},"ip":{"description":"IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)","type":"string"},"ports":{"description":"Ports is a list of records of service ports If used, every port defined in the service should have an entry in it","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PortStatus"},"x-kubernetes-list-type":"atomic"}}},"io.k8s.api.core.v1.LoadBalancerStatus":{"description":"LoadBalancerStatus represents the status of a load-balancer.","type":"object","properties":{"ingress":{"description":"Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.LoadBalancerIngress"}}}},"io.k8s.api.core.v1.LocalObjectReference":{"description":"LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.LocalVolumeSource":{"description":"Local represents directly-attached storage with node affinity (Beta feature)","type":"object","required":["path"],"properties":{"fsType":{"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.","type":"string"},"path":{"description":"path of the full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).","type":"string","default":""}}},"io.k8s.api.core.v1.NFSVolumeSource":{"description":"Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.","type":"object","required":["server","path"],"properties":{"path":{"description":"path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs","type":"string","default":""},"readOnly":{"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","type":"boolean"},"server":{"description":"server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs","type":"string","default":""}}},"io.k8s.api.core.v1.Namespace":{"description":"Namespace provides a scope for Names. Use of multiple namespaces is optional.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NamespaceSpec"},"status":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NamespaceStatus"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Namespace","version":"v1"}]},"io.k8s.api.core.v1.NamespaceCondition":{"description":"NamespaceCondition contains details about state of namespace.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"type":"string"},"reason":{"type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string","default":""},"type":{"description":"Type of namespace controller condition.\n\n","type":"string","default":""}}},"io.k8s.api.core.v1.NamespaceList":{"description":"NamespaceList is a list of Namespaces.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"Items is the list of Namespace objects in the list. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Namespace"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"NamespaceList","version":"v1"}]},"io.k8s.api.core.v1.NamespaceSpec":{"description":"NamespaceSpec describes the attributes on a Namespace.","type":"object","properties":{"finalizers":{"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/","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.NamespaceStatus":{"description":"NamespaceStatus is information about the current status of a Namespace.","type":"object","properties":{"conditions":{"description":"Represents the latest available observations of a namespace's current state.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NamespaceCondition"},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"phase":{"description":"Phase is the current lifecycle phase of the namespace. More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/\n\n","type":"string"}}},"io.k8s.api.core.v1.Node":{"description":"Node is a worker node in Kubernetes. Each node will have a unique identifier in the cache (i.e. in etcd).","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"Spec defines the behavior of a node. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSpec"},"status":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeStatus"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Node","version":"v1"}]},"io.k8s.api.core.v1.NodeAddress":{"description":"NodeAddress contains information for the node's address.","type":"object","required":["type","address"],"properties":{"address":{"description":"The node address.","type":"string","default":""},"type":{"description":"Node address type, one of Hostname, ExternalIP or InternalIP.\n\n","type":"string","default":""}}},"io.k8s.api.core.v1.NodeAffinity":{"description":"Node affinity is a group of node affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PreferredSchedulingTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelector"}}},"io.k8s.api.core.v1.NodeCondition":{"description":"NodeCondition contains condition information for a node.","type":"object","required":["type","status"],"properties":{"lastHeartbeatTime":{"description":"Last time we got an update on a given condition.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"lastTransitionTime":{"description":"Last time the condition transit from one status to another.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"Human readable message indicating details about last transition.","type":"string"},"reason":{"description":"(brief) reason for the condition's last transition.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string","default":""},"type":{"description":"Type of node condition.\n\n","type":"string","default":""}}},"io.k8s.api.core.v1.NodeConfigSource":{"description":"NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil. This API is deprecated since 1.22","type":"object","properties":{"configMap":{"description":"ConfigMap is a reference to a Node's ConfigMap","$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapNodeConfigSource"}}},"io.k8s.api.core.v1.NodeConfigStatus":{"description":"NodeConfigStatus describes the status of the config assigned by Node.Spec.ConfigSource.","type":"object","properties":{"active":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.NodeConfigSource"},"assigned":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.NodeConfigSource"},"error":{"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.","type":"string"},"lastKnownGood":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.NodeConfigSource"}}},"io.k8s.api.core.v1.NodeDaemonEndpoints":{"description":"NodeDaemonEndpoints lists ports opened by daemons running on the Node.","type":"object","properties":{"kubeletEndpoint":{"description":"Endpoint on which Kubelet is listening.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.DaemonEndpoint"}}},"io.k8s.api.core.v1.NodeList":{"description":"NodeList is the whole list of all Nodes which have been registered with master.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of nodes","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Node"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"NodeList","version":"v1"}]},"io.k8s.api.core.v1.NodeSelector":{"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.","type":"object","required":["nodeSelectorTerms"],"properties":{"nodeSelectorTerms":{"description":"Required. A list of node selector terms. The terms are ORed.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorTerm"}}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.NodeSelectorRequirement":{"description":"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.","type":"object","required":["key","operator"],"properties":{"key":{"description":"The label key that the selector applies to.","type":"string","default":""},"operator":{"description":"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n\n","type":"string","default":""},"values":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.NodeSelectorTerm":{"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.","type":"object","properties":{"matchExpressions":{"description":"A list of node selector requirements by node's labels.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorRequirement"}},"matchFields":{"description":"A list of node selector requirements by node's fields.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorRequirement"}}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.NodeSpec":{"description":"NodeSpec describes the attributes that a node is created with.","type":"object","properties":{"configSource":{"description":"Deprecated: Previously used to specify the source of the node's configuration for the DynamicKubeletConfig feature. This feature is removed from Kubelets as of 1.24 and will be fully removed in 1.26.","$ref":"#/components/schemas/io.k8s.api.core.v1.NodeConfigSource"},"externalID":{"description":"Deprecated. Not all kubelets will set this field. Remove field after 1.13. see: https://issues.k8s.io/61966","type":"string"},"podCIDR":{"description":"PodCIDR represents the pod IP range assigned to the node.","type":"string"},"podCIDRs":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"providerID":{"description":"ID of the node assigned by the cloud provider in the format: \u003cProviderName\u003e://\u003cProviderSpecificNodeID\u003e","type":"string"},"taints":{"description":"If specified, the node's taints.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Taint"}},"unschedulable":{"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","type":"boolean"}}},"io.k8s.api.core.v1.NodeStatus":{"description":"NodeStatus is information about the current status of a node.","type":"object","properties":{"addresses":{"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 http://pr.k8s.io/79391 for an example.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeAddress"},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"allocatable":{"description":"Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity.","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"capacity":{"description":"Capacity represents the total resources of a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"conditions":{"description":"Conditions is an array of current observed node conditions. More info: https://kubernetes.io/docs/concepts/nodes/node/#condition","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeCondition"},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"config":{"description":"Status of the config assigned to the node via the dynamic Kubelet config feature.","$ref":"#/components/schemas/io.k8s.api.core.v1.NodeConfigStatus"},"daemonEndpoints":{"description":"Endpoints of daemons running on the Node.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeDaemonEndpoints"},"images":{"description":"List of container images on this node","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerImage"}},"nodeInfo":{"description":"Set of ids/uuids to uniquely identify the node. More info: https://kubernetes.io/docs/concepts/nodes/node/#info","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSystemInfo"},"phase":{"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\n","type":"string"},"volumesAttached":{"description":"List of volumes that are attached to the node.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.AttachedVolume"}},"volumesInUse":{"description":"List of attachable volumes in use (mounted) by the node.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.NodeSystemInfo":{"description":"NodeSystemInfo is a set of ids/uuids to uniquely identify the node.","type":"object","required":["machineID","systemUUID","bootID","kernelVersion","osImage","containerRuntimeVersion","kubeletVersion","kubeProxyVersion","operatingSystem","architecture"],"properties":{"architecture":{"description":"The Architecture reported by the node","type":"string","default":""},"bootID":{"description":"Boot ID reported by the node.","type":"string","default":""},"containerRuntimeVersion":{"description":"ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0).","type":"string","default":""},"kernelVersion":{"description":"Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).","type":"string","default":""},"kubeProxyVersion":{"description":"KubeProxy Version reported by the node.","type":"string","default":""},"kubeletVersion":{"description":"Kubelet Version reported by the node.","type":"string","default":""},"machineID":{"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","type":"string","default":""},"operatingSystem":{"description":"The Operating System reported by the node","type":"string","default":""},"osImage":{"description":"OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).","type":"string","default":""},"systemUUID":{"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","type":"string","default":""}}},"io.k8s.api.core.v1.ObjectFieldSelector":{"description":"ObjectFieldSelector selects an APIVersioned field of an object.","type":"object","required":["fieldPath"],"properties":{"apiVersion":{"description":"Version of the schema the FieldPath is written in terms of, defaults to \"v1\".","type":"string"},"fieldPath":{"description":"Path of the field to select in the specified API version.","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ObjectReference":{"description":"ObjectReference contains enough information to let you inspect or modify the referred object.","type":"object","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"fieldPath":{"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.","type":"string"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"namespace":{"description":"Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/","type":"string"},"resourceVersion":{"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","type":"string"},"uid":{"description":"UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids","type":"string"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.PersistentVolume":{"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","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeSpec"},"status":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeStatus"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PersistentVolume","version":"v1"}]},"io.k8s.api.core.v1.PersistentVolumeClaim":{"description":"PersistentVolumeClaim is a user's request for and claim to a persistent volume","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimSpec"},"status":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimStatus"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PersistentVolumeClaim","version":"v1"}]},"io.k8s.api.core.v1.PersistentVolumeClaimCondition":{"description":"PersistentVolumeClaimCondition contails details about state of pvc","type":"object","required":["type","status"],"properties":{"lastProbeTime":{"description":"lastProbeTime is the time we probed the condition.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"lastTransitionTime":{"description":"lastTransitionTime is the time the condition transitioned from one status to another.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"message is the human-readable message indicating details about last transition.","type":"string"},"reason":{"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 \"ResizeStarted\" that means the underlying persistent volume is being resized.","type":"string"},"status":{"type":"string","default":""},"type":{"description":"\n\n\n","type":"string","default":""}}},"io.k8s.api.core.v1.PersistentVolumeClaimList":{"description":"PersistentVolumeClaimList is a list of PersistentVolumeClaim items.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"items is a list of persistent volume claims. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaim"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PersistentVolumeClaimList","version":"v1"}]},"io.k8s.api.core.v1.PersistentVolumeClaimSpec":{"description":"PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes","type":"object","properties":{"accessModes":{"description":"accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1","type":"array","items":{"type":"string","default":""}},"dataSource":{"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. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.","$ref":"#/components/schemas/io.k8s.api.core.v1.TypedLocalObjectReference"},"dataSourceRef":{"description":"dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local 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, 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. There are two 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(Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled.","$ref":"#/components/schemas/io.k8s.api.core.v1.TypedLocalObjectReference"},"resources":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceRequirements"},"selector":{"description":"selector is a label query over volumes to consider for binding.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"storageClassName":{"description":"storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1","type":"string"},"volumeMode":{"description":"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.","type":"string"},"volumeName":{"description":"volumeName is the binding reference to the PersistentVolume backing this claim.","type":"string"}}},"io.k8s.api.core.v1.PersistentVolumeClaimStatus":{"description":"PersistentVolumeClaimStatus is the current status of a persistent volume claim.","type":"object","properties":{"accessModes":{"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","type":"array","items":{"type":"string","default":""}},"allocatedResources":{"description":"allocatedResources is the storage resource within AllocatedResources tracks the capacity allocated to a PVC. It 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. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"capacity":{"description":"capacity represents the actual resources of the underlying volume.","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"conditions":{"description":"conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimCondition"},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"phase":{"description":"phase represents the current phase of PersistentVolumeClaim.\n\n","type":"string"},"resizeStatus":{"description":"resizeStatus stores status of resize operation. ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty string by resize controller or kubelet. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.","type":"string"}}},"io.k8s.api.core.v1.PersistentVolumeClaimTemplate":{"description":"PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource.","type":"object","required":["spec"],"properties":{"metadata":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimSpec"}}},"io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource":{"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).","type":"object","required":["claimName"],"properties":{"claimName":{"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","type":"string","default":""},"readOnly":{"description":"readOnly Will force the ReadOnly setting in VolumeMounts. Default false.","type":"boolean"}}},"io.k8s.api.core.v1.PersistentVolumeList":{"description":"PersistentVolumeList is a list of PersistentVolume items.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"items is a list of persistent volumes. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolume"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PersistentVolumeList","version":"v1"}]},"io.k8s.api.core.v1.PersistentVolumeSpec":{"description":"PersistentVolumeSpec is the specification of a persistent volume.","type":"object","properties":{"accessModes":{"description":"accessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes","type":"array","items":{"type":"string","default":""}},"awsElasticBlockStore":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource"},"azureDisk":{"description":"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.","$ref":"#/components/schemas/io.k8s.api.core.v1.AzureDiskVolumeSource"},"azureFile":{"description":"azureFile represents an Azure File Service mount on the host and bind mount to the pod.","$ref":"#/components/schemas/io.k8s.api.core.v1.AzureFilePersistentVolumeSource"},"capacity":{"description":"capacity is the description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"cephfs":{"description":"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime","$ref":"#/components/schemas/io.k8s.api.core.v1.CephFSPersistentVolumeSource"},"cinder":{"description":"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","$ref":"#/components/schemas/io.k8s.api.core.v1.CinderPersistentVolumeSource"},"claimRef":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectReference"},"csi":{"description":"csi represents storage that is handled by an external CSI driver (Beta feature).","$ref":"#/components/schemas/io.k8s.api.core.v1.CSIPersistentVolumeSource"},"fc":{"description":"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.","$ref":"#/components/schemas/io.k8s.api.core.v1.FCVolumeSource"},"flexVolume":{"description":"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.","$ref":"#/components/schemas/io.k8s.api.core.v1.FlexPersistentVolumeSource"},"flocker":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.FlockerVolumeSource"},"gcePersistentDisk":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource"},"glusterfs":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.GlusterfsPersistentVolumeSource"},"hostPath":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.HostPathVolumeSource"},"iscsi":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.ISCSIPersistentVolumeSource"},"local":{"description":"local represents directly-attached storage with node affinity","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalVolumeSource"},"mountOptions":{"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","type":"array","items":{"type":"string","default":""}},"nfs":{"description":"nfs represents an NFS mount on the host. Provisioned by an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs","$ref":"#/components/schemas/io.k8s.api.core.v1.NFSVolumeSource"},"nodeAffinity":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeNodeAffinity"},"persistentVolumeReclaimPolicy":{"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\n","type":"string"},"photonPersistentDisk":{"description":"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine","$ref":"#/components/schemas/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource"},"portworxVolume":{"description":"portworxVolume represents a portworx volume attached and mounted on kubelets host machine","$ref":"#/components/schemas/io.k8s.api.core.v1.PortworxVolumeSource"},"quobyte":{"description":"quobyte represents a Quobyte mount on the host that shares a pod's lifetime","$ref":"#/components/schemas/io.k8s.api.core.v1.QuobyteVolumeSource"},"rbd":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.RBDPersistentVolumeSource"},"scaleIO":{"description":"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.","$ref":"#/components/schemas/io.k8s.api.core.v1.ScaleIOPersistentVolumeSource"},"storageClassName":{"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.","type":"string"},"storageos":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.StorageOSPersistentVolumeSource"},"volumeMode":{"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.","type":"string"},"vsphereVolume":{"description":"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine","$ref":"#/components/schemas/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource"}}},"io.k8s.api.core.v1.PersistentVolumeStatus":{"description":"PersistentVolumeStatus is the current status of a persistent volume.","type":"object","properties":{"message":{"description":"message is a human-readable message indicating details about why the volume is in this state.","type":"string"},"phase":{"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\n","type":"string"},"reason":{"description":"reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI.","type":"string"}}},"io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource":{"description":"Represents a Photon Controller persistent disk resource.","type":"object","required":["pdID"],"properties":{"fsType":{"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.","type":"string"},"pdID":{"description":"pdID is the ID that identifies Photon Controller persistent disk","type":"string","default":""}}},"io.k8s.api.core.v1.Pod":{"description":"Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodSpec"},"status":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodStatus"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Pod","version":"v1"}]},"io.k8s.api.core.v1.PodAffinity":{"description":"Pod affinity is a group of inter pod affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.WeightedPodAffinityTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm"}}}},"io.k8s.api.core.v1.PodAffinityTerm":{"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 \u003ctopologyKey\u003e matches that of any node on which a pod of the set of pods is running","type":"object","required":["topologyKey"],"properties":{"labelSelector":{"description":"A label query over a set of resources, in this case pods.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"namespaceSelector":{"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. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"namespaces":{"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\"","type":"array","items":{"type":"string","default":""}},"topologyKey":{"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.","type":"string","default":""}}},"io.k8s.api.core.v1.PodAntiAffinity":{"description":"Pod anti affinity is a group of inter pod anti affinity scheduling rules.","type":"object","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.WeightedPodAffinityTerm"}},"requiredDuringSchedulingIgnoredDuringExecution":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm"}}}},"io.k8s.api.core.v1.PodCondition":{"description":"PodCondition contains details for the current condition of this pod.","type":"object","required":["type","status"],"properties":{"lastProbeTime":{"description":"Last time we probed the condition.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"lastTransitionTime":{"description":"Last time the condition transitioned from one status to another.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"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","type":"string","default":""},"type":{"description":"Type is the type of the condition. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions\n\n","type":"string","default":""}}},"io.k8s.api.core.v1.PodDNSConfig":{"description":"PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.","type":"object","properties":{"nameservers":{"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.","type":"array","items":{"type":"string","default":""}},"options":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodDNSConfigOption"}},"searches":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.PodDNSConfigOption":{"description":"PodDNSConfigOption defines DNS resolver options of a pod.","type":"object","properties":{"name":{"description":"Required.","type":"string"},"value":{"type":"string"}}},"io.k8s.api.core.v1.PodIP":{"description":"IP address information for entries in the (plural) PodIPs field. Each entry includes:\n IP: An IP address allocated to the pod. Routable at least within the cluster.","type":"object","properties":{"ip":{"description":"ip is an IP address (IPv4 or IPv6) assigned to the pod","type":"string"}}},"io.k8s.api.core.v1.PodList":{"description":"PodList is a list of Pods.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of pods. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Pod"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PodList","version":"v1"}]},"io.k8s.api.core.v1.PodOS":{"description":"PodOS defines the OS parameters of a pod.","type":"object","required":["name"],"properties":{"name":{"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","type":"string","default":""}}},"io.k8s.api.core.v1.PodReadinessGate":{"description":"PodReadinessGate contains the reference to a pod condition","type":"object","required":["conditionType"],"properties":{"conditionType":{"description":"ConditionType refers to a condition in the pod's condition list with matching type.\n\n","type":"string","default":""}}},"io.k8s.api.core.v1.PodSecurityContext":{"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.","type":"object","properties":{"fsGroup":{"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.","type":"integer","format":"int64"},"fsGroupChangePolicy":{"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.","type":"string"},"runAsGroup":{"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.","type":"integer","format":"int64"},"runAsNonRoot":{"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.","type":"boolean"},"runAsUser":{"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.","type":"integer","format":"int64"},"seLinuxOptions":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SELinuxOptions"},"seccompProfile":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SeccompProfile"},"supplementalGroups":{"description":"A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container. Note that this field cannot be set when spec.os.name is windows.","type":"array","items":{"type":"integer","format":"int64","default":0}},"sysctls":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Sysctl"}},"windowsOptions":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.WindowsSecurityContextOptions"}}},"io.k8s.api.core.v1.PodSpec":{"description":"PodSpec is a description of a pod.","type":"object","required":["containers"],"properties":{"activeDeadlineSeconds":{"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.","type":"integer","format":"int64"},"affinity":{"description":"If specified, the pod's scheduling constraints","$ref":"#/components/schemas/io.k8s.api.core.v1.Affinity"},"automountServiceAccountToken":{"description":"AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.","type":"boolean"},"containers":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Container"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"dnsConfig":{"description":"Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.","$ref":"#/components/schemas/io.k8s.api.core.v1.PodDNSConfig"},"dnsPolicy":{"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\n","type":"string"},"enableServiceLinks":{"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.","type":"boolean"},"ephemeralContainers":{"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. This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.EphemeralContainer"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"hostAliases":{"description":"HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.HostAlias"},"x-kubernetes-patch-merge-key":"ip","x-kubernetes-patch-strategy":"merge"},"hostIPC":{"description":"Use the host's ipc namespace. Optional: Default to false.","type":"boolean"},"hostNetwork":{"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.","type":"boolean"},"hostPID":{"description":"Use the host's pid namespace. Optional: Default to false.","type":"boolean"},"hostname":{"description":"Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.","type":"string"},"imagePullSecrets":{"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. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"initContainers":{"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/","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Container"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"},"nodeName":{"description":"NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.","type":"string"},"nodeSelector":{"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/","type":"object","additionalProperties":{"type":"string","default":""},"x-kubernetes-map-type":"atomic"},"os":{"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.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.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 This is an alpha field and requires the IdentifyPodOS feature","$ref":"#/components/schemas/io.k8s.api.core.v1.PodOS"},"overhead":{"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 This field is beta-level as of Kubernetes v1.18, and is only honored by servers that enable the PodOverhead feature.","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"preemptionPolicy":{"description":"PreemptionPolicy is the Policy for preempting pods with lower priority. One of Never, PreemptLowerPriority. Defaults to PreemptLowerPriority if unset.","type":"string"},"priority":{"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.","type":"integer","format":"int32"},"priorityClassName":{"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.","type":"string"},"readinessGates":{"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","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodReadinessGate"}},"restartPolicy":{"description":"Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy\n\n","type":"string"},"runtimeClassName":{"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 This is a beta feature as of Kubernetes v1.14.","type":"string"},"schedulerName":{"description":"If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.","type":"string"},"securityContext":{"description":"SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.","$ref":"#/components/schemas/io.k8s.api.core.v1.PodSecurityContext"},"serviceAccount":{"description":"DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.","type":"string"},"serviceAccountName":{"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/","type":"string"},"setHostnameAsFQDN":{"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.","type":"boolean"},"shareProcessNamespace":{"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.","type":"boolean"},"subdomain":{"description":"If specified, the fully qualified Pod hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the pod will not have a domainname at all.","type":"string"},"terminationGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"tolerations":{"description":"If specified, the pod's tolerations.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Toleration"}},"topologySpreadConstraints":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.TopologySpreadConstraint"},"x-kubernetes-list-map-keys":["topologyKey","whenUnsatisfiable"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"topologyKey","x-kubernetes-patch-strategy":"merge"},"volumes":{"description":"List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Volume"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge,retainKeys"}}},"io.k8s.api.core.v1.PodStatus":{"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.","type":"object","properties":{"conditions":{"description":"Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodCondition"},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"containerStatuses":{"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","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerStatus"}},"ephemeralContainerStatuses":{"description":"Status for any ephemeral containers that have run in this pod. This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerStatus"}},"hostIP":{"description":"IP address of the host to which the pod is assigned. Empty if not yet scheduled.","type":"string"},"initContainerStatuses":{"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","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ContainerStatus"}},"message":{"description":"A human readable message indicating details about why the pod is in this condition.","type":"string"},"nominatedNodeName":{"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.","type":"string"},"phase":{"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\n","type":"string"},"podIP":{"description":"IP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated.","type":"string"},"podIPs":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodIP"},"x-kubernetes-patch-merge-key":"ip","x-kubernetes-patch-strategy":"merge"},"qosClass":{"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://git.k8s.io/community/contributors/design-proposals/node/resource-qos.md\n\n","type":"string"},"reason":{"description":"A brief CamelCase message indicating details about why the pod is in this state. e.g. 'Evicted'","type":"string"},"startTime":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.api.core.v1.PodTemplate":{"description":"PodTemplate describes a template for creating copies of a predefined pod.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"template":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateSpec"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PodTemplate","version":"v1"}]},"io.k8s.api.core.v1.PodTemplateList":{"description":"PodTemplateList is a list of PodTemplates.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of pod templates","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplate"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"PodTemplateList","version":"v1"}]},"io.k8s.api.core.v1.PodTemplateSpec":{"description":"PodTemplateSpec describes the data a pod should have when created from a template","type":"object","properties":{"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodSpec"}}},"io.k8s.api.core.v1.PortStatus":{"type":"object","required":["port","protocol"],"properties":{"error":{"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.","type":"string"},"port":{"description":"Port is the port number of the service port of which status is recorded here","type":"integer","format":"int32","default":0},"protocol":{"description":"Protocol is the protocol of the service port of which status is recorded here The supported values are: \"TCP\", \"UDP\", \"SCTP\"\n\n","type":"string","default":""}}},"io.k8s.api.core.v1.PortworxVolumeSource":{"description":"PortworxVolumeSource represents a Portworx volume resource.","type":"object","required":["volumeID"],"properties":{"fsType":{"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.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"volumeID":{"description":"volumeID uniquely identifies a Portworx volume","type":"string","default":""}}},"io.k8s.api.core.v1.PreferredSchedulingTerm":{"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).","type":"object","required":["weight","preference"],"properties":{"preference":{"description":"A node selector term, associated with the corresponding weight.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelectorTerm"},"weight":{"description":"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.Probe":{"description":"Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.","type":"object","properties":{"exec":{"description":"Exec specifies the action to take.","$ref":"#/components/schemas/io.k8s.api.core.v1.ExecAction"},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.","type":"integer","format":"int32"},"grpc":{"description":"GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate.","$ref":"#/components/schemas/io.k8s.api.core.v1.GRPCAction"},"httpGet":{"description":"HTTPGet specifies the http request to perform.","$ref":"#/components/schemas/io.k8s.api.core.v1.HTTPGetAction"},"initialDelaySeconds":{"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","type":"integer","format":"int32"},"periodSeconds":{"description":"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.","type":"integer","format":"int32"},"successThreshold":{"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.","type":"integer","format":"int32"},"tcpSocket":{"description":"TCPSocket specifies an action involving a TCP port.","$ref":"#/components/schemas/io.k8s.api.core.v1.TCPSocketAction"},"terminationGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"timeoutSeconds":{"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","type":"integer","format":"int32"}}},"io.k8s.api.core.v1.ProjectedVolumeSource":{"description":"Represents a projected volume source","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"sources":{"description":"sources is the list of volume projections","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.VolumeProjection"}}}},"io.k8s.api.core.v1.QuobyteVolumeSource":{"description":"Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.","type":"object","required":["registry","volume"],"properties":{"group":{"description":"group to map volume access to Default is no group","type":"string"},"readOnly":{"description":"readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.","type":"boolean"},"registry":{"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","type":"string","default":""},"tenant":{"description":"tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin","type":"string"},"user":{"description":"user to map volume access to Defaults to serivceaccount user","type":"string"},"volume":{"description":"volume is a string that references an already created Quobyte volume by name.","type":"string","default":""}}},"io.k8s.api.core.v1.RBDPersistentVolumeSource":{"description":"Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.","type":"object","required":["monitors","image"],"properties":{"fsType":{"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","type":"string"},"image":{"description":"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string","default":""},"keyring":{"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","type":"string"},"monitors":{"description":"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"array","items":{"type":"string","default":""}},"pool":{"description":"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"},"user":{"description":"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"}}},"io.k8s.api.core.v1.RBDVolumeSource":{"description":"Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.","type":"object","required":["monitors","image"],"properties":{"fsType":{"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","type":"string"},"image":{"description":"image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string","default":""},"keyring":{"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","type":"string"},"monitors":{"description":"monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"array","items":{"type":"string","default":""}},"pool":{"description":"pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"},"readOnly":{"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","type":"boolean"},"secretRef":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"user":{"description":"user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it","type":"string"}}},"io.k8s.api.core.v1.ReplicationController":{"description":"ReplicationController represents the configuration of a replication controller.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"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","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerSpec"},"status":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerStatus"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ReplicationController","version":"v1"}]},"io.k8s.api.core.v1.ReplicationControllerCondition":{"description":"ReplicationControllerCondition describes the state of a replication controller at a certain point.","type":"object","required":["type","status"],"properties":{"lastTransitionTime":{"description":"The last time the condition transitioned from one status to another.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"A human readable message indicating details about the transition.","type":"string"},"reason":{"description":"The reason for the condition's last transition.","type":"string"},"status":{"description":"Status of the condition, one of True, False, Unknown.","type":"string","default":""},"type":{"description":"Type of replication controller condition.","type":"string","default":""}}},"io.k8s.api.core.v1.ReplicationControllerList":{"description":"ReplicationControllerList is a collection of replication controllers.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of replication controllers. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationController"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ReplicationControllerList","version":"v1"}]},"io.k8s.api.core.v1.ReplicationControllerSpec":{"description":"ReplicationControllerSpec is the specification of a replication controller.","type":"object","properties":{"minReadySeconds":{"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)","type":"integer","format":"int32"},"replicas":{"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","type":"integer","format":"int32"},"selector":{"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","type":"object","additionalProperties":{"type":"string","default":""},"x-kubernetes-map-type":"atomic"},"template":{"description":"Template is the object that describes the pod that will be created if insufficient replicas are detected. This takes precedence over a TemplateRef. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template","$ref":"#/components/schemas/io.k8s.api.core.v1.PodTemplateSpec"}}},"io.k8s.api.core.v1.ReplicationControllerStatus":{"description":"ReplicationControllerStatus represents the current status of a replication controller.","type":"object","required":["replicas"],"properties":{"availableReplicas":{"description":"The number of available replicas (ready for at least minReadySeconds) for this replication controller.","type":"integer","format":"int32"},"conditions":{"description":"Represents the latest available observations of a replication controller's current state.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ReplicationControllerCondition"},"x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"fullyLabeledReplicas":{"description":"The number of pods that have labels matching the labels of the pod template of the replication controller.","type":"integer","format":"int32"},"observedGeneration":{"description":"ObservedGeneration reflects the generation of the most recently observed replication controller.","type":"integer","format":"int64"},"readyReplicas":{"description":"The number of ready replicas for this replication controller.","type":"integer","format":"int32"},"replicas":{"description":"Replicas is the most recently oberved number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.ResourceFieldSelector":{"description":"ResourceFieldSelector represents container resources (cpu, memory) and their output format","type":"object","required":["resource"],"properties":{"containerName":{"description":"Container name: required for volumes, optional for env vars","type":"string"},"divisor":{"description":"Specifies the output format of the exposed resources, defaults to \"1\"","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"},"resource":{"description":"Required: resource to select","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ResourceQuota":{"description":"ResourceQuota sets aggregate quota restrictions enforced per namespace","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"Spec defines the desired quota. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaSpec"},"status":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuotaStatus"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ResourceQuota","version":"v1"}]},"io.k8s.api.core.v1.ResourceQuotaList":{"description":"ResourceQuotaList is a list of ResourceQuota items.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"Items is a list of ResourceQuota objects. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ResourceQuota"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ResourceQuotaList","version":"v1"}]},"io.k8s.api.core.v1.ResourceQuotaSpec":{"description":"ResourceQuotaSpec defines the desired hard limits to enforce for Quota.","type":"object","properties":{"hard":{"description":"hard is the set of desired hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"scopeSelector":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.ScopeSelector"},"scopes":{"description":"A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.ResourceQuotaStatus":{"description":"ResourceQuotaStatus defines the enforced hard limits and observed use.","type":"object","properties":{"hard":{"description":"Hard is the set of enforced hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"used":{"description":"Used is the current observed total usage of the resource in the namespace.","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}}}},"io.k8s.api.core.v1.ResourceRequirements":{"description":"ResourceRequirements describes the compute resource requirements.","type":"object","properties":{"limits":{"description":"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}},"requests":{"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. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"object","additionalProperties":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.api.resource.Quantity"}}}},"io.k8s.api.core.v1.SELinuxOptions":{"description":"SELinuxOptions are the labels to be applied to the container","type":"object","properties":{"level":{"description":"Level is SELinux level label that applies to the container.","type":"string"},"role":{"description":"Role is a SELinux role label that applies to the container.","type":"string"},"type":{"description":"Type is a SELinux type label that applies to the container.","type":"string"},"user":{"description":"User is a SELinux user label that applies to the container.","type":"string"}}},"io.k8s.api.core.v1.ScaleIOPersistentVolumeSource":{"description":"ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume","type":"object","required":["gateway","system","secretRef"],"properties":{"fsType":{"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\"","type":"string"},"gateway":{"description":"gateway is the host address of the ScaleIO API Gateway.","type":"string","default":""},"protectionDomain":{"description":"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretReference"},"sslEnabled":{"description":"sslEnabled is the flag to enable/disable SSL communication with Gateway, default false","type":"boolean"},"storageMode":{"description":"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.","type":"string"},"storagePool":{"description":"storagePool is the ScaleIO Storage Pool associated with the protection domain.","type":"string"},"system":{"description":"system is the name of the storage system as configured in ScaleIO.","type":"string","default":""},"volumeName":{"description":"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.","type":"string"}}},"io.k8s.api.core.v1.ScaleIOVolumeSource":{"description":"ScaleIOVolumeSource represents a persistent ScaleIO volume","type":"object","required":["gateway","system","secretRef"],"properties":{"fsType":{"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\".","type":"string"},"gateway":{"description":"gateway is the host address of the ScaleIO API Gateway.","type":"string","default":""},"protectionDomain":{"description":"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.","type":"string"},"readOnly":{"description":"readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"sslEnabled":{"description":"sslEnabled Flag enable/disable SSL communication with Gateway, default false","type":"boolean"},"storageMode":{"description":"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.","type":"string"},"storagePool":{"description":"storagePool is the ScaleIO Storage Pool associated with the protection domain.","type":"string"},"system":{"description":"system is the name of the storage system as configured in ScaleIO.","type":"string","default":""},"volumeName":{"description":"volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source.","type":"string"}}},"io.k8s.api.core.v1.ScopeSelector":{"description":"A scope selector represents the AND of the selectors represented by the scoped-resource selector requirements.","type":"object","properties":{"matchExpressions":{"description":"A list of scope selector requirements by scope of the resources.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ScopedResourceSelectorRequirement"}}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.ScopedResourceSelectorRequirement":{"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.","type":"object","required":["scopeName","operator"],"properties":{"operator":{"description":"Represents a scope's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist.\n\n","type":"string","default":""},"scopeName":{"description":"The name of the scope that the selector applies to.\n\n","type":"string","default":""},"values":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.api.core.v1.SeccompProfile":{"description":"SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set.","type":"object","required":["type"],"properties":{"localhostProfile":{"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 only be set if type is \"Localhost\".","type":"string"},"type":{"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\n","type":"string","default":""}},"x-kubernetes-unions":[{"discriminator":"type","fields-to-discriminateBy":{"localhostProfile":"LocalhostProfile"}}]},"io.k8s.api.core.v1.Secret":{"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.","type":"object","properties":{"apiVersion":{"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","type":"string"},"data":{"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","type":"object","additionalProperties":{"type":"string","format":"byte"}},"immutable":{"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.","type":"boolean"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"stringData":{"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.","type":"object","additionalProperties":{"type":"string","default":""}},"type":{"description":"Used to facilitate programmatic handling of secret data. More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Secret","version":"v1"}]},"io.k8s.api.core.v1.SecretEnvSource":{"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.","type":"object","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the Secret must be defined","type":"boolean"}}},"io.k8s.api.core.v1.SecretKeySelector":{"description":"SecretKeySelector selects a key of a Secret.","type":"object","required":["key"],"properties":{"key":{"description":"The key of the secret to select from. Must be a valid secret key.","type":"string","default":""},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the Secret or its key must be defined","type":"boolean"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.SecretList":{"description":"SecretList is a list of Secret.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"Items is a list of secret objects. More info: https://kubernetes.io/docs/concepts/configuration/secret","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Secret"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"SecretList","version":"v1"}]},"io.k8s.api.core.v1.SecretProjection":{"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.","type":"object","properties":{"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}},"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"optional field specify whether the Secret or its key must be defined","type":"boolean"}}},"io.k8s.api.core.v1.SecretReference":{"description":"SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace","type":"object","properties":{"name":{"description":"name is unique within a namespace to reference a secret resource.","type":"string"},"namespace":{"description":"namespace defines the space within which the secret name must be unique.","type":"string"}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.SecretVolumeSource":{"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.","type":"object","properties":{"defaultMode":{"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.","type":"integer","format":"int32"},"items":{"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 '..'.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.KeyToPath"}},"optional":{"description":"optional field specify whether the Secret or its keys must be defined","type":"boolean"},"secretName":{"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","type":"string"}}},"io.k8s.api.core.v1.SecurityContext":{"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.","type":"object","properties":{"allowPrivilegeEscalation":{"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.","type":"boolean"},"capabilities":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.Capabilities"},"privileged":{"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.","type":"boolean"},"procMount":{"description":"procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount 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.","type":"string"},"readOnlyRootFilesystem":{"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.","type":"boolean"},"runAsGroup":{"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.","type":"integer","format":"int64"},"runAsNonRoot":{"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.","type":"boolean"},"runAsUser":{"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.","type":"integer","format":"int64"},"seLinuxOptions":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.SELinuxOptions"},"seccompProfile":{"description":"The seccomp options to use by this container. If seccomp options are provided at both the pod \u0026 container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.","$ref":"#/components/schemas/io.k8s.api.core.v1.SeccompProfile"},"windowsOptions":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.WindowsSecurityContextOptions"}}},"io.k8s.api.core.v1.Service":{"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.","type":"object","properties":{"apiVersion":{"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","type":"string"},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"description":"Spec defines the behavior of a service. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceSpec"},"status":{"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","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceStatus"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Service","version":"v1"}]},"io.k8s.api.core.v1.ServiceAccount":{"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","type":"object","properties":{"apiVersion":{"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","type":"string"},"automountServiceAccountToken":{"description":"AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. Can be overridden at the pod level.","type":"boolean"},"imagePullSecrets":{"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","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"secrets":{"description":"Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. More info: https://kubernetes.io/docs/concepts/configuration/secret","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectReference"},"x-kubernetes-patch-merge-key":"name","x-kubernetes-patch-strategy":"merge"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ServiceAccount","version":"v1"}]},"io.k8s.api.core.v1.ServiceAccountList":{"description":"ServiceAccountList is a list of ServiceAccount objects","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of ServiceAccounts. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccount"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ServiceAccountList","version":"v1"}]},"io.k8s.api.core.v1.ServiceAccountTokenProjection":{"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).","type":"object","required":["path"],"properties":{"audience":{"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.","type":"string"},"expirationSeconds":{"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.","type":"integer","format":"int64"},"path":{"description":"path is the path relative to the mount point of the file to project the token into.","type":"string","default":""}}},"io.k8s.api.core.v1.ServiceList":{"description":"ServiceList holds a list of services.","type":"object","required":["items"],"properties":{"apiVersion":{"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","type":"string"},"items":{"description":"List of services","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.Service"}},"kind":{"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","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"ServiceList","version":"v1"}]},"io.k8s.api.core.v1.ServicePort":{"description":"ServicePort contains information on service's port.","type":"object","required":["port"],"properties":{"appProtocol":{"description":"The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol.","type":"string"},"name":{"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.","type":"string"},"nodePort":{"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","type":"integer","format":"int32"},"port":{"description":"The port that will be exposed by this service.","type":"integer","format":"int32","default":0},"protocol":{"description":"The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.\n\n","type":"string","default":"TCP"},"targetPort":{"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","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString"}}},"io.k8s.api.core.v1.ServiceSpec":{"description":"ServiceSpec describes the attributes that a user creates on a service.","type":"object","properties":{"allocateLoadBalancerNodePorts":{"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.","type":"boolean"},"clusterIP":{"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","type":"string"},"clusterIPs":{"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","type":"array","items":{"type":"string","default":""},"x-kubernetes-list-type":"atomic"},"externalIPs":{"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.","type":"array","items":{"type":"string","default":""}},"externalName":{"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\".","type":"string"},"externalTrafficPolicy":{"description":"externalTrafficPolicy denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. \"Local\" preserves the client source IP and avoids a second hop for LoadBalancer and Nodeport type services, but risks potentially imbalanced traffic spreading. \"Cluster\" obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading.\n\n","type":"string"},"healthCheckNodePort":{"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).","type":"integer","format":"int32"},"internalTrafficPolicy":{"description":"InternalTrafficPolicy specifies if the cluster internal traffic should be routed to all endpoints or node-local endpoints only. \"Cluster\" routes internal traffic to a Service to all endpoints. \"Local\" routes traffic to node-local endpoints only, traffic is dropped if no node-local endpoints are ready. The default value is \"Cluster\".","type":"string"},"ipFamilies":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-list-type":"atomic"},"ipFamilyPolicy":{"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.","type":"string"},"loadBalancerClass":{"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.","type":"string"},"loadBalancerIP":{"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, and it cannot support dual-stack. As of Kubernetes v1.24, users are encouraged to use implementation-specific annotations when available. This field may be removed in a future API version.","type":"string"},"loadBalancerSourceRanges":{"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/","type":"array","items":{"type":"string","default":""}},"ports":{"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","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.ServicePort"},"x-kubernetes-list-map-keys":["port","protocol"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"port","x-kubernetes-patch-strategy":"merge"},"publishNotReadyAddresses":{"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.","type":"boolean"},"selector":{"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/","type":"object","additionalProperties":{"type":"string","default":""},"x-kubernetes-map-type":"atomic"},"sessionAffinity":{"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\n","type":"string"},"sessionAffinityConfig":{"description":"sessionAffinityConfig contains the configurations of session affinity.","$ref":"#/components/schemas/io.k8s.api.core.v1.SessionAffinityConfig"},"type":{"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\n","type":"string"}}},"io.k8s.api.core.v1.ServiceStatus":{"description":"ServiceStatus represents the current status of a service.","type":"object","properties":{"conditions":{"description":"Current service state","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Condition"},"x-kubernetes-list-map-keys":["type"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"loadBalancer":{"description":"LoadBalancer contains the current status of the load-balancer, if one is present.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.LoadBalancerStatus"}}},"io.k8s.api.core.v1.SessionAffinityConfig":{"description":"SessionAffinityConfig represents the configurations of session affinity.","type":"object","properties":{"clientIP":{"description":"clientIP contains the configurations of Client IP based session affinity.","$ref":"#/components/schemas/io.k8s.api.core.v1.ClientIPConfig"}}},"io.k8s.api.core.v1.StorageOSPersistentVolumeSource":{"description":"Represents a StorageOS persistent volume resource.","type":"object","properties":{"fsType":{"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.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.","$ref":"#/components/schemas/io.k8s.api.core.v1.ObjectReference"},"volumeName":{"description":"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.","type":"string"},"volumeNamespace":{"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.","type":"string"}}},"io.k8s.api.core.v1.StorageOSVolumeSource":{"description":"Represents a StorageOS persistent volume resource.","type":"object","properties":{"fsType":{"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.","type":"string"},"readOnly":{"description":"readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.","type":"boolean"},"secretRef":{"description":"secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.","$ref":"#/components/schemas/io.k8s.api.core.v1.LocalObjectReference"},"volumeName":{"description":"volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.","type":"string"},"volumeNamespace":{"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.","type":"string"}}},"io.k8s.api.core.v1.Sysctl":{"description":"Sysctl defines a kernel parameter to be set","type":"object","required":["name","value"],"properties":{"name":{"description":"Name of a property to set","type":"string","default":""},"value":{"description":"Value of a property to set","type":"string","default":""}}},"io.k8s.api.core.v1.TCPSocketAction":{"description":"TCPSocketAction describes an action based on opening a socket","type":"object","required":["port"],"properties":{"host":{"description":"Optional: Host name to connect to, defaults to the pod IP.","type":"string"},"port":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.util.intstr.IntOrString"}}},"io.k8s.api.core.v1.Taint":{"description":"The node this Taint is attached to has the \"effect\" on any pod that does not tolerate the Taint.","type":"object","required":["key","effect"],"properties":{"effect":{"description":"Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute.\n\n","type":"string","default":""},"key":{"description":"Required. The taint key to be applied to a node.","type":"string","default":""},"timeAdded":{"description":"TimeAdded represents the time at which the taint was added. It is only written for NoExecute taints.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"value":{"description":"The taint value corresponding to the taint key.","type":"string"}}},"io.k8s.api.core.v1.Toleration":{"description":"The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.","type":"object","properties":{"effect":{"description":"Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n\n","type":"string"},"key":{"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.","type":"string"},"operator":{"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\n","type":"string"},"tolerationSeconds":{"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.","type":"integer","format":"int64"},"value":{"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.","type":"string"}}},"io.k8s.api.core.v1.TopologySpreadConstraint":{"description":"TopologySpreadConstraint specifies how to spread matching pods among the given topology.","type":"object","required":["maxSkew","topologyKey","whenUnsatisfiable"],"properties":{"labelSelector":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector"},"maxSkew":{"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. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) 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.","type":"integer","format":"int32","default":0},"topologyKey":{"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 \u003ckey, value\u003e as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.","type":"string","default":""},"whenUnsatisfiable":{"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\n","type":"string","default":""}}},"io.k8s.api.core.v1.TypedLocalObjectReference":{"description":"TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.","type":"object","required":["kind","name"],"properties":{"apiGroup":{"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.","type":"string"},"kind":{"description":"Kind is the type of resource being referenced","type":"string","default":""},"name":{"description":"Name is the name of resource being referenced","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.api.core.v1.Volume":{"description":"Volume represents a named volume in a pod that may be accessed by any container in the pod.","type":"object","required":["name"],"properties":{"awsElasticBlockStore":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource"},"azureDisk":{"description":"azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.","$ref":"#/components/schemas/io.k8s.api.core.v1.AzureDiskVolumeSource"},"azureFile":{"description":"azureFile represents an Azure File Service mount on the host and bind mount to the pod.","$ref":"#/components/schemas/io.k8s.api.core.v1.AzureFileVolumeSource"},"cephfs":{"description":"cephFS represents a Ceph FS mount on the host that shares a pod's lifetime","$ref":"#/components/schemas/io.k8s.api.core.v1.CephFSVolumeSource"},"cinder":{"description":"cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md","$ref":"#/components/schemas/io.k8s.api.core.v1.CinderVolumeSource"},"configMap":{"description":"configMap represents a configMap that should populate this volume","$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapVolumeSource"},"csi":{"description":"csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature).","$ref":"#/components/schemas/io.k8s.api.core.v1.CSIVolumeSource"},"downwardAPI":{"description":"downwardAPI represents downward API about the pod that should populate this volume","$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIVolumeSource"},"emptyDir":{"description":"emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir","$ref":"#/components/schemas/io.k8s.api.core.v1.EmptyDirVolumeSource"},"ephemeral":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.EphemeralVolumeSource"},"fc":{"description":"fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.","$ref":"#/components/schemas/io.k8s.api.core.v1.FCVolumeSource"},"flexVolume":{"description":"flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin.","$ref":"#/components/schemas/io.k8s.api.core.v1.FlexVolumeSource"},"flocker":{"description":"flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running","$ref":"#/components/schemas/io.k8s.api.core.v1.FlockerVolumeSource"},"gcePersistentDisk":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource"},"gitRepo":{"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.","$ref":"#/components/schemas/io.k8s.api.core.v1.GitRepoVolumeSource"},"glusterfs":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.GlusterfsVolumeSource"},"hostPath":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.HostPathVolumeSource"},"iscsi":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.ISCSIVolumeSource"},"name":{"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","type":"string","default":""},"nfs":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.NFSVolumeSource"},"persistentVolumeClaim":{"description":"persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims","$ref":"#/components/schemas/io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource"},"photonPersistentDisk":{"description":"photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine","$ref":"#/components/schemas/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource"},"portworxVolume":{"description":"portworxVolume represents a portworx volume attached and mounted on kubelets host machine","$ref":"#/components/schemas/io.k8s.api.core.v1.PortworxVolumeSource"},"projected":{"description":"projected items for all in one resources secrets, configmaps, and downward API","$ref":"#/components/schemas/io.k8s.api.core.v1.ProjectedVolumeSource"},"quobyte":{"description":"quobyte represents a Quobyte mount on the host that shares a pod's lifetime","$ref":"#/components/schemas/io.k8s.api.core.v1.QuobyteVolumeSource"},"rbd":{"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","$ref":"#/components/schemas/io.k8s.api.core.v1.RBDVolumeSource"},"scaleIO":{"description":"scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.","$ref":"#/components/schemas/io.k8s.api.core.v1.ScaleIOVolumeSource"},"secret":{"description":"secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretVolumeSource"},"storageos":{"description":"storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.","$ref":"#/components/schemas/io.k8s.api.core.v1.StorageOSVolumeSource"},"vsphereVolume":{"description":"vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine","$ref":"#/components/schemas/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource"}}},"io.k8s.api.core.v1.VolumeDevice":{"description":"volumeDevice describes a mapping of a raw block device within a container.","type":"object","required":["name","devicePath"],"properties":{"devicePath":{"description":"devicePath is the path inside of the container that the device will be mapped to.","type":"string","default":""},"name":{"description":"name must match the name of a persistentVolumeClaim in the pod","type":"string","default":""}}},"io.k8s.api.core.v1.VolumeMount":{"description":"VolumeMount describes a mounting of a Volume within a container.","type":"object","required":["name","mountPath"],"properties":{"mountPath":{"description":"Path within the container at which the volume should be mounted. Must not contain ':'.","type":"string","default":""},"mountPropagation":{"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.","type":"string"},"name":{"description":"This must match the Name of a Volume.","type":"string","default":""},"readOnly":{"description":"Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.","type":"boolean"},"subPath":{"description":"Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).","type":"string"},"subPathExpr":{"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.","type":"string"}}},"io.k8s.api.core.v1.VolumeNodeAffinity":{"description":"VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.","type":"object","properties":{"required":{"description":"required specifies hard node constraints that must be met.","$ref":"#/components/schemas/io.k8s.api.core.v1.NodeSelector"}}},"io.k8s.api.core.v1.VolumeProjection":{"description":"Projection that may be projected along with other supported volume types","type":"object","properties":{"configMap":{"description":"configMap information about the configMap data to project","$ref":"#/components/schemas/io.k8s.api.core.v1.ConfigMapProjection"},"downwardAPI":{"description":"downwardAPI information about the downwardAPI data to project","$ref":"#/components/schemas/io.k8s.api.core.v1.DownwardAPIProjection"},"secret":{"description":"secret information about the secret data to project","$ref":"#/components/schemas/io.k8s.api.core.v1.SecretProjection"},"serviceAccountToken":{"description":"serviceAccountToken is information about the serviceAccountToken data to project","$ref":"#/components/schemas/io.k8s.api.core.v1.ServiceAccountTokenProjection"}}},"io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource":{"description":"Represents a vSphere volume resource.","type":"object","required":["volumePath"],"properties":{"fsType":{"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.","type":"string"},"storagePolicyID":{"description":"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.","type":"string"},"storagePolicyName":{"description":"storagePolicyName is the storage Policy Based Management (SPBM) profile name.","type":"string"},"volumePath":{"description":"volumePath is the path that identifies vSphere volume vmdk","type":"string","default":""}}},"io.k8s.api.core.v1.WeightedPodAffinityTerm":{"description":"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)","type":"object","required":["weight","podAffinityTerm"],"properties":{"podAffinityTerm":{"description":"Required. A pod affinity term, associated with the corresponding weight.","default":{},"$ref":"#/components/schemas/io.k8s.api.core.v1.PodAffinityTerm"},"weight":{"description":"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.","type":"integer","format":"int32","default":0}}},"io.k8s.api.core.v1.WindowsSecurityContextOptions":{"description":"WindowsSecurityContextOptions contain Windows-specific options and credentials.","type":"object","properties":{"gmsaCredentialSpec":{"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.","type":"string"},"gmsaCredentialSpecName":{"description":"GMSACredentialSpecName is the name of the GMSA credential spec to use.","type":"string"},"hostProcess":{"description":"HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. 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.","type":"boolean"},"runAsUserName":{"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.","type":"string"}}},"io.k8s.api.policy.v1.Eviction":{"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/\u003cpod name\u003e/evictions.","type":"object","properties":{"apiVersion":{"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","type":"string"},"deleteOptions":{"description":"DeleteOptions may be provided","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions"},"kind":{"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","type":"string"},"metadata":{"description":"ObjectMeta describes the pod that is being evicted.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}},"x-kubernetes-group-version-kind":[{"group":"policy","kind":"Eviction","version":"v1"}]},"io.k8s.apimachinery.pkg.api.resource.Quantity":{"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\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\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 a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 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.","type":"string"},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResource":{"description":"APIResource specifies the name of a resource and whether it is namespaced.","type":"object","required":["name","singularName","namespaced","kind","verbs"],"properties":{"categories":{"description":"categories is a list of the grouped resources this resource belongs to (e.g. 'all')","type":"array","items":{"type":"string","default":""}},"group":{"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\".","type":"string"},"kind":{"description":"kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')","type":"string","default":""},"name":{"description":"name is the plural name of the resource.","type":"string","default":""},"namespaced":{"description":"namespaced indicates if a resource is namespaced or not.","type":"boolean","default":false},"shortNames":{"description":"shortNames is a list of suggested short names of the resource.","type":"array","items":{"type":"string","default":""}},"singularName":{"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.","type":"string","default":""},"storageVersionHash":{"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.","type":"string"},"verbs":{"description":"verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)","type":"array","items":{"type":"string","default":""}},"version":{"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)\".","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList":{"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.","type":"object","required":["groupVersion","resources"],"properties":{"apiVersion":{"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","type":"string"},"groupVersion":{"description":"groupVersion is the group and version this APIResourceList is for.","type":"string","default":""},"kind":{"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","type":"string"},"resources":{"description":"resources contains the name of the resources and if they are namespaced.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.APIResource"}}},"x-kubernetes-group-version-kind":[{"group":"","kind":"APIResourceList","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.Condition":{"description":"Condition contains details for one aspect of the current state of this API Resource.","type":"object","required":["type","status","lastTransitionTime","reason","message"],"properties":{"lastTransitionTime":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"message":{"description":"message is a human readable message indicating details about the transition. This may be an empty string.","type":"string","default":""},"observedGeneration":{"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.","type":"integer","format":"int64"},"reason":{"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.","type":"string","default":""},"status":{"description":"status of the condition, one of True, False, Unknown.","type":"string","default":""},"type":{"description":"type of condition in CamelCase or in foo.example.com/CamelCase.","type":"string","default":""}}},"io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions":{"description":"DeleteOptions may be provided when deleting an API object.","type":"object","properties":{"apiVersion":{"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","type":"string"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","type":"array","items":{"type":"string","default":""}},"gracePeriodSeconds":{"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.","type":"integer","format":"int64"},"kind":{"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","type":"string"},"orphanDependents":{"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.","type":"boolean"},"preconditions":{"description":"Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions"},"propagationPolicy":{"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.","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admission.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiextensions.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"apiregistration.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta1"},{"group":"apps","kind":"DeleteOptions","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authentication.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta1"},{"group":"autoscaling","kind":"DeleteOptions","version":"v2beta2"},{"group":"batch","kind":"DeleteOptions","version":"v1"},{"group":"batch","kind":"DeleteOptions","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"certificates.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"coordination.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"discovery.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"events.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"extensions","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"DeleteOptions","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"networking.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"node.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"policy","kind":"DeleteOptions","version":"v1"},{"group":"policy","kind":"DeleteOptions","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"DeleteOptions","version":"v1beta1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"DeleteOptions","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1":{"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:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\u003cindex\u003e', where \u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e 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","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector":{"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.","type":"object","properties":{"matchExpressions":{"description":"matchExpressions is a list of label selector requirements. The requirements are ANDed.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement"}},"matchLabels":{"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.","type":"object","additionalProperties":{"type":"string","default":""}}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement":{"description":"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.","type":"object","required":["key","operator"],"properties":{"key":{"description":"key is the label key that the selector applies to.","type":"string","default":"","x-kubernetes-patch-merge-key":"key","x-kubernetes-patch-strategy":"merge"},"operator":{"description":"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.","type":"string","default":""},"values":{"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.","type":"array","items":{"type":"string","default":""}}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","type":"object","properties":{"continue":{"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.","type":"string"},"remainingItemCount":{"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.","type":"integer","format":"int64"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"selfLink is DEPRECATED read-only field that is no longer populated by the system.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","type":"object","properties":{"apiVersion":{"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.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"description":"FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1"},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"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'.","type":"string"},"subresource":{"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.","type":"string"},"time":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.MicroTime":{"description":"MicroTime is version of Time with microsecond level precision.","type":"string","format":"date-time"},"io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","type":"object","properties":{"annotations":{"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: http://kubernetes.io/docs/user-guide/annotations","type":"object","additionalProperties":{"type":"string","default":""}},"clusterName":{"description":"The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.","type":"string"},"creationTimestamp":{"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","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"deletionGracePeriodSeconds":{"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.","type":"integer","format":"int64"},"deletionTimestamp":{"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","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.Time"},"finalizers":{"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.","type":"array","items":{"type":"string","default":""},"x-kubernetes-patch-strategy":"merge"},"generateName":{"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 NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","type":"integer","format":"int64"},"labels":{"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: http://kubernetes.io/docs/user-guide/labels","type":"object","additionalProperties":{"type":"string","default":""}},"managedFields":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry"}},"name":{"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: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"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: http://kubernetes.io/docs/user-guide/namespaces","type":"string"},"ownerReferences":{"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.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference"},"x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"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","type":"string"},"selfLink":{"description":"selfLink is DEPRECATED read-only field that is no longer populated by the system.","type":"string"},"uid":{"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: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference":{"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.","type":"object","required":["apiVersion","kind","name","uid"],"properties":{"apiVersion":{"description":"API version of the referent.","type":"string","default":""},"blockOwnerDeletion":{"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.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string","default":""},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string","default":""},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string","default":""}},"x-kubernetes-map-type":"atomic"},"io.k8s.apimachinery.pkg.apis.meta.v1.Patch":{"description":"Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.","type":"object"},"io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions":{"description":"Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.","type":"object","properties":{"resourceVersion":{"description":"Specifies the target ResourceVersion","type":"string"},"uid":{"description":"Specifies the target UID.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Status":{"description":"Status is a return value for calls that don't return other objects.","type":"object","properties":{"apiVersion":{"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","type":"string"},"code":{"description":"Suggested HTTP return code for this status, 0 if not set.","type":"integer","format":"int32"},"details":{"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.","$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails"},"kind":{"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","type":"string"},"message":{"description":"A human-readable description of the status of this operation.","type":"string"},"metadata":{"description":"Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta"},"reason":{"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.","type":"string"},"status":{"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","type":"string"}},"x-kubernetes-group-version-kind":[{"group":"","kind":"Status","version":"v1"}]},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause":{"description":"StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.","type":"object","properties":{"field":{"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\"","type":"string"},"message":{"description":"A human-readable description of the cause of the error. This field may be presented as-is to a reader.","type":"string"},"reason":{"description":"A machine-readable description of the cause of the error. If this value is empty there is no information available.","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails":{"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.","type":"object","properties":{"causes":{"description":"The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.","type":"array","items":{"default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause"}},"group":{"description":"The group attribute of the resource associated with the status StatusReason.","type":"string"},"kind":{"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","type":"string"},"name":{"description":"The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).","type":"string"},"retryAfterSeconds":{"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.","type":"integer","format":"int32"},"uid":{"description":"UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}}},"io.k8s.apimachinery.pkg.apis.meta.v1.Time":{"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.","type":"string","format":"date-time"},"io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent":{"description":"Event represents a single event to a watched resource.","type":"object","required":["type","object"],"properties":{"object":{"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.","default":{},"$ref":"#/components/schemas/io.k8s.apimachinery.pkg.runtime.RawExtension"},"type":{"type":"string","default":""}},"x-kubernetes-group-version-kind":[{"group":"","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admission.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"admissionregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiextensions.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"apiregistration.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1"},{"group":"apps","kind":"WatchEvent","version":"v1beta1"},{"group":"apps","kind":"WatchEvent","version":"v1beta2"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authentication.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta1"},{"group":"autoscaling","kind":"WatchEvent","version":"v2beta2"},{"group":"batch","kind":"WatchEvent","version":"v1"},{"group":"batch","kind":"WatchEvent","version":"v1beta1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"certificates.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"coordination.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"discovery.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"events.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"extensions","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"flowcontrol.apiserver.k8s.io","kind":"WatchEvent","version":"v1beta2"},{"group":"imagepolicy.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"internal.apiserver.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"networking.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"node.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"policy","kind":"WatchEvent","version":"v1"},{"group":"policy","kind":"WatchEvent","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"rbac.authorization.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"scheduling.k8s.io","kind":"WatchEvent","version":"v1beta1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1alpha1"},{"group":"storage.k8s.io","kind":"WatchEvent","version":"v1beta1"}]},"io.k8s.apimachinery.pkg.runtime.RawExtension":{"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: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.Object `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// External package: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.RawExtension `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// On the wire, the JSON will look something like this: {\n\t\"kind\":\"MyAPIObject\",\n\t\"apiVersion\":\"v1\",\n\t\"myPlugin\": {\n\t\t\"kind\":\"PluginA\",\n\t\t\"aOption\":\"foo\",\n\t},\n}\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.)","type":"object"},"io.k8s.apimachinery.pkg.util.intstr.IntOrString":{"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.","type":"string","format":"int-or-string"}}}}golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/testdata/swagger.json000066400000000000000000013152251453663023200274730ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "title": "Kubernetes", "version": "v1.8.0" }, "paths": {}, "definitions": { "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition": { "description": "CustomResourceColumnDefinition specifies a column for server side printing.", "properties": { "description": { "description": "description is a human readable description of this column.", "type": "string" }, "format": { "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.", "type": "string" }, "jsonPath": { "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.", "type": "string" }, "name": { "description": "name is a human readable name for the column.", "type": "string" }, "priority": { "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.", "format": "int32", "type": "integer" }, "type": { "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.", "type": "string" } }, "required": [ "name", "type", "jsonPath" ], "type": "object" }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion": { "description": "CustomResourceConversion describes how to convert different versions of a CR.", "properties": { "strategy": { "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.", "type": "string" }, "webhook": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion", "description": "webhook describes how to call the conversion webhook. Required when `strategy` is set to `Webhook`." } }, "required": [ "strategy" ], "type": "object" }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition": { "description": "CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format <.spec.name>.<.spec.group>.", "properties": { "apiVersion": { "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", "type": "string" }, "kind": { "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", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec", "description": "spec describes how the user wants the resources to appear" }, "status": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus", "description": "status indicates the actual state of the CustomResourceDefinition" } }, "required": [ "spec" ], "type": "object", "x-kubernetes-group-version-kind": [ { "group": "apiextensions.k8s.io", "kind": "CustomResourceDefinition", "version": "v1" } ] }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition": { "description": "CustomResourceDefinitionCondition contains details for the current condition of this pod.", "properties": { "lastTransitionTime": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time", "description": "lastTransitionTime last time the condition transitioned from one status to another." }, "message": { "description": "message is a human-readable message indicating details about last transition.", "type": "string" }, "reason": { "description": "reason is a unique, one-word, CamelCase reason for the condition's last transition.", "type": "string" }, "status": { "description": "status is the status of the condition. Can be True, False, Unknown.", "type": "string" }, "type": { "description": "type is the type of the condition. Types include Established, NamesAccepted and Terminating.", "type": "string" } }, "required": [ "type", "status" ], "type": "object" }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList": { "description": "CustomResourceDefinitionList is a list of CustomResourceDefinition objects.", "properties": { "apiVersion": { "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", "type": "string" }, "items": { "description": "items list individual CustomResourceDefinition objects", "items": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" }, "type": "array" }, "kind": { "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", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "required": [ "items" ], "type": "object", "x-kubernetes-group-version-kind": [ { "group": "apiextensions.k8s.io", "kind": "CustomResourceDefinitionList", "version": "v1" } ] }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames": { "description": "CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition", "properties": { "categories": { "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`.", "items": { "type": "string" }, "type": "array" }, "kind": { "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.", "type": "string" }, "listKind": { "description": "listKind is the serialized kind of the list for this resource. Defaults to \"`kind`List\".", "type": "string" }, "plural": { "description": "plural is the plural name of the resource to serve. The custom resources are served under `/apis///.../`. Must match the name of the CustomResourceDefinition (in the form `.`). Must be all lowercase.", "type": "string" }, "shortNames": { "description": "shortNames are short names for the resource, exposed in API discovery documents, and used by clients to support invocations like `kubectl get `. It must be all lowercase.", "items": { "type": "string" }, "type": "array" }, "singular": { "description": "singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.", "type": "string" } }, "required": [ "plural", "kind" ], "type": "object" }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec": { "description": "CustomResourceDefinitionSpec describes how a user wants their resource to appear", "properties": { "conversion": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion", "description": "conversion defines conversion settings for the CRD." }, "group": { "description": "group is the API group of the defined custom resource. The custom resources are served under `/apis//...`. Must match the name of the CustomResourceDefinition (in the form `.`).", "type": "string" }, "names": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames", "description": "names specify the resource and kind names for the custom resource." }, "preserveUnknownFields": { "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/access-kubernetes-api/custom-resources/custom-resource-definitions/#pruning-versus-preserving-unknown-fields for details.", "type": "boolean" }, "scope": { "description": "scope indicates whether the defined custom resource is cluster- or namespace-scoped. Allowed values are `Cluster` and `Namespaced`.", "type": "string" }, "versions": { "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.", "items": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion" }, "type": "array" } }, "required": [ "group", "names", "scope", "versions" ], "type": "object" }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionStatus": { "description": "CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition", "properties": { "acceptedNames": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames", "description": "acceptedNames are the names that are actually being used to serve discovery. They may be different than the names in spec." }, "conditions": { "description": "conditions indicate state for particular aspects of a CustomResourceDefinition", "items": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionCondition" }, "type": "array" }, "storedVersions": { "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.", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion": { "description": "CustomResourceDefinitionVersion describes a version for CRD.", "properties": { "additionalPrinterColumns": { "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.", "items": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition" }, "type": "array" }, "name": { "description": "name is the version name, e.g. “v1â€, “v2beta1â€, etc. The custom resources are served under this version at `/apis///...` if `served` is true.", "type": "string" }, "schema": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation", "description": "schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource." }, "served": { "description": "served is a flag enabling/disabling this version from being served via REST APIs", "type": "boolean" }, "storage": { "description": "storage indicates this version should be used when persisting custom resources to storage. There must be exactly one version with storage=true.", "type": "boolean" }, "subresources": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources", "description": "subresources specify what subresources this version of the defined custom resource have." } }, "required": [ "name", "served", "storage" ], "type": "object" }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale": { "description": "CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.", "properties": { "labelSelectorPath": { "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.", "type": "string" }, "specReplicasPath": { "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.", "type": "string" }, "statusReplicasPath": { "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.", "type": "string" } }, "required": [ "specReplicasPath", "statusReplicasPath" ], "type": "object" }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus": { "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", "type": "object" }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources": { "description": "CustomResourceSubresources defines the status and scale subresources for CustomResources.", "properties": { "scale": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale", "description": "scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object." }, "status": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus", "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." } }, "type": "object" }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation": { "description": "CustomResourceValidation is a list of validation methods for CustomResources.", "properties": { "openAPIV3Schema": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps", "description": "openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning." } }, "type": "object" }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation": { "description": "ExternalDocumentation allows referencing an external resource for extended documentation.", "properties": { "description": { "type": "string" }, "url": { "type": "string" } }, "type": "object" }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON": { "description": "JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil." }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps": { "description": "JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).", "properties": { "$ref": { "type": "string" }, "$schema": { "type": "string" }, "additionalItems": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool" }, "additionalProperties": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool" }, "allOf": { "items": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps" }, "type": "array" }, "anyOf": { "items": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps" }, "type": "array" }, "default": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON", "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." }, "definitions": { "additionalProperties": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps" }, "type": "object" }, "dependencies": { "additionalProperties": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray" }, "type": "object" }, "description": { "type": "string" }, "enum": { "items": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON" }, "type": "array" }, "example": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON" }, "exclusiveMaximum": { "type": "boolean" }, "exclusiveMinimum": { "type": "boolean" }, "externalDocs": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation" }, "format": { "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.", "type": "string" }, "id": { "type": "string" }, "items": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray" }, "maxItems": { "format": "int64", "type": "integer" }, "maxLength": { "format": "int64", "type": "integer" }, "maxProperties": { "format": "int64", "type": "integer" }, "maximum": { "format": "double", "type": "number" }, "minItems": { "format": "int64", "type": "integer" }, "minLength": { "format": "int64", "type": "integer" }, "minProperties": { "format": "int64", "type": "integer" }, "minimum": { "format": "double", "type": "number" }, "multipleOf": { "format": "double", "type": "number" }, "not": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps" }, "nullable": { "type": "boolean" }, "oneOf": { "items": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps" }, "type": "array" }, "pattern": { "type": "string" }, "patternProperties": { "additionalProperties": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps" }, "type": "object" }, "properties": { "additionalProperties": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps" }, "type": "object" }, "required": { "items": { "type": "string" }, "type": "array" }, "title": { "type": "string" }, "type": { "type": "string" }, "uniqueItems": { "type": "boolean" }, "x-kubernetes-embedded-resource": { "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).", "type": "boolean" }, "x-kubernetes-int-or-string": { "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", "type": "boolean" }, "x-kubernetes-list-map-keys": { "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.", "items": { "type": "string" }, "type": "array" }, "x-kubernetes-list-type": { "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.", "type": "string" }, "x-kubernetes-map-type": { "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.", "type": "string" }, "x-kubernetes-preserve-unknown-fields": { "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.", "type": "boolean" } }, "type": "object" }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray": { "description": "JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of JSONSchemaProps. Mainly here for serialization purposes." }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool": { "description": "JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property." }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray": { "description": "JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array." }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference": { "description": "ServiceReference holds a reference to Service.legacy.k8s.io", "properties": { "name": { "description": "name is the name of the service. Required", "type": "string" }, "namespace": { "description": "namespace is the namespace of the service. Required", "type": "string" }, "path": { "description": "path is an optional URL path at which the webhook will be contacted.", "type": "string" }, "port": { "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.", "format": "int32", "type": "integer" } }, "required": [ "namespace", "name" ], "type": "object" }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig": { "description": "WebhookClientConfig contains the information to make a TLS connection with the webhook.", "properties": { "caBundle": { "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.", "format": "byte", "type": "string" }, "service": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ServiceReference", "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`." }, "url": { "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.", "type": "string" } }, "type": "object" }, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion": { "description": "WebhookConversion describes how to call a conversion webhook", "properties": { "clientConfig": { "$ref": "#/definitions/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookClientConfig", "description": "clientConfig is the instructions for how to call the webhook if strategy is `Webhook`." }, "conversionReviewVersions": { "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.", "items": { "type": "string" }, "type": "array" } }, "required": [ "conversionReviewVersions" ], "type": "object" }, "io.k8s.api.apps.v1beta1.ControllerRevision": { "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.", "required": [ "revision" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "data": { "description": "Data is the serialized representation of the state.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.runtime.RawExtension" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "revision": { "description": "Revision indicates the revision of the state represented by Data.", "type": "integer", "format": "int64" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "ControllerRevision", "version": "v1beta1" } ] }, "io.k8s.api.apps.v1beta1.ControllerRevisionList": { "description": "ControllerRevisionList is a resource containing a list of ControllerRevision objects.", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "Items is the list of ControllerRevisions", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.apps.v1beta1.ControllerRevision" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "ControllerRevisionList", "version": "v1beta1" } ] }, "io.k8s.api.apps.v1beta1.Deployment": { "description": "Deployment enables declarative updates for Pods and ReplicaSets.", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Specification of the desired behavior of the Deployment.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.DeploymentSpec" }, "status": { "description": "Most recently observed status of the Deployment.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.DeploymentStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "Deployment", "version": "v1beta1" } ] }, "io.k8s.api.apps.v1beta1.DeploymentCondition": { "description": "DeploymentCondition describes the state of a deployment at a certain point.", "required": [ "type", "status" ], "properties": { "lastTransitionTime": { "description": "Last time the condition transitioned from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "lastUpdateTime": { "description": "The last time this condition was updated.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "A human readable message indicating details about the transition.", "type": "string" }, "reason": { "description": "The reason for the condition's last transition.", "type": "string" }, "status": { "description": "Status of the condition, one of True, False, Unknown.", "type": "string" }, "type": { "description": "Type of deployment condition.", "type": "string" } } }, "io.k8s.api.apps.v1beta1.DeploymentList": { "description": "DeploymentList is a list of Deployments.", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "Items is the list of Deployments.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.apps.v1beta1.Deployment" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "DeploymentList", "version": "v1beta1" } ] }, "io.k8s.api.apps.v1beta1.DeploymentRollback": { "description": "DEPRECATED. DeploymentRollback stores the information required to rollback a deployment.", "required": [ "name", "rollbackTo" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "name": { "description": "Required: This must match the Name of a deployment.", "type": "string" }, "rollbackTo": { "description": "The config of this deployment rollback.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.RollbackConfig" }, "updatedAnnotations": { "description": "The annotations to be updated to a deployment", "type": "object", "additionalProperties": { "type": "string" } } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "DeploymentRollback", "version": "v1beta1" } ] }, "io.k8s.api.apps.v1beta1.DeploymentSpec": { "description": "DeploymentSpec is the specification of the desired behavior of the Deployment.", "required": [ "template" ], "properties": { "minReadySeconds": { "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)", "type": "integer", "format": "int32" }, "paused": { "description": "Indicates that the deployment is paused.", "type": "boolean" }, "progressDeadlineSeconds": { "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. Once autoRollback is implemented, the deployment controller will automatically rollback failed deployments. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s.", "type": "integer", "format": "int32" }, "replicas": { "description": "Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.", "type": "integer", "format": "int32" }, "revisionHistoryLimit": { "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 2.", "type": "integer", "format": "int32" }, "rollbackTo": { "description": "DEPRECATED. The config this deployment is rolling back to. Will be cleared after rollback is done.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.RollbackConfig" }, "selector": { "description": "Label selector for pods. Existing ReplicaSets whose pods are selected by this will be the ones affected by this deployment.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "strategy": { "description": "The deployment strategy to use to replace existing pods with new ones.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.DeploymentStrategy" }, "template": { "description": "Template describes the pods that will be created.", "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplateSpec" } } }, "io.k8s.api.apps.v1beta1.DeploymentStatus": { "description": "DeploymentStatus is the most recently observed status of the Deployment.", "properties": { "availableReplicas": { "description": "Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.", "type": "integer", "format": "int32" }, "collisionCount": { "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.", "type": "integer", "format": "int32" }, "conditions": { "description": "Represents the latest available observations of a deployment's current state.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.apps.v1beta1.DeploymentCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "observedGeneration": { "description": "The generation observed by the deployment controller.", "type": "integer", "format": "int64" }, "readyReplicas": { "description": "Total number of ready pods targeted by this deployment.", "type": "integer", "format": "int32" }, "replicas": { "description": "Total number of non-terminated pods targeted by this deployment (their labels match the selector).", "type": "integer", "format": "int32" }, "unavailableReplicas": { "description": "Total number of unavailable pods targeted by this deployment.", "type": "integer", "format": "int32" }, "updatedReplicas": { "description": "Total number of non-terminated pods targeted by this deployment that have the desired template spec.", "type": "integer", "format": "int32" } } }, "io.k8s.api.apps.v1beta1.DeploymentStrategy": { "description": "DeploymentStrategy describes how to replace existing pods with new ones.", "properties": { "rollingUpdate": { "description": "Rolling update config params. Present only if DeploymentStrategyType = RollingUpdate.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.RollingUpdateDeployment" }, "type": { "description": "Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default is RollingUpdate.", "type": "string" } } }, "io.k8s.api.apps.v1beta1.RollbackConfig": { "description": "DEPRECATED.", "properties": { "revision": { "description": "The revision to rollback to. If set to 0, rollback to the last revision.", "type": "integer", "format": "int64" } } }, "io.k8s.api.apps.v1beta1.RollingUpdateDeployment": { "description": "Spec to control the desired behavior of rolling update.", "properties": { "maxSurge": { "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 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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" }, "maxUnavailable": { "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 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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" } } }, "io.k8s.api.apps.v1beta1.RollingUpdateStatefulSetStrategy": { "description": "RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.", "properties": { "partition": { "description": "Partition indicates the ordinal at which the StatefulSet should be partitioned.", "type": "integer", "format": "int32" } } }, "io.k8s.api.apps.v1beta1.Scale": { "description": "Scale represents a scaling request for a resource.", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.ScaleSpec" }, "status": { "description": "current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.ScaleStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "Scale", "version": "v1beta1" } ] }, "io.k8s.api.apps.v1beta1.ScaleSpec": { "description": "ScaleSpec describes the attributes of a scale subresource", "properties": { "replicas": { "description": "desired number of instances for the scaled object.", "type": "integer", "format": "int32" } } }, "io.k8s.api.apps.v1beta1.ScaleStatus": { "description": "ScaleStatus represents the current status of a scale subresource.", "required": [ "replicas" ], "properties": { "replicas": { "description": "actual number of observed instances of the scaled object.", "type": "integer", "format": "int32" }, "selector": { "description": "label query over pods that should match the replicas count. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors", "type": "object", "additionalProperties": { "type": "string" } }, "targetSelector": { "description": "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", "type": "string" } } }, "io.k8s.api.apps.v1beta1.StatefulSet": { "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.\nThe StatefulSet guarantees that a given network identity will always map to the same storage identity.", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec defines the desired identities of pods in this set.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.StatefulSetSpec" }, "status": { "description": "Status is the current status of Pods in this StatefulSet. This data may be out of date by some window of time.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.StatefulSetStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "StatefulSet", "version": "v1beta1" } ] }, "io.k8s.api.apps.v1beta1.StatefulSetList": { "description": "StatefulSetList is a collection of StatefulSets.", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.apps.v1beta1.StatefulSet" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "StatefulSetList", "version": "v1beta1" } ] }, "io.k8s.api.apps.v1beta1.StatefulSetSpec": { "description": "A StatefulSetSpec is the specification of a StatefulSet.", "required": [ "template", "serviceName" ], "properties": { "podManagementPolicy": { "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.", "type": "string" }, "replicas": { "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.", "type": "integer", "format": "int32" }, "revisionHistoryLimit": { "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.", "type": "integer", "format": "int32" }, "selector": { "description": "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", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "serviceName": { "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.", "type": "string" }, "template": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplateSpec" }, "updateStrategy": { "description": "updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.StatefulSetUpdateStrategy" }, "volumeClaimTemplates": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } } } }, "io.k8s.api.apps.v1beta1.StatefulSetStatus": { "description": "StatefulSetStatus represents the current state of a StatefulSet.", "required": [ "replicas" ], "properties": { "collisionCount": { "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.", "type": "integer", "format": "int32" }, "currentReplicas": { "description": "currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision.", "type": "integer", "format": "int32" }, "currentRevision": { "description": "currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).", "type": "string" }, "observedGeneration": { "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.", "type": "integer", "format": "int64" }, "readyReplicas": { "description": "readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition.", "type": "integer", "format": "int32" }, "replicas": { "description": "replicas is the number of Pods created by the StatefulSet controller.", "type": "integer", "format": "int32" }, "updateRevision": { "description": "updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)", "type": "string" }, "updatedReplicas": { "description": "updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision.", "type": "integer", "format": "int32" } } }, "io.k8s.api.apps.v1beta1.StatefulSetUpdateStrategy": { "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.", "properties": { "rollingUpdate": { "description": "RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.RollingUpdateStatefulSetStrategy" }, "type": { "description": "Type indicates the type of the StatefulSetUpdateStrategy.", "type": "string" } } }, "io.k8s.api.authorization.v1.LocalSubjectAccessReview": { "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.", "required": [ "spec" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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.", "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewSpec" }, "status": { "description": "Status is filled in by the server and indicates whether the request is allowed or not", "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "LocalSubjectAccessReview", "version": "v1" } ] }, "io.k8s.api.authorization.v1.NonResourceAttributes": { "description": "NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface", "properties": { "path": { "description": "Path is the URL path of the request", "type": "string" }, "verb": { "description": "Verb is the standard HTTP verb", "type": "string" } } }, "io.k8s.api.authorization.v1.ResourceAttributes": { "description": "ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface", "properties": { "group": { "description": "Group is the API Group of the Resource. \"*\" means all.", "type": "string" }, "name": { "description": "Name is the name of the resource being requested for a \"get\" or deleted for a \"delete\". \"\" (empty) means all.", "type": "string" }, "namespace": { "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", "type": "string" }, "resource": { "description": "Resource is one of the existing resource types. \"*\" means all.", "type": "string" }, "subresource": { "description": "Subresource is one of the existing resource types. \"\" means none.", "type": "string" }, "verb": { "description": "Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. \"*\" means all.", "type": "string" }, "version": { "description": "Version is the API Version of the Resource. \"*\" means all.", "type": "string" } } }, "io.k8s.api.authorization.v1.SelfSubjectAccessReview": { "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", "required": [ "spec" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec holds information about the request being evaluated. user and groups must be empty", "$ref": "#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec" }, "status": { "description": "Status is filled in by the server and indicates whether the request is allowed or not", "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "SelfSubjectAccessReview", "version": "v1" } ] }, "io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec": { "description": "SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set", "properties": { "nonResourceAttributes": { "description": "NonResourceAttributes describes information for a non-resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1.NonResourceAttributes" }, "resourceAttributes": { "description": "ResourceAuthorizationAttributes describes information for a resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1.ResourceAttributes" } } }, "io.k8s.api.authorization.v1.SubjectAccessReview": { "description": "SubjectAccessReview checks whether or not a user or group can perform an action.", "required": [ "spec" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec holds information about the request being evaluated", "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewSpec" }, "status": { "description": "Status is filled in by the server and indicates whether the request is allowed or not", "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "SubjectAccessReview", "version": "v1" } ] }, "io.k8s.api.authorization.v1.SubjectAccessReviewSpec": { "description": "SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set", "properties": { "extra": { "description": "Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.", "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "groups": { "description": "Groups is the groups you're testing for.", "type": "array", "items": { "type": "string" } }, "nonResourceAttributes": { "description": "NonResourceAttributes describes information for a non-resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1.NonResourceAttributes" }, "resourceAttributes": { "description": "ResourceAuthorizationAttributes describes information for a resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1.ResourceAttributes" }, "uid": { "description": "UID information about the requesting user.", "type": "string" }, "user": { "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", "type": "string" } } }, "io.k8s.api.authorization.v1.SubjectAccessReviewStatus": { "description": "SubjectAccessReviewStatus", "required": [ "allowed" ], "properties": { "allowed": { "description": "Allowed is required. True if the action would be allowed, false otherwise.", "type": "boolean" }, "evaluationError": { "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.", "type": "string" }, "reason": { "description": "Reason is optional. It indicates why a request was allowed or denied.", "type": "string" } } }, "io.k8s.api.authorization.v1beta1.LocalSubjectAccessReview": { "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.", "required": [ "spec" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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.", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReviewSpec" }, "status": { "description": "Status is filled in by the server and indicates whether the request is allowed or not", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReviewStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "LocalSubjectAccessReview", "version": "v1beta1" } ] }, "io.k8s.api.authorization.v1beta1.NonResourceAttributes": { "description": "NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface", "properties": { "path": { "description": "Path is the URL path of the request", "type": "string" }, "verb": { "description": "Verb is the standard HTTP verb", "type": "string" } } }, "io.k8s.api.authorization.v1beta1.ResourceAttributes": { "description": "ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface", "properties": { "group": { "description": "Group is the API Group of the Resource. \"*\" means all.", "type": "string" }, "name": { "description": "Name is the name of the resource being requested for a \"get\" or deleted for a \"delete\". \"\" (empty) means all.", "type": "string" }, "namespace": { "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", "type": "string" }, "resource": { "description": "Resource is one of the existing resource types. \"*\" means all.", "type": "string" }, "subresource": { "description": "Subresource is one of the existing resource types. \"\" means none.", "type": "string" }, "verb": { "description": "Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. \"*\" means all.", "type": "string" }, "version": { "description": "Version is the API Version of the Resource. \"*\" means all.", "type": "string" } } }, "io.k8s.api.authorization.v1beta1.SelfSubjectAccessReview": { "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", "required": [ "spec" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec holds information about the request being evaluated. user and groups must be empty", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.SelfSubjectAccessReviewSpec" }, "status": { "description": "Status is filled in by the server and indicates whether the request is allowed or not", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReviewStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "SelfSubjectAccessReview", "version": "v1beta1" } ] }, "io.k8s.api.authorization.v1beta1.SelfSubjectAccessReviewSpec": { "description": "SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set", "properties": { "nonResourceAttributes": { "description": "NonResourceAttributes describes information for a non-resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.NonResourceAttributes" }, "resourceAttributes": { "description": "ResourceAuthorizationAttributes describes information for a resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.ResourceAttributes" } } }, "io.k8s.api.authorization.v1beta1.SubjectAccessReview": { "description": "SubjectAccessReview checks whether or not a user or group can perform an action.", "required": [ "spec" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec holds information about the request being evaluated", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReviewSpec" }, "status": { "description": "Status is filled in by the server and indicates whether the request is allowed or not", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReviewStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "SubjectAccessReview", "version": "v1beta1" } ] }, "io.k8s.api.authorization.v1beta1.SubjectAccessReviewSpec": { "description": "SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set", "properties": { "extra": { "description": "Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.", "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "group": { "description": "Groups is the groups you're testing for.", "type": "array", "items": { "type": "string" } }, "nonResourceAttributes": { "description": "NonResourceAttributes describes information for a non-resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.NonResourceAttributes" }, "resourceAttributes": { "description": "ResourceAuthorizationAttributes describes information for a resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.ResourceAttributes" }, "uid": { "description": "UID information about the requesting user.", "type": "string" }, "user": { "description": "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", "type": "string" } } }, "io.k8s.api.authorization.v1beta1.SubjectAccessReviewStatus": { "description": "SubjectAccessReviewStatus", "required": [ "allowed" ], "properties": { "allowed": { "description": "Allowed is required. True if the action would be allowed, false otherwise.", "type": "boolean" }, "evaluationError": { "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.", "type": "string" }, "reason": { "description": "Reason is optional. It indicates why a request was allowed or denied.", "type": "string" } } }, "io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource": { "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.", "required": [ "volumeID" ], "properties": { "fsType": { "description": "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", "type": "string" }, "partition": { "description": "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).", "type": "integer", "format": "int32" }, "readOnly": { "description": "Specify \"true\" to force and set the ReadOnly property in VolumeMounts to \"true\". If omitted, the default is \"false\". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", "type": "boolean" }, "volumeID": { "description": "Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", "type": "string" } } }, "io.k8s.api.core.v1.Affinity": { "description": "Affinity is a group of affinity scheduling rules.", "properties": { "nodeAffinity": { "description": "Describes node affinity scheduling rules for the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.NodeAffinity" }, "podAffinity": { "description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).", "$ref": "#/definitions/io.k8s.api.core.v1.PodAffinity" }, "podAntiAffinity": { "description": "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).", "$ref": "#/definitions/io.k8s.api.core.v1.PodAntiAffinity" } } }, "io.k8s.api.core.v1.AttachedVolume": { "description": "AttachedVolume describes a volume attached to a node", "required": [ "name", "devicePath" ], "properties": { "devicePath": { "description": "DevicePath represents the device path where the volume should be available", "type": "string" }, "name": { "description": "Name of the attached volume", "type": "string" } } }, "io.k8s.api.core.v1.AzureDiskVolumeSource": { "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", "required": [ "diskName", "diskURI" ], "properties": { "cachingMode": { "description": "Host Caching mode: None, Read Only, Read Write.", "type": "string" }, "diskName": { "description": "The Name of the data disk in the blob storage", "type": "string" }, "diskURI": { "description": "The URI the data disk in the blob storage", "type": "string" }, "fsType": { "description": "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.", "type": "string" }, "kind": { "description": "Expected values 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", "type": "string" }, "readOnly": { "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" } } }, "io.k8s.api.core.v1.AzureFilePersistentVolumeSource": { "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", "required": [ "secretName", "shareName" ], "properties": { "readOnly": { "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretName": { "description": "the name of secret that contains Azure Storage Account Name and Key", "type": "string" }, "secretNamespace": { "description": "the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod", "type": "string" }, "shareName": { "description": "Share Name", "type": "string" } } }, "io.k8s.api.core.v1.AzureFileVolumeSource": { "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", "required": [ "secretName", "shareName" ], "properties": { "readOnly": { "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretName": { "description": "the name of secret that contains Azure Storage Account Name and Key", "type": "string" }, "shareName": { "description": "Share Name", "type": "string" } } }, "io.k8s.api.core.v1.Binding": { "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.", "required": [ "target" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "target": { "description": "The target object that you want to bind to the standard object.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Binding", "version": "v1" } ] }, "io.k8s.api.core.v1.Capabilities": { "description": "Adds and removes POSIX capabilities from running containers.", "properties": { "add": { "description": "Added capabilities", "type": "array", "items": { "type": "string" } }, "drop": { "description": "Removed capabilities", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.CephFSPersistentVolumeSource": { "description": "Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.", "required": [ "monitors" ], "properties": { "monitors": { "description": "Required: Monitors is a collection of Ceph monitors More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "type": "array", "items": { "type": "string" } }, "path": { "description": "Optional: Used as the mounted root, rather than the full Ceph tree, default is /", "type": "string" }, "readOnly": { "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "type": "boolean" }, "secretFile": { "description": "Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "type": "string" }, "secretRef": { "description": "Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "$ref": "#/definitions/io.k8s.api.core.v1.SecretReference" }, "user": { "description": "Optional: User is the rados user name, default is admin More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "type": "string" } } }, "io.k8s.api.core.v1.CephFSVolumeSource": { "description": "Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.", "required": [ "monitors" ], "properties": { "monitors": { "description": "Required: Monitors is a collection of Ceph monitors More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "type": "array", "items": { "type": "string" } }, "path": { "description": "Optional: Used as the mounted root, rather than the full Ceph tree, default is /", "type": "string" }, "readOnly": { "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "type": "boolean" }, "secretFile": { "description": "Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "type": "string" }, "secretRef": { "description": "Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "user": { "description": "Optional: User is the rados user name, default is admin More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "type": "string" } } }, "io.k8s.api.core.v1.CinderVolumeSource": { "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.", "required": [ "volumeID" ], "properties": { "fsType": { "description": "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://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", "type": "string" }, "readOnly": { "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", "type": "boolean" }, "volumeID": { "description": "volume id used to identify the volume in cinder More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", "type": "string" } } }, "io.k8s.api.core.v1.ClientIPConfig": { "description": "ClientIPConfig represents the configurations of Client IP based session affinity.", "properties": { "timeoutSeconds": { "description": "timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be \u003e0 \u0026\u0026 \u003c=86400(for 1 day) if ServiceAffinity == \"ClientIP\". Default value is 10800(for 3 hours).", "type": "integer", "format": "int32" } } }, "io.k8s.api.core.v1.ComponentCondition": { "description": "Information about the condition of a component.", "required": [ "type", "status" ], "properties": { "error": { "description": "Condition error code for a component. For example, a health check error code.", "type": "string" }, "message": { "description": "Message about the condition for a component. For example, information about a health check.", "type": "string" }, "status": { "description": "Status of the condition for a component. Valid values for \"Healthy\": \"True\", \"False\", or \"Unknown\".", "type": "string" }, "type": { "description": "Type of condition for a component. Valid value: \"Healthy\"", "type": "string" } } }, "io.k8s.api.core.v1.ComponentStatus": { "description": "ComponentStatus (and ComponentStatusList) holds the cluster validation info.", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "conditions": { "description": "List of component conditions observed", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ComponentCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ComponentStatus", "version": "v1" } ] }, "io.k8s.api.core.v1.ComponentStatusList": { "description": "Status of all the conditions for the component as a list of ComponentStatus objects.", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of ComponentStatus objects.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ComponentStatus" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ComponentStatusList", "version": "v1" } ] }, "io.k8s.api.core.v1.ConfigMap": { "description": "ConfigMap holds configuration data for pods to consume.", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "data": { "description": "Data contains the configuration data. Each key must consist of alphanumeric characters, '-', '_' or '.'.", "type": "object", "additionalProperties": { "type": "string" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ConfigMap", "version": "v1" } ] }, "io.k8s.api.core.v1.ConfigMapEnvSource": { "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.", "properties": { "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the ConfigMap must be defined", "type": "boolean" } } }, "io.k8s.api.core.v1.ConfigMapKeySelector": { "description": "Selects a key from a ConfigMap.", "required": [ "key" ], "properties": { "key": { "description": "The key to select.", "type": "string" }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the ConfigMap or it's key must be defined", "type": "boolean" } } }, "io.k8s.api.core.v1.ConfigMapList": { "description": "ConfigMapList is a resource containing a list of ConfigMap objects.", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "Items is the list of ConfigMaps.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMap" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ConfigMapList", "version": "v1" } ] }, "io.k8s.api.core.v1.ConfigMapProjection": { "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.", "properties": { "items": { "description": "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 '..'.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.KeyToPath" } }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the ConfigMap or it's keys must be defined", "type": "boolean" } } }, "io.k8s.api.core.v1.ConfigMapVolumeSource": { "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.", "properties": { "defaultMode": { "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. 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.", "type": "integer", "format": "int32" }, "items": { "description": "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 '..'.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.KeyToPath" } }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the ConfigMap or it's keys must be defined", "type": "boolean" } } }, "io.k8s.api.core.v1.Container": { "description": "A single application container that you want to run within a pod.", "required": [ "name", "image" ], "properties": { "args": { "description": "Arguments to the entrypoint. The docker 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. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(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", "type": "array", "items": { "type": "string" } }, "command": { "description": "Entrypoint array. Not executed within a shell. The docker 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. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(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", "type": "array", "items": { "type": "string" } }, "env": { "description": "List of environment variables to set in the container. Cannot be updated.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EnvVar" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "envFrom": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EnvFromSource" } }, "image": { "description": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images", "type": "string" }, "imagePullPolicy": { "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", "type": "string" }, "lifecycle": { "description": "Actions that the management system should take in response to container lifecycle events. Cannot be updated.", "$ref": "#/definitions/io.k8s.api.core.v1.Lifecycle" }, "livenessProbe": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.Probe" }, "name": { "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.", "type": "string" }, "ports": { "description": "List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. 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. Cannot be updated.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ContainerPort" }, "x-kubernetes-patch-merge-key": "containerPort", "x-kubernetes-patch-strategy": "merge" }, "readinessProbe": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.Probe" }, "resources": { "description": "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources", "$ref": "#/definitions/io.k8s.api.core.v1.ResourceRequirements" }, "securityContext": { "description": "Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://git.k8s.io/community/contributors/design-proposals/security_context.md", "$ref": "#/definitions/io.k8s.api.core.v1.SecurityContext" }, "stdin": { "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.", "type": "boolean" }, "stdinOnce": { "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", "type": "boolean" }, "terminationMessagePath": { "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.", "type": "string" }, "terminationMessagePolicy": { "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.", "type": "string" }, "tty": { "description": "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", "type": "boolean" }, "volumeMounts": { "description": "Pod volumes to mount into the container's filesystem. Cannot be updated.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.VolumeMount" }, "x-kubernetes-patch-merge-key": "mountPath", "x-kubernetes-patch-strategy": "merge" }, "workingDir": { "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.", "type": "string" } } }, "io.k8s.api.core.v1.ContainerImage": { "description": "Describe a container image", "required": [ "names" ], "properties": { "names": { "description": "Names by which this image is known. e.g. [\"k8s.gcr.io/hyperkube:v1.0.7\", \"dockerhub.io/google_containers/hyperkube:v1.0.7\"]", "type": "array", "items": { "type": "string" } }, "sizeBytes": { "description": "The size of the image in bytes.", "type": "integer", "format": "int64" } } }, "io.k8s.api.core.v1.ContainerPort": { "description": "ContainerPort represents a network port in a single container.", "required": [ "containerPort" ], "properties": { "containerPort": { "description": "Number of port to expose on the pod's IP address. This must be a valid port number, 0 \u003c x \u003c 65536.", "type": "integer", "format": "int32" }, "hostIP": { "description": "What host IP to bind the external port to.", "type": "string" }, "hostPort": { "description": "Number of port to expose on the host. If specified, this must be a valid port number, 0 \u003c x \u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.", "type": "integer", "format": "int32" }, "name": { "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.", "type": "string" }, "protocol": { "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", "type": "string" } } }, "io.k8s.api.core.v1.ContainerState": { "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.", "properties": { "running": { "description": "Details about a running container", "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStateRunning" }, "terminated": { "description": "Details about a terminated container", "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStateTerminated" }, "waiting": { "description": "Details about a waiting container", "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStateWaiting" } } }, "io.k8s.api.core.v1.ContainerStateRunning": { "description": "ContainerStateRunning is a running state of a container.", "properties": { "startedAt": { "description": "Time at which the container was last (re-)started", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } } }, "io.k8s.api.core.v1.ContainerStateTerminated": { "description": "ContainerStateTerminated is a terminated state of a container.", "required": [ "exitCode" ], "properties": { "containerID": { "description": "Container's ID in the format 'docker://\u003ccontainer_id\u003e'", "type": "string" }, "exitCode": { "description": "Exit status from the last termination of the container", "type": "integer", "format": "int32" }, "finishedAt": { "description": "Time at which the container last terminated", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "Message regarding the last termination of the container", "type": "string" }, "reason": { "description": "(brief) reason from the last termination of the container", "type": "string" }, "signal": { "description": "Signal from the last termination of the container", "type": "integer", "format": "int32" }, "startedAt": { "description": "Time at which previous execution of the container started", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } } }, "io.k8s.api.core.v1.ContainerStateWaiting": { "description": "ContainerStateWaiting is a waiting state of a container.", "properties": { "message": { "description": "Message regarding why the container is not yet running.", "type": "string" }, "reason": { "description": "(brief) reason the container is not yet running.", "type": "string" } } }, "io.k8s.api.core.v1.ContainerStatus": { "description": "ContainerStatus contains details for the current status of this container.", "required": [ "name", "ready", "restartCount", "image", "imageID" ], "properties": { "containerID": { "description": "Container's ID in the format 'docker://\u003ccontainer_id\u003e'.", "type": "string" }, "image": { "description": "The image the container is running. More info: https://kubernetes.io/docs/concepts/containers/images", "type": "string" }, "imageID": { "description": "ImageID of the container's image.", "type": "string" }, "lastState": { "description": "Details about the container's last termination condition.", "$ref": "#/definitions/io.k8s.api.core.v1.ContainerState" }, "name": { "description": "This must be a DNS_LABEL. Each container in a pod must have a unique name. Cannot be updated.", "type": "string" }, "ready": { "description": "Specifies whether the container has passed its readiness probe.", "type": "boolean" }, "restartCount": { "description": "The number of times the container has been restarted, currently based on the number of dead containers that have not yet been removed. Note that this is calculated from dead containers. But those containers are subject to garbage collection. This value will get capped at 5 by GC.", "type": "integer", "format": "int32" }, "state": { "description": "Details about the container's current condition.", "$ref": "#/definitions/io.k8s.api.core.v1.ContainerState" } } }, "io.k8s.api.core.v1.DaemonEndpoint": { "description": "DaemonEndpoint contains information about a single Daemon endpoint.", "required": [ "Port" ], "properties": { "Port": { "description": "Port number of the given endpoint.", "type": "integer", "format": "int32" } } }, "io.k8s.api.core.v1.DownwardAPIProjection": { "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.", "properties": { "items": { "description": "Items is a list of DownwardAPIVolume file", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeFile" } } } }, "io.k8s.api.core.v1.DownwardAPIVolumeFile": { "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", "required": [ "path" ], "properties": { "fieldRef": { "description": "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectFieldSelector" }, "mode": { "description": "Optional: mode bits to use on this file, must be a value between 0 and 0777. 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.", "type": "integer", "format": "int32" }, "path": { "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 '..'", "type": "string" }, "resourceFieldRef": { "description": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.", "$ref": "#/definitions/io.k8s.api.core.v1.ResourceFieldSelector" } } }, "io.k8s.api.core.v1.DownwardAPIVolumeSource": { "description": "DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.", "properties": { "defaultMode": { "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. 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.", "type": "integer", "format": "int32" }, "items": { "description": "Items is a list of downward API volume file", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeFile" } } } }, "io.k8s.api.core.v1.EmptyDirVolumeSource": { "description": "Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.", "properties": { "medium": { "description": "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", "type": "string" }, "sizeLimit": { "description": "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: http://kubernetes.io/docs/user-guide/volumes#emptydir", "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } } }, "io.k8s.api.core.v1.EndpointAddress": { "description": "EndpointAddress is a tuple that describes single IP address.", "required": [ "ip" ], "properties": { "hostname": { "description": "The Hostname of this endpoint", "type": "string" }, "ip": { "description": "The IP of this endpoint. May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), or link-local multicast ((224.0.0.0/24). IPv6 is also accepted but not fully supported on all platforms. Also, certain kubernetes components, like kube-proxy, are not IPv6 ready.", "type": "string" }, "nodeName": { "description": "Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.", "type": "string" }, "targetRef": { "description": "Reference to object providing the endpoint.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" } } }, "io.k8s.api.core.v1.EndpointPort": { "description": "EndpointPort is a tuple that describes a single port.", "required": [ "port" ], "properties": { "name": { "description": "The name of this port (corresponds to ServicePort.Name). Must be a DNS_LABEL. Optional only if one port is defined.", "type": "string" }, "port": { "description": "The port number of the endpoint.", "type": "integer", "format": "int32" }, "protocol": { "description": "The IP protocol for this port. Must be UDP or TCP. Default is TCP.", "type": "string" } } }, "io.k8s.api.core.v1.EndpointSubset": { "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 Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n }\nThe resulting set of endpoints can be viewed 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 ]", "properties": { "addresses": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EndpointAddress" } }, "notReadyAddresses": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EndpointAddress" } }, "ports": { "description": "Port numbers available on the related IP addresses.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EndpointPort" } } } }, "io.k8s.api.core.v1.Endpoints": { "description": "Endpoints is a collection of endpoints that implement the actual service. Example:\n Name: \"mysvc\",\n Subsets: [\n {\n Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n },\n {\n Addresses: [{\"ip\": \"10.10.3.3\"}],\n Ports: [{\"name\": \"a\", \"port\": 93}, {\"name\": \"b\", \"port\": 76}]\n },\n ]", "required": [ "subsets" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "subsets": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EndpointSubset" } } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Endpoints", "version": "v1" } ] }, "io.k8s.api.core.v1.EndpointsList": { "description": "EndpointsList is a list of endpoints.", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of endpoints.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Endpoints" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "EndpointsList", "version": "v1" } ] }, "io.k8s.api.core.v1.EnvFromSource": { "description": "EnvFromSource represents the source of a set of ConfigMaps", "properties": { "configMapRef": { "description": "The ConfigMap to select from", "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapEnvSource" }, "prefix": { "description": "An optional identifer to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.", "type": "string" }, "secretRef": { "description": "The Secret to select from", "$ref": "#/definitions/io.k8s.api.core.v1.SecretEnvSource" } } }, "io.k8s.api.core.v1.EnvVar": { "description": "EnvVar represents an environment variable present in a Container.", "required": [ "name" ], "properties": { "name": { "description": "Name of the environment variable. Must be a C_IDENTIFIER.", "type": "string" }, "value": { "description": "Variable references $(VAR_NAME) are expanded using the previous 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. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".", "type": "string" }, "valueFrom": { "description": "Source for the environment variable's value. Cannot be used if value is not empty.", "$ref": "#/definitions/io.k8s.api.core.v1.EnvVarSource" } } }, "io.k8s.api.core.v1.EnvVarSource": { "description": "EnvVarSource represents a source for the value of an EnvVar.", "properties": { "configMapKeyRef": { "description": "Selects a key of a ConfigMap.", "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapKeySelector" }, "fieldRef": { "description": "Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectFieldSelector" }, "resourceFieldRef": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.ResourceFieldSelector" }, "secretKeyRef": { "description": "Selects a key of a secret in the pod's namespace", "$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector" } } }, "io.k8s.api.core.v1.Event": { "description": "Event is a report of an event somewhere in the cluster.", "required": [ "metadata", "involvedObject" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "count": { "description": "The number of times this event has occurred.", "type": "integer", "format": "int32" }, "firstTimestamp": { "description": "The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "involvedObject": { "description": "The object that this event is about.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "lastTimestamp": { "description": "The time at which the most recent occurrence of this event was recorded.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "A human-readable description of the status of this operation.", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "reason": { "description": "This should be a short, machine understandable string that gives the reason for the transition into the object's current status.", "type": "string" }, "source": { "description": "The component reporting this event. Should be a short machine understandable string.", "$ref": "#/definitions/io.k8s.api.core.v1.EventSource" }, "type": { "description": "Type of this event (Normal, Warning), new types could be added in the future", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Event", "version": "v1" } ] }, "io.k8s.api.core.v1.EventList": { "description": "EventList is a list of events.", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of events", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Event" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "EventList", "version": "v1" } ] }, "io.k8s.api.core.v1.EventSource": { "description": "EventSource contains information for an event.", "properties": { "component": { "description": "Component from which the event is generated.", "type": "string" }, "host": { "description": "Node name on which the event is generated.", "type": "string" } } }, "io.k8s.api.core.v1.ExecAction": { "description": "ExecAction describes a \"run in container\" action.", "properties": { "command": { "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.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.FCVolumeSource": { "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.", "properties": { "fsType": { "description": "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.", "type": "string" }, "lun": { "description": "Optional: FC target lun number", "type": "integer", "format": "int32" }, "readOnly": { "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "targetWWNs": { "description": "Optional: FC target worldwide names (WWNs)", "type": "array", "items": { "type": "string" } }, "wwids": { "description": "Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.FlexVolumeSource": { "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.", "required": [ "driver" ], "properties": { "driver": { "description": "Driver is the name of the driver to use for this volume.", "type": "string" }, "fsType": { "description": "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.", "type": "string" }, "options": { "description": "Optional: Extra command options if any.", "type": "object", "additionalProperties": { "type": "string" } }, "readOnly": { "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretRef": { "description": "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.", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" } } }, "io.k8s.api.core.v1.FlockerVolumeSource": { "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.", "properties": { "datasetName": { "description": "Name of the dataset stored as metadata -\u003e name on the dataset for Flocker should be considered as deprecated", "type": "string" }, "datasetUUID": { "description": "UUID of the dataset. This is unique identifier of a Flocker dataset", "type": "string" } } }, "io.k8s.api.core.v1.GCEPersistentDiskVolumeSource": { "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.", "required": [ "pdName" ], "properties": { "fsType": { "description": "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", "type": "string" }, "partition": { "description": "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", "type": "integer", "format": "int32" }, "pdName": { "description": "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", "type": "string" }, "readOnly": { "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", "type": "boolean" } } }, "io.k8s.api.core.v1.GitRepoVolumeSource": { "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.", "required": [ "repository" ], "properties": { "directory": { "description": "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.", "type": "string" }, "repository": { "description": "Repository URL", "type": "string" }, "revision": { "description": "Commit hash for the specified revision.", "type": "string" } } }, "io.k8s.api.core.v1.GlusterfsVolumeSource": { "description": "Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.", "required": [ "endpoints", "path" ], "properties": { "endpoints": { "description": "EndpointsName is the endpoint name that details Glusterfs topology. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod", "type": "string" }, "path": { "description": "Path is the Glusterfs volume path. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod", "type": "string" }, "readOnly": { "description": "ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod", "type": "boolean" } } }, "io.k8s.api.core.v1.HTTPGetAction": { "description": "HTTPGetAction describes an action based on HTTP Get requests.", "required": [ "port" ], "properties": { "host": { "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.", "type": "string" }, "httpHeaders": { "description": "Custom headers to set in the request. HTTP allows repeated headers.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.HTTPHeader" } }, "path": { "description": "Path to access on the HTTP server.", "type": "string" }, "port": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string" } } }, "io.k8s.api.core.v1.HTTPHeader": { "description": "HTTPHeader describes a custom header to be used in HTTP probes", "required": [ "name", "value" ], "properties": { "name": { "description": "The header field name", "type": "string" }, "value": { "description": "The header field value", "type": "string" } } }, "io.k8s.api.core.v1.Handler": { "description": "Handler defines a specific action that should be taken", "properties": { "exec": { "description": "One and only one of the following should be specified. Exec specifies the action to take.", "$ref": "#/definitions/io.k8s.api.core.v1.ExecAction" }, "httpGet": { "description": "HTTPGet specifies the http request to perform.", "$ref": "#/definitions/io.k8s.api.core.v1.HTTPGetAction" }, "tcpSocket": { "description": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported", "$ref": "#/definitions/io.k8s.api.core.v1.TCPSocketAction" } } }, "io.k8s.api.core.v1.HostAlias": { "description": "HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.", "properties": { "hostnames": { "description": "Hostnames for the above IP address.", "type": "array", "items": { "type": "string" } }, "ip": { "description": "IP address of the host file entry.", "type": "string" } } }, "io.k8s.api.core.v1.HostPathVolumeSource": { "description": "Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.", "required": [ "path" ], "properties": { "path": { "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", "type": "string" }, "type": { "description": "Type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", "type": "string" } } }, "io.k8s.api.core.v1.ISCSIVolumeSource": { "description": "Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.", "required": [ "targetPortal", "iqn", "lun" ], "properties": { "chapAuthDiscovery": { "description": "whether support iSCSI Discovery CHAP authentication", "type": "boolean" }, "chapAuthSession": { "description": "whether support iSCSI Session CHAP authentication", "type": "boolean" }, "fsType": { "description": "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", "type": "string" }, "initiatorName": { "description": "Custom iSCSI initiator name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \u003ctarget portal\u003e:\u003cvolume name\u003e will be created for the connection.", "type": "string" }, "iqn": { "description": "Target iSCSI Qualified Name.", "type": "string" }, "iscsiInterface": { "description": "Optional: Defaults to 'default' (tcp). iSCSI interface name that uses an iSCSI transport.", "type": "string" }, "lun": { "description": "iSCSI target lun number.", "type": "integer", "format": "int32" }, "portals": { "description": "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).", "type": "array", "items": { "type": "string" } }, "readOnly": { "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.", "type": "boolean" }, "secretRef": { "description": "CHAP secret for iSCSI target and initiator authentication", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "targetPortal": { "description": "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).", "type": "string" } } }, "io.k8s.api.core.v1.KeyToPath": { "description": "Maps a string key to a path within a volume.", "required": [ "key", "path" ], "properties": { "key": { "description": "The key to project.", "type": "string" }, "mode": { "description": "Optional: mode bits to use on this file, must be a value between 0 and 0777. 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.", "type": "integer", "format": "int32" }, "path": { "description": "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 '..'.", "type": "string" } } }, "io.k8s.api.core.v1.Lifecycle": { "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.", "properties": { "postStart": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.Handler" }, "preStop": { "description": "PreStop is called immediately before a container is terminated. The container is terminated after the handler completes. The reason for termination is passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks", "$ref": "#/definitions/io.k8s.api.core.v1.Handler" } } }, "io.k8s.api.core.v1.LimitRange": { "description": "LimitRange sets resource usage limits for each kind of resource in a Namespace.", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec defines the limits enforced. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.LimitRangeSpec" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "LimitRange", "version": "v1" } ] }, "io.k8s.api.core.v1.LimitRangeItem": { "description": "LimitRangeItem defines a min/max usage limit for any resource that matches on kind.", "properties": { "default": { "description": "Default resource requirement limit value by resource name if resource limit is omitted.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "defaultRequest": { "description": "DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "max": { "description": "Max usage constraints on this kind by resource name.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "maxLimitRequestRatio": { "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.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "min": { "description": "Min usage constraints on this kind by resource name.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "type": { "description": "Type of resource that this limit applies to.", "type": "string" } } }, "io.k8s.api.core.v1.LimitRangeList": { "description": "LimitRangeList is a list of LimitRange items.", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "Items is a list of LimitRange objects. More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_limit_range.md", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.LimitRange" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "LimitRangeList", "version": "v1" } ] }, "io.k8s.api.core.v1.LimitRangeSpec": { "description": "LimitRangeSpec defines a min/max usage limit for resources that match on kind.", "required": [ "limits" ], "properties": { "limits": { "description": "Limits is the list of LimitRangeItem objects that are enforced.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.LimitRangeItem" } } } }, "io.k8s.api.core.v1.LoadBalancerIngress": { "description": "LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.", "properties": { "hostname": { "description": "Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers)", "type": "string" }, "ip": { "description": "IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)", "type": "string" } } }, "io.k8s.api.core.v1.LoadBalancerStatus": { "description": "LoadBalancerStatus represents the status of a load-balancer.", "properties": { "ingress": { "description": "Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.LoadBalancerIngress" } } } }, "io.k8s.api.core.v1.LocalObjectReference": { "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", "properties": { "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" } } }, "io.k8s.api.core.v1.LocalVolumeSource": { "description": "Local represents directly-attached storage with node affinity", "required": [ "path" ], "properties": { "path": { "description": "The full path to the volume on the node For alpha, this path must be a directory Once block as a source is supported, then this path can point to a block device", "type": "string" } } }, "io.k8s.api.core.v1.NFSVolumeSource": { "description": "Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.", "required": [ "server", "path" ], "properties": { "path": { "description": "Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", "type": "string" }, "readOnly": { "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", "type": "boolean" }, "server": { "description": "Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", "type": "string" } } }, "io.k8s.api.core.v1.Namespace": { "description": "Namespace provides a scope for Names. Use of multiple namespaces is optional.", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec defines the behavior of the Namespace. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.NamespaceSpec" }, "status": { "description": "Status describes the current status of a Namespace. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.NamespaceStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Namespace", "version": "v1" } ] }, "io.k8s.api.core.v1.NamespaceList": { "description": "NamespaceList is a list of Namespaces.", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "Items is the list of Namespace objects in the list. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "NamespaceList", "version": "v1" } ] }, "io.k8s.api.core.v1.NamespaceSpec": { "description": "NamespaceSpec describes the attributes on a Namespace.", "properties": { "finalizers": { "description": "Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: https://git.k8s.io/community/contributors/design-proposals/namespaces.md#finalizers", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.NamespaceStatus": { "description": "NamespaceStatus is information about the current status of a Namespace.", "properties": { "phase": { "description": "Phase is the current lifecycle phase of the namespace. More info: https://git.k8s.io/community/contributors/design-proposals/namespaces.md#phases", "type": "string" } } }, "io.k8s.api.core.v1.Node": { "description": "Node is a worker node in Kubernetes. Each node will have a unique identifier in the cache (i.e. in etcd).", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec defines the behavior of a node. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.NodeSpec" }, "status": { "description": "Most recently observed status of the node. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.NodeStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Node", "version": "v1" } ] }, "io.k8s.api.core.v1.NodeAddress": { "description": "NodeAddress contains information for the node's address.", "required": [ "type", "address" ], "properties": { "address": { "description": "The node address.", "type": "string" }, "type": { "description": "Node address type, one of Hostname, ExternalIP or InternalIP.", "type": "string" } } }, "io.k8s.api.core.v1.NodeAffinity": { "description": "Node affinity is a group of node affinity scheduling rules.", "properties": { "preferredDuringSchedulingIgnoredDuringExecution": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PreferredSchedulingTerm" } }, "requiredDuringSchedulingIgnoredDuringExecution": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelector" } } }, "io.k8s.api.core.v1.NodeCondition": { "description": "NodeCondition contains condition information for a node.", "required": [ "type", "status" ], "properties": { "lastHeartbeatTime": { "description": "Last time we got an update on a given condition.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "lastTransitionTime": { "description": "Last time the condition transit from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "Human readable message indicating details about last transition.", "type": "string" }, "reason": { "description": "(brief) reason for the condition's last transition.", "type": "string" }, "status": { "description": "Status of the condition, one of True, False, Unknown.", "type": "string" }, "type": { "description": "Type of node condition.", "type": "string" } } }, "io.k8s.api.core.v1.NodeConfigSource": { "description": "NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "configMapRef": { "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "NodeConfigSource", "version": "v1" } ] }, "io.k8s.api.core.v1.NodeDaemonEndpoints": { "description": "NodeDaemonEndpoints lists ports opened by daemons running on the Node.", "properties": { "kubeletEndpoint": { "description": "Endpoint on which Kubelet is listening.", "$ref": "#/definitions/io.k8s.api.core.v1.DaemonEndpoint" } } }, "io.k8s.api.core.v1.NodeList": { "description": "NodeList is the whole list of all Nodes which have been registered with master.", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of nodes", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Node" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "NodeList", "version": "v1" } ] }, "io.k8s.api.core.v1.NodeSelector": { "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.", "required": [ "nodeSelectorTerms" ], "properties": { "nodeSelectorTerms": { "description": "Required. A list of node selector terms. The terms are ORed.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelectorTerm" } } } }, "io.k8s.api.core.v1.NodeSelectorRequirement": { "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", "required": [ "key", "operator" ], "properties": { "key": { "description": "The label key that the selector applies to.", "type": "string" }, "operator": { "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", "type": "string" }, "values": { "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.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.NodeSelectorTerm": { "description": "A null or empty node selector term matches no objects.", "required": [ "matchExpressions" ], "properties": { "matchExpressions": { "description": "Required. A list of node selector requirements. The requirements are ANDed.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelectorRequirement" } } } }, "io.k8s.api.core.v1.NodeSpec": { "description": "NodeSpec describes the attributes that a node is created with.", "properties": { "configSource": { "description": "If specified, the source to get node configuration from The DynamicKubeletConfig feature gate must be enabled for the Kubelet to use this field", "$ref": "#/definitions/io.k8s.api.core.v1.NodeConfigSource" }, "externalID": { "description": "External ID of the node assigned by some machine database (e.g. a cloud provider). Deprecated.", "type": "string" }, "podCIDR": { "description": "PodCIDR represents the pod IP range assigned to the node.", "type": "string" }, "providerID": { "description": "ID of the node assigned by the cloud provider in the format: \u003cProviderName\u003e://\u003cProviderSpecificNodeID\u003e", "type": "string" }, "taints": { "description": "If specified, the node's taints.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Taint" } }, "unschedulable": { "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", "type": "boolean" } } }, "io.k8s.api.core.v1.NodeStatus": { "description": "NodeStatus is information about the current status of a node.", "properties": { "addresses": { "description": "List of addresses reachable to the node. Queried from cloud provider, if available. More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.NodeAddress" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "allocatable": { "description": "Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "capacity": { "description": "Capacity represents the total resources of a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "conditions": { "description": "Conditions is an array of current observed node conditions. More info: https://kubernetes.io/docs/concepts/nodes/node/#condition", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.NodeCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "daemonEndpoints": { "description": "Endpoints of daemons running on the Node.", "$ref": "#/definitions/io.k8s.api.core.v1.NodeDaemonEndpoints" }, "images": { "description": "List of container images on this node", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ContainerImage" } }, "nodeInfo": { "description": "Set of ids/uuids to uniquely identify the node. More info: https://kubernetes.io/docs/concepts/nodes/node/#info", "$ref": "#/definitions/io.k8s.api.core.v1.NodeSystemInfo" }, "phase": { "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.", "type": "string" }, "volumesAttached": { "description": "List of volumes that are attached to the node.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.AttachedVolume" } }, "volumesInUse": { "description": "List of attachable volumes in use (mounted) by the node.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.NodeSystemInfo": { "description": "NodeSystemInfo is a set of ids/uuids to uniquely identify the node.", "required": [ "machineID", "systemUUID", "bootID", "kernelVersion", "osImage", "containerRuntimeVersion", "kubeletVersion", "kubeProxyVersion", "operatingSystem", "architecture" ], "properties": { "architecture": { "description": "The Architecture reported by the node", "type": "string" }, "bootID": { "description": "Boot ID reported by the node.", "type": "string" }, "containerRuntimeVersion": { "description": "ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0).", "type": "string" }, "kernelVersion": { "description": "Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).", "type": "string" }, "kubeProxyVersion": { "description": "KubeProxy Version reported by the node.", "type": "string" }, "kubeletVersion": { "description": "Kubelet Version reported by the node.", "type": "string" }, "machineID": { "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", "type": "string" }, "operatingSystem": { "description": "The Operating System reported by the node", "type": "string" }, "osImage": { "description": "OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).", "type": "string" }, "systemUUID": { "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/getting-system-uuid.html", "type": "string" } } }, "io.k8s.api.core.v1.ObjectFieldSelector": { "description": "ObjectFieldSelector selects an APIVersioned field of an object.", "required": [ "fieldPath" ], "properties": { "apiVersion": { "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", "type": "string" }, "fieldPath": { "description": "Path of the field to select in the specified API version.", "type": "string" } } }, "io.k8s.api.core.v1.ObjectReference": { "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", "properties": { "apiVersion": { "description": "API version of the referent.", "type": "string" }, "fieldPath": { "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.", "type": "string" }, "kind": { "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "type": "string" }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "namespace": { "description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", "type": "string" }, "resourceVersion": { "description": "Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency", "type": "string" }, "uid": { "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", "type": "string" } } }, "io.k8s.api.core.v1.PersistentVolume": { "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", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeSpec" }, "status": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PersistentVolume", "version": "v1" } ] }, "io.k8s.api.core.v1.PersistentVolumeClaim": { "description": "PersistentVolumeClaim is a user's request for and claim to a persistent volume", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimSpec" }, "status": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PersistentVolumeClaim", "version": "v1" } ] }, "io.k8s.api.core.v1.PersistentVolumeClaimList": { "description": "PersistentVolumeClaimList is a list of PersistentVolumeClaim items.", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "A list of persistent volume claims. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PersistentVolumeClaimList", "version": "v1" } ] }, "io.k8s.api.core.v1.PersistentVolumeClaimSpec": { "description": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", "properties": { "accessModes": { "description": "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", "type": "array", "items": { "type": "string" } }, "resources": { "description": "Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources", "$ref": "#/definitions/io.k8s.api.core.v1.ResourceRequirements" }, "selector": { "description": "A label query over volumes to consider for binding.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "storageClassName": { "description": "Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", "type": "string" }, "volumeName": { "description": "VolumeName is the binding reference to the PersistentVolume backing this claim.", "type": "string" } } }, "io.k8s.api.core.v1.PersistentVolumeClaimStatus": { "description": "PersistentVolumeClaimStatus is the current status of a persistent volume claim.", "properties": { "accessModes": { "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", "type": "array", "items": { "type": "string" } }, "capacity": { "description": "Represents the actual resources of the underlying volume.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "phase": { "description": "Phase represents the current phase of PersistentVolumeClaim.", "type": "string" } } }, "io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource": { "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).", "required": [ "claimName" ], "properties": { "claimName": { "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", "type": "string" }, "readOnly": { "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", "type": "boolean" } } }, "io.k8s.api.core.v1.PersistentVolumeList": { "description": "PersistentVolumeList is a list of PersistentVolume items.", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of persistent volumes. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PersistentVolumeList", "version": "v1" } ] }, "io.k8s.api.core.v1.PersistentVolumeSpec": { "description": "PersistentVolumeSpec is the specification of a persistent volume.", "properties": { "accessModes": { "description": "AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes", "type": "array", "items": { "type": "string" } }, "awsElasticBlockStore": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource" }, "azureDisk": { "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.AzureDiskVolumeSource" }, "azureFile": { "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.AzureFilePersistentVolumeSource" }, "capacity": { "description": "A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "cephfs": { "description": "CephFS represents a Ceph FS mount on the host that shares a pod's lifetime", "$ref": "#/definitions/io.k8s.api.core.v1.CephFSPersistentVolumeSource" }, "cinder": { "description": "Cinder represents a cinder volume attached and mounted on kubelets host machine More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", "$ref": "#/definitions/io.k8s.api.core.v1.CinderVolumeSource" }, "claimRef": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" }, "fc": { "description": "FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.FCVolumeSource" }, "flexVolume": { "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.", "$ref": "#/definitions/io.k8s.api.core.v1.FlexVolumeSource" }, "flocker": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.FlockerVolumeSource" }, "gcePersistentDisk": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource" }, "glusterfs": { "description": "Glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod. Provisioned by an admin. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md", "$ref": "#/definitions/io.k8s.api.core.v1.GlusterfsVolumeSource" }, "hostPath": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.HostPathVolumeSource" }, "iscsi": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.ISCSIVolumeSource" }, "local": { "description": "Local represents directly-attached storage with node affinity", "$ref": "#/definitions/io.k8s.api.core.v1.LocalVolumeSource" }, "mountOptions": { "description": "A 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", "type": "array", "items": { "type": "string" } }, "nfs": { "description": "NFS represents an NFS mount on the host. Provisioned by an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", "$ref": "#/definitions/io.k8s.api.core.v1.NFSVolumeSource" }, "persistentVolumeReclaimPolicy": { "description": "What happens to a persistent volume when released from its claim. Valid options are Retain (default) and Recycle. Recycling must be supported by the volume plugin underlying this persistent volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming", "type": "string" }, "photonPersistentDisk": { "description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine", "$ref": "#/definitions/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource" }, "portworxVolume": { "description": "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine", "$ref": "#/definitions/io.k8s.api.core.v1.PortworxVolumeSource" }, "quobyte": { "description": "Quobyte represents a Quobyte mount on the host that shares a pod's lifetime", "$ref": "#/definitions/io.k8s.api.core.v1.QuobyteVolumeSource" }, "rbd": { "description": "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md", "$ref": "#/definitions/io.k8s.api.core.v1.RBDVolumeSource" }, "scaleIO": { "description": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.", "$ref": "#/definitions/io.k8s.api.core.v1.ScaleIOVolumeSource" }, "storageClassName": { "description": "Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.", "type": "string" }, "storageos": { "description": "StorageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md", "$ref": "#/definitions/io.k8s.api.core.v1.StorageOSPersistentVolumeSource" }, "vsphereVolume": { "description": "VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine", "$ref": "#/definitions/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource" } } }, "io.k8s.api.core.v1.PersistentVolumeStatus": { "description": "PersistentVolumeStatus is the current status of a persistent volume.", "properties": { "message": { "description": "A human-readable message indicating details about why the volume is in this state.", "type": "string" }, "phase": { "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", "type": "string" }, "reason": { "description": "Reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI.", "type": "string" } } }, "io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource": { "description": "Represents a Photon Controller persistent disk resource.", "required": [ "pdID" ], "properties": { "fsType": { "description": "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.", "type": "string" }, "pdID": { "description": "ID that identifies Photon Controller persistent disk", "type": "string" } } }, "io.k8s.api.core.v1.Pod": { "description": "Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts.", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Specification of the desired behavior of the pod. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.PodSpec" }, "status": { "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/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.PodStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Pod", "version": "v1" } ] }, "io.k8s.api.core.v1.PodAffinity": { "description": "Pod affinity is a group of inter pod affinity scheduling rules.", "properties": { "preferredDuringSchedulingIgnoredDuringExecution": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm" } }, "requiredDuringSchedulingIgnoredDuringExecution": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PodAffinityTerm" } } } }, "io.k8s.api.core.v1.PodAffinityTerm": { "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 \u003ctopologyKey\u003e tches that of any node on which a pod of the set of pods is running", "properties": { "labelSelector": { "description": "A label query over a set of resources, in this case pods.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "namespaces": { "description": "namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means \"this pod's namespace\"", "type": "array", "items": { "type": "string" } }, "topologyKey": { "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. For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as \"all topologies\" (\"all topologies\" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains); for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed.", "type": "string" } } }, "io.k8s.api.core.v1.PodAntiAffinity": { "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", "properties": { "preferredDuringSchedulingIgnoredDuringExecution": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm" } }, "requiredDuringSchedulingIgnoredDuringExecution": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PodAffinityTerm" } } } }, "io.k8s.api.core.v1.PodCondition": { "description": "PodCondition contains details for the current condition of this pod.", "required": [ "type", "status" ], "properties": { "lastProbeTime": { "description": "Last time we probed the condition.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "lastTransitionTime": { "description": "Last time the condition transitioned from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "Human-readable message indicating details about last transition.", "type": "string" }, "reason": { "description": "Unique, one-word, CamelCase reason for the condition's last transition.", "type": "string" }, "status": { "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", "type": "string" }, "type": { "description": "Type is the type of the condition. Currently only Ready. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions", "type": "string" } } }, "io.k8s.api.core.v1.PodList": { "description": "PodList is a list of Pods.", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of pods. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PodList", "version": "v1" } ] }, "io.k8s.api.core.v1.PodSecurityContext": { "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.", "properties": { "fsGroup": { "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.", "type": "integer", "format": "int64" }, "runAsNonRoot": { "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.", "type": "boolean" }, "runAsUser": { "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.", "type": "integer", "format": "int64" }, "seLinuxOptions": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.SELinuxOptions" }, "supplementalGroups": { "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", "type": "array", "items": { "type": "integer", "format": "int64" } } } }, "io.k8s.api.core.v1.PodSpec": { "description": "PodSpec is a description of a pod.", "required": [ "containers" ], "properties": { "activeDeadlineSeconds": { "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.", "type": "integer", "format": "int64" }, "affinity": { "description": "If specified, the pod's scheduling constraints", "$ref": "#/definitions/io.k8s.api.core.v1.Affinity" }, "automountServiceAccountToken": { "description": "AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.", "type": "boolean" }, "containers": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Container" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "dnsPolicy": { "description": "Set DNS policy for containers within the pod. One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. Defaults to \"ClusterFirst\". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", "type": "string" }, "hostAliases": { "description": "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.HostAlias" }, "x-kubernetes-patch-merge-key": "ip", "x-kubernetes-patch-strategy": "merge" }, "hostIPC": { "description": "Use the host's ipc namespace. Optional: Default to false.", "type": "boolean" }, "hostNetwork": { "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.", "type": "boolean" }, "hostPID": { "description": "Use the host's pid namespace. Optional: Default to false.", "type": "boolean" }, "hostname": { "description": "Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", "type": "string" }, "imagePullSecrets": { "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. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "initContainers": { "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, or Liveness 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/", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Container" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "nodeName": { "description": "NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.", "type": "string" }, "nodeSelector": { "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/", "type": "object", "additionalProperties": { "type": "string" } }, "priority": { "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.", "type": "integer", "format": "int32" }, "priorityClassName": { "description": "If specified, indicates the pod's priority. \"SYSTEM\" is a special keyword which indicates 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.", "type": "string" }, "restartPolicy": { "description": "Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy", "type": "string" }, "schedulerName": { "description": "If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.", "type": "string" }, "securityContext": { "description": "SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.", "$ref": "#/definitions/io.k8s.api.core.v1.PodSecurityContext" }, "serviceAccount": { "description": "DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.", "type": "string" }, "serviceAccountName": { "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/", "type": "string" }, "subdomain": { "description": "If specified, the fully qualified Pod hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the pod will not have a domainname at all.", "type": "string" }, "terminationGracePeriodSeconds": { "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 delete immediately. 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.", "type": "integer", "format": "int64" }, "tolerations": { "description": "If specified, the pod's tolerations.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Toleration" } }, "volumes": { "description": "List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Volume" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge,retainKeys" } } }, "io.k8s.api.core.v1.PodStatus": { "description": "PodStatus represents information about the status of a pod. Status may trail the actual state of a system.", "properties": { "conditions": { "description": "Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PodCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "containerStatuses": { "description": "The list has one entry per container in the manifest. Each entry is currently the output of `docker inspect`. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStatus" } }, "hostIP": { "description": "IP address of the host to which the pod is assigned. Empty if not yet scheduled.", "type": "string" }, "initContainerStatuses": { "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", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStatus" } }, "message": { "description": "A human readable message indicating details about why the pod is in this condition.", "type": "string" }, "phase": { "description": "Current condition of the pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase", "type": "string" }, "podIP": { "description": "IP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated.", "type": "string" }, "qosClass": { "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://github.com/kubernetes/kubernetes/blob/master/docs/design/resource-qos.md", "type": "string" }, "reason": { "description": "A brief CamelCase message indicating details about why the pod is in this state. e.g. 'Evicted'", "type": "string" }, "startTime": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } } }, "io.k8s.api.core.v1.PodTemplate": { "description": "PodTemplate describes a template for creating copies of a predefined pod.", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "template": { "description": "Template defines the pods that will be created from this pod template. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplateSpec" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PodTemplate", "version": "v1" } ] }, "io.k8s.api.core.v1.PodTemplateList": { "description": "PodTemplateList is a list of PodTemplates.", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of pod templates", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplate" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PodTemplateList", "version": "v1" } ] }, "io.k8s.api.core.v1.PodTemplateSpec": { "description": "PodTemplateSpec describes the data a pod should have when created from a template", "properties": { "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Specification of the desired behavior of the pod. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.PodSpec" } } }, "io.k8s.api.core.v1.PortworxVolumeSource": { "description": "PortworxVolumeSource represents a Portworx volume resource.", "required": [ "volumeID" ], "properties": { "fsType": { "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.", "type": "string" }, "readOnly": { "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "volumeID": { "description": "VolumeID uniquely identifies a Portworx volume", "type": "string" } } }, "io.k8s.api.core.v1.PreferredSchedulingTerm": { "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).", "required": [ "weight", "preference" ], "properties": { "preference": { "description": "A node selector term, associated with the corresponding weight.", "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelectorTerm" }, "weight": { "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", "type": "integer", "format": "int32" } } }, "io.k8s.api.core.v1.Probe": { "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.", "properties": { "exec": { "description": "One and only one of the following should be specified. Exec specifies the action to take.", "$ref": "#/definitions/io.k8s.api.core.v1.ExecAction" }, "failureThreshold": { "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.", "type": "integer", "format": "int32" }, "httpGet": { "description": "HTTPGet specifies the http request to perform.", "$ref": "#/definitions/io.k8s.api.core.v1.HTTPGetAction" }, "initialDelaySeconds": { "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", "type": "integer", "format": "int32" }, "periodSeconds": { "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.", "type": "integer", "format": "int32" }, "successThreshold": { "description": "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.", "type": "integer", "format": "int32" }, "tcpSocket": { "description": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported", "$ref": "#/definitions/io.k8s.api.core.v1.TCPSocketAction" }, "timeoutSeconds": { "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", "type": "integer", "format": "int32" } } }, "io.k8s.api.core.v1.ProjectedVolumeSource": { "description": "Represents a projected volume source", "required": [ "sources" ], "properties": { "defaultMode": { "description": "Mode bits to use on created files by default. Must be a value between 0 and 0777. 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.", "type": "integer", "format": "int32" }, "sources": { "description": "list of volume projections", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.VolumeProjection" } } } }, "io.k8s.api.core.v1.QuobyteVolumeSource": { "description": "Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.", "required": [ "registry", "volume" ], "properties": { "group": { "description": "Group to map volume access to Default is no group", "type": "string" }, "readOnly": { "description": "ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.", "type": "boolean" }, "registry": { "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", "type": "string" }, "user": { "description": "User to map volume access to Defaults to serivceaccount user", "type": "string" }, "volume": { "description": "Volume is a string that references an already created Quobyte volume by name.", "type": "string" } } }, "io.k8s.api.core.v1.RBDVolumeSource": { "description": "Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.", "required": [ "monitors", "image" ], "properties": { "fsType": { "description": "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", "type": "string" }, "image": { "description": "The rados image name. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", "type": "string" }, "keyring": { "description": "Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", "type": "string" }, "monitors": { "description": "A collection of Ceph monitors. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", "type": "array", "items": { "type": "string" } }, "pool": { "description": "The rados pool name. Default is rbd. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", "type": "string" }, "readOnly": { "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", "type": "boolean" }, "secretRef": { "description": "SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "user": { "description": "The rados user name. Default is admin. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", "type": "string" } } }, "io.k8s.api.core.v1.ReplicationController": { "description": "ReplicationController represents the configuration of a replication controller.", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "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/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec defines the specification of the desired behavior of the replication controller. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationControllerSpec" }, "status": { "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/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationControllerStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ReplicationController", "version": "v1" } ] }, "io.k8s.api.core.v1.ReplicationControllerCondition": { "description": "ReplicationControllerCondition describes the state of a replication controller at a certain point.", "required": [ "type", "status" ], "properties": { "lastTransitionTime": { "description": "The last time the condition transitioned from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "A human readable message indicating details about the transition.", "type": "string" }, "reason": { "description": "The reason for the condition's last transition.", "type": "string" }, "status": { "description": "Status of the condition, one of True, False, Unknown.", "type": "string" }, "type": { "description": "Type of replication controller condition.", "type": "string" } } }, "io.k8s.api.core.v1.ReplicationControllerList": { "description": "ReplicationControllerList is a collection of replication controllers.", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of replication controllers. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ReplicationControllerList", "version": "v1" } ] }, "io.k8s.api.core.v1.ReplicationControllerSpec": { "description": "ReplicationControllerSpec is the specification of a replication controller.", "properties": { "minReadySeconds": { "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)", "type": "integer", "format": "int32" }, "replicas": { "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", "type": "integer", "format": "int32" }, "selector": { "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", "type": "object", "additionalProperties": { "type": "string" } }, "template": { "description": "Template is the object that describes the pod that will be created if insufficient replicas are detected. This takes precedence over a TemplateRef. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template", "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplateSpec" } } }, "io.k8s.api.core.v1.ReplicationControllerStatus": { "description": "ReplicationControllerStatus represents the current status of a replication controller.", "required": [ "replicas" ], "properties": { "availableReplicas": { "description": "The number of available replicas (ready for at least minReadySeconds) for this replication controller.", "type": "integer", "format": "int32" }, "conditions": { "description": "Represents the latest available observations of a replication controller's current state.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationControllerCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "fullyLabeledReplicas": { "description": "The number of pods that have labels matching the labels of the pod template of the replication controller.", "type": "integer", "format": "int32" }, "observedGeneration": { "description": "ObservedGeneration reflects the generation of the most recently observed replication controller.", "type": "integer", "format": "int64" }, "readyReplicas": { "description": "The number of ready replicas for this replication controller.", "type": "integer", "format": "int32" }, "replicas": { "description": "Replicas is the most recently oberved number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller", "type": "integer", "format": "int32" } } }, "io.k8s.api.core.v1.ResourceFieldSelector": { "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", "required": [ "resource" ], "properties": { "containerName": { "description": "Container name: required for volumes, optional for env vars", "type": "string" }, "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" }, "resource": { "description": "Required: resource to select", "type": "string" } } }, "io.k8s.api.core.v1.ResourceQuota": { "description": "ResourceQuota sets aggregate quota restrictions enforced per namespace", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec defines the desired quota. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuotaSpec" }, "status": { "description": "Status defines the actual enforced quota and its current usage. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuotaStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ResourceQuota", "version": "v1" } ] }, "io.k8s.api.core.v1.ResourceQuotaList": { "description": "ResourceQuotaList is a list of ResourceQuota items.", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "Items is a list of ResourceQuota objects. More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ResourceQuotaList", "version": "v1" } ] }, "io.k8s.api.core.v1.ResourceQuotaSpec": { "description": "ResourceQuotaSpec defines the desired hard limits to enforce for Quota.", "properties": { "hard": { "description": "Hard is the set of desired hard limits for each named resource. More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "scopes": { "description": "A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.ResourceQuotaStatus": { "description": "ResourceQuotaStatus defines the enforced hard limits and observed use.", "properties": { "hard": { "description": "Hard is the set of enforced hard limits for each named resource. More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "used": { "description": "Used is the current observed total usage of the resource in the namespace.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } } } }, "io.k8s.api.core.v1.ResourceRequirements": { "description": "ResourceRequirements describes the compute resource requirements.", "properties": { "limits": { "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "requests": { "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. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } } } }, "io.k8s.api.core.v1.SELinuxOptions": { "description": "SELinuxOptions are the labels to be applied to the container", "properties": { "level": { "description": "Level is SELinux level label that applies to the container.", "type": "string" }, "role": { "description": "Role is a SELinux role label that applies to the container.", "type": "string" }, "type": { "description": "Type is a SELinux type label that applies to the container.", "type": "string" }, "user": { "description": "User is a SELinux user label that applies to the container.", "type": "string" } } }, "io.k8s.api.core.v1.ScaleIOVolumeSource": { "description": "ScaleIOVolumeSource represents a persistent ScaleIO volume", "required": [ "gateway", "system", "secretRef" ], "properties": { "fsType": { "description": "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.", "type": "string" }, "gateway": { "description": "The host address of the ScaleIO API Gateway.", "type": "string" }, "protectionDomain": { "description": "The name of the Protection Domain for the configured storage (defaults to \"default\").", "type": "string" }, "readOnly": { "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretRef": { "description": "SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "sslEnabled": { "description": "Flag to enable/disable SSL communication with Gateway, default false", "type": "boolean" }, "storageMode": { "description": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\").", "type": "string" }, "storagePool": { "description": "The Storage Pool associated with the protection domain (defaults to \"default\").", "type": "string" }, "system": { "description": "The name of the storage system as configured in ScaleIO.", "type": "string" }, "volumeName": { "description": "The name of a volume already created in the ScaleIO system that is associated with this volume source.", "type": "string" } } }, "io.k8s.api.core.v1.Secret": { "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.", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "data": { "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", "type": "object", "additionalProperties": { "type": "string", "format": "byte" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "stringData": { "description": "stringData allows specifying non-binary secret data in string form. It is provided as a write-only convenience method. All keys and values are merged into the data field on write, overwriting any existing values. It is never output when reading from the API.", "type": "object", "additionalProperties": { "type": "string" } }, "type": { "description": "Used to facilitate programmatic handling of secret data.", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Secret", "version": "v1" } ] }, "io.k8s.api.core.v1.SecretEnvSource": { "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.", "properties": { "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the Secret must be defined", "type": "boolean" } } }, "io.k8s.api.core.v1.SecretKeySelector": { "description": "SecretKeySelector selects a key of a Secret.", "required": [ "key" ], "properties": { "key": { "description": "The key of the secret to select from. Must be a valid secret key.", "type": "string" }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the Secret or it's key must be defined", "type": "boolean" } } }, "io.k8s.api.core.v1.SecretList": { "description": "SecretList is a list of Secret.", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "Items is a list of secret objects. More info: https://kubernetes.io/docs/concepts/configuration/secret", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Secret" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "SecretList", "version": "v1" } ] }, "io.k8s.api.core.v1.SecretProjection": { "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.", "properties": { "items": { "description": "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 '..'.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.KeyToPath" } }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the Secret or its key must be defined", "type": "boolean" } } }, "io.k8s.api.core.v1.SecretReference": { "description": "SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace", "properties": { "name": { "description": "Name is unique within a namespace to reference a secret resource.", "type": "string" }, "namespace": { "description": "Namespace defines the space within which the secret name must be unique.", "type": "string" } } }, "io.k8s.api.core.v1.SecretVolumeSource": { "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.", "properties": { "defaultMode": { "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. 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.", "type": "integer", "format": "int32" }, "items": { "description": "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 '..'.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.KeyToPath" } }, "optional": { "description": "Specify whether the Secret or it's keys must be defined", "type": "boolean" }, "secretName": { "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", "type": "string" } } }, "io.k8s.api.core.v1.SecurityContext": { "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.", "properties": { "allowPrivilegeEscalation": { "description": "AllowPrivilegeEscalation controls whether a process can gain more privileges than it's 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", "type": "boolean" }, "capabilities": { "description": "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime.", "$ref": "#/definitions/io.k8s.api.core.v1.Capabilities" }, "privileged": { "description": "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false.", "type": "boolean" }, "readOnlyRootFilesystem": { "description": "Whether this container has a read-only root filesystem. Default is false.", "type": "boolean" }, "runAsNonRoot": { "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.", "type": "boolean" }, "runAsUser": { "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.", "type": "integer", "format": "int64" }, "seLinuxOptions": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.SELinuxOptions" } } }, "io.k8s.api.core.v1.Service": { "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.", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec defines the behavior of a service. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.ServiceSpec" }, "status": { "description": "Most recently observed status of the service. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.ServiceStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Service", "version": "v1" } ] }, "io.k8s.api.core.v1.ServiceAccount": { "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", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "automountServiceAccountToken": { "description": "AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. Can be overridden at the pod level.", "type": "boolean" }, "imagePullSecrets": { "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", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "secrets": { "description": "Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. More info: https://kubernetes.io/docs/concepts/configuration/secret", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ServiceAccount", "version": "v1" } ] }, "io.k8s.api.core.v1.ServiceAccountList": { "description": "ServiceAccountList is a list of ServiceAccount objects", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of ServiceAccounts. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccount" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ServiceAccountList", "version": "v1" } ] }, "io.k8s.api.core.v1.ServiceList": { "description": "ServiceList holds a list of services.", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of services", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ServiceList", "version": "v1" } ] }, "io.k8s.api.core.v1.ServicePort": { "description": "ServicePort contains information on service's port.", "required": [ "port" ], "properties": { "name": { "description": "The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. This maps to the 'Name' field in EndpointPort objects. Optional if only one ServicePort is defined on this service.", "type": "string" }, "nodePort": { "description": "The port on each node on which this service is exposed when type=NodePort or LoadBalancer. Usually assigned by the system. If specified, it will be allocated to the service if unused or else creation of the service will fail. Default is to auto-allocate a port if the ServiceType of this Service requires one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport", "type": "integer", "format": "int32" }, "port": { "description": "The port that will be exposed by this service.", "type": "integer", "format": "int32" }, "protocol": { "description": "The IP protocol for this port. Supports \"TCP\" and \"UDP\". Default is TCP.", "type": "string" }, "targetPort": { "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", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" } } }, "io.k8s.api.core.v1.ServiceSpec": { "description": "ServiceSpec describes the attributes that a user creates on a service.", "properties": { "clusterIP": { "description": "clusterIP is the IP address of the service and is usually assigned randomly by the master. If an address is specified manually and is not in use by others, it will be allocated to the service; otherwise, creation of the service will fail. This field can not be changed through updates. Valid values are \"None\", empty string (\"\"), or a valid IP address. \"None\" can be specified for headless services when proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies", "type": "string" }, "externalIPs": { "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.", "type": "array", "items": { "type": "string" } }, "externalName": { "description": "externalName is the external reference that kubedns or equivalent will return as a CNAME record for this service. No proxying will be involved. Must be a valid DNS name and requires Type to be ExternalName.", "type": "string" }, "externalTrafficPolicy": { "description": "externalTrafficPolicy denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. \"Local\" preserves the client source IP and avoids a second hop for LoadBalancer and Nodeport type services, but risks potentially imbalanced traffic spreading. \"Cluster\" obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading.", "type": "string" }, "healthCheckNodePort": { "description": "healthCheckNodePort specifies the healthcheck nodePort for the service. If not specified, HealthCheckNodePort is created by the service api backend with the allocated nodePort. Will use user-specified nodePort value if specified by the client. Only effects when Type is set to LoadBalancer and ExternalTrafficPolicy is set to Local.", "type": "integer", "format": "int32" }, "loadBalancerIP": { "description": "Only applies to Service Type: LoadBalancer LoadBalancer will get created with the IP specified in this field. 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.", "type": "string" }, "loadBalancerSourceRanges": { "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/configure-cloud-provider-firewall/", "type": "array", "items": { "type": "string" } }, "ports": { "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", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ServicePort" }, "x-kubernetes-patch-merge-key": "port", "x-kubernetes-patch-strategy": "merge" }, "publishNotReadyAddresses": { "description": "publishNotReadyAddresses, when set to true, indicates that DNS implementations must publish the notReadyAddresses of subsets for the Endpoints associated with the Service. The default value is false. The primary use case for setting this field is to use a StatefulSet's Headless Service to propagate SRV records for its Pods without respect to their readiness for purpose of peer discovery. This field will replace the service.alpha.kubernetes.io/tolerate-unready-endpoints when that annotation is deprecated and all clients have been converted to use this field.", "type": "boolean" }, "selector": { "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/", "type": "object", "additionalProperties": { "type": "string" } }, "sessionAffinity": { "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", "type": "string" }, "sessionAffinityConfig": { "description": "sessionAffinityConfig contains the configurations of session affinity.", "$ref": "#/definitions/io.k8s.api.core.v1.SessionAffinityConfig" }, "type": { "description": "type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. \"ExternalName\" maps to the specified externalName. \"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. If clusterIP is \"None\", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a stable IP. \"NodePort\" builds on ClusterIP and allocates a port on every node which routes to the clusterIP. \"LoadBalancer\" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types", "type": "string" } } }, "io.k8s.api.core.v1.ServiceStatus": { "description": "ServiceStatus represents the current status of a service.", "properties": { "loadBalancer": { "description": "LoadBalancer contains the current status of the load-balancer, if one is present.", "$ref": "#/definitions/io.k8s.api.core.v1.LoadBalancerStatus" } } }, "io.k8s.api.core.v1.SessionAffinityConfig": { "description": "SessionAffinityConfig represents the configurations of session affinity.", "properties": { "clientIP": { "description": "clientIP contains the configurations of Client IP based session affinity.", "$ref": "#/definitions/io.k8s.api.core.v1.ClientIPConfig" } } }, "io.k8s.api.core.v1.StorageOSPersistentVolumeSource": { "description": "Represents a StorageOS persistent volume resource.", "properties": { "fsType": { "description": "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.", "type": "string" }, "readOnly": { "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretRef": { "description": "SecretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" }, "volumeName": { "description": "VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.", "type": "string" }, "volumeNamespace": { "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.", "type": "string" } } }, "io.k8s.api.core.v1.StorageOSVolumeSource": { "description": "Represents a StorageOS persistent volume resource.", "properties": { "fsType": { "description": "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.", "type": "string" }, "readOnly": { "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretRef": { "description": "SecretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "volumeName": { "description": "VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.", "type": "string" }, "volumeNamespace": { "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.", "type": "string" } } }, "io.k8s.api.core.v1.TCPSocketAction": { "description": "TCPSocketAction describes an action based on opening a socket", "required": [ "port" ], "properties": { "host": { "description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string" }, "port": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" } } }, "io.k8s.api.core.v1.Taint": { "description": "The node this Taint is attached to has the \"effect\" on any pod that does not tolerate the Taint.", "required": [ "key", "effect" ], "properties": { "effect": { "description": "Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute.", "type": "string" }, "key": { "description": "Required. The taint key to be applied to a node.", "type": "string" }, "timeAdded": { "description": "TimeAdded represents the time at which the taint was added. It is only written for NoExecute taints.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "value": { "description": "Required. The taint value corresponding to the taint key.", "type": "string" } } }, "io.k8s.api.core.v1.Toleration": { "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", "properties": { "effect": { "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", "type": "string" }, "key": { "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.", "type": "string" }, "operator": { "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.", "type": "string" }, "tolerationSeconds": { "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.", "type": "integer", "format": "int64" }, "value": { "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.", "type": "string" } } }, "io.k8s.api.core.v1.Volume": { "description": "Volume represents a named volume in a pod that may be accessed by any container in the pod.", "required": [ "name" ], "properties": { "awsElasticBlockStore": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource" }, "azureDisk": { "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.AzureDiskVolumeSource" }, "azureFile": { "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.AzureFileVolumeSource" }, "cephfs": { "description": "CephFS represents a Ceph FS mount on the host that shares a pod's lifetime", "$ref": "#/definitions/io.k8s.api.core.v1.CephFSVolumeSource" }, "cinder": { "description": "Cinder represents a cinder volume attached and mounted on kubelets host machine More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", "$ref": "#/definitions/io.k8s.api.core.v1.CinderVolumeSource" }, "configMap": { "description": "ConfigMap represents a configMap that should populate this volume", "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapVolumeSource" }, "downwardAPI": { "description": "DownwardAPI represents downward API about the pod that should populate this volume", "$ref": "#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeSource" }, "emptyDir": { "description": "EmptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "$ref": "#/definitions/io.k8s.api.core.v1.EmptyDirVolumeSource" }, "fc": { "description": "FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.FCVolumeSource" }, "flexVolume": { "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.", "$ref": "#/definitions/io.k8s.api.core.v1.FlexVolumeSource" }, "flocker": { "description": "Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running", "$ref": "#/definitions/io.k8s.api.core.v1.FlockerVolumeSource" }, "gcePersistentDisk": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource" }, "gitRepo": { "description": "GitRepo represents a git repository at a particular revision.", "$ref": "#/definitions/io.k8s.api.core.v1.GitRepoVolumeSource" }, "glusterfs": { "description": "Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md", "$ref": "#/definitions/io.k8s.api.core.v1.GlusterfsVolumeSource" }, "hostPath": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.HostPathVolumeSource" }, "iscsi": { "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://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md", "$ref": "#/definitions/io.k8s.api.core.v1.ISCSIVolumeSource" }, "name": { "description": "Volume's name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "nfs": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.NFSVolumeSource" }, "persistentVolumeClaim": { "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource" }, "photonPersistentDisk": { "description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine", "$ref": "#/definitions/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource" }, "portworxVolume": { "description": "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine", "$ref": "#/definitions/io.k8s.api.core.v1.PortworxVolumeSource" }, "projected": { "description": "Items for all in one resources secrets, configmaps, and downward API", "$ref": "#/definitions/io.k8s.api.core.v1.ProjectedVolumeSource" }, "quobyte": { "description": "Quobyte represents a Quobyte mount on the host that shares a pod's lifetime", "$ref": "#/definitions/io.k8s.api.core.v1.QuobyteVolumeSource" }, "rbd": { "description": "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md", "$ref": "#/definitions/io.k8s.api.core.v1.RBDVolumeSource" }, "scaleIO": { "description": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.", "$ref": "#/definitions/io.k8s.api.core.v1.ScaleIOVolumeSource" }, "secret": { "description": "Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", "$ref": "#/definitions/io.k8s.api.core.v1.SecretVolumeSource" }, "storageos": { "description": "StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.", "$ref": "#/definitions/io.k8s.api.core.v1.StorageOSVolumeSource" }, "vsphereVolume": { "description": "VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine", "$ref": "#/definitions/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource" } } }, "io.k8s.api.core.v1.VolumeMount": { "description": "VolumeMount describes a mounting of a Volume within a container.", "required": [ "name", "mountPath" ], "properties": { "mountPath": { "description": "Path within the container at which the volume should be mounted. Must not contain ':'.", "type": "string" }, "name": { "description": "This must match the Name of a Volume.", "type": "string" }, "readOnly": { "description": "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.", "type": "boolean" }, "subPath": { "description": "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).", "type": "string" } } }, "io.k8s.api.core.v1.VolumeProjection": { "description": "Projection that may be projected along with other supported volume types", "properties": { "configMap": { "description": "information about the configMap data to project", "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapProjection" }, "downwardAPI": { "description": "information about the downwardAPI data to project", "$ref": "#/definitions/io.k8s.api.core.v1.DownwardAPIProjection" }, "secret": { "description": "information about the secret data to project", "$ref": "#/definitions/io.k8s.api.core.v1.SecretProjection" } } }, "io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource": { "description": "Represents a vSphere volume resource.", "required": [ "volumePath" ], "properties": { "fsType": { "description": "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.", "type": "string" }, "storagePolicyID": { "description": "Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.", "type": "string" }, "storagePolicyName": { "description": "Storage Policy Based Management (SPBM) profile name.", "type": "string" }, "volumePath": { "description": "Path that identifies vSphere volume vmdk", "type": "string" } } }, "io.k8s.api.core.v1.WeightedPodAffinityTerm": { "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", "required": [ "weight", "podAffinityTerm" ], "properties": { "podAffinityTerm": { "description": "Required. A pod affinity term, associated with the corresponding weight.", "$ref": "#/definitions/io.k8s.api.core.v1.PodAffinityTerm" }, "weight": { "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", "type": "integer", "format": "int32" } } }, "io.k8s.apimachinery.pkg.api.resource.Quantity": { "type": "string" }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup": { "description": "APIGroup contains the name, the supported versions, and the preferred version of a group.", "required": [ "name", "versions", "serverAddressByClientCIDRs" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "name": { "description": "name is the name of the group.", "type": "string" }, "preferredVersion": { "description": "preferredVersion is the version preferred by the API server, which probably is the storage version.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery" }, "serverAddressByClientCIDRs": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR" } }, "versions": { "description": "versions are the versions supported in this group.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery" } } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "APIGroup", "version": "v1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIGroupList": { "description": "APIGroupList is a list of APIGroup, to allow clients to discover the API at /apis.", "required": [ "groups" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "groups": { "description": "groups is a list of APIGroup.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "APIGroupList", "version": "v1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIResource": { "description": "APIResource specifies the name of a resource and whether it is namespaced.", "required": [ "name", "singularName", "namespaced", "kind", "verbs" ], "properties": { "categories": { "description": "categories is a list of the grouped resources this resource belongs to (e.g. 'all')", "type": "array", "items": { "type": "string" } }, "kind": { "description": "kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')", "type": "string" }, "name": { "description": "name is the plural name of the resource.", "type": "string" }, "namespaced": { "description": "namespaced indicates if a resource is namespaced or not.", "type": "boolean" }, "shortNames": { "description": "shortNames is a list of suggested short names of the resource.", "type": "array", "items": { "type": "string" } }, "singularName": { "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.", "type": "string" }, "verbs": { "description": "verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)", "type": "array", "items": { "type": "string" } } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList": { "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.", "required": [ "groupVersion", "resources" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "groupVersion": { "description": "groupVersion is the group and version this APIResourceList is for.", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "resources": { "description": "resources contains the name of the resources and if they are namespaced.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResource" } } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "APIResourceList", "version": "v1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIVersions": { "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.", "required": [ "versions", "serverAddressByClientCIDRs" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "serverAddressByClientCIDRs": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR" } }, "versions": { "description": "versions are the api versions that are available.", "type": "array", "items": { "type": "string" } } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "APIVersions", "version": "v1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions": { "description": "DeleteOptions may be provided when deleting an API object.", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "gracePeriodSeconds": { "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.", "type": "integer", "format": "int64" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "orphanDependents": { "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.", "type": "boolean" }, "preconditions": { "description": "Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions" }, "propagationPolicy": { "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.", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "DeleteOptions", "version": "v1" }, { "group": "admission.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "admissionregistration.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "apps", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "apps", "kind": "DeleteOptions", "version": "v1beta2" }, { "group": "authentication.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "authentication.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "authorization.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "authorization.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "autoscaling", "kind": "DeleteOptions", "version": "v1" }, { "group": "autoscaling", "kind": "DeleteOptions", "version": "v2alpha1" }, { "group": "batch", "kind": "DeleteOptions", "version": "v1" }, { "group": "batch", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "batch", "kind": "DeleteOptions", "version": "v2alpha1" }, { "group": "certificates.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "extensions", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "federation", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "imagepolicy.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "networking.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "policy", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "rbac.authorization.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "rbac.authorization.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "rbac.authorization.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "scheduling.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "settings.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "storage.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "storage.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery": { "description": "GroupVersion contains the \"group/version\" and \"version\" string of a version. It is made a struct to keep extensibility.", "required": [ "groupVersion", "version" ], "properties": { "groupVersion": { "description": "groupVersion specifies the API group and version in the form \"group/version\"", "type": "string" }, "version": { "description": "version specifies the version in the form of \"version\". This is to save the clients the trouble of splitting the GroupVersion.", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.Initializer": { "description": "Initializer is information about an initializer that has not yet completed.", "required": [ "name" ], "properties": { "name": { "description": "name of the process that is responsible for initializing this object.", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.Initializers": { "description": "Initializers tracks the progress of initialization.", "required": [ "pending" ], "properties": { "pending": { "description": "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Initializer" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "result": { "description": "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector": { "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.", "properties": { "matchExpressions": { "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement" } }, "matchLabels": { "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.", "type": "object", "additionalProperties": { "type": "string" } } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement": { "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", "required": [ "key", "operator" ], "properties": { "key": { "description": "key is the label key that the selector applies to.", "type": "string", "x-kubernetes-patch-merge-key": "key", "x-kubernetes-patch-strategy": "merge" }, "operator": { "description": "operator represents a key's relationship to a set of values. Valid operators ard In, NotIn, Exists and DoesNotExist.", "type": "string" }, "values": { "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.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta": { "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", "properties": { "resourceVersion": { "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/api-conventions.md#concurrency-control-and-consistency", "type": "string" }, "selfLink": { "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta": { "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", "properties": { "annotations": { "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: http://kubernetes.io/docs/user-guide/annotations", "type": "object", "additionalProperties": { "type": "string" } }, "clusterName": { "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", "type": "string" }, "creationTimestamp": { "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/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "deletionGracePeriodSeconds": { "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.", "type": "integer", "format": "int64" }, "deletionTimestamp": { "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 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/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "finalizers": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-patch-strategy": "merge" }, "generateName": { "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 NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency", "type": "string" }, "generation": { "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", "type": "integer", "format": "int64" }, "initializers": { "description": "An initializer is a controller which enforces some system invariant at object creation time. This field is a list of initializers that have not yet acted on this object. If nil or empty, this object has been completely initialized. Otherwise, the object is considered uninitialized and is hidden (in list/watch and get calls) from clients that haven't explicitly asked to observe uninitialized objects.\n\nWhen an object is created, the system will populate this list with the current set of initializers. Only privileged users may set or modify this list. Once it is empty, it may not be modified further by any user.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Initializers" }, "labels": { "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: http://kubernetes.io/docs/user-guide/labels", "type": "object", "additionalProperties": { "type": "string" } }, "name": { "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: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string" }, "namespace": { "description": "Namespace defines the space within 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: http://kubernetes.io/docs/user-guide/namespaces", "type": "string" }, "ownerReferences": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference" }, "x-kubernetes-patch-merge-key": "uid", "x-kubernetes-patch-strategy": "merge" }, "resourceVersion": { "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/api-conventions.md#concurrency-control-and-consistency", "type": "string" }, "selfLink": { "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.", "type": "string" }, "uid": { "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: http://kubernetes.io/docs/user-guide/identifiers#uids", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference": { "description": "OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same namespace, so there is no namespace field.", "required": [ "apiVersion", "kind", "name", "uid" ], "properties": { "apiVersion": { "description": "API version of the referent.", "type": "string" }, "blockOwnerDeletion": { "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. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", "type": "boolean" }, "controller": { "description": "If true, this reference points to the managing controller.", "type": "boolean" }, "kind": { "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "type": "string" }, "name": { "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string" }, "uid": { "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.Patch": { "description": "Patch is provided to give a concrete name and type to the Kubernetes PATCH request body." }, "io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions": { "description": "Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.", "properties": { "uid": { "description": "Specifies the target UID.", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR": { "description": "ServerAddressByClientCIDR helps the client to determine the server address that they should use, depending on the clientCIDR that they match.", "required": [ "clientCIDR", "serverAddress" ], "properties": { "clientCIDR": { "description": "The CIDR with which clients can match their IP to figure out the server address that they should use.", "type": "string" }, "serverAddress": { "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.", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.Status": { "description": "Status is a return value for calls that don't return other objects.", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "code": { "description": "Suggested HTTP return code for this status, 0 if not set.", "type": "integer", "format": "int32" }, "details": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "message": { "description": "A human-readable description of the status of this operation.", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" }, "reason": { "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.", "type": "string" }, "status": { "description": "Status of the operation. One of: \"Success\" or \"Failure\". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Status", "version": "v1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause": { "description": "StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.", "properties": { "field": { "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\"", "type": "string" }, "message": { "description": "A human-readable description of the cause of the error. This field may be presented as-is to a reader.", "type": "string" }, "reason": { "description": "A machine-readable description of the cause of the error. If this value is empty there is no information available.", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails": { "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.", "properties": { "causes": { "description": "The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause" } }, "group": { "description": "The group attribute of the resource associated with the status StatusReason.", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "name": { "description": "The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).", "type": "string" }, "retryAfterSeconds": { "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.", "type": "integer", "format": "int32" }, "uid": { "description": "UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.Time": { "type": "string", "format": "date-time" }, "io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent": { "description": "Event represents a single event to a watched resource.", "required": [ "type", "object" ], "properties": { "object": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.runtime.RawExtension" }, "type": { "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "WatchEvent", "version": "v1" }, { "group": "admission.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "admissionregistration.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "apps", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "apps", "kind": "WatchEvent", "version": "v1beta2" }, { "group": "authentication.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "authentication.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "authorization.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "authorization.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "autoscaling", "kind": "WatchEvent", "version": "v1" }, { "group": "autoscaling", "kind": "WatchEvent", "version": "v2alpha1" }, { "group": "batch", "kind": "WatchEvent", "version": "v1" }, { "group": "batch", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "batch", "kind": "WatchEvent", "version": "v2alpha1" }, { "group": "certificates.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "extensions", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "federation", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "imagepolicy.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "networking.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "policy", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "rbac.authorization.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "rbac.authorization.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "rbac.authorization.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "scheduling.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "settings.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "storage.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "storage.k8s.io", "kind": "WatchEvent", "version": "v1beta1" } ] }, "io.k8s.apimachinery.pkg.runtime.RawExtension": { "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: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.Object `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// External package: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.RawExtension `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// On the wire, the JSON will look something like this: {\n\t\"kind\":\"MyAPIObject\",\n\t\"apiVersion\":\"v1\",\n\t\"myPlugin\": {\n\t\t\"kind\":\"PluginA\",\n\t\t\"aOption\":\"foo\",\n\t},\n}\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.)", "required": [ "Raw" ], "properties": { "Raw": { "description": "Raw is the underlying serialization of this object.", "type": "string", "format": "byte" } } }, "io.k8s.apimachinery.pkg.util.intstr.IntOrString": { "type": "string", "format": "int-or-string" }, "io.k8s.apimachinery.pkg.version.Info": { "description": "Info contains versioning information. how we'll want to distribute that information.", "required": [ "major", "minor", "gitVersion", "gitCommit", "gitTreeState", "buildDate", "goVersion", "compiler", "platform" ], "properties": { "buildDate": { "type": "string" }, "compiler": { "type": "string" }, "gitCommit": { "type": "string" }, "gitTreeState": { "type": "string" }, "gitVersion": { "type": "string" }, "goVersion": { "type": "string" }, "major": { "type": "string" }, "minor": { "type": "string" }, "platform": { "type": "string" } } } }, "securityDefinitions": { "BearerToken": { "description": "Bearer Token authentication", "type": "apiKey", "name": "authorization", "in": "header" } }, "security": [ { "BearerToken": [] } ] } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/testdata/swagger_next.json000066400000000000000000012136741453663023200305360ustar00rootroot00000000000000{ "swagger": "2.0", "info": { "title": "Kubernetes", "version": "v1.8.0" }, "paths": {}, "definitions": { "io.k8s.api.apps.v1beta1.ControllerRevision": { "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.", "type": "object", "required": [ "revision" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "data": { "description": "Data is the serialized representation of the state.", "type": "object" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "revision": { "description": "Revision indicates the revision of the state represented by Data.", "type": "integer", "format": "int64" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "ControllerRevision", "version": "v1beta1" } ] }, "io.k8s.api.apps.v1beta1.ControllerRevisionList": { "description": "ControllerRevisionList is a resource containing a list of ControllerRevision objects.", "type": "object", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "Items is the list of ControllerRevisions", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.apps.v1beta1.ControllerRevision" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "ControllerRevisionList", "version": "v1beta1" } ] }, "io.k8s.api.apps.v1beta1.Deployment": { "description": "Deployment enables declarative updates for Pods and ReplicaSets.", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Specification of the desired behavior of the Deployment.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.DeploymentSpec" }, "status": { "description": "Most recently observed status of the Deployment.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.DeploymentStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "Deployment", "version": "v1beta1" } ] }, "io.k8s.api.apps.v1beta1.DeploymentCondition": { "description": "DeploymentCondition describes the state of a deployment at a certain point.", "type": "object", "required": [ "type", "status" ], "properties": { "lastTransitionTime": { "description": "Last time the condition transitioned from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "lastUpdateTime": { "description": "The last time this condition was updated.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "A human readable message indicating details about the transition.", "type": "string" }, "reason": { "description": "The reason for the condition's last transition.", "type": "string" }, "status": { "description": "Status of the condition, one of True, False, Unknown.", "type": "string" }, "type": { "description": "Type of deployment condition.", "type": "string" } } }, "io.k8s.api.apps.v1beta1.DeploymentList": { "description": "DeploymentList is a list of Deployments.", "type": "object", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "Items is the list of Deployments.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.apps.v1beta1.Deployment" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "DeploymentList", "version": "v1beta1" } ] }, "io.k8s.api.apps.v1beta1.DeploymentRollback": { "description": "DEPRECATED. DeploymentRollback stores the information required to rollback a deployment.", "type": "object", "required": [ "name", "rollbackTo" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "name": { "description": "Required: This must match the Name of a deployment.", "type": "string" }, "rollbackTo": { "description": "The config of this deployment rollback.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.RollbackConfig" }, "updatedAnnotations": { "description": "The annotations to be updated to a deployment", "type": "object", "additionalProperties": { "type": "string" } } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "DeploymentRollback", "version": "v1beta1" } ] }, "io.k8s.api.apps.v1beta1.DeploymentSpec": { "description": "DeploymentSpec is the specification of the desired behavior of the Deployment.", "type": "object", "required": [ "template" ], "properties": { "minReadySeconds": { "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)", "type": "integer", "format": "int32" }, "paused": { "description": "Indicates that the deployment is paused.", "type": "boolean" }, "progressDeadlineSeconds": { "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. Once autoRollback is implemented, the deployment controller will automatically rollback failed deployments. Note that progress will not be estimated during the time a deployment is paused. Defaults to 600s.", "type": "integer", "format": "int32" }, "replicas": { "description": "Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.", "type": "integer", "format": "int32" }, "revisionHistoryLimit": { "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 2.", "type": "integer", "format": "int32" }, "rollbackTo": { "description": "DEPRECATED. The config this deployment is rolling back to. Will be cleared after rollback is done.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.RollbackConfig" }, "selector": { "description": "Label selector for pods. Existing ReplicaSets whose pods are selected by this will be the ones affected by this deployment.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "strategy": { "description": "The deployment strategy to use to replace existing pods with new ones.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.DeploymentStrategy" }, "template": { "description": "Template describes the pods that will be created.", "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplateSpec" } } }, "io.k8s.api.apps.v1beta1.DeploymentStatus": { "description": "DeploymentStatus is the most recently observed status of the Deployment.", "type": "object", "properties": { "availableReplicas": { "description": "Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.", "type": "integer", "format": "int32" }, "collisionCount": { "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.", "type": "integer", "format": "int32" }, "conditions": { "description": "Represents the latest available observations of a deployment's current state.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.apps.v1beta1.DeploymentCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "observedGeneration": { "description": "The generation observed by the deployment controller.", "type": "integer", "format": "int64" }, "readyReplicas": { "description": "Total number of ready pods targeted by this deployment.", "type": "integer", "format": "int32" }, "replicas": { "description": "Total number of non-terminated pods targeted by this deployment (their labels match the selector).", "type": "integer", "format": "int32" }, "unavailableReplicas": { "description": "Total number of unavailable pods targeted by this deployment.", "type": "integer", "format": "int32" }, "updatedReplicas": { "description": "Total number of non-terminated pods targeted by this deployment that have the desired template spec.", "type": "integer", "format": "int32" } } }, "io.k8s.api.apps.v1beta1.DeploymentStrategy": { "description": "DeploymentStrategy describes how to replace existing pods with new ones.", "type": "object", "properties": { "rollingUpdate": { "description": "Rolling update config params. Present only if DeploymentStrategyType = RollingUpdate.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.RollingUpdateDeployment" }, "type": { "description": "Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default is RollingUpdate.", "type": "string" } } }, "io.k8s.api.apps.v1beta1.RollbackConfig": { "description": "DEPRECATED.", "type": "object", "properties": { "revision": { "description": "The revision to rollback to. If set to 0, rollback to the last revision.", "type": "integer", "format": "int64" } } }, "io.k8s.api.apps.v1beta1.RollingUpdateDeployment": { "description": "Spec to control the desired behavior of rolling update.", "type": "object", "properties": { "maxSurge": { "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 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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" }, "maxUnavailable": { "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 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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" } } }, "io.k8s.api.apps.v1beta1.RollingUpdateStatefulSetStrategy": { "description": "RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.", "type": "object", "properties": { "partition": { "description": "Partition indicates the ordinal at which the StatefulSet should be partitioned.", "type": "integer", "format": "int32" } } }, "io.k8s.api.apps.v1beta1.Scale": { "description": "Scale represents a scaling request for a resource.", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.ScaleSpec" }, "status": { "description": "current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.ScaleStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "Scale", "version": "v1beta1" } ] }, "io.k8s.api.apps.v1beta1.ScaleSpec": { "description": "ScaleSpec describes the attributes of a scale subresource", "type": "object", "properties": { "replicas": { "description": "desired number of instances for the scaled object.", "type": "integer", "format": "int32" } } }, "io.k8s.api.apps.v1beta1.ScaleStatus": { "description": "ScaleStatus represents the current status of a scale subresource.", "type": "object", "required": [ "replicas" ], "properties": { "replicas": { "description": "actual number of observed instances of the scaled object.", "type": "integer", "format": "int32" }, "selector": { "description": "label query over pods that should match the replicas count. More info: http://kubernetes.io/docs/user-guide/labels#label-selectors", "type": "object", "additionalProperties": { "type": "string" } }, "targetSelector": { "description": "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", "type": "string" } } }, "io.k8s.api.apps.v1beta1.StatefulSet": { "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.\nThe StatefulSet guarantees that a given network identity will always map to the same storage identity.", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec defines the desired identities of pods in this set.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.StatefulSetSpec" }, "status": { "description": "Status is the current status of Pods in this StatefulSet. This data may be out of date by some window of time.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.StatefulSetStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "StatefulSet", "version": "v1beta1" } ] }, "io.k8s.api.apps.v1beta1.StatefulSetList": { "description": "StatefulSetList is a collection of StatefulSets.", "type": "object", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.apps.v1beta1.StatefulSet" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "apps", "kind": "StatefulSetList", "version": "v1beta1" } ] }, "io.k8s.api.apps.v1beta1.StatefulSetSpec": { "description": "A StatefulSetSpec is the specification of a StatefulSet.", "type": "object", "required": [ "template", "serviceName" ], "properties": { "podManagementPolicy": { "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.", "type": "string" }, "replicas": { "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.", "type": "integer", "format": "int32" }, "revisionHistoryLimit": { "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.", "type": "integer", "format": "int32" }, "selector": { "description": "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", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "serviceName": { "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.", "type": "string" }, "template": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplateSpec" }, "updateStrategy": { "description": "updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.StatefulSetUpdateStrategy" }, "volumeClaimTemplates": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } } } }, "io.k8s.api.apps.v1beta1.StatefulSetStatus": { "description": "StatefulSetStatus represents the current state of a StatefulSet.", "type": "object", "required": [ "replicas" ], "properties": { "collisionCount": { "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.", "type": "integer", "format": "int32" }, "currentReplicas": { "description": "currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision.", "type": "integer", "format": "int32" }, "currentRevision": { "description": "currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).", "type": "string" }, "observedGeneration": { "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.", "type": "integer", "format": "int64" }, "readyReplicas": { "description": "readyReplicas is the number of Pods created by the StatefulSet controller that have a Ready Condition.", "type": "integer", "format": "int32" }, "replicas": { "description": "replicas is the number of Pods created by the StatefulSet controller.", "type": "integer", "format": "int32" }, "updateRevision": { "description": "updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)", "type": "string" }, "updatedReplicas": { "description": "updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision.", "type": "integer", "format": "int32" } } }, "io.k8s.api.apps.v1beta1.StatefulSetUpdateStrategy": { "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.", "type": "object", "properties": { "rollingUpdate": { "description": "RollingUpdate is used to communicate parameters when Type is RollingUpdateStatefulSetStrategyType.", "$ref": "#/definitions/io.k8s.api.apps.v1beta1.RollingUpdateStatefulSetStrategy" }, "type": { "description": "Type indicates the type of the StatefulSetUpdateStrategy.", "type": "string" } } }, "io.k8s.api.authorization.v1.LocalSubjectAccessReview": { "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.", "type": "object", "required": [ "spec" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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.", "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewSpec" }, "status": { "description": "Status is filled in by the server and indicates whether the request is allowed or not", "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "LocalSubjectAccessReview", "version": "v1" } ] }, "io.k8s.api.authorization.v1.NonResourceAttributes": { "description": "NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface", "type": "object", "properties": { "path": { "description": "Path is the URL path of the request", "type": "string" }, "verb": { "description": "Verb is the standard HTTP verb", "type": "string" } } }, "io.k8s.api.authorization.v1.ResourceAttributes": { "description": "ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface", "type": "object", "properties": { "group": { "description": "Group is the API Group of the Resource. \"*\" means all.", "type": "string" }, "name": { "description": "Name is the name of the resource being requested for a \"get\" or deleted for a \"delete\". \"\" (empty) means all.", "type": "string" }, "namespace": { "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", "type": "string" }, "resource": { "description": "Resource is one of the existing resource types. \"*\" means all.", "type": "string" }, "subresource": { "description": "Subresource is one of the existing resource types. \"\" means none.", "type": "string" }, "verb": { "description": "Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. \"*\" means all.", "type": "string" }, "version": { "description": "Version is the API Version of the Resource. \"*\" means all.", "type": "string" } } }, "io.k8s.api.authorization.v1.SelfSubjectAccessReview": { "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", "type": "object", "required": [ "spec" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec holds information about the request being evaluated. user and groups must be empty", "$ref": "#/definitions/io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec" }, "status": { "description": "Status is filled in by the server and indicates whether the request is allowed or not", "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "SelfSubjectAccessReview", "version": "v1" } ] }, "io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec": { "description": "SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set", "type": "object", "properties": { "nonResourceAttributes": { "description": "NonResourceAttributes describes information for a non-resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1.NonResourceAttributes" }, "resourceAttributes": { "description": "ResourceAuthorizationAttributes describes information for a resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1.ResourceAttributes" } } }, "io.k8s.api.authorization.v1.SubjectAccessReview": { "description": "SubjectAccessReview checks whether or not a user or group can perform an action.", "type": "object", "required": [ "spec" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec holds information about the request being evaluated", "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewSpec" }, "status": { "description": "Status is filled in by the server and indicates whether the request is allowed or not", "$ref": "#/definitions/io.k8s.api.authorization.v1.SubjectAccessReviewStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "SubjectAccessReview", "version": "v1" } ] }, "io.k8s.api.authorization.v1.SubjectAccessReviewSpec": { "description": "SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set", "type": "object", "properties": { "extra": { "description": "Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.", "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "groups": { "description": "Groups is the groups you're testing for.", "type": "array", "items": { "type": "string" } }, "nonResourceAttributes": { "description": "NonResourceAttributes describes information for a non-resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1.NonResourceAttributes" }, "resourceAttributes": { "description": "ResourceAuthorizationAttributes describes information for a resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1.ResourceAttributes" }, "uid": { "description": "UID information about the requesting user.", "type": "string" }, "user": { "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", "type": "string" } } }, "io.k8s.api.authorization.v1.SubjectAccessReviewStatus": { "description": "SubjectAccessReviewStatus", "type": "object", "required": [ "allowed" ], "properties": { "allowed": { "description": "Allowed is required. True if the action would be allowed, false otherwise.", "type": "boolean" }, "evaluationError": { "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.", "type": "string" }, "reason": { "description": "Reason is optional. It indicates why a request was allowed or denied.", "type": "string" } } }, "io.k8s.api.authorization.v1beta1.LocalSubjectAccessReview": { "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.", "type": "object", "required": [ "spec" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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.", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReviewSpec" }, "status": { "description": "Status is filled in by the server and indicates whether the request is allowed or not", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReviewStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "LocalSubjectAccessReview", "version": "v1beta1" } ] }, "io.k8s.api.authorization.v1beta1.NonResourceAttributes": { "description": "NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface", "type": "object", "properties": { "path": { "description": "Path is the URL path of the request", "type": "string" }, "verb": { "description": "Verb is the standard HTTP verb", "type": "string" } } }, "io.k8s.api.authorization.v1beta1.ResourceAttributes": { "description": "ResourceAttributes includes the authorization attributes available for resource requests to the Authorizer interface", "type": "object", "properties": { "group": { "description": "Group is the API Group of the Resource. \"*\" means all.", "type": "string" }, "name": { "description": "Name is the name of the resource being requested for a \"get\" or deleted for a \"delete\". \"\" (empty) means all.", "type": "string" }, "namespace": { "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", "type": "string" }, "resource": { "description": "Resource is one of the existing resource types. \"*\" means all.", "type": "string" }, "subresource": { "description": "Subresource is one of the existing resource types. \"\" means none.", "type": "string" }, "verb": { "description": "Verb is a kubernetes resource API verb, like: get, list, watch, create, update, delete, proxy. \"*\" means all.", "type": "string" }, "version": { "description": "Version is the API Version of the Resource. \"*\" means all.", "type": "string" } } }, "io.k8s.api.authorization.v1beta1.SelfSubjectAccessReview": { "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", "type": "object", "required": [ "spec" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec holds information about the request being evaluated. user and groups must be empty", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.SelfSubjectAccessReviewSpec" }, "status": { "description": "Status is filled in by the server and indicates whether the request is allowed or not", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReviewStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "SelfSubjectAccessReview", "version": "v1beta1" } ] }, "io.k8s.api.authorization.v1beta1.SelfSubjectAccessReviewSpec": { "description": "SelfSubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set", "type": "object", "properties": { "nonResourceAttributes": { "description": "NonResourceAttributes describes information for a non-resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.NonResourceAttributes" }, "resourceAttributes": { "description": "ResourceAuthorizationAttributes describes information for a resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.ResourceAttributes" } } }, "io.k8s.api.authorization.v1beta1.SubjectAccessReview": { "description": "SubjectAccessReview checks whether or not a user or group can perform an action.", "type": "object", "required": [ "spec" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec holds information about the request being evaluated", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReviewSpec" }, "status": { "description": "Status is filled in by the server and indicates whether the request is allowed or not", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.SubjectAccessReviewStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "authorization.k8s.io", "kind": "SubjectAccessReview", "version": "v1beta1" } ] }, "io.k8s.api.authorization.v1beta1.SubjectAccessReviewSpec": { "description": "SubjectAccessReviewSpec is a description of the access request. Exactly one of ResourceAuthorizationAttributes and NonResourceAuthorizationAttributes must be set", "type": "object", "properties": { "extra": { "description": "Extra corresponds to the user.Info.GetExtra() method from the authenticator. Since that is input to the authorizer it needs a reflection here.", "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "group": { "description": "Groups is the groups you're testing for.", "type": "array", "items": { "type": "string" } }, "nonResourceAttributes": { "description": "NonResourceAttributes describes information for a non-resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.NonResourceAttributes" }, "resourceAttributes": { "description": "ResourceAuthorizationAttributes describes information for a resource access request", "$ref": "#/definitions/io.k8s.api.authorization.v1beta1.ResourceAttributes" }, "uid": { "description": "UID information about the requesting user.", "type": "string" }, "user": { "description": "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", "type": "string" } } }, "io.k8s.api.authorization.v1beta1.SubjectAccessReviewStatus": { "description": "SubjectAccessReviewStatus", "type": "object", "required": [ "allowed" ], "properties": { "allowed": { "description": "Allowed is required. True if the action would be allowed, false otherwise.", "type": "boolean" }, "evaluationError": { "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.", "type": "string" }, "reason": { "description": "Reason is optional. It indicates why a request was allowed or denied.", "type": "string" } } }, "io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource": { "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.", "type": "object", "required": [ "volumeID" ], "properties": { "fsType": { "description": "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", "type": "string" }, "partition": { "description": "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).", "type": "integer", "format": "int32" }, "readOnly": { "description": "Specify \"true\" to force and set the ReadOnly property in VolumeMounts to \"true\". If omitted, the default is \"false\". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", "type": "boolean" }, "volumeID": { "description": "Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", "type": "string" } } }, "io.k8s.api.core.v1.Affinity": { "description": "Affinity is a group of affinity scheduling rules.", "type": "object", "properties": { "nodeAffinity": { "description": "Describes node affinity scheduling rules for the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.NodeAffinity" }, "podAffinity": { "description": "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).", "$ref": "#/definitions/io.k8s.api.core.v1.PodAffinity" }, "podAntiAffinity": { "description": "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).", "$ref": "#/definitions/io.k8s.api.core.v1.PodAntiAffinity" } } }, "io.k8s.api.core.v1.AttachedVolume": { "description": "AttachedVolume describes a volume attached to a node", "type": "object", "required": [ "name", "devicePath" ], "properties": { "devicePath": { "description": "DevicePath represents the device path where the volume should be available", "type": "string" }, "name": { "description": "Name of the attached volume", "type": "string" } } }, "io.k8s.api.core.v1.AzureDiskVolumeSource": { "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", "type": "object", "required": [ "diskName", "diskURI" ], "properties": { "cachingMode": { "description": "Host Caching mode: None, Read Only, Read Write.", "type": "string" }, "diskName": { "description": "The Name of the data disk in the blob storage", "type": "string" }, "diskURI": { "description": "The URI the data disk in the blob storage", "type": "string" }, "fsType": { "description": "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.", "type": "string" }, "kind": { "description": "Expected values Shared: mulitple 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", "type": "string" }, "readOnly": { "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" } } }, "io.k8s.api.core.v1.AzureFilePersistentVolumeSource": { "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", "type": "object", "required": [ "secretName", "shareName" ], "properties": { "readOnly": { "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretName": { "description": "the name of secret that contains Azure Storage Account Name and Key", "type": "string" }, "secretNamespace": { "description": "the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod", "type": "string" }, "shareName": { "description": "Share Name", "type": "string" } } }, "io.k8s.api.core.v1.AzureFileVolumeSource": { "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", "type": "object", "required": [ "secretName", "shareName" ], "properties": { "readOnly": { "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretName": { "description": "the name of secret that contains Azure Storage Account Name and Key", "type": "string" }, "shareName": { "description": "Share Name", "type": "string" } } }, "io.k8s.api.core.v1.Binding": { "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.", "type": "object", "required": [ "target" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "target": { "description": "The target object that you want to bind to the standard object.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Binding", "version": "v1" } ] }, "io.k8s.api.core.v1.Capabilities": { "description": "Adds and removes POSIX capabilities from running containers.", "type": "object", "properties": { "add": { "description": "Added capabilities", "type": "array", "items": { "type": "string" } }, "drop": { "description": "Removed capabilities", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.CephFSPersistentVolumeSource": { "description": "Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.", "type": "object", "required": [ "monitors" ], "properties": { "monitors": { "description": "Required: Monitors is a collection of Ceph monitors More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "type": "array", "items": { "type": "string" } }, "path": { "description": "Optional: Used as the mounted root, rather than the full Ceph tree, default is /", "type": "string" }, "readOnly": { "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "type": "boolean" }, "secretFile": { "description": "Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "type": "string" }, "secretRef": { "description": "Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "$ref": "#/definitions/io.k8s.api.core.v1.SecretReference" }, "user": { "description": "Optional: User is the rados user name, default is admin More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "type": "string" } } }, "io.k8s.api.core.v1.CephFSVolumeSource": { "description": "Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling.", "type": "object", "required": [ "monitors" ], "properties": { "monitors": { "description": "Required: Monitors is a collection of Ceph monitors More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "type": "array", "items": { "type": "string" } }, "path": { "description": "Optional: Used as the mounted root, rather than the full Ceph tree, default is /", "type": "string" }, "readOnly": { "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "type": "boolean" }, "secretFile": { "description": "Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "type": "string" }, "secretRef": { "description": "Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "user": { "description": "Optional: User is the rados user name, default is admin More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it", "type": "string" } } }, "io.k8s.api.core.v1.CinderVolumeSource": { "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.", "type": "object", "required": [ "volumeID" ], "properties": { "fsType": { "description": "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://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", "type": "string" }, "readOnly": { "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", "type": "boolean" }, "volumeID": { "description": "volume id used to identify the volume in cinder More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", "type": "string" } } }, "io.k8s.api.core.v1.ClientIPConfig": { "description": "ClientIPConfig represents the configurations of Client IP based session affinity.", "type": "object", "properties": { "timeoutSeconds": { "description": "timeoutSeconds specifies the seconds of ClientIP type session sticky time. The value must be \u003e0 \u0026\u0026 \u003c=86400(for 1 day) if ServiceAffinity == \"ClientIP\". Default value is 10800(for 3 hours).", "type": "integer", "format": "int32" } } }, "io.k8s.api.core.v1.ComponentCondition": { "description": "Information about the condition of a component.", "type": "object", "required": [ "type", "status" ], "properties": { "error": { "description": "Condition error code for a component. For example, a health check error code.", "type": "string" }, "message": { "description": "Message about the condition for a component. For example, information about a health check.", "type": "string" }, "status": { "description": "Status of the condition for a component. Valid values for \"Healthy\": \"True\", \"False\", or \"Unknown\".", "type": "string" }, "type": { "description": "Type of condition for a component. Valid value: \"Healthy\"", "type": "string" } } }, "io.k8s.api.core.v1.ComponentStatus": { "description": "ComponentStatus (and ComponentStatusList) holds the cluster validation info.", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "conditions": { "description": "List of component conditions observed", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ComponentCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ComponentStatus", "version": "v1" } ] }, "io.k8s.api.core.v1.ComponentStatusList": { "description": "Status of all the conditions for the component as a list of ComponentStatus objects.", "type": "object", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of ComponentStatus objects.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ComponentStatus" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ComponentStatusList", "version": "v1" } ] }, "io.k8s.api.core.v1.ConfigMap": { "description": "ConfigMap holds configuration data for pods to consume.", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "data": { "description": "Data contains the configuration data. Each key must consist of alphanumeric characters, '-', '_' or '.'.", "type": "object", "additionalProperties": { "type": "string" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ConfigMap", "version": "v1" } ] }, "io.k8s.api.core.v1.ConfigMapEnvSource": { "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.", "type": "object", "properties": { "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the ConfigMap must be defined", "type": "boolean" } } }, "io.k8s.api.core.v1.ConfigMapKeySelector": { "description": "Selects a key from a ConfigMap.", "type": "object", "required": [ "key" ], "properties": { "key": { "description": "The key to select.", "type": "string" }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the ConfigMap or it's key must be defined", "type": "boolean" } } }, "io.k8s.api.core.v1.ConfigMapList": { "description": "ConfigMapList is a resource containing a list of ConfigMap objects.", "type": "object", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "Items is the list of ConfigMaps.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMap" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ConfigMapList", "version": "v1" } ] }, "io.k8s.api.core.v1.ConfigMapProjection": { "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.", "type": "object", "properties": { "items": { "description": "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 '..'.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.KeyToPath" } }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the ConfigMap or it's keys must be defined", "type": "boolean" } } }, "io.k8s.api.core.v1.ConfigMapVolumeSource": { "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.", "type": "object", "properties": { "defaultMode": { "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. 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.", "type": "integer", "format": "int32" }, "items": { "description": "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 '..'.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.KeyToPath" } }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the ConfigMap or it's keys must be defined", "type": "boolean" } } }, "io.k8s.api.core.v1.Container": { "description": "A single application container that you want to run within a pod.", "type": "object", "required": [ "name", "image" ], "properties": { "args": { "description": "Arguments to the entrypoint. The docker 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. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(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", "type": "array", "items": { "type": "string" } }, "command": { "description": "Entrypoint array. Not executed within a shell. The docker 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. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(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", "type": "array", "items": { "type": "string" } }, "env": { "description": "List of environment variables to set in the container. Cannot be updated.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EnvVar" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "envFrom": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EnvFromSource" } }, "image": { "description": "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images", "type": "string" }, "imagePullPolicy": { "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", "type": "string" }, "lifecycle": { "description": "Actions that the management system should take in response to container lifecycle events. Cannot be updated.", "$ref": "#/definitions/io.k8s.api.core.v1.Lifecycle" }, "livenessProbe": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.Probe" }, "name": { "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.", "type": "string" }, "ports": { "description": "List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. 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. Cannot be updated.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ContainerPort" }, "x-kubernetes-patch-merge-key": "containerPort", "x-kubernetes-patch-strategy": "merge" }, "readinessProbe": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.Probe" }, "resources": { "description": "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources", "$ref": "#/definitions/io.k8s.api.core.v1.ResourceRequirements" }, "securityContext": { "description": "Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://git.k8s.io/community/contributors/design-proposals/security_context.md", "$ref": "#/definitions/io.k8s.api.core.v1.SecurityContext" }, "stdin": { "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.", "type": "boolean" }, "stdinOnce": { "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", "type": "boolean" }, "terminationMessagePath": { "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.", "type": "string" }, "terminationMessagePolicy": { "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.", "type": "string" }, "tty": { "description": "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.", "type": "boolean" }, "volumeMounts": { "description": "Pod volumes to mount into the container's filesystem. Cannot be updated.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.VolumeMount" }, "x-kubernetes-patch-merge-key": "mountPath", "x-kubernetes-patch-strategy": "merge" }, "workingDir": { "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.", "type": "string" } } }, "io.k8s.api.core.v1.ContainerImage": { "description": "Describe a container image", "type": "object", "required": [ "names" ], "properties": { "names": { "description": "Names by which this image is known. e.g. [\"gcr.io/google_containers/hyperkube:v1.0.7\", \"dockerhub.io/google_containers/hyperkube:v1.0.7\"]", "type": "array", "items": { "type": "string" } }, "sizeBytes": { "description": "The size of the image in bytes.", "type": "integer", "format": "int64" } } }, "io.k8s.api.core.v1.ContainerPort": { "description": "ContainerPort represents a network port in a single container.", "type": "object", "required": [ "containerPort" ], "properties": { "containerPort": { "description": "Number of port to expose on the pod's IP address. This must be a valid port number, 0 \u003c x \u003c 65536.", "type": "integer", "format": "int32" }, "hostIP": { "description": "What host IP to bind the external port to.", "type": "string" }, "hostPort": { "description": "Number of port to expose on the host. If specified, this must be a valid port number, 0 \u003c x \u003c 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.", "type": "integer", "format": "int32" }, "name": { "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.", "type": "string" }, "protocol": { "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", "type": "string" } } }, "io.k8s.api.core.v1.ContainerState": { "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.", "type": "object", "properties": { "running": { "description": "Details about a running container", "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStateRunning" }, "terminated": { "description": "Details about a terminated container", "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStateTerminated" }, "waiting": { "description": "Details about a waiting container", "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStateWaiting" } } }, "io.k8s.api.core.v1.ContainerStateRunning": { "description": "ContainerStateRunning is a running state of a container.", "type": "object", "properties": { "startedAt": { "description": "Time at which the container was last (re-)started", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } } }, "io.k8s.api.core.v1.ContainerStateTerminated": { "description": "ContainerStateTerminated is a terminated state of a container.", "type": "object", "required": [ "exitCode" ], "properties": { "containerID": { "description": "Container's ID in the format 'docker://\u003ccontainer_id\u003e'", "type": "string" }, "exitCode": { "description": "Exit status from the last termination of the container", "type": "integer", "format": "int32" }, "finishedAt": { "description": "Time at which the container last terminated", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "Message regarding the last termination of the container", "type": "string" }, "reason": { "description": "(brief) reason from the last termination of the container", "type": "string" }, "signal": { "description": "Signal from the last termination of the container", "type": "integer", "format": "int32" }, "startedAt": { "description": "Time at which previous execution of the container started", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } } }, "io.k8s.api.core.v1.ContainerStateWaiting": { "description": "ContainerStateWaiting is a waiting state of a container.", "type": "object", "properties": { "message": { "description": "Message regarding why the container is not yet running.", "type": "string" }, "reason": { "description": "(brief) reason the container is not yet running.", "type": "string" } } }, "io.k8s.api.core.v1.ContainerStatus": { "description": "ContainerStatus contains details for the current status of this container.", "type": "object", "required": [ "name", "ready", "restartCount", "image", "imageID" ], "properties": { "containerID": { "description": "Container's ID in the format 'docker://\u003ccontainer_id\u003e'.", "type": "string" }, "image": { "description": "The image the container is running. More info: https://kubernetes.io/docs/concepts/containers/images", "type": "string" }, "imageID": { "description": "ImageID of the container's image.", "type": "string" }, "lastState": { "description": "Details about the container's last termination condition.", "$ref": "#/definitions/io.k8s.api.core.v1.ContainerState" }, "name": { "description": "This must be a DNS_LABEL. Each container in a pod must have a unique name. Cannot be updated.", "type": "string" }, "ready": { "description": "Specifies whether the container has passed its readiness probe.", "type": "boolean" }, "restartCount": { "description": "The number of times the container has been restarted, currently based on the number of dead containers that have not yet been removed. Note that this is calculated from dead containers. But those containers are subject to garbage collection. This value will get capped at 5 by GC.", "type": "integer", "format": "int32" }, "state": { "description": "Details about the container's current condition.", "$ref": "#/definitions/io.k8s.api.core.v1.ContainerState" } } }, "io.k8s.api.core.v1.DaemonEndpoint": { "description": "DaemonEndpoint contains information about a single Daemon endpoint.", "type": "object", "required": [ "Port" ], "properties": { "Port": { "description": "Port number of the given endpoint.", "type": "integer", "format": "int32" } } }, "io.k8s.api.core.v1.DownwardAPIProjection": { "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.", "type": "object", "properties": { "items": { "description": "Items is a list of DownwardAPIVolume file", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeFile" } } } }, "io.k8s.api.core.v1.DownwardAPIVolumeFile": { "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", "type": "object", "required": [ "path" ], "properties": { "fieldRef": { "description": "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectFieldSelector" }, "mode": { "description": "Optional: mode bits to use on this file, must be a value between 0 and 0777. 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.", "type": "integer", "format": "int32" }, "path": { "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 '..'", "type": "string" }, "resourceFieldRef": { "description": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.", "$ref": "#/definitions/io.k8s.api.core.v1.ResourceFieldSelector" } } }, "io.k8s.api.core.v1.DownwardAPIVolumeSource": { "description": "DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling.", "type": "object", "properties": { "defaultMode": { "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. 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.", "type": "integer", "format": "int32" }, "items": { "description": "Items is a list of downward API volume file", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeFile" } } } }, "io.k8s.api.core.v1.EmptyDirVolumeSource": { "description": "Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.", "type": "object", "properties": { "medium": { "description": "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", "type": "string" }, "sizeLimit": { "description": "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: http://kubernetes.io/docs/user-guide/volumes#emptydir", "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } } }, "io.k8s.api.core.v1.EndpointAddress": { "description": "EndpointAddress is a tuple that describes single IP address.", "type": "object", "required": [ "ip" ], "properties": { "hostname": { "description": "The Hostname of this endpoint", "type": "string" }, "ip": { "description": "The IP of this endpoint. May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), or link-local multicast ((224.0.0.0/24). IPv6 is also accepted but not fully supported on all platforms. Also, certain kubernetes components, like kube-proxy, are not IPv6 ready.", "type": "string" }, "nodeName": { "description": "Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.", "type": "string" }, "targetRef": { "description": "Reference to object providing the endpoint.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" } } }, "io.k8s.api.core.v1.EndpointPort": { "description": "EndpointPort is a tuple that describes a single port.", "type": "object", "required": [ "port" ], "properties": { "name": { "description": "The name of this port (corresponds to ServicePort.Name). Must be a DNS_LABEL. Optional only if one port is defined.", "type": "string" }, "port": { "description": "The port number of the endpoint.", "type": "integer", "format": "int32" }, "protocol": { "description": "The IP protocol for this port. Must be UDP or TCP. Default is TCP.", "type": "string" } } }, "io.k8s.api.core.v1.EndpointSubset": { "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 Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n }\nThe resulting set of endpoints can be viewed 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 ]", "type": "object", "properties": { "addresses": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EndpointAddress" } }, "notReadyAddresses": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EndpointAddress" } }, "ports": { "description": "Port numbers available on the related IP addresses.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EndpointPort" } } } }, "io.k8s.api.core.v1.Endpoints": { "description": "Endpoints is a collection of endpoints that implement the actual service. Example:\n Name: \"mysvc\",\n Subsets: [\n {\n Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n },\n {\n Addresses: [{\"ip\": \"10.10.3.3\"}],\n Ports: [{\"name\": \"a\", \"port\": 93}, {\"name\": \"b\", \"port\": 76}]\n },\n ]", "type": "object", "required": [ "subsets" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "subsets": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.EndpointSubset" } } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Endpoints", "version": "v1" } ] }, "io.k8s.api.core.v1.EndpointsList": { "description": "EndpointsList is a list of endpoints.", "type": "object", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of endpoints.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Endpoints" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "EndpointsList", "version": "v1" } ] }, "io.k8s.api.core.v1.EnvFromSource": { "description": "EnvFromSource represents the source of a set of ConfigMaps", "type": "object", "properties": { "configMapRef": { "description": "The ConfigMap to select from", "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapEnvSource" }, "prefix": { "description": "An optional identifer to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.", "type": "string" }, "secretRef": { "description": "The Secret to select from", "$ref": "#/definitions/io.k8s.api.core.v1.SecretEnvSource" } } }, "io.k8s.api.core.v1.EnvVar": { "description": "EnvVar represents an environment variable present in a Container.", "type": "object", "required": [ "name" ], "properties": { "name": { "description": "Name of the environment variable. Must be a C_IDENTIFIER.", "type": "string" }, "value": { "description": "Variable references $(VAR_NAME) are expanded using the previous 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. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".", "type": "string" }, "valueFrom": { "description": "Source for the environment variable's value. Cannot be used if value is not empty.", "$ref": "#/definitions/io.k8s.api.core.v1.EnvVarSource" } } }, "io.k8s.api.core.v1.EnvVarSource": { "description": "EnvVarSource represents a source for the value of an EnvVar.", "type": "object", "properties": { "configMapKeyRef": { "description": "Selects a key of a ConfigMap.", "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapKeySelector" }, "fieldRef": { "description": "Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectFieldSelector" }, "resourceFieldRef": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.ResourceFieldSelector" }, "secretKeyRef": { "description": "Selects a key of a secret in the pod's namespace", "$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector" } } }, "io.k8s.api.core.v1.Event": { "description": "Event is a report of an event somewhere in the cluster.", "type": "object", "required": [ "metadata", "involvedObject" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "count": { "description": "The number of times this event has occurred.", "type": "integer", "format": "int32" }, "firstTimestamp": { "description": "The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "involvedObject": { "description": "The object that this event is about.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "lastTimestamp": { "description": "The time at which the most recent occurrence of this event was recorded.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "A human-readable description of the status of this operation.", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "reason": { "description": "This should be a short, machine understandable string that gives the reason for the transition into the object's current status.", "type": "string" }, "source": { "description": "The component reporting this event. Should be a short machine understandable string.", "$ref": "#/definitions/io.k8s.api.core.v1.EventSource" }, "type": { "description": "Type of this event (Normal, Warning), new types could be added in the future", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Event", "version": "v1" } ] }, "io.k8s.api.core.v1.EventList": { "description": "EventList is a list of events.", "type": "object", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of events", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Event" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "EventList", "version": "v1" } ] }, "io.k8s.api.core.v1.EventSource": { "description": "EventSource contains information for an event.", "type": "object", "properties": { "component": { "description": "Component from which the event is generated.", "type": "string" }, "host": { "description": "Node name on which the event is generated.", "type": "string" } } }, "io.k8s.api.core.v1.ExecAction": { "description": "ExecAction describes a \"run in container\" action.", "type": "object", "properties": { "command": { "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.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.FCVolumeSource": { "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.", "type": "object", "properties": { "fsType": { "description": "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.", "type": "string" }, "lun": { "description": "Optional: FC target lun number", "type": "integer", "format": "int32" }, "readOnly": { "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "targetWWNs": { "description": "Optional: FC target worldwide names (WWNs)", "type": "array", "items": { "type": "string" } }, "wwids": { "description": "Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.FlexVolumeSource": { "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.", "type": "object", "required": [ "driver" ], "properties": { "driver": { "description": "Driver is the name of the driver to use for this volume.", "type": "string" }, "fsType": { "description": "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.", "type": "string" }, "options": { "description": "Optional: Extra command options if any.", "type": "object", "additionalProperties": { "type": "string" } }, "readOnly": { "description": "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretRef": { "description": "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.", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" } } }, "io.k8s.api.core.v1.FlockerVolumeSource": { "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.", "type": "object", "properties": { "datasetName": { "description": "Name of the dataset stored as metadata -\u003e name on the dataset for Flocker should be considered as deprecated", "type": "string" }, "datasetUUID": { "description": "UUID of the dataset. This is unique identifier of a Flocker dataset", "type": "string" } } }, "io.k8s.api.core.v1.GCEPersistentDiskVolumeSource": { "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.", "type": "object", "required": [ "pdName" ], "properties": { "fsType": { "description": "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", "type": "string" }, "partition": { "description": "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", "type": "integer", "format": "int32" }, "pdName": { "description": "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", "type": "string" }, "readOnly": { "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", "type": "boolean" } } }, "io.k8s.api.core.v1.GitRepoVolumeSource": { "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.", "type": "object", "required": [ "repository" ], "properties": { "directory": { "description": "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.", "type": "string" }, "repository": { "description": "Repository URL", "type": "string" }, "revision": { "description": "Commit hash for the specified revision.", "type": "string" } } }, "io.k8s.api.core.v1.GlusterfsVolumeSource": { "description": "Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.", "type": "object", "required": [ "endpoints", "path" ], "properties": { "endpoints": { "description": "EndpointsName is the endpoint name that details Glusterfs topology. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod", "type": "string" }, "path": { "description": "Path is the Glusterfs volume path. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod", "type": "string" }, "readOnly": { "description": "ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod", "type": "boolean" } } }, "io.k8s.api.core.v1.HTTPGetAction": { "description": "HTTPGetAction describes an action based on HTTP Get requests.", "type": "object", "required": [ "port" ], "properties": { "host": { "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.", "type": "string" }, "httpHeaders": { "description": "Custom headers to set in the request. HTTP allows repeated headers.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.HTTPHeader" } }, "path": { "description": "Path to access on the HTTP server.", "type": "string" }, "port": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" }, "scheme": { "description": "Scheme to use for connecting to the host. Defaults to HTTP.", "type": "string" } } }, "io.k8s.api.core.v1.HTTPHeader": { "description": "HTTPHeader describes a custom header to be used in HTTP probes", "type": "object", "required": [ "name", "value" ], "properties": { "name": { "description": "The header field name", "type": "string" }, "value": { "description": "The header field value", "type": "string" } } }, "io.k8s.api.core.v1.Handler": { "description": "Handler defines a specific action that should be taken", "type": "object", "properties": { "exec": { "description": "One and only one of the following should be specified. Exec specifies the action to take.", "$ref": "#/definitions/io.k8s.api.core.v1.ExecAction" }, "httpGet": { "description": "HTTPGet specifies the http request to perform.", "$ref": "#/definitions/io.k8s.api.core.v1.HTTPGetAction" }, "tcpSocket": { "description": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported", "$ref": "#/definitions/io.k8s.api.core.v1.TCPSocketAction" } } }, "io.k8s.api.core.v1.HostAlias": { "description": "HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.", "type": "object", "properties": { "hostnames": { "description": "Hostnames for the above IP address.", "type": "array", "items": { "type": "string" } }, "ip": { "description": "IP address of the host file entry.", "type": "string" } } }, "io.k8s.api.core.v1.HostPathVolumeSource": { "description": "Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.", "type": "object", "required": [ "path" ], "properties": { "path": { "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", "type": "string" }, "type": { "description": "Type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", "type": "string" } } }, "io.k8s.api.core.v1.ISCSIVolumeSource": { "description": "Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling.", "type": "object", "required": [ "targetPortal", "iqn", "lun" ], "properties": { "chapAuthDiscovery": { "description": "whether support iSCSI Discovery CHAP authentication", "type": "boolean" }, "chapAuthSession": { "description": "whether support iSCSI Session CHAP authentication", "type": "boolean" }, "fsType": { "description": "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", "type": "string" }, "initiatorName": { "description": "Custom iSCSI initiator name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface \u003ctarget portal\u003e:\u003cvolume name\u003e will be created for the connection.", "type": "string" }, "iqn": { "description": "Target iSCSI Qualified Name.", "type": "string" }, "iscsiInterface": { "description": "Optional: Defaults to 'default' (tcp). iSCSI interface name that uses an iSCSI transport.", "type": "string" }, "lun": { "description": "iSCSI target lun number.", "type": "integer", "format": "int32" }, "portals": { "description": "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).", "type": "array", "items": { "type": "string" } }, "readOnly": { "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false.", "type": "boolean" }, "secretRef": { "description": "CHAP secret for iSCSI target and initiator authentication", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "targetPortal": { "description": "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).", "type": "string" } } }, "io.k8s.api.core.v1.KeyToPath": { "description": "Maps a string key to a path within a volume.", "type": "object", "required": [ "key", "path" ], "properties": { "key": { "description": "The key to project.", "type": "string" }, "mode": { "description": "Optional: mode bits to use on this file, must be a value between 0 and 0777. 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.", "type": "integer", "format": "int32" }, "path": { "description": "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 '..'.", "type": "string" } } }, "io.k8s.api.core.v1.Lifecycle": { "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.", "type": "object", "properties": { "postStart": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.Handler" }, "preStop": { "description": "PreStop is called immediately before a container is terminated. The container is terminated after the handler completes. The reason for termination is passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks", "$ref": "#/definitions/io.k8s.api.core.v1.Handler" } } }, "io.k8s.api.core.v1.LimitRange": { "description": "LimitRange sets resource usage limits for each kind of resource in a Namespace.", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec defines the limits enforced. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.LimitRangeSpec" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "LimitRange", "version": "v1" } ] }, "io.k8s.api.core.v1.LimitRangeItem": { "description": "LimitRangeItem defines a min/max usage limit for any resource that matches on kind.", "type": "object", "properties": { "default": { "description": "Default resource requirement limit value by resource name if resource limit is omitted.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "defaultRequest": { "description": "DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "max": { "description": "Max usage constraints on this kind by resource name.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "maxLimitRequestRatio": { "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.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "min": { "description": "Min usage constraints on this kind by resource name.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "type": { "description": "Type of resource that this limit applies to.", "type": "string" } } }, "io.k8s.api.core.v1.LimitRangeList": { "description": "LimitRangeList is a list of LimitRange items.", "type": "object", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "Items is a list of LimitRange objects. More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_limit_range.md", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.LimitRange" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "LimitRangeList", "version": "v1" } ] }, "io.k8s.api.core.v1.LimitRangeSpec": { "description": "LimitRangeSpec defines a min/max usage limit for resources that match on kind.", "type": "object", "required": [ "limits" ], "properties": { "limits": { "description": "Limits is the list of LimitRangeItem objects that are enforced.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.LimitRangeItem" } } } }, "io.k8s.api.core.v1.LoadBalancerIngress": { "description": "LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.", "type": "object", "properties": { "hostname": { "description": "Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers)", "type": "string" }, "ip": { "description": "IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)", "type": "string" } } }, "io.k8s.api.core.v1.LoadBalancerStatus": { "description": "LoadBalancerStatus represents the status of a load-balancer.", "type": "object", "properties": { "ingress": { "description": "Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.LoadBalancerIngress" } } } }, "io.k8s.api.core.v1.LocalObjectReference": { "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", "type": "object", "properties": { "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" } } }, "io.k8s.api.core.v1.LocalVolumeSource": { "description": "Local represents directly-attached storage with node affinity", "type": "object", "required": [ "path" ], "properties": { "path": { "description": "The full path to the volume on the node For alpha, this path must be a directory Once block as a source is supported, then this path can point to a block device", "type": "string" } } }, "io.k8s.api.core.v1.NFSVolumeSource": { "description": "Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.", "type": "object", "required": [ "server", "path" ], "properties": { "path": { "description": "Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", "type": "string" }, "readOnly": { "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", "type": "boolean" }, "server": { "description": "Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", "type": "string" } } }, "io.k8s.api.core.v1.Namespace": { "description": "Namespace provides a scope for Names. Use of multiple namespaces is optional.", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec defines the behavior of the Namespace. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.NamespaceSpec" }, "status": { "description": "Status describes the current status of a Namespace. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.NamespaceStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Namespace", "version": "v1" } ] }, "io.k8s.api.core.v1.NamespaceList": { "description": "NamespaceList is a list of Namespaces.", "type": "object", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "Items is the list of Namespace objects in the list. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Namespace" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "NamespaceList", "version": "v1" } ] }, "io.k8s.api.core.v1.NamespaceSpec": { "description": "NamespaceSpec describes the attributes on a Namespace.", "type": "object", "properties": { "finalizers": { "description": "Finalizers is an opaque list of values that must be empty to permanently remove object from storage. More info: https://git.k8s.io/community/contributors/design-proposals/namespaces.md#finalizers", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.NamespaceStatus": { "description": "NamespaceStatus is information about the current status of a Namespace.", "type": "object", "properties": { "phase": { "description": "Phase is the current lifecycle phase of the namespace. More info: https://git.k8s.io/community/contributors/design-proposals/namespaces.md#phases", "type": "string" } } }, "io.k8s.api.core.v1.Node": { "description": "Node is a worker node in Kubernetes. Each node will have a unique identifier in the cache (i.e. in etcd).", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec defines the behavior of a node. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.NodeSpec" }, "status": { "description": "Most recently observed status of the node. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.NodeStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Node", "version": "v1" } ] }, "io.k8s.api.core.v1.NodeAddress": { "description": "NodeAddress contains information for the node's address.", "type": "object", "required": [ "type", "address" ], "properties": { "address": { "description": "The node address.", "type": "string" }, "type": { "description": "Node address type, one of Hostname, ExternalIP or InternalIP.", "type": "string" } } }, "io.k8s.api.core.v1.NodeAffinity": { "description": "Node affinity is a group of node affinity scheduling rules.", "type": "object", "properties": { "preferredDuringSchedulingIgnoredDuringExecution": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PreferredSchedulingTerm" } }, "requiredDuringSchedulingIgnoredDuringExecution": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelector" } } }, "io.k8s.api.core.v1.NodeCondition": { "description": "NodeCondition contains condition information for a node.", "type": "object", "required": [ "type", "status" ], "properties": { "lastHeartbeatTime": { "description": "Last time we got an update on a given condition.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "lastTransitionTime": { "description": "Last time the condition transit from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "Human readable message indicating details about last transition.", "type": "string" }, "reason": { "description": "(brief) reason for the condition's last transition.", "type": "string" }, "status": { "description": "Status of the condition, one of True, False, Unknown.", "type": "string" }, "type": { "description": "Type of node condition.", "type": "string" } } }, "io.k8s.api.core.v1.NodeConfigSource": { "description": "NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "configMapRef": { "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "NodeConfigSource", "version": "v1" } ] }, "io.k8s.api.core.v1.NodeDaemonEndpoints": { "description": "NodeDaemonEndpoints lists ports opened by daemons running on the Node.", "type": "object", "properties": { "kubeletEndpoint": { "description": "Endpoint on which Kubelet is listening.", "$ref": "#/definitions/io.k8s.api.core.v1.DaemonEndpoint" } } }, "io.k8s.api.core.v1.NodeList": { "description": "NodeList is the whole list of all Nodes which have been registered with master.", "type": "object", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of nodes", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Node" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "NodeList", "version": "v1" } ] }, "io.k8s.api.core.v1.NodeSelector": { "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.", "type": "object", "required": [ "nodeSelectorTerms" ], "properties": { "nodeSelectorTerms": { "description": "Required. A list of node selector terms. The terms are ORed.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelectorTerm" } } } }, "io.k8s.api.core.v1.NodeSelectorRequirement": { "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", "type": "object", "required": [ "key", "operator" ], "properties": { "key": { "description": "The label key that the selector applies to.", "type": "string" }, "operator": { "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", "type": "string" }, "values": { "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.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.NodeSelectorTerm": { "description": "A null or empty node selector term matches no objects.", "type": "object", "required": [ "matchExpressions" ], "properties": { "matchExpressions": { "description": "Required. A list of node selector requirements. The requirements are ANDed.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelectorRequirement" } } } }, "io.k8s.api.core.v1.NodeSpec": { "description": "NodeSpec describes the attributes that a node is created with.", "type": "object", "properties": { "configSource": { "description": "If specified, the source to get node configuration from The DynamicKubeletConfig feature gate must be enabled for the Kubelet to use this field", "$ref": "#/definitions/io.k8s.api.core.v1.NodeConfigSource" }, "externalID": { "description": "External ID of the node assigned by some machine database (e.g. a cloud provider). Deprecated.", "type": "string" }, "podCIDR": { "description": "PodCIDR represents the pod IP range assigned to the node.", "type": "string" }, "providerID": { "description": "ID of the node assigned by the cloud provider in the format: \u003cProviderName\u003e://\u003cProviderSpecificNodeID\u003e", "type": "string" }, "taints": { "description": "If specified, the node's taints.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Taint" } }, "unschedulable": { "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", "type": "boolean" } } }, "io.k8s.api.core.v1.NodeStatus": { "description": "NodeStatus is information about the current status of a node.", "type": "object", "properties": { "addresses": { "description": "List of addresses reachable to the node. Queried from cloud provider, if available. More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.NodeAddress" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "allocatable": { "description": "Allocatable represents the resources of a node that are available for scheduling. Defaults to Capacity.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "capacity": { "description": "Capacity represents the total resources of a node. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "conditions": { "description": "Conditions is an array of current observed node conditions. More info: https://kubernetes.io/docs/concepts/nodes/node/#condition", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.NodeCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "daemonEndpoints": { "description": "Endpoints of daemons running on the Node.", "$ref": "#/definitions/io.k8s.api.core.v1.NodeDaemonEndpoints" }, "images": { "description": "List of container images on this node", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ContainerImage" } }, "nodeInfo": { "description": "Set of ids/uuids to uniquely identify the node. More info: https://kubernetes.io/docs/concepts/nodes/node/#info", "$ref": "#/definitions/io.k8s.api.core.v1.NodeSystemInfo" }, "phase": { "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.", "type": "string" }, "volumesAttached": { "description": "List of volumes that are attached to the node.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.AttachedVolume" } }, "volumesInUse": { "description": "List of attachable volumes in use (mounted) by the node.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.NodeSystemInfo": { "description": "NodeSystemInfo is a set of ids/uuids to uniquely identify the node.", "type": "object", "required": [ "machineID", "systemUUID", "bootID", "kernelVersion", "osImage", "containerRuntimeVersion", "kubeletVersion", "kubeProxyVersion", "operatingSystem", "architecture" ], "properties": { "architecture": { "description": "The Architecture reported by the node", "type": "string" }, "bootID": { "description": "Boot ID reported by the node.", "type": "string" }, "containerRuntimeVersion": { "description": "ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0).", "type": "string" }, "kernelVersion": { "description": "Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).", "type": "string" }, "kubeProxyVersion": { "description": "KubeProxy Version reported by the node.", "type": "string" }, "kubeletVersion": { "description": "Kubelet Version reported by the node.", "type": "string" }, "machineID": { "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", "type": "string" }, "operatingSystem": { "description": "The Operating System reported by the node", "type": "string" }, "osImage": { "description": "OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).", "type": "string" }, "systemUUID": { "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/getting-system-uuid.html", "type": "string" } } }, "io.k8s.api.core.v1.ObjectFieldSelector": { "description": "ObjectFieldSelector selects an APIVersioned field of an object.", "type": "object", "required": [ "fieldPath" ], "properties": { "apiVersion": { "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", "type": "string" }, "fieldPath": { "description": "Path of the field to select in the specified API version.", "type": "string" } } }, "io.k8s.api.core.v1.ObjectReference": { "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", "type": "object", "properties": { "apiVersion": { "description": "API version of the referent.", "type": "string" }, "fieldPath": { "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.", "type": "string" }, "kind": { "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "type": "string" }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "namespace": { "description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", "type": "string" }, "resourceVersion": { "description": "Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency", "type": "string" }, "uid": { "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", "type": "string" } } }, "io.k8s.api.core.v1.PersistentVolume": { "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", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeSpec" }, "status": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PersistentVolume", "version": "v1" } ] }, "io.k8s.api.core.v1.PersistentVolumeClaim": { "description": "PersistentVolumeClaim is a user's request for and claim to a persistent volume", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimSpec" }, "status": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PersistentVolumeClaim", "version": "v1" } ] }, "io.k8s.api.core.v1.PersistentVolumeClaimList": { "description": "PersistentVolumeClaimList is a list of PersistentVolumeClaim items.", "type": "object", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "A list of persistent volume claims. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaim" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PersistentVolumeClaimList", "version": "v1" } ] }, "io.k8s.api.core.v1.PersistentVolumeClaimSpec": { "description": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", "type": "object", "properties": { "accessModes": { "description": "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", "type": "array", "items": { "type": "string" } }, "resources": { "description": "Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources", "$ref": "#/definitions/io.k8s.api.core.v1.ResourceRequirements" }, "selector": { "description": "A label query over volumes to consider for binding.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "storageClassName": { "description": "Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", "type": "string" }, "volumeName": { "description": "VolumeName is the binding reference to the PersistentVolume backing this claim.", "type": "string" } } }, "io.k8s.api.core.v1.PersistentVolumeClaimStatus": { "description": "PersistentVolumeClaimStatus is the current status of a persistent volume claim.", "type": "object", "properties": { "accessModes": { "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", "type": "array", "items": { "type": "string" } }, "capacity": { "description": "Represents the actual resources of the underlying volume.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "phase": { "description": "Phase represents the current phase of PersistentVolumeClaim.", "type": "string" } } }, "io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource": { "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).", "type": "object", "required": [ "claimName" ], "properties": { "claimName": { "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", "type": "string" }, "readOnly": { "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", "type": "boolean" } } }, "io.k8s.api.core.v1.PersistentVolumeList": { "description": "PersistentVolumeList is a list of PersistentVolume items.", "type": "object", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of persistent volumes. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolume" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PersistentVolumeList", "version": "v1" } ] }, "io.k8s.api.core.v1.PersistentVolumeSpec": { "description": "PersistentVolumeSpec is the specification of a persistent volume.", "type": "object", "properties": { "accessModes": { "description": "AccessModes contains all ways the volume can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes", "type": "array", "items": { "type": "string" } }, "awsElasticBlockStore": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource" }, "azureDisk": { "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.AzureDiskVolumeSource" }, "azureFile": { "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.AzureFilePersistentVolumeSource" }, "capacity": { "description": "A description of the persistent volume's resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "cephfs": { "description": "CephFS represents a Ceph FS mount on the host that shares a pod's lifetime", "$ref": "#/definitions/io.k8s.api.core.v1.CephFSPersistentVolumeSource" }, "cinder": { "description": "Cinder represents a cinder volume attached and mounted on kubelets host machine More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", "$ref": "#/definitions/io.k8s.api.core.v1.CinderVolumeSource" }, "claimRef": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" }, "fc": { "description": "FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.FCVolumeSource" }, "flexVolume": { "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.", "$ref": "#/definitions/io.k8s.api.core.v1.FlexVolumeSource" }, "flocker": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.FlockerVolumeSource" }, "gcePersistentDisk": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource" }, "glusterfs": { "description": "Glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod. Provisioned by an admin. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md", "$ref": "#/definitions/io.k8s.api.core.v1.GlusterfsVolumeSource" }, "hostPath": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.HostPathVolumeSource" }, "iscsi": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.ISCSIVolumeSource" }, "local": { "description": "Local represents directly-attached storage with node affinity", "$ref": "#/definitions/io.k8s.api.core.v1.LocalVolumeSource" }, "mountOptions": { "description": "A 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", "type": "array", "items": { "type": "string" } }, "nfs": { "description": "NFS represents an NFS mount on the host. Provisioned by an admin. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", "$ref": "#/definitions/io.k8s.api.core.v1.NFSVolumeSource" }, "persistentVolumeReclaimPolicy": { "description": "What happens to a persistent volume when released from its claim. Valid options are Retain (default) and Recycle. Recycling must be supported by the volume plugin underlying this persistent volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming", "type": "string" }, "photonPersistentDisk": { "description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine", "$ref": "#/definitions/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource" }, "portworxVolume": { "description": "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine", "$ref": "#/definitions/io.k8s.api.core.v1.PortworxVolumeSource" }, "quobyte": { "description": "Quobyte represents a Quobyte mount on the host that shares a pod's lifetime", "$ref": "#/definitions/io.k8s.api.core.v1.QuobyteVolumeSource" }, "rbd": { "description": "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md", "$ref": "#/definitions/io.k8s.api.core.v1.RBDVolumeSource" }, "scaleIO": { "description": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.", "$ref": "#/definitions/io.k8s.api.core.v1.ScaleIOVolumeSource" }, "storageClassName": { "description": "Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.", "type": "string" }, "storageos": { "description": "StorageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md", "$ref": "#/definitions/io.k8s.api.core.v1.StorageOSPersistentVolumeSource" }, "vsphereVolume": { "description": "VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine", "$ref": "#/definitions/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource" } } }, "io.k8s.api.core.v1.PersistentVolumeStatus": { "description": "PersistentVolumeStatus is the current status of a persistent volume.", "type": "object", "properties": { "message": { "description": "A human-readable message indicating details about why the volume is in this state.", "type": "string" }, "phase": { "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", "type": "string" }, "reason": { "description": "Reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI.", "type": "string" } } }, "io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource": { "description": "Represents a Photon Controller persistent disk resource.", "type": "object", "required": [ "pdID" ], "properties": { "fsType": { "description": "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.", "type": "string" }, "pdID": { "description": "ID that identifies Photon Controller persistent disk", "type": "string" } } }, "io.k8s.api.core.v1.Pod": { "description": "Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts.", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Specification of the desired behavior of the pod. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.PodSpec" }, "status": { "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/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.PodStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Pod", "version": "v1" } ] }, "io.k8s.api.core.v1.PodAffinity": { "description": "Pod affinity is a group of inter pod affinity scheduling rules.", "type": "object", "properties": { "preferredDuringSchedulingIgnoredDuringExecution": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm" } }, "requiredDuringSchedulingIgnoredDuringExecution": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PodAffinityTerm" } } } }, "io.k8s.api.core.v1.PodAffinityTerm": { "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 \u003ctopologyKey\u003e tches that of any node on which a pod of the set of pods is running", "type": "object", "properties": { "labelSelector": { "description": "A label query over a set of resources, in this case pods.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector" }, "namespaces": { "description": "namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means \"this pod's namespace\"", "type": "array", "items": { "type": "string" } }, "topologyKey": { "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. For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as \"all topologies\" (\"all topologies\" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains); for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed.", "type": "string" } } }, "io.k8s.api.core.v1.PodAntiAffinity": { "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", "type": "object", "properties": { "preferredDuringSchedulingIgnoredDuringExecution": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.WeightedPodAffinityTerm" } }, "requiredDuringSchedulingIgnoredDuringExecution": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PodAffinityTerm" } } } }, "io.k8s.api.core.v1.PodCondition": { "description": "PodCondition contains details for the current condition of this pod.", "type": "object", "required": [ "type", "status" ], "properties": { "lastProbeTime": { "description": "Last time we probed the condition.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "lastTransitionTime": { "description": "Last time the condition transitioned from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "Human-readable message indicating details about last transition.", "type": "string" }, "reason": { "description": "Unique, one-word, CamelCase reason for the condition's last transition.", "type": "string" }, "status": { "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", "type": "string" }, "type": { "description": "Type is the type of the condition. Currently only Ready. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions", "type": "string" } } }, "io.k8s.api.core.v1.PodList": { "description": "PodList is a list of Pods.", "type": "object", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of pods. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Pod" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PodList", "version": "v1" } ] }, "io.k8s.api.core.v1.PodSecurityContext": { "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.", "type": "object", "properties": { "fsGroup": { "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.", "type": "integer", "format": "int64" }, "runAsNonRoot": { "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.", "type": "boolean" }, "runAsUser": { "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.", "type": "integer", "format": "int64" }, "seLinuxOptions": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.SELinuxOptions" }, "supplementalGroups": { "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", "type": "array", "items": { "type": "integer", "format": "int64" } } } }, "io.k8s.api.core.v1.PodSpec": { "description": "PodSpec is a description of a pod.", "type": "object", "required": [ "containers" ], "properties": { "activeDeadlineSeconds": { "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.", "type": "integer", "format": "int64" }, "affinity": { "description": "If specified, the pod's scheduling constraints", "$ref": "#/definitions/io.k8s.api.core.v1.Affinity" }, "automountServiceAccountToken": { "description": "AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.", "type": "boolean" }, "containers": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Container" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "dnsPolicy": { "description": "Set DNS policy for containers within the pod. One of 'ClusterFirstWithHostNet', 'ClusterFirst' or 'Default'. Defaults to \"ClusterFirst\". To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", "type": "string" }, "hostAliases": { "description": "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified. This is only valid for non-hostNetwork pods.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.HostAlias" }, "x-kubernetes-patch-merge-key": "ip", "x-kubernetes-patch-strategy": "merge" }, "hostIPC": { "description": "Use the host's ipc namespace. Optional: Default to false.", "type": "boolean" }, "hostNetwork": { "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.", "type": "boolean" }, "hostPID": { "description": "Use the host's pid namespace. Optional: Default to false.", "type": "boolean" }, "hostname": { "description": "Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.", "type": "string" }, "imagePullSecrets": { "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. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "initContainers": { "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, or Liveness 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/", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Container" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "nodeName": { "description": "NodeName is a request to schedule this pod onto a specific node. If it is non-empty, the scheduler simply schedules this pod onto that node, assuming that it fits resource requirements.", "type": "string" }, "nodeSelector": { "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/", "type": "object", "additionalProperties": { "type": "string" } }, "priority": { "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.", "type": "integer", "format": "int32" }, "priorityClassName": { "description": "If specified, indicates the pod's priority. \"SYSTEM\" is a special keyword which indicates 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.", "type": "string" }, "restartPolicy": { "description": "Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy", "type": "string" }, "schedulerName": { "description": "If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.", "type": "string" }, "securityContext": { "description": "SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.", "$ref": "#/definitions/io.k8s.api.core.v1.PodSecurityContext" }, "serviceAccount": { "description": "DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.", "type": "string" }, "serviceAccountName": { "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/", "type": "string" }, "subdomain": { "description": "If specified, the fully qualified Pod hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the pod will not have a domainname at all.", "type": "string" }, "terminationGracePeriodSeconds": { "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 delete immediately. 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.", "type": "integer", "format": "int64" }, "tolerations": { "description": "If specified, the pod's tolerations.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Toleration" } }, "volumes": { "description": "List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Volume" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge,retainKeys" } } }, "io.k8s.api.core.v1.PodStatus": { "description": "PodStatus represents information about the status of a pod. Status may trail the actual state of a system.", "type": "object", "properties": { "conditions": { "description": "Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PodCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "containerStatuses": { "description": "The list has one entry per container in the manifest. Each entry is currently the output of `docker inspect`. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStatus" } }, "hostIP": { "description": "IP address of the host to which the pod is assigned. Empty if not yet scheduled.", "type": "string" }, "initContainerStatuses": { "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", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ContainerStatus" } }, "message": { "description": "A human readable message indicating details about why the pod is in this condition.", "type": "string" }, "phase": { "description": "Current condition of the pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase", "type": "string" }, "podIP": { "description": "IP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated.", "type": "string" }, "qosClass": { "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://github.com/kubernetes/kubernetes/blob/master/docs/design/resource-qos.md", "type": "string" }, "reason": { "description": "A brief CamelCase message indicating details about why the pod is in this state. e.g. 'Evicted'", "type": "string" }, "startTime": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" } } }, "io.k8s.api.core.v1.PodTemplate": { "description": "PodTemplate describes a template for creating copies of a predefined pod.", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "template": { "description": "Template defines the pods that will be created from this pod template. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplateSpec" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PodTemplate", "version": "v1" } ] }, "io.k8s.api.core.v1.PodTemplateList": { "description": "PodTemplateList is a list of PodTemplates.", "type": "object", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of pod templates", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplate" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "PodTemplateList", "version": "v1" } ] }, "io.k8s.api.core.v1.PodTemplateSpec": { "description": "PodTemplateSpec describes the data a pod should have when created from a template", "type": "object", "properties": { "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Specification of the desired behavior of the pod. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.PodSpec" } } }, "io.k8s.api.core.v1.PortworxVolumeSource": { "description": "PortworxVolumeSource represents a Portworx volume resource.", "type": "object", "required": [ "volumeID" ], "properties": { "fsType": { "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.", "type": "string" }, "readOnly": { "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "volumeID": { "description": "VolumeID uniquely identifies a Portworx volume", "type": "string" } } }, "io.k8s.api.core.v1.PreferredSchedulingTerm": { "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).", "type": "object", "required": [ "weight", "preference" ], "properties": { "preference": { "description": "A node selector term, associated with the corresponding weight.", "$ref": "#/definitions/io.k8s.api.core.v1.NodeSelectorTerm" }, "weight": { "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", "type": "integer", "format": "int32" } } }, "io.k8s.api.core.v1.Probe": { "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.", "type": "object", "properties": { "exec": { "description": "One and only one of the following should be specified. Exec specifies the action to take.", "$ref": "#/definitions/io.k8s.api.core.v1.ExecAction" }, "failureThreshold": { "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.", "type": "integer", "format": "int32" }, "httpGet": { "description": "HTTPGet specifies the http request to perform.", "$ref": "#/definitions/io.k8s.api.core.v1.HTTPGetAction" }, "initialDelaySeconds": { "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", "type": "integer", "format": "int32" }, "periodSeconds": { "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.", "type": "integer", "format": "int32" }, "successThreshold": { "description": "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.", "type": "integer", "format": "int32" }, "tcpSocket": { "description": "TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported", "$ref": "#/definitions/io.k8s.api.core.v1.TCPSocketAction" }, "timeoutSeconds": { "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", "type": "integer", "format": "int32" } } }, "io.k8s.api.core.v1.ProjectedVolumeSource": { "description": "Represents a projected volume source", "type": "object", "required": [ "sources" ], "properties": { "defaultMode": { "description": "Mode bits to use on created files by default. Must be a value between 0 and 0777. 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.", "type": "integer", "format": "int32" }, "sources": { "description": "list of volume projections", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.VolumeProjection" } } } }, "io.k8s.api.core.v1.QuobyteVolumeSource": { "description": "Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling.", "type": "object", "required": [ "registry", "volume" ], "properties": { "group": { "description": "Group to map volume access to Default is no group", "type": "string" }, "readOnly": { "description": "ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false.", "type": "boolean" }, "registry": { "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", "type": "string" }, "user": { "description": "User to map volume access to Defaults to serivceaccount user", "type": "string" }, "volume": { "description": "Volume is a string that references an already created Quobyte volume by name.", "type": "string" } } }, "io.k8s.api.core.v1.RBDVolumeSource": { "description": "Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling.", "type": "object", "required": [ "monitors", "image" ], "properties": { "fsType": { "description": "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", "type": "string" }, "image": { "description": "The rados image name. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", "type": "string" }, "keyring": { "description": "Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", "type": "string" }, "monitors": { "description": "A collection of Ceph monitors. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", "type": "array", "items": { "type": "string" } }, "pool": { "description": "The rados pool name. Default is rbd. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", "type": "string" }, "readOnly": { "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", "type": "boolean" }, "secretRef": { "description": "SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "user": { "description": "The rados user name. Default is admin. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it", "type": "string" } } }, "io.k8s.api.core.v1.ReplicationController": { "description": "ReplicationController represents the configuration of a replication controller.", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "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/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec defines the specification of the desired behavior of the replication controller. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationControllerSpec" }, "status": { "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/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationControllerStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ReplicationController", "version": "v1" } ] }, "io.k8s.api.core.v1.ReplicationControllerCondition": { "description": "ReplicationControllerCondition describes the state of a replication controller at a certain point.", "type": "object", "required": [ "type", "status" ], "properties": { "lastTransitionTime": { "description": "The last time the condition transitioned from one status to another.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "message": { "description": "A human readable message indicating details about the transition.", "type": "string" }, "reason": { "description": "The reason for the condition's last transition.", "type": "string" }, "status": { "description": "Status of the condition, one of True, False, Unknown.", "type": "string" }, "type": { "description": "Type of replication controller condition.", "type": "string" } } }, "io.k8s.api.core.v1.ReplicationControllerList": { "description": "ReplicationControllerList is a collection of replication controllers.", "type": "object", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of replication controllers. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationController" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ReplicationControllerList", "version": "v1" } ] }, "io.k8s.api.core.v1.ReplicationControllerSpec": { "description": "ReplicationControllerSpec is the specification of a replication controller.", "type": "object", "properties": { "minReadySeconds": { "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)", "type": "integer", "format": "int32" }, "replicas": { "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", "type": "integer", "format": "int32" }, "selector": { "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", "type": "object", "additionalProperties": { "type": "string" } }, "template": { "description": "Template is the object that describes the pod that will be created if insufficient replicas are detected. This takes precedence over a TemplateRef. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template", "$ref": "#/definitions/io.k8s.api.core.v1.PodTemplateSpec" } } }, "io.k8s.api.core.v1.ReplicationControllerStatus": { "description": "ReplicationControllerStatus represents the current status of a replication controller.", "type": "object", "required": [ "replicas" ], "properties": { "availableReplicas": { "description": "The number of available replicas (ready for at least minReadySeconds) for this replication controller.", "type": "integer", "format": "int32" }, "conditions": { "description": "Represents the latest available observations of a replication controller's current state.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ReplicationControllerCondition" }, "x-kubernetes-patch-merge-key": "type", "x-kubernetes-patch-strategy": "merge" }, "fullyLabeledReplicas": { "description": "The number of pods that have labels matching the labels of the pod template of the replication controller.", "type": "integer", "format": "int32" }, "observedGeneration": { "description": "ObservedGeneration reflects the generation of the most recently observed replication controller.", "type": "integer", "format": "int64" }, "readyReplicas": { "description": "The number of ready replicas for this replication controller.", "type": "integer", "format": "int32" }, "replicas": { "description": "Replicas is the most recently oberved number of replicas. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller", "type": "integer", "format": "int32" } } }, "io.k8s.api.core.v1.ResourceFieldSelector": { "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", "type": "object", "required": [ "resource" ], "properties": { "containerName": { "description": "Container name: required for volumes, optional for env vars", "type": "string" }, "divisor": { "description": "Specifies the output format of the exposed resources, defaults to \"1\"", "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" }, "resource": { "description": "Required: resource to select", "type": "string" } } }, "io.k8s.api.core.v1.ResourceQuota": { "description": "ResourceQuota sets aggregate quota restrictions enforced per namespace", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec defines the desired quota. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuotaSpec" }, "status": { "description": "Status defines the actual enforced quota and its current usage. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuotaStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ResourceQuota", "version": "v1" } ] }, "io.k8s.api.core.v1.ResourceQuotaList": { "description": "ResourceQuotaList is a list of ResourceQuota items.", "type": "object", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "Items is a list of ResourceQuota objects. More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ResourceQuota" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ResourceQuotaList", "version": "v1" } ] }, "io.k8s.api.core.v1.ResourceQuotaSpec": { "description": "ResourceQuotaSpec defines the desired hard limits to enforce for Quota.", "type": "object", "properties": { "hard": { "description": "Hard is the set of desired hard limits for each named resource. More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "scopes": { "description": "A collection of filters that must match each object tracked by a quota. If not specified, the quota matches all objects.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.api.core.v1.ResourceQuotaStatus": { "description": "ResourceQuotaStatus defines the enforced hard limits and observed use.", "type": "object", "properties": { "hard": { "description": "Hard is the set of enforced hard limits for each named resource. More info: https://git.k8s.io/community/contributors/design-proposals/admission_control_resource_quota.md", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "used": { "description": "Used is the current observed total usage of the resource in the namespace.", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } } } }, "io.k8s.api.core.v1.ResourceRequirements": { "description": "ResourceRequirements describes the compute resource requirements.", "type": "object", "properties": { "limits": { "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } }, "requests": { "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. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/", "type": "object", "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" } } } }, "io.k8s.api.core.v1.SELinuxOptions": { "description": "SELinuxOptions are the labels to be applied to the container", "type": "object", "properties": { "level": { "description": "Level is SELinux level label that applies to the container.", "type": "string" }, "role": { "description": "Role is a SELinux role label that applies to the container.", "type": "string" }, "type": { "description": "Type is a SELinux type label that applies to the container.", "type": "string" }, "user": { "description": "User is a SELinux user label that applies to the container.", "type": "string" } } }, "io.k8s.api.core.v1.ScaleIOVolumeSource": { "description": "ScaleIOVolumeSource represents a persistent ScaleIO volume", "type": "object", "required": [ "gateway", "system", "secretRef" ], "properties": { "fsType": { "description": "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.", "type": "string" }, "gateway": { "description": "The host address of the ScaleIO API Gateway.", "type": "string" }, "protectionDomain": { "description": "The name of the Protection Domain for the configured storage (defaults to \"default\").", "type": "string" }, "readOnly": { "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretRef": { "description": "SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "sslEnabled": { "description": "Flag to enable/disable SSL communication with Gateway, default false", "type": "boolean" }, "storageMode": { "description": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\").", "type": "string" }, "storagePool": { "description": "The Storage Pool associated with the protection domain (defaults to \"default\").", "type": "string" }, "system": { "description": "The name of the storage system as configured in ScaleIO.", "type": "string" }, "volumeName": { "description": "The name of a volume already created in the ScaleIO system that is associated with this volume source.", "type": "string" } } }, "io.k8s.api.core.v1.Secret": { "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.", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "data": { "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", "type": "object", "additionalProperties": { "type": "string", "format": "byte" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "stringData": { "description": "stringData allows specifying non-binary secret data in string form. It is provided as a write-only convenience method. All keys and values are merged into the data field on write, overwriting any existing values. It is never output when reading from the API.", "type": "object", "additionalProperties": { "type": "string" } }, "type": { "description": "Used to facilitate programmatic handling of secret data.", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Secret", "version": "v1" } ] }, "io.k8s.api.core.v1.SecretEnvSource": { "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.", "type": "object", "properties": { "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the Secret must be defined", "type": "boolean" } } }, "io.k8s.api.core.v1.SecretKeySelector": { "description": "SecretKeySelector selects a key of a Secret.", "type": "object", "required": [ "key" ], "properties": { "key": { "description": "The key of the secret to select from. Must be a valid secret key.", "type": "string" }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the Secret or it's key must be defined", "type": "boolean" } } }, "io.k8s.api.core.v1.SecretList": { "description": "SecretList is a list of Secret.", "type": "object", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "Items is a list of secret objects. More info: https://kubernetes.io/docs/concepts/configuration/secret", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Secret" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "SecretList", "version": "v1" } ] }, "io.k8s.api.core.v1.SecretProjection": { "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.", "type": "object", "properties": { "items": { "description": "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 '..'.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.KeyToPath" } }, "name": { "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "optional": { "description": "Specify whether the Secret or its key must be defined", "type": "boolean" } } }, "io.k8s.api.core.v1.SecretReference": { "description": "SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace", "type": "object", "properties": { "name": { "description": "Name is unique within a namespace to reference a secret resource.", "type": "string" }, "namespace": { "description": "Namespace defines the space within which the secret name must be unique.", "type": "string" } } }, "io.k8s.api.core.v1.SecretVolumeSource": { "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.", "type": "object", "properties": { "defaultMode": { "description": "Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. 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.", "type": "integer", "format": "int32" }, "items": { "description": "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 '..'.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.KeyToPath" } }, "optional": { "description": "Specify whether the Secret or it's keys must be defined", "type": "boolean" }, "secretName": { "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", "type": "string" } } }, "io.k8s.api.core.v1.SecurityContext": { "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.", "type": "object", "properties": { "allowPrivilegeEscalation": { "description": "AllowPrivilegeEscalation controls whether a process can gain more privileges than it's 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", "type": "boolean" }, "capabilities": { "description": "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime.", "$ref": "#/definitions/io.k8s.api.core.v1.Capabilities" }, "privileged": { "description": "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false.", "type": "boolean" }, "readOnlyRootFilesystem": { "description": "Whether this container has a read-only root filesystem. Default is false.", "type": "boolean" }, "runAsNonRoot": { "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.", "type": "boolean" }, "runAsUser": { "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.", "type": "integer", "format": "int64" }, "seLinuxOptions": { "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.", "$ref": "#/definitions/io.k8s.api.core.v1.SELinuxOptions" } } }, "io.k8s.api.core.v1.Service": { "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.", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "spec": { "description": "Spec defines the behavior of a service. https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.ServiceSpec" }, "status": { "description": "Most recently observed status of the service. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "$ref": "#/definitions/io.k8s.api.core.v1.ServiceStatus" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Service", "version": "v1" } ] }, "io.k8s.api.core.v1.ServiceAccount": { "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", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "automountServiceAccountToken": { "description": "AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted. Can be overridden at the pod level.", "type": "boolean" }, "imagePullSecrets": { "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", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" }, "secrets": { "description": "Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. More info: https://kubernetes.io/docs/concepts/configuration/secret", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ServiceAccount", "version": "v1" } ] }, "io.k8s.api.core.v1.ServiceAccountList": { "description": "ServiceAccountList is a list of ServiceAccount objects", "type": "object", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of ServiceAccounts. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ServiceAccount" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ServiceAccountList", "version": "v1" } ] }, "io.k8s.api.core.v1.ServiceList": { "description": "ServiceList holds a list of services.", "type": "object", "required": [ "items" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "items": { "description": "List of services", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Service" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "ServiceList", "version": "v1" } ] }, "io.k8s.api.core.v1.ServicePort": { "description": "ServicePort contains information on service's port.", "type": "object", "required": [ "port" ], "properties": { "name": { "description": "The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. This maps to the 'Name' field in EndpointPort objects. Optional if only one ServicePort is defined on this service.", "type": "string" }, "nodePort": { "description": "The port on each node on which this service is exposed when type=NodePort or LoadBalancer. Usually assigned by the system. If specified, it will be allocated to the service if unused or else creation of the service will fail. Default is to auto-allocate a port if the ServiceType of this Service requires one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport", "type": "integer", "format": "int32" }, "port": { "description": "The port that will be exposed by this service.", "type": "integer", "format": "int32" }, "protocol": { "description": "The IP protocol for this port. Supports \"TCP\" and \"UDP\". Default is TCP.", "type": "string" }, "targetPort": { "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", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" } } }, "io.k8s.api.core.v1.ServiceSpec": { "description": "ServiceSpec describes the attributes that a user creates on a service.", "type": "object", "properties": { "clusterIP": { "description": "clusterIP is the IP address of the service and is usually assigned randomly by the master. If an address is specified manually and is not in use by others, it will be allocated to the service; otherwise, creation of the service will fail. This field can not be changed through updates. Valid values are \"None\", empty string (\"\"), or a valid IP address. \"None\" can be specified for headless services when proxying is not required. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies", "type": "string" }, "externalIPs": { "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.", "type": "array", "items": { "type": "string" } }, "externalName": { "description": "externalName is the external reference that kubedns or equivalent will return as a CNAME record for this service. No proxying will be involved. Must be a valid DNS name and requires Type to be ExternalName.", "type": "string" }, "externalTrafficPolicy": { "description": "externalTrafficPolicy denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. \"Local\" preserves the client source IP and avoids a second hop for LoadBalancer and Nodeport type services, but risks potentially imbalanced traffic spreading. \"Cluster\" obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading.", "type": "string" }, "healthCheckNodePort": { "description": "healthCheckNodePort specifies the healthcheck nodePort for the service. If not specified, HealthCheckNodePort is created by the service api backend with the allocated nodePort. Will use user-specified nodePort value if specified by the client. Only effects when Type is set to LoadBalancer and ExternalTrafficPolicy is set to Local.", "type": "integer", "format": "int32" }, "loadBalancerIP": { "description": "Only applies to Service Type: LoadBalancer LoadBalancer will get created with the IP specified in this field. 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.", "type": "string" }, "loadBalancerSourceRanges": { "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/configure-cloud-provider-firewall/", "type": "array", "items": { "type": "string" } }, "ports": { "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", "type": "array", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.ServicePort" }, "x-kubernetes-patch-merge-key": "port", "x-kubernetes-patch-strategy": "merge" }, "publishNotReadyAddresses": { "description": "publishNotReadyAddresses, when set to true, indicates that DNS implementations must publish the notReadyAddresses of subsets for the Endpoints associated with the Service. The default value is false. The primary use case for setting this field is to use a StatefulSet's Headless Service to propagate SRV records for its Pods without respect to their readiness for purpose of peer discovery. This field will replace the service.alpha.kubernetes.io/tolerate-unready-endpoints when that annotation is deprecated and all clients have been converted to use this field.", "type": "boolean" }, "selector": { "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/", "type": "object", "additionalProperties": { "type": "string" } }, "sessionAffinity": { "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", "type": "string" }, "sessionAffinityConfig": { "description": "sessionAffinityConfig contains the configurations of session affinity.", "$ref": "#/definitions/io.k8s.api.core.v1.SessionAffinityConfig" }, "type": { "description": "type determines how the Service is exposed. Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer. \"ExternalName\" maps to the specified externalName. \"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. If clusterIP is \"None\", no virtual IP is allocated and the endpoints are published as a set of endpoints rather than a stable IP. \"NodePort\" builds on ClusterIP and allocates a port on every node which routes to the clusterIP. \"LoadBalancer\" builds on NodePort and creates an external load-balancer (if supported in the current cloud) which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types", "type": "string" } } }, "io.k8s.api.core.v1.ServiceStatus": { "description": "ServiceStatus represents the current status of a service.", "type": "object", "properties": { "loadBalancer": { "description": "LoadBalancer contains the current status of the load-balancer, if one is present.", "$ref": "#/definitions/io.k8s.api.core.v1.LoadBalancerStatus" } } }, "io.k8s.api.core.v1.SessionAffinityConfig": { "description": "SessionAffinityConfig represents the configurations of session affinity.", "type": "object", "properties": { "clientIP": { "description": "clientIP contains the configurations of Client IP based session affinity.", "$ref": "#/definitions/io.k8s.api.core.v1.ClientIPConfig" } } }, "io.k8s.api.core.v1.StorageOSPersistentVolumeSource": { "description": "Represents a StorageOS persistent volume resource.", "type": "object", "properties": { "fsType": { "description": "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.", "type": "string" }, "readOnly": { "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretRef": { "description": "SecretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.", "$ref": "#/definitions/io.k8s.api.core.v1.ObjectReference" }, "volumeName": { "description": "VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.", "type": "string" }, "volumeNamespace": { "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.", "type": "string" } } }, "io.k8s.api.core.v1.StorageOSVolumeSource": { "description": "Represents a StorageOS persistent volume resource.", "type": "object", "properties": { "fsType": { "description": "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.", "type": "string" }, "readOnly": { "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", "type": "boolean" }, "secretRef": { "description": "SecretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted.", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" }, "volumeName": { "description": "VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace.", "type": "string" }, "volumeNamespace": { "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.", "type": "string" } } }, "io.k8s.api.core.v1.TCPSocketAction": { "description": "TCPSocketAction describes an action based on opening a socket", "type": "object", "required": [ "port" ], "properties": { "host": { "description": "Optional: Host name to connect to, defaults to the pod IP.", "type": "string" }, "port": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.util.intstr.IntOrString" } } }, "io.k8s.api.core.v1.Taint": { "description": "The node this Taint is attached to has the \"effect\" on any pod that does not tolerate the Taint.", "type": "object", "required": [ "key", "effect" ], "properties": { "effect": { "description": "Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute.", "type": "string" }, "key": { "description": "Required. The taint key to be applied to a node.", "type": "string" }, "timeAdded": { "description": "TimeAdded represents the time at which the taint was added. It is only written for NoExecute taints.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "value": { "description": "Required. The taint value corresponding to the taint key.", "type": "string" } } }, "io.k8s.api.core.v1.Toleration": { "description": "The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.", "type": "object", "properties": { "effect": { "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", "type": "string" }, "key": { "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.", "type": "string" }, "operator": { "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.", "type": "string" }, "tolerationSeconds": { "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.", "type": "integer", "format": "int64" }, "value": { "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.", "type": "string" } } }, "io.k8s.api.core.v1.Volume": { "description": "Volume represents a named volume in a pod that may be accessed by any container in the pod.", "type": "object", "required": [ "name" ], "properties": { "awsElasticBlockStore": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource" }, "azureDisk": { "description": "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.AzureDiskVolumeSource" }, "azureFile": { "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.AzureFileVolumeSource" }, "cephfs": { "description": "CephFS represents a Ceph FS mount on the host that shares a pod's lifetime", "$ref": "#/definitions/io.k8s.api.core.v1.CephFSVolumeSource" }, "cinder": { "description": "Cinder represents a cinder volume attached and mounted on kubelets host machine More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md", "$ref": "#/definitions/io.k8s.api.core.v1.CinderVolumeSource" }, "configMap": { "description": "ConfigMap represents a configMap that should populate this volume", "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapVolumeSource" }, "downwardAPI": { "description": "DownwardAPI represents downward API about the pod that should populate this volume", "$ref": "#/definitions/io.k8s.api.core.v1.DownwardAPIVolumeSource" }, "emptyDir": { "description": "EmptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir", "$ref": "#/definitions/io.k8s.api.core.v1.EmptyDirVolumeSource" }, "fc": { "description": "FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.", "$ref": "#/definitions/io.k8s.api.core.v1.FCVolumeSource" }, "flexVolume": { "description": "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. This is an alpha feature and may change in future.", "$ref": "#/definitions/io.k8s.api.core.v1.FlexVolumeSource" }, "flocker": { "description": "Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running", "$ref": "#/definitions/io.k8s.api.core.v1.FlockerVolumeSource" }, "gcePersistentDisk": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.GCEPersistentDiskVolumeSource" }, "gitRepo": { "description": "GitRepo represents a git repository at a particular revision.", "$ref": "#/definitions/io.k8s.api.core.v1.GitRepoVolumeSource" }, "glusterfs": { "description": "Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md", "$ref": "#/definitions/io.k8s.api.core.v1.GlusterfsVolumeSource" }, "hostPath": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.HostPathVolumeSource" }, "iscsi": { "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://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md", "$ref": "#/definitions/io.k8s.api.core.v1.ISCSIVolumeSource" }, "name": { "description": "Volume's name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "nfs": { "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", "$ref": "#/definitions/io.k8s.api.core.v1.NFSVolumeSource" }, "persistentVolumeClaim": { "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource" }, "photonPersistentDisk": { "description": "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine", "$ref": "#/definitions/io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource" }, "portworxVolume": { "description": "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine", "$ref": "#/definitions/io.k8s.api.core.v1.PortworxVolumeSource" }, "projected": { "description": "Items for all in one resources secrets, configmaps, and downward API", "$ref": "#/definitions/io.k8s.api.core.v1.ProjectedVolumeSource" }, "quobyte": { "description": "Quobyte represents a Quobyte mount on the host that shares a pod's lifetime", "$ref": "#/definitions/io.k8s.api.core.v1.QuobyteVolumeSource" }, "rbd": { "description": "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md", "$ref": "#/definitions/io.k8s.api.core.v1.RBDVolumeSource" }, "scaleIO": { "description": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.", "$ref": "#/definitions/io.k8s.api.core.v1.ScaleIOVolumeSource" }, "secret": { "description": "Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", "$ref": "#/definitions/io.k8s.api.core.v1.SecretVolumeSource" }, "storageos": { "description": "StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.", "$ref": "#/definitions/io.k8s.api.core.v1.StorageOSVolumeSource" }, "vsphereVolume": { "description": "VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine", "$ref": "#/definitions/io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource" } } }, "io.k8s.api.core.v1.VolumeMount": { "description": "VolumeMount describes a mounting of a Volume within a container.", "required": [ "name", "mountPath" ], "properties": { "mountPath": { "description": "Path within the container at which the volume should be mounted. Must not contain ':'.", "type": "string" }, "name": { "description": "This must match the Name of a Volume.", "type": "string" }, "readOnly": { "description": "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.", "type": "boolean" }, "subPath": { "description": "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).", "type": "string" } } }, "io.k8s.api.core.v1.VolumeProjection": { "description": "Projection that may be projected along with other supported volume types", "type": "object", "properties": { "configMap": { "description": "information about the configMap data to project", "$ref": "#/definitions/io.k8s.api.core.v1.ConfigMapProjection" }, "downwardAPI": { "description": "information about the downwardAPI data to project", "$ref": "#/definitions/io.k8s.api.core.v1.DownwardAPIProjection" }, "secret": { "description": "information about the secret data to project", "$ref": "#/definitions/io.k8s.api.core.v1.SecretProjection" } } }, "io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource": { "description": "Represents a vSphere volume resource.", "type": "object", "required": [ "volumePath" ], "properties": { "fsType": { "description": "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.", "type": "string" }, "storagePolicyID": { "description": "Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.", "type": "string" }, "storagePolicyName": { "description": "Storage Policy Based Management (SPBM) profile name.", "type": "string" }, "volumePath": { "description": "Path that identifies vSphere volume vmdk", "type": "string" } } }, "io.k8s.api.core.v1.WeightedPodAffinityTerm": { "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", "type": "object", "required": [ "weight", "podAffinityTerm" ], "properties": { "podAffinityTerm": { "description": "Required. A pod affinity term, associated with the corresponding weight.", "$ref": "#/definitions/io.k8s.api.core.v1.PodAffinityTerm" }, "weight": { "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", "type": "integer", "format": "int32" } } }, "io.k8s.apimachinery.pkg.api.resource.Quantity": { "type": "string" }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup": { "description": "APIGroup contains the name, the supported versions, and the preferred version of a group.", "type": "object", "required": [ "name", "versions", "serverAddressByClientCIDRs" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "name": { "description": "name is the name of the group.", "type": "string" }, "preferredVersion": { "description": "preferredVersion is the version preferred by the API server, which probably is the storage version.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery" }, "serverAddressByClientCIDRs": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR" } }, "versions": { "description": "versions are the versions supported in this group.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery" } } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "APIGroup", "version": "v1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIGroupList": { "description": "APIGroupList is a list of APIGroup, to allow clients to discover the API at /apis.", "type": "object", "required": [ "groups" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "groups": { "description": "groups is a list of APIGroup.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIGroup" } }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "APIGroupList", "version": "v1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIResource": { "description": "APIResource specifies the name of a resource and whether it is namespaced.", "type": "object", "required": [ "name", "singularName", "namespaced", "kind", "verbs" ], "properties": { "categories": { "description": "categories is a list of the grouped resources this resource belongs to (e.g. 'all')", "type": "array", "items": { "type": "string" } }, "kind": { "description": "kind is the kind for the resource (e.g. 'Foo' is the kind for a resource 'foo')", "type": "string" }, "name": { "description": "name is the plural name of the resource.", "type": "string" }, "namespaced": { "description": "namespaced indicates if a resource is namespaced or not.", "type": "boolean" }, "shortNames": { "description": "shortNames is a list of suggested short names of the resource.", "type": "array", "items": { "type": "string" } }, "singularName": { "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.", "type": "string" }, "verbs": { "description": "verbs is a list of supported kube verbs (this includes get, list, watch, create, update, patch, delete, deletecollection, and proxy)", "type": "array", "items": { "type": "string" } } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIResourceList": { "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.", "type": "object", "required": [ "groupVersion", "resources" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "groupVersion": { "description": "groupVersion is the group and version this APIResourceList is for.", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "resources": { "description": "resources contains the name of the resources and if they are namespaced.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.APIResource" } } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "APIResourceList", "version": "v1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIVersions": { "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.", "type": "object", "required": [ "versions", "serverAddressByClientCIDRs" ], "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "serverAddressByClientCIDRs": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR" } }, "versions": { "description": "versions are the api versions that are available.", "type": "array", "items": { "type": "string" } } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "APIVersions", "version": "v1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions": { "description": "DeleteOptions may be provided when deleting an API object.", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "gracePeriodSeconds": { "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.", "type": "integer", "format": "int64" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "orphanDependents": { "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.", "type": "boolean" }, "preconditions": { "description": "Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be returned.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions" }, "propagationPolicy": { "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.", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "DeleteOptions", "version": "v1" }, { "group": "admission.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "admissionregistration.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "apps", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "apps", "kind": "DeleteOptions", "version": "v1beta2" }, { "group": "authentication.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "authentication.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "authorization.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "authorization.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "autoscaling", "kind": "DeleteOptions", "version": "v1" }, { "group": "autoscaling", "kind": "DeleteOptions", "version": "v2alpha1" }, { "group": "batch", "kind": "DeleteOptions", "version": "v1" }, { "group": "batch", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "batch", "kind": "DeleteOptions", "version": "v2alpha1" }, { "group": "certificates.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "extensions", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "federation", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "imagepolicy.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "networking.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "policy", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "rbac.authorization.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "rbac.authorization.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "rbac.authorization.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" }, { "group": "scheduling.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "settings.k8s.io", "kind": "DeleteOptions", "version": "v1alpha1" }, { "group": "storage.k8s.io", "kind": "DeleteOptions", "version": "v1" }, { "group": "storage.k8s.io", "kind": "DeleteOptions", "version": "v1beta1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.GroupVersionForDiscovery": { "description": "GroupVersion contains the \"group/version\" and \"version\" string of a version. It is made a struct to keep extensibility.", "type": "object", "required": [ "groupVersion", "version" ], "properties": { "groupVersion": { "description": "groupVersion specifies the API group and version in the form \"group/version\"", "type": "string" }, "version": { "description": "version specifies the version in the form of \"version\". This is to save the clients the trouble of splitting the GroupVersion.", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.Initializer": { "description": "Initializer is information about an initializer that has not yet completed.", "type": "object", "required": [ "name" ], "properties": { "name": { "description": "name of the process that is responsible for initializing this object.", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.Initializers": { "description": "Initializers tracks the progress of initialization.", "type": "object", "required": [ "pending" ], "properties": { "pending": { "description": "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Initializer" }, "x-kubernetes-patch-merge-key": "name", "x-kubernetes-patch-strategy": "merge" }, "result": { "description": "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector": { "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.", "type": "object", "properties": { "matchExpressions": { "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement" } }, "matchLabels": { "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.", "type": "object", "additionalProperties": { "type": "string" } } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement": { "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", "type": "object", "required": [ "key", "operator" ], "properties": { "key": { "description": "key is the label key that the selector applies to.", "type": "string", "x-kubernetes-patch-merge-key": "key", "x-kubernetes-patch-strategy": "merge" }, "operator": { "description": "operator represents a key's relationship to a set of values. Valid operators ard In, NotIn, Exists and DoesNotExist.", "type": "string" }, "values": { "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.", "type": "array", "items": { "type": "string" } } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta": { "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", "type": "object", "properties": { "resourceVersion": { "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/api-conventions.md#concurrency-control-and-consistency", "type": "string" }, "selfLink": { "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta": { "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", "type": "object", "properties": { "annotations": { "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: http://kubernetes.io/docs/user-guide/annotations", "type": "object", "additionalProperties": { "type": "string" } }, "clusterName": { "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", "type": "string" }, "creationTimestamp": { "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/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "deletionGracePeriodSeconds": { "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.", "type": "integer", "format": "int64" }, "deletionTimestamp": { "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 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/api-conventions.md#metadata", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" }, "finalizers": { "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.", "type": "array", "items": { "type": "string" }, "x-kubernetes-patch-strategy": "merge" }, "generateName": { "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 NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency", "type": "string" }, "generation": { "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", "type": "integer", "format": "int64" }, "initializers": { "description": "An initializer is a controller which enforces some system invariant at object creation time. This field is a list of initializers that have not yet acted on this object. If nil or empty, this object has been completely initialized. Otherwise, the object is considered uninitialized and is hidden (in list/watch and get calls) from clients that haven't explicitly asked to observe uninitialized objects.\n\nWhen an object is created, the system will populate this list with the current set of initializers. Only privileged users may set or modify this list. Once it is empty, it may not be modified further by any user.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Initializers" }, "labels": { "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: http://kubernetes.io/docs/user-guide/labels", "type": "object", "additionalProperties": { "type": "string" } }, "name": { "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: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string" }, "namespace": { "description": "Namespace defines the space within 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: http://kubernetes.io/docs/user-guide/namespaces", "type": "string" }, "ownerReferences": { "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.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference" }, "x-kubernetes-patch-merge-key": "uid", "x-kubernetes-patch-strategy": "merge" }, "resourceVersion": { "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/api-conventions.md#concurrency-control-and-consistency", "type": "string" }, "selfLink": { "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.", "type": "string" }, "uid": { "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: http://kubernetes.io/docs/user-guide/identifiers#uids", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference": { "description": "OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same namespace, so there is no namespace field.", "type": "object", "required": [ "apiVersion", "kind", "name", "uid" ], "properties": { "apiVersion": { "description": "API version of the referent.", "type": "string" }, "blockOwnerDeletion": { "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. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", "type": "boolean" }, "controller": { "description": "If true, this reference points to the managing controller.", "type": "boolean" }, "kind": { "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "type": "string" }, "name": { "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", "type": "string" }, "uid": { "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.Patch": { "description": "Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.", "type": "object" }, "io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions": { "description": "Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.", "type": "object", "properties": { "uid": { "description": "Specifies the target UID.", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.ServerAddressByClientCIDR": { "description": "ServerAddressByClientCIDR helps the client to determine the server address that they should use, depending on the clientCIDR that they match.", "type": "object", "required": [ "clientCIDR", "serverAddress" ], "properties": { "clientCIDR": { "description": "The CIDR with which clients can match their IP to figure out the server address that they should use.", "type": "string" }, "serverAddress": { "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.", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.Status": { "description": "Status is a return value for calls that don't return other objects.", "type": "object", "properties": { "apiVersion": { "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/api-conventions.md#resources", "type": "string" }, "code": { "description": "Suggested HTTP return code for this status, 0 if not set.", "type": "integer", "format": "int32" }, "details": { "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.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "message": { "description": "A human-readable description of the status of this operation.", "type": "string" }, "metadata": { "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" }, "reason": { "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.", "type": "string" }, "status": { "description": "Status of the operation. One of: \"Success\" or \"Failure\". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status", "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "Status", "version": "v1" } ] }, "io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause": { "description": "StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.", "type": "object", "properties": { "field": { "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\"", "type": "string" }, "message": { "description": "A human-readable description of the cause of the error. This field may be presented as-is to a reader.", "type": "string" }, "reason": { "description": "A machine-readable description of the cause of the error. If this value is empty there is no information available.", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails": { "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.", "type": "object", "properties": { "causes": { "description": "The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.", "type": "array", "items": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause" } }, "group": { "description": "The group attribute of the resource associated with the status StatusReason.", "type": "string" }, "kind": { "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/api-conventions.md#types-kinds", "type": "string" }, "name": { "description": "The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).", "type": "string" }, "retryAfterSeconds": { "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.", "type": "integer", "format": "int32" }, "uid": { "description": "UID of the resource. (when there is a single resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids", "type": "string" } } }, "io.k8s.apimachinery.pkg.apis.meta.v1.Time": { "type": "string", "format": "date-time" }, "io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent": { "description": "Event represents a single event to a watched resource.", "type": "object", "required": [ "type", "object" ], "properties": { "object": { "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.", "type": "object" }, "type": { "type": "string" } }, "x-kubernetes-group-version-kind": [ { "group": "", "kind": "WatchEvent", "version": "v1" }, { "group": "admission.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "admissionregistration.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "apps", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "apps", "kind": "WatchEvent", "version": "v1beta2" }, { "group": "authentication.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "authentication.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "authorization.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "authorization.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "autoscaling", "kind": "WatchEvent", "version": "v1" }, { "group": "autoscaling", "kind": "WatchEvent", "version": "v2alpha1" }, { "group": "batch", "kind": "WatchEvent", "version": "v1" }, { "group": "batch", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "batch", "kind": "WatchEvent", "version": "v2alpha1" }, { "group": "certificates.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "extensions", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "federation", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "imagepolicy.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "networking.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "policy", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "rbac.authorization.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "rbac.authorization.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "rbac.authorization.k8s.io", "kind": "WatchEvent", "version": "v1beta1" }, { "group": "scheduling.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "settings.k8s.io", "kind": "WatchEvent", "version": "v1alpha1" }, { "group": "storage.k8s.io", "kind": "WatchEvent", "version": "v1" }, { "group": "storage.k8s.io", "kind": "WatchEvent", "version": "v1beta1" } ] }, "io.k8s.apimachinery.pkg.util.intstr.IntOrString": { "type": "string", "format": "int-or-string" }, "io.k8s.apimachinery.pkg.version.Info": { "description": "Info contains versioning information. how we'll want to distribute that information.", "type": "object", "required": [ "major", "minor", "gitVersion", "gitCommit", "gitTreeState", "buildDate", "goVersion", "compiler", "platform" ], "properties": { "buildDate": { "type": "string" }, "compiler": { "type": "string" }, "gitCommit": { "type": "string" }, "gitTreeState": { "type": "string" }, "gitVersion": { "type": "string" }, "goVersion": { "type": "string" }, "major": { "type": "string" }, "minor": { "type": "string" }, "platform": { "type": "string" } } } }, "securityDefinitions": { "BearerToken": { "description": "Bearer Token authentication", "type": "apiKey", "name": "authorization", "in": "header" } }, "security": [ { "BearerToken": [] } ] } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/testing/000077500000000000000000000000001453663023200247745ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/testing/openapi.go000066400000000000000000000025711453663023200267630ustar00rootroot00000000000000/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package testing import ( "os" "sync" openapi_v2 "github.com/google/gnostic-models/openapiv2" ) // Fake opens and returns a openapi swagger from a file Path. It will // parse only once and then return the same copy everytime. type Fake struct { Path string once sync.Once document *openapi_v2.Document err error } // OpenAPISchema returns the openapi document and a potential error. func (f *Fake) OpenAPISchema() (*openapi_v2.Document, error) { f.once.Do(func() { _, err := os.Stat(f.Path) if err != nil { f.err = err return } spec, err := os.ReadFile(f.Path) if err != nil { f.err = err return } f.document, f.err = openapi_v2.ParseDocument(spec) }) return f.document, f.err } type Empty struct{} func (Empty) OpenAPISchema() (*openapi_v2.Document, error) { return nil, nil } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/testing/openapi_v3.go000066400000000000000000000031101453663023200273610ustar00rootroot00000000000000/* Copyright 2022 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package testing import ( "os" "path/filepath" "sync" openapi_v3 "github.com/google/gnostic-models/openapiv3" ) type FakeV3 struct { Path string lock sync.Mutex documents map[string]*openapi_v3.Document errors map[string]error } func (f *FakeV3) OpenAPIV3Schema(groupVersion string) (*openapi_v3.Document, error) { f.lock.Lock() defer f.lock.Unlock() if existing, ok := f.documents[groupVersion]; ok { return existing, nil } else if existingError, ok := f.errors[groupVersion]; ok { return nil, existingError } _, err := os.Stat(f.Path) if err != nil { return nil, err } spec, err := os.ReadFile(filepath.Join(f.Path, groupVersion+".json")) if err != nil { return nil, err } if f.documents == nil { f.documents = make(map[string]*openapi_v3.Document) } if f.errors == nil { f.errors = make(map[string]error) } result, err := openapi_v3.ParseDocument(spec) if err != nil { f.errors[groupVersion] = err return nil, err } f.documents[groupVersion] = result return result, nil } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/validation/000077500000000000000000000000001453663023200254515ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/validation/errors.go000066400000000000000000000033121453663023200273130ustar00rootroot00000000000000/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package validation import ( "fmt" ) type errors struct { errors []error } func (e *errors) Errors() []error { return e.errors } func (e *errors) AppendErrors(err ...error) { e.errors = append(e.errors, err...) } type ValidationError struct { Path string Err error } func (e ValidationError) Error() string { return fmt.Sprintf("ValidationError(%s): %v", e.Path, e.Err) } type InvalidTypeError struct { Path string Expected string Actual string } func (e InvalidTypeError) Error() string { return fmt.Sprintf("invalid type for %s: got %q, expected %q", e.Path, e.Actual, e.Expected) } type MissingRequiredFieldError struct { Path string Field string } func (e MissingRequiredFieldError) Error() string { return fmt.Sprintf("missing required field %q in %s", e.Field, e.Path) } type UnknownFieldError struct { Path string Field string } func (e UnknownFieldError) Error() string { return fmt.Sprintf("unknown field %q in %s", e.Field, e.Path) } type InvalidObjectTypeError struct { Path string Type string } func (e InvalidObjectTypeError) Error() string { return fmt.Sprintf("unknown object type %q in %s", e.Type, e.Path) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/validation/types.go000066400000000000000000000174641453663023200271600ustar00rootroot00000000000000/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package validation import ( "reflect" "sort" "k8s.io/kube-openapi/pkg/util/proto" ) type validationItem interface { proto.SchemaVisitor Errors() []error Path() *proto.Path } type baseItem struct { errors errors path proto.Path } // Errors returns the list of errors found for this item. func (item *baseItem) Errors() []error { return item.errors.Errors() } // AddValidationError wraps the given error into a ValidationError and // attaches it to this item. func (item *baseItem) AddValidationError(err error) { item.errors.AppendErrors(ValidationError{Path: item.path.String(), Err: err}) } // AddError adds a regular (non-validation related) error to the list. func (item *baseItem) AddError(err error) { item.errors.AppendErrors(err) } // CopyErrors adds a list of errors to this item. This is useful to copy // errors from subitems. func (item *baseItem) CopyErrors(errs []error) { item.errors.AppendErrors(errs...) } // Path returns the path of this item, helps print useful errors. func (item *baseItem) Path() *proto.Path { return &item.path } // mapItem represents a map entry in the yaml. type mapItem struct { baseItem Map map[string]interface{} } func (item *mapItem) sortedKeys() []string { sortedKeys := []string{} for key := range item.Map { sortedKeys = append(sortedKeys, key) } sort.Strings(sortedKeys) return sortedKeys } var _ validationItem = &mapItem{} func (item *mapItem) VisitPrimitive(schema *proto.Primitive) { item.AddValidationError(InvalidTypeError{Path: schema.GetPath().String(), Expected: schema.Type, Actual: "map"}) } func (item *mapItem) VisitArray(schema *proto.Array) { item.AddValidationError(InvalidTypeError{Path: schema.GetPath().String(), Expected: "array", Actual: "map"}) } func (item *mapItem) VisitMap(schema *proto.Map) { for _, key := range item.sortedKeys() { subItem, err := itemFactory(item.Path().FieldPath(key), item.Map[key]) if err != nil { item.AddError(err) continue } schema.SubType.Accept(subItem) item.CopyErrors(subItem.Errors()) } } func (item *mapItem) VisitKind(schema *proto.Kind) { // Verify each sub-field. for _, key := range item.sortedKeys() { if item.Map[key] == nil { continue } subItem, err := itemFactory(item.Path().FieldPath(key), item.Map[key]) if err != nil { item.AddError(err) continue } if _, ok := schema.Fields[key]; !ok { item.AddValidationError(UnknownFieldError{Path: schema.GetPath().String(), Field: key}) continue } schema.Fields[key].Accept(subItem) item.CopyErrors(subItem.Errors()) } // Verify that all required fields are present. for _, required := range schema.RequiredFields { if v, ok := item.Map[required]; !ok || v == nil { item.AddValidationError(MissingRequiredFieldError{Path: schema.GetPath().String(), Field: required}) } } } func (item *mapItem) VisitArbitrary(schema *proto.Arbitrary) { } func (item *mapItem) VisitReference(schema proto.Reference) { // passthrough schema.SubSchema().Accept(item) } // arrayItem represents a yaml array. type arrayItem struct { baseItem Array []interface{} } var _ validationItem = &arrayItem{} func (item *arrayItem) VisitPrimitive(schema *proto.Primitive) { item.AddValidationError(InvalidTypeError{Path: schema.GetPath().String(), Expected: schema.Type, Actual: "array"}) } func (item *arrayItem) VisitArray(schema *proto.Array) { for i, v := range item.Array { path := item.Path().ArrayPath(i) if v == nil { item.AddValidationError(InvalidObjectTypeError{Type: "nil", Path: path.String()}) continue } subItem, err := itemFactory(path, v) if err != nil { item.AddError(err) continue } schema.SubType.Accept(subItem) item.CopyErrors(subItem.Errors()) } } func (item *arrayItem) VisitMap(schema *proto.Map) { item.AddValidationError(InvalidTypeError{Path: schema.GetPath().String(), Expected: "map", Actual: "array"}) } func (item *arrayItem) VisitKind(schema *proto.Kind) { item.AddValidationError(InvalidTypeError{Path: schema.GetPath().String(), Expected: "map", Actual: "array"}) } func (item *arrayItem) VisitArbitrary(schema *proto.Arbitrary) { } func (item *arrayItem) VisitReference(schema proto.Reference) { // passthrough schema.SubSchema().Accept(item) } // primitiveItem represents a yaml value. type primitiveItem struct { baseItem Value interface{} Kind string } var _ validationItem = &primitiveItem{} func (item *primitiveItem) VisitPrimitive(schema *proto.Primitive) { // Some types of primitives can match more than one (a number // can be a string, but not the other way around). Return from // the switch if we have a valid possible type conversion // NOTE(apelisse): This logic is blindly copied from the // existing swagger logic, and I'm not sure I agree with it. switch schema.Type { case proto.Boolean: switch item.Kind { case proto.Boolean: return } case proto.Integer: switch item.Kind { case proto.Integer, proto.Number: return } case proto.Number: switch item.Kind { case proto.Integer, proto.Number: return } case proto.String: return } // TODO(wrong): this misses "null" item.AddValidationError(InvalidTypeError{Path: schema.GetPath().String(), Expected: schema.Type, Actual: item.Kind}) } func (item *primitiveItem) VisitArray(schema *proto.Array) { item.AddValidationError(InvalidTypeError{Path: schema.GetPath().String(), Expected: "array", Actual: item.Kind}) } func (item *primitiveItem) VisitMap(schema *proto.Map) { item.AddValidationError(InvalidTypeError{Path: schema.GetPath().String(), Expected: "map", Actual: item.Kind}) } func (item *primitiveItem) VisitKind(schema *proto.Kind) { item.AddValidationError(InvalidTypeError{Path: schema.GetPath().String(), Expected: "map", Actual: item.Kind}) } func (item *primitiveItem) VisitArbitrary(schema *proto.Arbitrary) { } func (item *primitiveItem) VisitReference(schema proto.Reference) { // passthrough schema.SubSchema().Accept(item) } // itemFactory creates the relevant item type/visitor based on the current yaml type. func itemFactory(path proto.Path, v interface{}) (validationItem, error) { // We need to special case for no-type fields in yaml (e.g. empty item in list) if v == nil { return nil, InvalidObjectTypeError{Type: "nil", Path: path.String()} } kind := reflect.TypeOf(v).Kind() switch kind { case reflect.Bool: return &primitiveItem{ baseItem: baseItem{path: path}, Value: v, Kind: proto.Boolean, }, nil case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: return &primitiveItem{ baseItem: baseItem{path: path}, Value: v, Kind: proto.Integer, }, nil case reflect.Float32, reflect.Float64: return &primitiveItem{ baseItem: baseItem{path: path}, Value: v, Kind: proto.Number, }, nil case reflect.String: return &primitiveItem{ baseItem: baseItem{path: path}, Value: v, Kind: proto.String, }, nil case reflect.Array, reflect.Slice: return &arrayItem{ baseItem: baseItem{path: path}, Array: v.([]interface{}), }, nil case reflect.Map: return &mapItem{ baseItem: baseItem{path: path}, Map: v.(map[string]interface{}), }, nil } return nil, InvalidObjectTypeError{Type: kind.String(), Path: path.String()} } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/validation/validation.go000066400000000000000000000015721453663023200301370ustar00rootroot00000000000000/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package validation import ( "k8s.io/kube-openapi/pkg/util/proto" ) func ValidateModel(obj interface{}, schema proto.Schema, name string) []error { rootValidation, err := itemFactory(proto.NewPath(name), obj) if err != nil { return []error{err} } schema.Accept(rootValidation) return rootValidation.Errors() } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/validation/validation_suite_test.go000066400000000000000000000013761453663023200324110ustar00rootroot00000000000000/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package validation import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "testing" ) func TestOpenapi(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "Openapi Suite") } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/proto/validation/validation_test.go000066400000000000000000000224741453663023200312020ustar00rootroot00000000000000/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package validation_test import ( "fmt" "path/filepath" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "sigs.k8s.io/yaml" "k8s.io/kube-openapi/pkg/util/proto" "k8s.io/kube-openapi/pkg/util/proto/testing" "k8s.io/kube-openapi/pkg/util/proto/validation" ) var fakeSchema = testing.Fake{Path: filepath.Join("..", "testdata", "swagger.json")} func Validate(models proto.Models, model string, data string) []error { var obj interface{} if err := yaml.Unmarshal([]byte(data), &obj); err != nil { return []error{fmt.Errorf("pre-validation: failed to parse yaml: %v", err)} } return ValidateObj(models, model, obj) } // ValidateObj validates an object produced by decoding json or yaml. // Numbers may be int64 or float64. func ValidateObj(models proto.Models, model string, obj interface{}) []error { schema := models.LookupModel(model) if schema == nil { return []error{fmt.Errorf("pre-validation: couldn't find model %s", model)} } return validation.ValidateModel(obj, schema, model) } var _ = Describe("resource validation using OpenAPI Schema", func() { var models proto.Models BeforeEach(func() { s, err := fakeSchema.OpenAPISchema() Expect(err).To(BeNil()) models, err = proto.NewOpenAPIData(s) Expect(err).To(BeNil()) }) It("finds Deployment in Schema and validates it", func() { err := Validate(models, "io.k8s.api.apps.v1beta1.Deployment", ` apiVersion: extensions/v1beta1 kind: Deployment metadata: labels: name: redis-master name: name spec: replicas: 1 template: metadata: labels: app: redis spec: containers: - image: redis name: redis `) Expect(err).To(BeNil()) }) It("validates a valid pod", func() { err := Validate(models, "io.k8s.api.core.v1.Pod", ` apiVersion: v1 kind: Pod metadata: labels: name: redis-master name: name spec: containers: - args: - this - is - an - ok - command image: gcr.io/fake_project/fake_image:fake_tag name: master `) Expect(err).To(BeNil()) }) It("finds invalid command (string instead of []string) in Json Pod", func() { err := Validate(models, "io.k8s.api.core.v1.Pod", ` { "kind": "Pod", "apiVersion": "v1", "metadata": { "name": "name", "labels": { "name": "redis-master" } }, "spec": { "containers": [ { "name": "master", "image": "gcr.io/fake_project/fake_image:fake_tag", "args": "this is a bad command" } ] } } `) Expect(err).To(Equal([]error{ validation.ValidationError{ Path: "io.k8s.api.core.v1.Pod.spec.containers[0].args", Err: validation.InvalidTypeError{ Path: "io.k8s.api.core.v1.Container.args", Expected: "array", Actual: "string", }, }, })) }) It("fails because hostPort is string instead of int", func() { err := Validate(models, "io.k8s.api.core.v1.Pod", ` { "kind": "Pod", "apiVersion": "v1", "metadata": { "name": "apache-php", "labels": { "name": "apache-php" } }, "spec": { "volumes": [{ "name": "shared-disk" }], "containers": [ { "name": "apache-php", "image": "gcr.io/fake_project/fake_image:fake_tag", "ports": [ { "name": "apache", "hostPort": "13380", "containerPort": 80, "protocol": "TCP" } ], "volumeMounts": [ { "name": "shared-disk", "mountPath": "/var/www/html" } ] } ] } } `) Expect(err).To(Equal([]error{ validation.ValidationError{ Path: "io.k8s.api.core.v1.Pod.spec.containers[0].ports[0].hostPort", Err: validation.InvalidTypeError{ Path: "io.k8s.api.core.v1.ContainerPort.hostPort", Expected: "integer", Actual: "string", }, }, })) }) It("fails because volume is not an array of object", func() { err := Validate(models, "io.k8s.api.core.v1.Pod", ` { "kind": "Pod", "apiVersion": "v1", "metadata": { "name": "apache-php", "labels": { "name": "apache-php" } }, "spec": { "volumes": [ "name": "shared-disk" ], "containers": [ { "name": "apache-php", "image": "gcr.io/fake_project/fake_image:fake_tag", "ports": [ { "name": "apache", "hostPort": 13380, "containerPort": 80, "protocol": "TCP" } ], "volumeMounts": [ { "name": "shared-disk", "mountPath": "/var/www/html" } ] } ] } } `) Expect(err).To(BeNil()) }) It("fails because some string lists have empty strings", func() { err := Validate(models, "io.k8s.api.core.v1.Pod", ` apiVersion: v1 kind: Pod metadata: labels: name: redis-master name: name spec: containers: - image: gcr.io/fake_project/fake_image:fake_tag name: master args: - command: - `) Expect(err).To(Equal([]error{ validation.ValidationError{ Path: "io.k8s.api.core.v1.Pod.spec.containers[0].args", Err: validation.InvalidObjectTypeError{ Path: "io.k8s.api.core.v1.Pod.spec.containers[0].args[0]", Type: "nil", }, }, validation.ValidationError{ Path: "io.k8s.api.core.v1.Pod.spec.containers[0].command", Err: validation.InvalidObjectTypeError{ Path: "io.k8s.api.core.v1.Pod.spec.containers[0].command[0]", Type: "nil", }, }, })) }) It("fails if required fields are missing", func() { err := Validate(models, "io.k8s.api.core.v1.Pod", ` apiVersion: v1 kind: Pod metadata: labels: name: redis-master name: name spec: containers: - command: ["my", "command"] `) Expect(err).To(Equal([]error{ validation.ValidationError{ Path: "io.k8s.api.core.v1.Pod.spec.containers[0]", Err: validation.MissingRequiredFieldError{ Path: "io.k8s.api.core.v1.Container", Field: "name", }, }, validation.ValidationError{ Path: "io.k8s.api.core.v1.Pod.spec.containers[0]", Err: validation.MissingRequiredFieldError{ Path: "io.k8s.api.core.v1.Container", Field: "image", }, }, })) }) It("fails if required fields are empty", func() { err := Validate(models, "io.k8s.api.core.v1.Pod", ` apiVersion: v1 kind: Pod metadata: labels: name: redis-master name: name spec: containers: - image: name: `) Expect(err).To(Equal([]error{ validation.ValidationError{ Path: "io.k8s.api.core.v1.Pod.spec.containers[0]", Err: validation.MissingRequiredFieldError{ Path: "io.k8s.api.core.v1.Container", Field: "name", }, }, validation.ValidationError{ Path: "io.k8s.api.core.v1.Pod.spec.containers[0]", Err: validation.MissingRequiredFieldError{ Path: "io.k8s.api.core.v1.Container", Field: "image", }, }, })) }) It("is fine with empty non-mandatory fields", func() { err := Validate(models, "io.k8s.api.core.v1.Pod", ` apiVersion: v1 kind: Pod metadata: labels: name: redis-master name: name spec: containers: - image: image name: name command: `) Expect(err).To(BeNil()) }) It("fails because apiVersion is not provided", func() { err := Validate(models, "io.k8s.api.core.v1.Pod", ` kind: Pod metadata: name: name spec: containers: - name: name image: image `) Expect(err).To(BeNil()) }) It("fails because apiVersion type is not string and kind is not provided", func() { err := Validate(models, "io.k8s.api.core.v1.Pod", ` apiVersion: 1 metadata: name: name spec: containers: - name: name image: image `) Expect(err).To(BeNil()) }) // verify integer literals are considered to be compatible with float schema fields It("validates integer values for float fields", func() { err := ValidateObj(models, "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition", map[string]interface{}{ "apiVersion": "apiextensions.k8s.io/v1", "kind": "CustomResourceDefinition", "metadata": map[string]interface{}{"name": "foo"}, "spec": map[string]interface{}{ "scope": "Namespaced", "group": "example.com", "names": map[string]interface{}{ "plural": "numbers", "kind": "Number", }, "versions": []interface{}{ map[string]interface{}{ "name": "v1", "served": true, "storage": true, "schema": map[string]interface{}{ "openAPIV3Schema": map[string]interface{}{ "properties": map[string]interface{}{ "replicas": map[string]interface{}{ "default": int64(1), "minimum": int64(0), "type": "integer", }, "resources": map[string]interface{}{ "default": float64(1.1), "minimum": float64(0.1), "type": "number", }, }, }, }, }, }, }, }) Expect(err).To(BeNil()) }) }) golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/sets/000077500000000000000000000000001453663023200231325ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/sets/empty.go000066400000000000000000000020751453663023200246230ustar00rootroot00000000000000/* Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ // Code generated by set-gen. DO NOT EDIT. // NOTE: This file is copied from k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/sets/empty.go // because in Kubernetes we don't allowed vendor code to import staging code. See // https://github.com/kubernetes/kube-openapi/pull/90 for more details. package sets // Empty is public since it is used by some internal API objects for conversions between external // string arrays and internal sets, and conversion logic requires public types today. type Empty struct{} golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/sets/string.go000066400000000000000000000116411453663023200247720ustar00rootroot00000000000000/* Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ // Code generated by set-gen. DO NOT EDIT. // NOTE: This file is copied from k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/sets/string.go // because in Kubernetes we don't allowed vendor code to import staging code. See // https://github.com/kubernetes/kube-openapi/pull/90 for more details. package sets import ( "reflect" "sort" ) // sets.String is a set of strings, implemented via map[string]struct{} for minimal memory consumption. type String map[string]Empty // NewString creates a String from a list of values. func NewString(items ...string) String { ss := String{} ss.Insert(items...) return ss } // StringKeySet creates a String from a keys of a map[string](? extends interface{}). // If the value passed in is not actually a map, this will panic. func StringKeySet(theMap interface{}) String { v := reflect.ValueOf(theMap) ret := String{} for _, keyValue := range v.MapKeys() { ret.Insert(keyValue.Interface().(string)) } return ret } // Insert adds items to the set. func (s String) Insert(items ...string) { for _, item := range items { s[item] = Empty{} } } // Delete removes all items from the set. func (s String) Delete(items ...string) { for _, item := range items { delete(s, item) } } // Has returns true if and only if item is contained in the set. func (s String) Has(item string) bool { _, contained := s[item] return contained } // HasAll returns true if and only if all items are contained in the set. func (s String) HasAll(items ...string) bool { for _, item := range items { if !s.Has(item) { return false } } return true } // HasAny returns true if any items are contained in the set. func (s String) HasAny(items ...string) bool { for _, item := range items { if s.Has(item) { return true } } return false } // Difference returns a set of objects that are not in s2 // For example: // s1 = {a1, a2, a3} // s2 = {a1, a2, a4, a5} // s1.Difference(s2) = {a3} // s2.Difference(s1) = {a4, a5} func (s String) Difference(s2 String) String { result := NewString() for key := range s { if !s2.Has(key) { result.Insert(key) } } return result } // Union returns a new set which includes items in either s1 or s2. // For example: // s1 = {a1, a2} // s2 = {a3, a4} // s1.Union(s2) = {a1, a2, a3, a4} // s2.Union(s1) = {a1, a2, a3, a4} func (s1 String) Union(s2 String) String { result := NewString() for key := range s1 { result.Insert(key) } for key := range s2 { result.Insert(key) } return result } // Intersection returns a new set which includes the item in BOTH s1 and s2 // For example: // s1 = {a1, a2} // s2 = {a2, a3} // s1.Intersection(s2) = {a2} func (s1 String) Intersection(s2 String) String { var walk, other String result := NewString() if s1.Len() < s2.Len() { walk = s1 other = s2 } else { walk = s2 other = s1 } for key := range walk { if other.Has(key) { result.Insert(key) } } return result } // IsSuperset returns true if and only if s1 is a superset of s2. func (s1 String) IsSuperset(s2 String) bool { for item := range s2 { if !s1.Has(item) { return false } } return true } // Equal returns true if and only if s1 is equal (as a set) to s2. // Two sets are equal if their membership is identical. // (In practice, this means same elements, order doesn't matter) func (s1 String) Equal(s2 String) bool { return len(s1) == len(s2) && s1.IsSuperset(s2) } type sortableSliceOfString []string func (s sortableSliceOfString) Len() int { return len(s) } func (s sortableSliceOfString) Less(i, j int) bool { return lessString(s[i], s[j]) } func (s sortableSliceOfString) Swap(i, j int) { s[i], s[j] = s[j], s[i] } // List returns the contents as a sorted string slice. func (s String) List() []string { res := make(sortableSliceOfString, 0, len(s)) for key := range s { res = append(res, key) } sort.Sort(res) return []string(res) } // UnsortedList returns the slice with contents in random order. func (s String) UnsortedList() []string { res := make([]string, 0, len(s)) for key := range s { res = append(res, key) } return res } // Returns a single element from the set. func (s String) PopAny() (string, bool) { for key := range s { s.Delete(key) return key, true } var zeroValue string return zeroValue, false } // Len returns the size of the set. func (s String) Len() int { return len(s) } func lessString(lhs, rhs string) bool { return lhs < rhs } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/trie.go000066400000000000000000000035031453663023200234470ustar00rootroot00000000000000/* Copyright 2016 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package util // A simple trie implementation with Add and HasPrefix methods only. type Trie struct { children map[byte]*Trie wordTail bool word string } // NewTrie creates a Trie and add all strings in the provided list to it. func NewTrie(list []string) Trie { ret := Trie{ children: make(map[byte]*Trie), wordTail: false, } for _, v := range list { ret.Add(v) } return ret } // Add adds a word to this trie func (t *Trie) Add(v string) { root := t for _, b := range []byte(v) { child, exists := root.children[b] if !exists { child = &Trie{ children: make(map[byte]*Trie), wordTail: false, } root.children[b] = child } root = child } root.wordTail = true root.word = v } // HasPrefix returns true of v has any of the prefixes stored in this trie. func (t *Trie) HasPrefix(v string) bool { _, has := t.GetPrefix(v) return has } // GetPrefix is like HasPrefix but return the prefix in case of match or empty string otherwise. func (t *Trie) GetPrefix(v string) (string, bool) { root := t if root.wordTail { return root.word, true } for _, b := range []byte(v) { child, exists := root.children[b] if !exists { return "", false } if child.wordTail { return child.word, true } root = child } return "", false } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/util.go000066400000000000000000000074021453663023200234630ustar00rootroot00000000000000/* Copyright 2017 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package util import ( "reflect" "strings" ) // [DEPRECATED] ToCanonicalName converts Golang package/type canonical name into REST friendly OpenAPI name. // This method is deprecated because it has a misleading name. Please use ToRESTFriendlyName // instead // // NOTE: actually the "canonical name" in this method should be named "REST friendly OpenAPI name", // which is different from "canonical name" defined in GetCanonicalTypeName. The "canonical name" defined // in GetCanonicalTypeName means Go type names with full package path. // // Examples of REST friendly OpenAPI name: // // Input: k8s.io/api/core/v1.Pod // Output: io.k8s.api.core.v1.Pod // // Input: k8s.io/api/core/v1 // Output: io.k8s.api.core.v1 // // Input: csi.storage.k8s.io/v1alpha1.CSINodeInfo // Output: io.k8s.storage.csi.v1alpha1.CSINodeInfo func ToCanonicalName(name string) string { return ToRESTFriendlyName(name) } // ToRESTFriendlyName converts Golang package/type canonical name into REST friendly OpenAPI name. // // Examples of REST friendly OpenAPI name: // // Input: k8s.io/api/core/v1.Pod // Output: io.k8s.api.core.v1.Pod // // Input: k8s.io/api/core/v1 // Output: io.k8s.api.core.v1 // // Input: csi.storage.k8s.io/v1alpha1.CSINodeInfo // Output: io.k8s.storage.csi.v1alpha1.CSINodeInfo func ToRESTFriendlyName(name string) string { nameParts := strings.Split(name, "/") // Reverse first part. e.g., io.k8s... instead of k8s.io... if len(nameParts) > 0 && strings.Contains(nameParts[0], ".") { parts := strings.Split(nameParts[0], ".") for i, j := 0, len(parts)-1; i < j; i, j = i+1, j-1 { parts[i], parts[j] = parts[j], parts[i] } nameParts[0] = strings.Join(parts, ".") } return strings.Join(nameParts, ".") } // OpenAPICanonicalTypeNamer is an interface for models without Go type to seed model name. // // OpenAPI canonical names are Go type names with full package path, for uniquely indentifying // a model / Go type. If a Go type is vendored from another package, only the path after "/vendor/" // should be used. For custom resource definition (CRD), the canonical name is expected to be // // group/version.kind // // Examples of canonical name: // // Go type: k8s.io/kubernetes/pkg/apis/core.Pod // CRD: csi.storage.k8s.io/v1alpha1.CSINodeInfo // // Example for vendored Go type: // // Original full path: k8s.io/kubernetes/vendor/k8s.io/api/core/v1.Pod // Canonical name: k8s.io/api/core/v1.Pod // // Original full path: vendor/k8s.io/api/core/v1.Pod // Canonical name: k8s.io/api/core/v1.Pod type OpenAPICanonicalTypeNamer interface { OpenAPICanonicalTypeName() string } // GetCanonicalTypeName will find the canonical type name of a sample object, removing // the "vendor" part of the path func GetCanonicalTypeName(model interface{}) string { if namer, ok := model.(OpenAPICanonicalTypeNamer); ok { return namer.OpenAPICanonicalTypeName() } t := reflect.TypeOf(model) if t.Kind() == reflect.Ptr { t = t.Elem() } if t.PkgPath() == "" { return t.Name() } path := t.PkgPath() if strings.Contains(path, "/vendor/") { path = path[strings.Index(path, "/vendor/")+len("/vendor/"):] } else if strings.HasPrefix(path, "vendor/") { path = strings.TrimPrefix(path, "vendor/") } return path + "." + t.Name() } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/util/util_test.go000066400000000000000000000031571453663023200245250ustar00rootroot00000000000000/* Copyright 2018 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package util import ( "reflect" "testing" ) func TestCanonicalName(t *testing.T) { var tests = []struct { input string expected string }{ {"k8s.io/api/core/v1.Pod", "io.k8s.api.core.v1.Pod"}, {"k8s.io/api/networking/v1/NetworkPolicy", "io.k8s.api.networking.v1.NetworkPolicy"}, {"k8s.io/api/apps/v1beta2.Scale", "io.k8s.api.apps.v1beta2.Scale"}, {"servicecatalog.k8s.io/foo/bar/v1alpha1.Baz", "io.k8s.servicecatalog.foo.bar.v1alpha1.Baz"}, } for _, test := range tests { if got := ToRESTFriendlyName(test.input); got != test.expected { t.Errorf("ToRESTFriendlyName(%q) = %v", test.input, got) } } } type TestType struct{} func TestGetCanonicalTypeName(t *testing.T) { var tests = []struct { input interface{} expected string }{ {TestType{}, "k8s.io/kube-openapi/pkg/util.TestType"}, {&TestType{}, "k8s.io/kube-openapi/pkg/util.TestType"}, } for _, test := range tests { if got := GetCanonicalTypeName(test.input); got != test.expected { t.Errorf("GetCanonicalTypeName(%q) = %v", reflect.TypeOf(test.input), got) } } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/000077500000000000000000000000001453663023200233315ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/OWNERS000066400000000000000000000002311453663023200242650ustar00rootroot00000000000000# See the OWNERS docs at https://go.k8s.io/owners options: no_parent_owners: true approvers: - sttts - liggitt reviewers: - apelisse - sttts - liggitt golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/errors/000077500000000000000000000000001453663023200246455ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/errors/.github/000077500000000000000000000000001453663023200262055ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/errors/.github/CONTRIBUTING.md000066400000000000000000000114601453663023200304400ustar00rootroot00000000000000## Contribution Guidelines ### Pull requests are always welcome We are always thrilled to receive pull requests, and do our best to process them as fast as possible. Not sure if that typo is worth a pull request? Do it! We will appreciate it. If your pull request is not accepted on the first try, don't be discouraged! If there's a problem with the implementation, hopefully you received feedback on what to improve. We're trying very hard to keep go-swagger lean and focused. We don't want it to do everything for everybody. This means that we might decide against incorporating a new feature. However, there might be a way to implement that feature *on top of* go-swagger. ### Conventions Fork the repo and make changes on your fork in a feature branch: - If it's a bugfix branch, name it XXX-something where XXX is the number of the issue - If it's a feature branch, create an enhancement issue to announce your intentions, and name it XXX-something where XXX is the number of the issue. Submit unit tests for your changes. Go has a great test framework built in; use it! Take a look at existing tests for inspiration. Run the full test suite on your branch before submitting a pull request. Update the documentation when creating or modifying features. Test your documentation changes for clarity, concision, and correctness, as well as a clean documentation build. See ``docs/README.md`` for more information on building the docs and how docs get released. Write clean code. Universally formatted code promotes ease of writing, reading, and maintenance. Always run `gofmt -s -w file.go` on each changed file before committing your changes. Most editors have plugins that do this automatically. Pull requests descriptions should be as clear as possible and include a reference to all the issues that they address. Pull requests must not contain commits from other users or branches. Commit messages must start with a capitalized and short summary (max. 50 chars) written in the imperative, followed by an optional, more detailed explanatory text which is separated from the summary by an empty line. Code review comments may be added to your pull request. Discuss, then make the suggested modifications and push additional commits to your feature branch. Be sure to post a comment after pushing. The new commits will show up in the pull request automatically, but the reviewers will not be notified unless you comment. Before the pull request is merged, make sure that you squash your commits into logical units of work using `git rebase -i` and `git push -f`. After every commit the test suite should be passing. Include documentation changes in the same commit so that a revert would remove all traces of the feature or fix. Commits that fix or close an issue should include a reference like `Closes #XXX` or `Fixes #XXX`, which will automatically close the issue when merged. ### Sign your work The sign-off is a simple line at the end of the explanation for the patch, which certifies that you wrote it or otherwise have the right to pass it on as an open-source patch. The rules are pretty simple: if you can certify the below (from [developercertificate.org](http://developercertificate.org/)): ``` Developer Certificate of Origin Version 1.1 Copyright (C) 2004, 2006 The Linux Foundation and its contributors. 660 York Street, Suite 102, San Francisco, CA 94110 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Developer's Certificate of Origin 1.1 By making a contribution to this project, I certify that: (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. ``` then you just add a line to every git commit message: Signed-off-by: Joe Smith using your real name (sorry, no pseudonyms or anonymous contributions.) You can add the sign off when creating the git commit via `git commit -s`. golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/errors/.gitignore000066400000000000000000000000311453663023200266270ustar00rootroot00000000000000secrets.yml coverage.out golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/errors/LICENSE000066400000000000000000000261361453663023200256620ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/errors/api.go000066400000000000000000000022111453663023200257410ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package errors import ( "fmt" ) // Error represents a error interface all swagger framework errors implement type Error interface { error Code() int32 } type apiError struct { code int32 message string } func (a *apiError) Error() string { return a.message } func (a *apiError) Code() int32 { return a.code } // New creates a new API error with a code and a message func New(code int32, message string, args ...interface{}) Error { if len(args) > 0 { return &apiError{code, fmt.Sprintf(message, args...)} } return &apiError{code, message} } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/errors/api_test.go000066400000000000000000000025031453663023200270040ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package errors import ( "testing" "github.com/stretchr/testify/assert" ) func TestValidateName(t *testing.T) { v := &Validation{Name: "myValidation", message: "myMessage"} // unchanged vv := v.ValidateName("") assert.EqualValues(t, "myValidation", vv.Name) assert.EqualValues(t, "myMessage", vv.message) // unchanged vv = v.ValidateName("myNewName") assert.EqualValues(t, "myValidation", vv.Name) assert.EqualValues(t, "myMessage", vv.message) v.Name = "" // unchanged vv = v.ValidateName("") assert.EqualValues(t, "", vv.Name) assert.EqualValues(t, "myMessage", vv.message) // forced vv = v.ValidateName("myNewName") assert.EqualValues(t, "myNewName", vv.Name) assert.EqualValues(t, "myNewNamemyMessage", vv.message) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/errors/doc.go000066400000000000000000000016741453663023200257510ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /* Package errors provides an Error interface and several concrete types implementing this interface to manage API errors and JSON-schema validation errors. A middleware handler ServeError() is provided to serve the errors types it defines. It is used throughout the various go-openapi toolkit libraries (https://github.com/go-openapi). */ package errors golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/errors/headers.go000066400000000000000000000022431453663023200266100ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package errors // Validation represents a failure of a precondition type Validation struct { code int32 Name string In string Value interface{} Valid interface{} message string Values []interface{} } func (e *Validation) Error() string { return e.message } // Code the error code func (e *Validation) Code() int32 { return e.code } // ValidateName produces an error message name for an aliased property func (e *Validation) ValidateName(name string) *Validation { if e.Name == "" && name != "" { e.Name = name e.message = name + e.message } return e } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/errors/schema.go000066400000000000000000000362631453663023200264460ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package errors import ( "fmt" "strings" ) const ( invalidType = "%s is an invalid type name" typeFail = "%s in %s must be of type %s" typeFailWithData = "%s in %s must be of type %s: %q" typeFailWithError = "%s in %s must be of type %s, because: %s" requiredFail = "%s in %s is required" tooLongMessage = "%s in %s should be at most %d chars long" tooShortMessage = "%s in %s should be at least %d chars long" patternFail = "%s in %s should match '%s'" enumFail = "%s in %s should be one of %v" multipleOfFail = "%s in %s should be a multiple of %v" maxIncFail = "%s in %s should be less than or equal to %v" maxExcFail = "%s in %s should be less than %v" minIncFail = "%s in %s should be greater than or equal to %v" minExcFail = "%s in %s should be greater than %v" uniqueFail = "%s in %s shouldn't contain duplicates" maxItemsFail = "%s in %s should have at most %d items" minItemsFail = "%s in %s should have at least %d items" typeFailNoIn = "%s must be of type %s" typeFailWithDataNoIn = "%s must be of type %s: %q" typeFailWithErrorNoIn = "%s must be of type %s, because: %s" requiredFailNoIn = "%s is required" tooLongMessageNoIn = "%s should be at most %d chars long" tooShortMessageNoIn = "%s should be at least %d chars long" patternFailNoIn = "%s should match '%s'" enumFailNoIn = "%s should be one of %v" multipleOfFailNoIn = "%s should be a multiple of %v" maxIncFailNoIn = "%s should be less than or equal to %v" maxExcFailNoIn = "%s should be less than %v" minIncFailNoIn = "%s should be greater than or equal to %v" minExcFailNoIn = "%s should be greater than %v" uniqueFailNoIn = "%s shouldn't contain duplicates" maxItemsFailNoIn = "%s should have at most %d items" minItemsFailNoIn = "%s should have at least %d items" noAdditionalItems = "%s in %s can't have additional items" noAdditionalItemsNoIn = "%s can't have additional items" tooFewProperties = "%s in %s should have at least %d properties" tooFewPropertiesNoIn = "%s should have at least %d properties" tooManyProperties = "%s in %s should have at most %d properties" tooManyPropertiesNoIn = "%s should have at most %d properties" unallowedProperty = "%s.%s in %s is a forbidden property" unallowedPropertyNoIn = "%s.%s is a forbidden property" failedAllPatternProps = "%s.%s in %s failed all pattern properties" failedAllPatternPropsNoIn = "%s.%s failed all pattern properties" multipleOfMustBePositive = "factor MultipleOf declared for %s must be positive: %v" ) // All code responses can be used to differentiate errors for different handling // by the consuming program const ( // CompositeErrorCode remains 422 for backwards-compatibility // and to separate it from validation errors with cause CompositeErrorCode = 422 // InvalidTypeCode is used for any subclass of invalid types InvalidTypeCode = 600 + iota RequiredFailCode TooLongFailCode TooShortFailCode PatternFailCode EnumFailCode MultipleOfFailCode MaxFailCode MinFailCode UniqueFailCode MaxItemsFailCode MinItemsFailCode NoAdditionalItemsCode TooFewPropertiesCode TooManyPropertiesCode UnallowedPropertyCode FailedAllPatternPropsCode MultipleOfMustBePositiveCode ) // CompositeError is an error that groups several errors together type CompositeError struct { Errors []error code int32 message string } // Code for this error func (c *CompositeError) Code() int32 { return c.code } func (c *CompositeError) Error() string { if len(c.Errors) > 0 { msgs := []string{c.message + ":"} for _, e := range c.Errors { msgs = append(msgs, e.Error()) } return strings.Join(msgs, "\n") } return c.message } // CompositeValidationError an error to wrap a bunch of other errors func CompositeValidationError(errors ...error) *CompositeError { return &CompositeError{ code: CompositeErrorCode, Errors: append([]error{}, errors...), message: "validation failure list", } } // FailedAllPatternProperties an error for when the property doesn't match a pattern func FailedAllPatternProperties(name, in, key string) *Validation { msg := fmt.Sprintf(failedAllPatternProps, name, key, in) if in == "" { msg = fmt.Sprintf(failedAllPatternPropsNoIn, name, key) } return &Validation{ code: FailedAllPatternPropsCode, Name: name, In: in, Value: key, message: msg, } } // PropertyNotAllowed an error for when the property doesn't match a pattern func PropertyNotAllowed(name, in, key string) *Validation { msg := fmt.Sprintf(unallowedProperty, name, key, in) if in == "" { msg = fmt.Sprintf(unallowedPropertyNoIn, name, key) } return &Validation{ code: UnallowedPropertyCode, Name: name, In: in, Value: key, message: msg, } } // TooFewProperties an error for an object with too few properties func TooFewProperties(name, in string, minProperties, size int64) *Validation { msg := fmt.Sprintf(tooFewProperties, name, in, minProperties) if in == "" { msg = fmt.Sprintf(tooFewPropertiesNoIn, name, minProperties) } return &Validation{ code: TooFewPropertiesCode, Name: name, In: in, Value: size, Valid: minProperties, message: msg, } } // TooManyProperties an error for an object with too many properties func TooManyProperties(name, in string, maxProperties, size int64) *Validation { msg := fmt.Sprintf(tooManyProperties, name, in, maxProperties) if in == "" { msg = fmt.Sprintf(tooManyPropertiesNoIn, name, maxProperties) } return &Validation{ code: TooManyPropertiesCode, Name: name, In: in, Value: size, Valid: maxProperties, message: msg, } } // AdditionalItemsNotAllowed an error for invalid additional items func AdditionalItemsNotAllowed(name, in string) *Validation { msg := fmt.Sprintf(noAdditionalItems, name, in) if in == "" { msg = fmt.Sprintf(noAdditionalItemsNoIn, name) } return &Validation{ code: NoAdditionalItemsCode, Name: name, In: in, message: msg, } } // InvalidCollectionFormat another flavor of invalid type error func InvalidCollectionFormat(name, in, format string) *Validation { return &Validation{ code: InvalidTypeCode, Name: name, In: in, Value: format, message: fmt.Sprintf("the collection format %q is not supported for the %s param %q", format, in, name), } } // InvalidTypeName an error for when the type is invalid func InvalidTypeName(typeName string) *Validation { return &Validation{ code: InvalidTypeCode, Value: typeName, message: fmt.Sprintf(invalidType, typeName), } } // InvalidType creates an error for when the type is invalid func InvalidType(name, in, typeName string, value interface{}) *Validation { var message string if in != "" { switch value.(type) { case string: message = fmt.Sprintf(typeFailWithData, name, in, typeName, value) case error: message = fmt.Sprintf(typeFailWithError, name, in, typeName, value) default: message = fmt.Sprintf(typeFail, name, in, typeName) } } else { switch value.(type) { case string: message = fmt.Sprintf(typeFailWithDataNoIn, name, typeName, value) case error: message = fmt.Sprintf(typeFailWithErrorNoIn, name, typeName, value) default: message = fmt.Sprintf(typeFailNoIn, name, typeName) } } return &Validation{ code: InvalidTypeCode, Name: name, In: in, Value: value, message: message, } } // DuplicateItems error for when an array contains duplicates func DuplicateItems(name, in string) *Validation { msg := fmt.Sprintf(uniqueFail, name, in) if in == "" { msg = fmt.Sprintf(uniqueFailNoIn, name) } return &Validation{ code: UniqueFailCode, Name: name, In: in, message: msg, } } // TooManyItems error for when an array contains too many items func TooManyItems(name, in string, max int64, value interface{}) *Validation { msg := fmt.Sprintf(maxItemsFail, name, in, max) if in == "" { msg = fmt.Sprintf(maxItemsFailNoIn, name, max) } return &Validation{ code: MaxItemsFailCode, Name: name, In: in, Value: value, Valid: max, message: msg, } } // TooFewItems error for when an array contains too few items func TooFewItems(name, in string, min int64, value interface{}) *Validation { msg := fmt.Sprintf(minItemsFail, name, in, min) if in == "" { msg = fmt.Sprintf(minItemsFailNoIn, name, min) } return &Validation{ code: MinItemsFailCode, Name: name, In: in, Value: value, Valid: min, message: msg, } } // ExceedsMaximumInt error for when maxinum validation fails func ExceedsMaximumInt(name, in string, max int64, exclusive bool, value interface{}) *Validation { var message string if in == "" { m := maxIncFailNoIn if exclusive { m = maxExcFailNoIn } message = fmt.Sprintf(m, name, max) } else { m := maxIncFail if exclusive { m = maxExcFail } message = fmt.Sprintf(m, name, in, max) } return &Validation{ code: MaxFailCode, Name: name, In: in, Value: value, message: message, } } // ExceedsMaximumUint error for when maxinum validation fails func ExceedsMaximumUint(name, in string, max uint64, exclusive bool, value interface{}) *Validation { var message string if in == "" { m := maxIncFailNoIn if exclusive { m = maxExcFailNoIn } message = fmt.Sprintf(m, name, max) } else { m := maxIncFail if exclusive { m = maxExcFail } message = fmt.Sprintf(m, name, in, max) } return &Validation{ code: MaxFailCode, Name: name, In: in, Value: value, message: message, } } // ExceedsMaximum error for when maxinum validation fails func ExceedsMaximum(name, in string, max float64, exclusive bool, value interface{}) *Validation { var message string if in == "" { m := maxIncFailNoIn if exclusive { m = maxExcFailNoIn } message = fmt.Sprintf(m, name, max) } else { m := maxIncFail if exclusive { m = maxExcFail } message = fmt.Sprintf(m, name, in, max) } return &Validation{ code: MaxFailCode, Name: name, In: in, Value: value, message: message, } } // ExceedsMinimumInt error for when maxinum validation fails func ExceedsMinimumInt(name, in string, min int64, exclusive bool, value interface{}) *Validation { var message string if in == "" { m := minIncFailNoIn if exclusive { m = minExcFailNoIn } message = fmt.Sprintf(m, name, min) } else { m := minIncFail if exclusive { m = minExcFail } message = fmt.Sprintf(m, name, in, min) } return &Validation{ code: MinFailCode, Name: name, In: in, Value: value, message: message, } } // ExceedsMinimumUint error for when maxinum validation fails func ExceedsMinimumUint(name, in string, min uint64, exclusive bool, value interface{}) *Validation { var message string if in == "" { m := minIncFailNoIn if exclusive { m = minExcFailNoIn } message = fmt.Sprintf(m, name, min) } else { m := minIncFail if exclusive { m = minExcFail } message = fmt.Sprintf(m, name, in, min) } return &Validation{ code: MinFailCode, Name: name, In: in, Value: value, message: message, } } // ExceedsMinimum error for when maxinum validation fails func ExceedsMinimum(name, in string, min float64, exclusive bool, value interface{}) *Validation { var message string if in == "" { m := minIncFailNoIn if exclusive { m = minExcFailNoIn } message = fmt.Sprintf(m, name, min) } else { m := minIncFail if exclusive { m = minExcFail } message = fmt.Sprintf(m, name, in, min) } return &Validation{ code: MinFailCode, Name: name, In: in, Value: value, message: message, } } // NotMultipleOf error for when multiple of validation fails func NotMultipleOf(name, in string, multiple, value interface{}) *Validation { var msg string if in == "" { msg = fmt.Sprintf(multipleOfFailNoIn, name, multiple) } else { msg = fmt.Sprintf(multipleOfFail, name, in, multiple) } return &Validation{ code: MultipleOfFailCode, Name: name, In: in, Value: value, message: msg, } } // EnumFail error for when an enum validation fails func EnumFail(name, in string, value interface{}, values []interface{}) *Validation { var msg string if in == "" { msg = fmt.Sprintf(enumFailNoIn, name, values) } else { msg = fmt.Sprintf(enumFail, name, in, values) } return &Validation{ code: EnumFailCode, Name: name, In: in, Value: value, Values: values, message: msg, } } // Required error for when a value is missing func Required(name, in string) *Validation { var msg string if in == "" { msg = fmt.Sprintf(requiredFailNoIn, name) } else { msg = fmt.Sprintf(requiredFail, name, in) } return &Validation{ code: RequiredFailCode, Name: name, In: in, message: msg, } } // TooLong error for when a string is too long func TooLong(name, in string, max int64, value interface{}) *Validation { var msg string if in == "" { msg = fmt.Sprintf(tooLongMessageNoIn, name, max) } else { msg = fmt.Sprintf(tooLongMessage, name, in, max) } return &Validation{ code: TooLongFailCode, Name: name, In: in, Value: value, Valid: max, message: msg, } } // TooShort error for when a string is too short func TooShort(name, in string, min int64, value interface{}) *Validation { var msg string if in == "" { msg = fmt.Sprintf(tooShortMessageNoIn, name, min) } else { msg = fmt.Sprintf(tooShortMessage, name, in, min) } return &Validation{ code: TooShortFailCode, Name: name, In: in, Value: value, Valid: min, message: msg, } } // FailedPattern error for when a string fails a regex pattern match // the pattern that is returned is the ECMA syntax version of the pattern not the golang version. func FailedPattern(name, in, pattern string, value interface{}) *Validation { var msg string if in == "" { msg = fmt.Sprintf(patternFailNoIn, name, pattern) } else { msg = fmt.Sprintf(patternFail, name, in, pattern) } return &Validation{ code: PatternFailCode, Name: name, In: in, Value: value, message: msg, } } // MultipleOfMustBePositive error for when a // multipleOf factor is negative func MultipleOfMustBePositive(name, in string, factor interface{}) *Validation { return &Validation{ code: MultipleOfMustBePositiveCode, Name: name, In: in, Value: factor, message: fmt.Sprintf(multipleOfMustBePositive, name, factor), } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/errors/schema_test.go000066400000000000000000000401101453663023200274670ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package errors import ( "errors" "fmt" "testing" "github.com/stretchr/testify/assert" ) func TestSchemaErrors(t *testing.T) { err := InvalidType("confirmed", "query", "boolean", nil) assert.Error(t, err) assert.EqualValues(t, InvalidTypeCode, err.Code()) assert.Equal(t, "confirmed in query must be of type boolean", err.Error()) err = InvalidType("confirmed", "", "boolean", nil) assert.Error(t, err) assert.EqualValues(t, InvalidTypeCode, err.Code()) assert.Equal(t, "confirmed must be of type boolean", err.Error()) err = InvalidType("confirmed", "query", "boolean", "hello") assert.Error(t, err) assert.EqualValues(t, InvalidTypeCode, err.Code()) assert.Equal(t, "confirmed in query must be of type boolean: \"hello\"", err.Error()) err = InvalidType("confirmed", "query", "boolean", errors.New("hello")) assert.Error(t, err) assert.EqualValues(t, InvalidTypeCode, err.Code()) assert.Equal(t, "confirmed in query must be of type boolean, because: hello", err.Error()) err = InvalidType("confirmed", "", "boolean", "hello") assert.Error(t, err) assert.EqualValues(t, InvalidTypeCode, err.Code()) assert.Equal(t, "confirmed must be of type boolean: \"hello\"", err.Error()) err = InvalidType("confirmed", "", "boolean", errors.New("hello")) assert.Error(t, err) assert.EqualValues(t, InvalidTypeCode, err.Code()) assert.Equal(t, "confirmed must be of type boolean, because: hello", err.Error()) err = DuplicateItems("uniques", "query") assert.Error(t, err) assert.EqualValues(t, UniqueFailCode, err.Code()) assert.Equal(t, "uniques in query shouldn't contain duplicates", err.Error()) err = DuplicateItems("uniques", "") assert.Error(t, err) assert.EqualValues(t, UniqueFailCode, err.Code()) assert.Equal(t, "uniques shouldn't contain duplicates", err.Error()) err = TooManyItems("something", "query", 5, 6) assert.Error(t, err) assert.EqualValues(t, MaxItemsFailCode, err.Code()) assert.Equal(t, "something in query should have at most 5 items", err.Error()) assert.Equal(t, 6, err.Value) err = TooManyItems("something", "", 5, 6) assert.Error(t, err) assert.EqualValues(t, MaxItemsFailCode, err.Code()) assert.Equal(t, "something should have at most 5 items", err.Error()) assert.Equal(t, 6, err.Value) err = TooFewItems("something", "", 5, 4) assert.Error(t, err) assert.EqualValues(t, MinItemsFailCode, err.Code()) assert.Equal(t, "something should have at least 5 items", err.Error()) assert.Equal(t, 4, err.Value) err = ExceedsMaximumInt("something", "query", 5, false, 6) assert.Error(t, err) assert.EqualValues(t, MaxFailCode, err.Code()) assert.Equal(t, "something in query should be less than or equal to 5", err.Error()) assert.Equal(t, 6, err.Value) err = ExceedsMaximumInt("something", "", 5, false, 6) assert.Error(t, err) assert.EqualValues(t, MaxFailCode, err.Code()) assert.Equal(t, "something should be less than or equal to 5", err.Error()) assert.Equal(t, 6, err.Value) err = ExceedsMaximumInt("something", "query", 5, true, 6) assert.Error(t, err) assert.EqualValues(t, MaxFailCode, err.Code()) assert.Equal(t, "something in query should be less than 5", err.Error()) assert.Equal(t, 6, err.Value) err = ExceedsMaximumInt("something", "", 5, true, 6) assert.Error(t, err) assert.EqualValues(t, MaxFailCode, err.Code()) assert.Equal(t, "something should be less than 5", err.Error()) assert.Equal(t, 6, err.Value) err = ExceedsMaximumUint("something", "query", 5, false, 6) assert.Error(t, err) assert.EqualValues(t, MaxFailCode, err.Code()) assert.Equal(t, "something in query should be less than or equal to 5", err.Error()) assert.Equal(t, 6, err.Value) err = ExceedsMaximumUint("something", "", 5, false, 6) assert.Error(t, err) assert.EqualValues(t, MaxFailCode, err.Code()) assert.Equal(t, "something should be less than or equal to 5", err.Error()) assert.Equal(t, 6, err.Value) err = ExceedsMaximumUint("something", "query", 5, true, 6) assert.Error(t, err) assert.EqualValues(t, MaxFailCode, err.Code()) assert.Equal(t, "something in query should be less than 5", err.Error()) assert.Equal(t, 6, err.Value) err = ExceedsMaximumUint("something", "", 5, true, 6) assert.Error(t, err) assert.EqualValues(t, MaxFailCode, err.Code()) assert.Equal(t, "something should be less than 5", err.Error()) assert.Equal(t, 6, err.Value) err = ExceedsMaximum("something", "query", 5, false, 6) assert.Error(t, err) assert.EqualValues(t, MaxFailCode, err.Code()) assert.Equal(t, "something in query should be less than or equal to 5", err.Error()) assert.Equal(t, 6, err.Value) err = ExceedsMaximum("something", "", 5, false, 6) assert.Error(t, err) assert.EqualValues(t, MaxFailCode, err.Code()) assert.Equal(t, "something should be less than or equal to 5", err.Error()) assert.Equal(t, 6, err.Value) err = ExceedsMaximum("something", "query", 5, true, 6) assert.Error(t, err) assert.EqualValues(t, MaxFailCode, err.Code()) assert.Equal(t, "something in query should be less than 5", err.Error()) assert.Equal(t, 6, err.Value) err = ExceedsMaximum("something", "", 5, true, 6) assert.Error(t, err) assert.EqualValues(t, MaxFailCode, err.Code()) assert.Equal(t, "something should be less than 5", err.Error()) assert.Equal(t, 6, err.Value) err = ExceedsMinimumInt("something", "query", 5, false, 4) assert.Error(t, err) assert.EqualValues(t, MinFailCode, err.Code()) assert.Equal(t, "something in query should be greater than or equal to 5", err.Error()) assert.Equal(t, 4, err.Value) err = ExceedsMinimumInt("something", "", 5, false, 4) assert.Error(t, err) assert.EqualValues(t, MinFailCode, err.Code()) assert.Equal(t, "something should be greater than or equal to 5", err.Error()) assert.Equal(t, 4, err.Value) err = ExceedsMinimumInt("something", "query", 5, true, 4) assert.Error(t, err) assert.EqualValues(t, MinFailCode, err.Code()) assert.Equal(t, "something in query should be greater than 5", err.Error()) assert.Equal(t, 4, err.Value) err = ExceedsMinimumInt("something", "", 5, true, 4) assert.Error(t, err) assert.EqualValues(t, MinFailCode, err.Code()) assert.Equal(t, "something should be greater than 5", err.Error()) assert.Equal(t, 4, err.Value) err = ExceedsMinimumUint("something", "query", 5, false, 4) assert.Error(t, err) assert.EqualValues(t, MinFailCode, err.Code()) assert.Equal(t, "something in query should be greater than or equal to 5", err.Error()) assert.Equal(t, 4, err.Value) err = ExceedsMinimumUint("something", "", 5, false, 4) assert.Error(t, err) assert.EqualValues(t, MinFailCode, err.Code()) assert.Equal(t, "something should be greater than or equal to 5", err.Error()) assert.Equal(t, 4, err.Value) err = ExceedsMinimumUint("something", "query", 5, true, 4) assert.Error(t, err) assert.EqualValues(t, MinFailCode, err.Code()) assert.Equal(t, "something in query should be greater than 5", err.Error()) assert.Equal(t, 4, err.Value) err = ExceedsMinimumUint("something", "", 5, true, 4) assert.Error(t, err) assert.EqualValues(t, MinFailCode, err.Code()) assert.Equal(t, "something should be greater than 5", err.Error()) assert.Equal(t, 4, err.Value) err = ExceedsMinimum("something", "query", 5, false, 4) assert.Error(t, err) assert.EqualValues(t, MinFailCode, err.Code()) assert.Equal(t, "something in query should be greater than or equal to 5", err.Error()) assert.Equal(t, 4, err.Value) err = ExceedsMinimum("something", "", 5, false, 4) assert.Error(t, err) assert.EqualValues(t, MinFailCode, err.Code()) assert.Equal(t, "something should be greater than or equal to 5", err.Error()) assert.Equal(t, 4, err.Value) err = ExceedsMinimum("something", "query", 5, true, 4) assert.Error(t, err) assert.EqualValues(t, MinFailCode, err.Code()) assert.Equal(t, "something in query should be greater than 5", err.Error()) assert.Equal(t, 4, err.Value) err = ExceedsMinimum("something", "", 5, true, 4) assert.Error(t, err) assert.EqualValues(t, MinFailCode, err.Code()) assert.Equal(t, "something should be greater than 5", err.Error()) assert.Equal(t, 4, err.Value) err = NotMultipleOf("something", "query", 5, 1) assert.Error(t, err) assert.EqualValues(t, MultipleOfFailCode, err.Code()) assert.Equal(t, "something in query should be a multiple of 5", err.Error()) assert.Equal(t, 1, err.Value) err = NotMultipleOf("something", "query", float64(5), float64(1)) assert.Error(t, err) assert.EqualValues(t, MultipleOfFailCode, err.Code()) assert.Equal(t, "something in query should be a multiple of 5", err.Error()) assert.Equal(t, float64(1), err.Value) err = NotMultipleOf("something", "query", uint64(5), uint64(1)) assert.Error(t, err) assert.EqualValues(t, MultipleOfFailCode, err.Code()) assert.Equal(t, "something in query should be a multiple of 5", err.Error()) assert.Equal(t, uint64(1), err.Value) err = NotMultipleOf("something", "", 5, 1) assert.Error(t, err) assert.EqualValues(t, MultipleOfFailCode, err.Code()) assert.Equal(t, "something should be a multiple of 5", err.Error()) assert.Equal(t, 1, err.Value) err = EnumFail("something", "query", "yada", []interface{}{"hello", "world"}) assert.Error(t, err) assert.EqualValues(t, EnumFailCode, err.Code()) assert.Equal(t, "something in query should be one of [hello world]", err.Error()) assert.Equal(t, "yada", err.Value) err = EnumFail("something", "", "yada", []interface{}{"hello", "world"}) assert.Error(t, err) assert.EqualValues(t, EnumFailCode, err.Code()) assert.Equal(t, "something should be one of [hello world]", err.Error()) assert.Equal(t, "yada", err.Value) err = Required("something", "query") assert.Error(t, err) assert.EqualValues(t, RequiredFailCode, err.Code()) assert.Equal(t, "something in query is required", err.Error()) err = Required("something", "") assert.Error(t, err) assert.EqualValues(t, RequiredFailCode, err.Code()) assert.Equal(t, "something is required", err.Error()) err = TooLong("something", "query", 5, "abcdef") assert.Error(t, err) assert.EqualValues(t, TooLongFailCode, err.Code()) assert.Equal(t, "something in query should be at most 5 chars long", err.Error()) assert.Equal(t, "abcdef", err.Value) err = TooLong("something", "", 5, "abcdef") assert.Error(t, err) assert.EqualValues(t, TooLongFailCode, err.Code()) assert.Equal(t, "something should be at most 5 chars long", err.Error()) assert.Equal(t, "abcdef", err.Value) err = TooShort("something", "query", 5, "a") assert.Error(t, err) assert.EqualValues(t, TooShortFailCode, err.Code()) assert.Equal(t, "something in query should be at least 5 chars long", err.Error()) assert.Equal(t, "a", err.Value) err = TooShort("something", "", 5, "a") assert.Error(t, err) assert.EqualValues(t, TooShortFailCode, err.Code()) assert.Equal(t, "something should be at least 5 chars long", err.Error()) assert.Equal(t, "a", err.Value) err = FailedPattern("something", "query", "\\d+", "a") assert.Error(t, err) assert.EqualValues(t, PatternFailCode, err.Code()) assert.Equal(t, "something in query should match '\\d+'", err.Error()) assert.Equal(t, "a", err.Value) err = FailedPattern("something", "", "\\d+", "a") assert.Error(t, err) assert.EqualValues(t, PatternFailCode, err.Code()) assert.Equal(t, "something should match '\\d+'", err.Error()) assert.Equal(t, "a", err.Value) err = InvalidTypeName("something") assert.Error(t, err) assert.EqualValues(t, InvalidTypeCode, err.Code()) assert.Equal(t, "something is an invalid type name", err.Error()) err = AdditionalItemsNotAllowed("something", "query") assert.Error(t, err) assert.EqualValues(t, NoAdditionalItemsCode, err.Code()) assert.Equal(t, "something in query can't have additional items", err.Error()) err = AdditionalItemsNotAllowed("something", "") assert.Error(t, err) assert.EqualValues(t, NoAdditionalItemsCode, err.Code()) assert.Equal(t, "something can't have additional items", err.Error()) err = InvalidCollectionFormat("something", "query", "yada") assert.Error(t, err) assert.EqualValues(t, InvalidTypeCode, err.Code()) assert.Equal(t, "the collection format \"yada\" is not supported for the query param \"something\"", err.Error()) err2 := CompositeValidationError() assert.Error(t, err2) assert.EqualValues(t, CompositeErrorCode, err2.Code()) assert.Equal(t, "validation failure list", err2.Error()) err2 = CompositeValidationError(fmt.Errorf("First error"), fmt.Errorf("Second error")) assert.Error(t, err2) assert.EqualValues(t, CompositeErrorCode, err2.Code()) assert.Equal(t, "validation failure list:\nFirst error\nSecond error", err2.Error()) //func MultipleOfMustBePositive(name, in string, factor interface{}) *Validation { err = MultipleOfMustBePositive("path", "body", float64(-10)) assert.Error(t, err) assert.EqualValues(t, MultipleOfMustBePositiveCode, err.Code()) assert.Equal(t, `factor MultipleOf declared for path must be positive: -10`, err.Error()) assert.Equal(t, float64(-10), err.Value) err = MultipleOfMustBePositive("path", "body", int64(-10)) assert.Error(t, err) assert.EqualValues(t, MultipleOfMustBePositiveCode, err.Code()) assert.Equal(t, `factor MultipleOf declared for path must be positive: -10`, err.Error()) assert.Equal(t, int64(-10), err.Value) // func PropertyNotAllowed(name, in, key string) *Validation { err = PropertyNotAllowed("path", "body", "key") assert.Error(t, err) assert.EqualValues(t, UnallowedPropertyCode, err.Code()) //unallowedProperty = "%s.%s in %s is a forbidden property" assert.Equal(t, "path.key in body is a forbidden property", err.Error()) err = PropertyNotAllowed("path", "", "key") assert.Error(t, err) assert.EqualValues(t, UnallowedPropertyCode, err.Code()) //unallowedPropertyNoIn = "%s.%s is a forbidden property" assert.Equal(t, "path.key is a forbidden property", err.Error()) //func TooManyProperties(name, in string, n, size int64) *Validation { err = TooManyProperties("path", "body", 10, 20) assert.Error(t, err) assert.EqualValues(t, TooManyPropertiesCode, err.Code()) //tooManyProperties = "%s in %s should have at most %d properties" assert.Equal(t, "path in body should have at most 10 properties", err.Error()) err = TooManyProperties("path", "", 10, 20) assert.Error(t, err) assert.EqualValues(t, TooManyPropertiesCode, err.Code()) //tooManyPropertiesNoIn = "%s should have at most %d properties" assert.Equal(t, "path should have at most 10 properties", err.Error()) err = TooFewProperties("path", "body", 10, 1) // func TooFewProperties(name, in string, n int64) *Validation { assert.Error(t, err) assert.EqualValues(t, TooFewPropertiesCode, err.Code()) //tooFewProperties = "%s in %s should have at least %d properties" assert.Equal(t, "path in body should have at least 10 properties", err.Error()) err = TooFewProperties("path", "", 10, 1) // func TooFewProperties(name, in string, n int64) *Validation { assert.Error(t, err) assert.EqualValues(t, TooFewPropertiesCode, err.Code()) //tooFewPropertiesNoIn = "%s should have at least %d properties" assert.Equal(t, "path should have at least 10 properties", err.Error()) //func FailedAllPatternProperties(name, in, key string) *Validation { err = FailedAllPatternProperties("path", "body", "key") assert.Error(t, err) assert.EqualValues(t, FailedAllPatternPropsCode, err.Code()) //failedAllPatternProps = "%s.%s in %s failed all pattern properties" assert.Equal(t, "path.key in body failed all pattern properties", err.Error()) err = FailedAllPatternProperties("path", "", "key") assert.Error(t, err) assert.EqualValues(t, FailedAllPatternPropsCode, err.Code()) //failedAllPatternPropsNoIn = "%s.%s failed all pattern properties" assert.Equal(t, "path.key failed all pattern properties", err.Error()) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/000077500000000000000000000000001453663023200242635ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/.github/000077500000000000000000000000001453663023200256235ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/.github/CONTRIBUTING.md000066400000000000000000000114601453663023200300560ustar00rootroot00000000000000## Contribution Guidelines ### Pull requests are always welcome We are always thrilled to receive pull requests, and do our best to process them as fast as possible. Not sure if that typo is worth a pull request? Do it! We will appreciate it. If your pull request is not accepted on the first try, don't be discouraged! If there's a problem with the implementation, hopefully you received feedback on what to improve. We're trying very hard to keep go-swagger lean and focused. We don't want it to do everything for everybody. This means that we might decide against incorporating a new feature. However, there might be a way to implement that feature *on top of* go-swagger. ### Conventions Fork the repo and make changes on your fork in a feature branch: - If it's a bugfix branch, name it XXX-something where XXX is the number of the issue - If it's a feature branch, create an enhancement issue to announce your intentions, and name it XXX-something where XXX is the number of the issue. Submit unit tests for your changes. Go has a great test framework built in; use it! Take a look at existing tests for inspiration. Run the full test suite on your branch before submitting a pull request. Update the documentation when creating or modifying features. Test your documentation changes for clarity, concision, and correctness, as well as a clean documentation build. See ``docs/README.md`` for more information on building the docs and how docs get released. Write clean code. Universally formatted code promotes ease of writing, reading, and maintenance. Always run `gofmt -s -w file.go` on each changed file before committing your changes. Most editors have plugins that do this automatically. Pull requests descriptions should be as clear as possible and include a reference to all the issues that they address. Pull requests must not contain commits from other users or branches. Commit messages must start with a capitalized and short summary (max. 50 chars) written in the imperative, followed by an optional, more detailed explanatory text which is separated from the summary by an empty line. Code review comments may be added to your pull request. Discuss, then make the suggested modifications and push additional commits to your feature branch. Be sure to post a comment after pushing. The new commits will show up in the pull request automatically, but the reviewers will not be notified unless you comment. Before the pull request is merged, make sure that you squash your commits into logical units of work using `git rebase -i` and `git push -f`. After every commit the test suite should be passing. Include documentation changes in the same commit so that a revert would remove all traces of the feature or fix. Commits that fix or close an issue should include a reference like `Closes #XXX` or `Fixes #XXX`, which will automatically close the issue when merged. ### Sign your work The sign-off is a simple line at the end of the explanation for the patch, which certifies that you wrote it or otherwise have the right to pass it on as an open-source patch. The rules are pretty simple: if you can certify the below (from [developercertificate.org](http://developercertificate.org/)): ``` Developer Certificate of Origin Version 1.1 Copyright (C) 2004, 2006 The Linux Foundation and its contributors. 660 York Street, Suite 102, San Francisco, CA 94110 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Developer's Certificate of Origin 1.1 By making a contribution to this project, I certify that: (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. ``` then you just add a line to every git commit message: Signed-off-by: Joe Smith using your real name (sorry, no pseudonyms or anonymous contributions.) You can add the sign off when creating the git commit via `git commit -s`. golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/.gitignore000066400000000000000000000000311453663023200262450ustar00rootroot00000000000000secrets.yml coverage.out golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/LICENSE000066400000000000000000000261361453663023200253000ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/contact_info.go000066400000000000000000000015521453663023200272630ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec // ContactInfo contact information for the exposed API. // // For more information: http://goo.gl/8us55a#contactObject type ContactInfo struct { Name string `json:"name,omitempty"` URL string `json:"url,omitempty"` Email string `json:"email,omitempty"` } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/contact_info_test.go000066400000000000000000000022101453663023200303120ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "testing" ) const contactInfoJSON = `{"name":"wordnik api team","url":"http://developer.wordnik.com","email":"some@mailayada.dkdkd"}` const contactInfoYAML = `name: wordnik api team url: http://developer.wordnik.com email: some@mailayada.dkdkd ` var contactInfo = ContactInfo{ Name: "wordnik api team", URL: "http://developer.wordnik.com", Email: "some@mailayada.dkdkd", } func TestIntegrationContactInfo(t *testing.T) { assertSerializeJSON(t, contactInfo, contactInfoJSON) assertParsesJSON(t, contactInfoJSON, contactInfo) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/external_docs.go000066400000000000000000000016261453663023200274510ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec // ExternalDocumentation allows referencing an external resource for // extended documentation. // // For more information: http://goo.gl/8us55a#externalDocumentationObject type ExternalDocumentation struct { Description string `json:"description,omitempty"` URL string `json:"url,omitempty"` } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/external_docs_test.go000066400000000000000000000016301453663023200305030ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "testing" ) func TestIntegrationExternalDocs(t *testing.T) { var extDocs = ExternalDocumentation{Description: "the name", URL: "the url"} const extDocsJSON = `{"description":"the name","url":"the url"}` assertSerializeJSON(t, extDocs, extDocsJSON) assertParsesJSON(t, extDocsJSON, extDocs) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/fuzz_test.go000066400000000000000000000252261453663023200266560ustar00rootroot00000000000000/* Copyright 2022 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec import ( "github.com/go-openapi/jsonreference" "github.com/google/go-cmp/cmp" fuzz "github.com/google/gofuzz" ) var SwaggerFuzzFuncs []interface{} = []interface{}{ func(v *Responses, c fuzz.Continue) { c.FuzzNoCustom(v) if v.Default != nil { // Check if we hit maxDepth and left an incomplete value if v.Default.Description == "" { v.Default = nil v.StatusCodeResponses = nil } } // conversion has no way to discern empty statusCodeResponses from // nil, since "default" is always included in the map. // So avoid empty responses list if len(v.StatusCodeResponses) == 0 { v.StatusCodeResponses = nil } }, func(v *Operation, c fuzz.Continue) { c.FuzzNoCustom(v) if v != nil { // force non-nil v.Responses = &Responses{} c.Fuzz(v.Responses) v.Schemes = nil if c.RandBool() { v.Schemes = append(v.Schemes, "http") } if c.RandBool() { v.Schemes = append(v.Schemes, "https") } if c.RandBool() { v.Schemes = append(v.Schemes, "ws") } if c.RandBool() { v.Schemes = append(v.Schemes, "wss") } // Gnostic unconditionally makes security values non-null // So do not fuzz null values into the array. for i, val := range v.Security { if val == nil { v.Security[i] = make(map[string][]string) } for k, v := range val { if v == nil { val[k] = make([]string, 0) } } } } }, func(v map[int]Response, c fuzz.Continue) { n := 0 c.Fuzz(&n) if n == 0 { // Test that fuzzer is not at maxDepth so we do not // end up with empty elements return } // Prevent negative numbers num := c.Intn(4) for i := 0; i < num+2; i++ { val := Response{} c.Fuzz(&val) val.Description = c.RandString() + "x" v[100*(i+1)+c.Intn(100)] = val } }, func(v map[string]PathItem, c fuzz.Continue) { n := 0 c.Fuzz(&n) if n == 0 { // Test that fuzzer is not at maxDepth so we do not // end up with empty elements return } num := c.Intn(5) for i := 0; i < num+2; i++ { val := PathItem{} c.Fuzz(&val) // Ref params are only allowed in certain locations, so // possibly add a few to PathItems numRefsToAdd := c.Intn(5) for i := 0; i < numRefsToAdd; i++ { theRef := Parameter{} c.Fuzz(&theRef.Refable) val.Parameters = append(val.Parameters, theRef) } v["/"+c.RandString()] = val } }, func(v *SchemaOrArray, c fuzz.Continue) { *v = SchemaOrArray{} // gnostic parser just doesn't support more // than one Schema here v.Schema = &Schema{} c.Fuzz(&v.Schema) }, func(v *SchemaOrBool, c fuzz.Continue) { *v = SchemaOrBool{} if c.RandBool() { v.Allows = c.RandBool() } else { v.Schema = &Schema{} v.Allows = true c.Fuzz(&v.Schema) } }, func(v map[string]Response, c fuzz.Continue) { n := 0 c.Fuzz(&n) if n == 0 { // Test that fuzzer is not at maxDepth so we do not // end up with empty elements return } // Response definitions are not allowed to // be refs for i := 0; i < c.Intn(5)+1; i++ { resp := &Response{} c.Fuzz(resp) resp.Ref = Ref{} resp.Description = c.RandString() + "x" // Response refs are not vendor extensible by gnostic resp.VendorExtensible.Extensions = nil v[c.RandString()+"x"] = *resp } }, func(v *Header, c fuzz.Continue) { if v != nil { c.FuzzNoCustom(v) // descendant Items of Header may not be refs cur := v.Items for cur != nil { cur.Ref = Ref{} cur = cur.Items } } }, func(v *Ref, c fuzz.Continue) { *v = Ref{} v.Ref, _ = jsonreference.New("http://asd.com/" + c.RandString()) }, func(v *Response, c fuzz.Continue) { *v = Response{} if c.RandBool() { v.Ref = Ref{} v.Ref.Ref, _ = jsonreference.New("http://asd.com/" + c.RandString()) } else { c.Fuzz(&v.VendorExtensible) c.Fuzz(&v.Schema) c.Fuzz(&v.ResponseProps) v.Headers = nil v.Ref = Ref{} n := 0 c.Fuzz(&n) if n != 0 { // Test that fuzzer is not at maxDepth so we do not // end up with empty elements num := c.Intn(4) for i := 0; i < num; i++ { if v.Headers == nil { v.Headers = make(map[string]Header) } hdr := Header{} c.Fuzz(&hdr) if hdr.Type == "" { // hit maxDepth, just abort trying to make haders v.Headers = nil break } v.Headers[c.RandString()+"x"] = hdr } } else { v.Headers = nil } } v.Description = c.RandString() + "x" // Gnostic parses empty as nil, so to keep avoid putting empty if len(v.Headers) == 0 { v.Headers = nil } }, func(v **Info, c fuzz.Continue) { // Info is never nil *v = &Info{} c.FuzzNoCustom(*v) (*v).Title = c.RandString() + "x" }, func(v *Extensions, c fuzz.Continue) { // gnostic parser only picks up x- vendor extensions numChildren := c.Intn(5) for i := 0; i < numChildren; i++ { if *v == nil { *v = Extensions{} } (*v)["x-"+c.RandString()] = c.RandString() } }, func(v *Swagger, c fuzz.Continue) { c.FuzzNoCustom(v) if v.Paths == nil { // Force paths non-nil since it does not have omitempty in json tag. // This means a perfect roundtrip (via json) is impossible, // since we can't tell the difference between empty/unspecified paths v.Paths = &Paths{} c.Fuzz(v.Paths) } v.Swagger = "2.0" // Gnostic support serializing ID at all // unavoidable data loss v.ID = "" v.Schemes = nil if c.RandUint64()%2 == 1 { v.Schemes = append(v.Schemes, "http") } if c.RandUint64()%2 == 1 { v.Schemes = append(v.Schemes, "https") } if c.RandUint64()%2 == 1 { v.Schemes = append(v.Schemes, "ws") } if c.RandUint64()%2 == 1 { v.Schemes = append(v.Schemes, "wss") } // Gnostic unconditionally makes security values non-null // So do not fuzz null values into the array. for i, val := range v.Security { if val == nil { v.Security[i] = make(map[string][]string) } for k, v := range val { if v == nil { val[k] = make([]string, 0) } } } }, func(v *SecurityScheme, c fuzz.Continue) { v.Description = c.RandString() + "x" c.Fuzz(&v.VendorExtensible) switch c.Intn(3) { case 0: v.Type = "basic" case 1: v.Type = "apiKey" switch c.Intn(2) { case 0: v.In = "header" case 1: v.In = "query" default: panic("unreachable") } v.Name = "x" + c.RandString() case 2: v.Type = "oauth2" switch c.Intn(4) { case 0: v.Flow = "accessCode" v.TokenURL = "https://" + c.RandString() v.AuthorizationURL = "https://" + c.RandString() case 1: v.Flow = "application" v.TokenURL = "https://" + c.RandString() case 2: v.Flow = "implicit" v.AuthorizationURL = "https://" + c.RandString() case 3: v.Flow = "password" v.TokenURL = "https://" + c.RandString() default: panic("unreachable") } c.Fuzz(&v.Scopes) default: panic("unreachable") } }, func(v *interface{}, c fuzz.Continue) { *v = c.RandString() + "x" }, func(v *string, c fuzz.Continue) { *v = c.RandString() + "x" }, func(v *ExternalDocumentation, c fuzz.Continue) { v.Description = c.RandString() + "x" v.URL = c.RandString() + "x" }, func(v *SimpleSchema, c fuzz.Continue) { c.FuzzNoCustom(v) switch c.Intn(5) { case 0: v.Type = "string" case 1: v.Type = "number" case 2: v.Type = "boolean" case 3: v.Type = "integer" case 4: v.Type = "array" default: panic("unreachable") } switch c.Intn(5) { case 0: v.CollectionFormat = "csv" case 1: v.CollectionFormat = "ssv" case 2: v.CollectionFormat = "tsv" case 3: v.CollectionFormat = "pipes" case 4: v.CollectionFormat = "" default: panic("unreachable") } // None of the types which include SimpleSchema in our definitions // actually support "example" in the official spec v.Example = nil // unsupported by openapi v.Nullable = false }, func(v *int64, c fuzz.Continue) { c.Fuzz(v) // Gnostic does not differentiate between 0 and non-specified // so avoid using 0 for fuzzer if *v == 0 { *v = 1 } }, func(v *float64, c fuzz.Continue) { c.Fuzz(v) // Gnostic does not differentiate between 0 and non-specified // so avoid using 0 for fuzzer if *v == 0.0 { *v = 1.0 } }, func(v *Parameter, c fuzz.Continue) { if v == nil { return } c.Fuzz(&v.VendorExtensible) if c.RandBool() { // body param v.Description = c.RandString() + "x" v.Name = c.RandString() + "x" v.In = "body" c.Fuzz(&v.Description) c.Fuzz(&v.Required) v.Schema = &Schema{} c.Fuzz(&v.Schema) } else { c.Fuzz(&v.SimpleSchema) c.Fuzz(&v.CommonValidations) v.AllowEmptyValue = false v.Description = c.RandString() + "x" v.Name = c.RandString() + "x" switch c.Intn(4) { case 0: // Header param v.In = "header" case 1: // Form data param v.In = "formData" v.AllowEmptyValue = c.RandBool() case 2: // Query param v.In = "query" v.AllowEmptyValue = c.RandBool() case 3: // Path param v.In = "path" v.Required = true default: panic("unreachable") } // descendant Items of Parameter may not be refs cur := v.Items for cur != nil { cur.Ref = Ref{} cur = cur.Items } } }, func(v *Schema, c fuzz.Continue) { if c.RandBool() { // file schema c.Fuzz(&v.Default) c.Fuzz(&v.Description) c.Fuzz(&v.Example) c.Fuzz(&v.ExternalDocs) c.Fuzz(&v.Format) c.Fuzz(&v.ReadOnly) c.Fuzz(&v.Required) c.Fuzz(&v.Title) v.Type = StringOrArray{"file"} } else { // normal schema c.Fuzz(&v.SchemaProps) c.Fuzz(&v.SwaggerSchemaProps) c.Fuzz(&v.VendorExtensible) // c.Fuzz(&v.ExtraProps) // ExtraProps will not roundtrip - gnostic throws out // unrecognized keys } // Not supported by official openapi v2 spec // and stripped by k8s apiserver v.ID = "" v.AnyOf = nil v.OneOf = nil v.Not = nil v.Nullable = false v.AdditionalItems = nil v.Schema = "" v.PatternProperties = nil v.Definitions = nil v.Dependencies = nil }, } var SwaggerDiffOptions = []cmp.Option{ // cmp.Diff panics on Ref since jsonreference.Ref uses unexported fields cmp.Comparer(func(a Ref, b Ref) bool { return a.String() == b.String() }), } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/gnostic.go000066400000000000000000001003451453663023200262630ustar00rootroot00000000000000/* Copyright 2022 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec import ( "errors" "strconv" "github.com/go-openapi/jsonreference" openapi_v2 "github.com/google/gnostic-models/openapiv2" ) // Interfaces type GnosticCommonValidations interface { GetMaximum() float64 GetExclusiveMaximum() bool GetMinimum() float64 GetExclusiveMinimum() bool GetMaxLength() int64 GetMinLength() int64 GetPattern() string GetMaxItems() int64 GetMinItems() int64 GetUniqueItems() bool GetMultipleOf() float64 GetEnum() []*openapi_v2.Any } func (k *CommonValidations) FromGnostic(g GnosticCommonValidations) error { if g == nil { return nil } max := g.GetMaximum() if max != 0 { k.Maximum = &max } k.ExclusiveMaximum = g.GetExclusiveMaximum() min := g.GetMinimum() if min != 0 { k.Minimum = &min } k.ExclusiveMinimum = g.GetExclusiveMinimum() maxLen := g.GetMaxLength() if maxLen != 0 { k.MaxLength = &maxLen } minLen := g.GetMinLength() if minLen != 0 { k.MinLength = &minLen } k.Pattern = g.GetPattern() maxItems := g.GetMaxItems() if maxItems != 0 { k.MaxItems = &maxItems } minItems := g.GetMinItems() if minItems != 0 { k.MinItems = &minItems } k.UniqueItems = g.GetUniqueItems() multOf := g.GetMultipleOf() if multOf != 0 { k.MultipleOf = &multOf } enums := g.GetEnum() if enums != nil { k.Enum = make([]interface{}, len(enums)) for i, v := range enums { if v == nil { continue } var convert interface{} if err := v.ToRawInfo().Decode(&convert); err != nil { return err } else { k.Enum[i] = convert } } } return nil } type GnosticSimpleSchema interface { GetType() string GetFormat() string GetItems() *openapi_v2.PrimitivesItems GetCollectionFormat() string GetDefault() *openapi_v2.Any } func (k *SimpleSchema) FromGnostic(g GnosticSimpleSchema) error { if g == nil { return nil } k.Type = g.GetType() k.Format = g.GetFormat() k.CollectionFormat = g.GetCollectionFormat() items := g.GetItems() if items != nil { k.Items = &Items{} if err := k.Items.FromGnostic(items); err != nil { return err } } def := g.GetDefault() if def != nil { var convert interface{} if err := def.ToRawInfo().Decode(&convert); err != nil { return err } else { k.Default = convert } } return nil } func (k *Items) FromGnostic(g *openapi_v2.PrimitivesItems) error { if g == nil { return nil } if err := k.SimpleSchema.FromGnostic(g); err != nil { return err } if err := k.CommonValidations.FromGnostic(g); err != nil { return err } if err := k.VendorExtensible.FromGnostic(g.VendorExtension); err != nil { return err } return nil } func (k *VendorExtensible) FromGnostic(g []*openapi_v2.NamedAny) error { if len(g) == 0 { return nil } k.Extensions = make(Extensions, len(g)) for _, v := range g { if v == nil { continue } if v.Value == nil { k.Extensions[v.Name] = nil continue } var iface interface{} if err := v.Value.ToRawInfo().Decode(&iface); err != nil { return err } else { k.Extensions[v.Name] = iface } } return nil } func (k *Refable) FromGnostic(g string) error { return k.Ref.FromGnostic(g) } func (k *Ref) FromGnostic(g string) error { if g == "" { return nil } ref, err := jsonreference.New(g) if err != nil { return err } *k = Ref{ Ref: ref, } return nil } // Converts a gnostic v2 Document to a kube-openapi Swagger Document // // Caveats: // // - gnostic v2 documents treats zero as unspecified for numerical fields of // CommonValidations fields such as Maximum, Minimum, MaximumItems, etc. // There will always be data loss if one of the values of these fields is set to zero. // // Returns: // // - `ok`: `false` if a value was present in the gnostic document which cannot be // roundtripped into kube-openapi types. In these instances, `ok` is set to // `false` and the value is skipped. // // - `err`: an unexpected error occurred in the conversion from the gnostic type // to kube-openapi type. func (k *Swagger) FromGnostic(g *openapi_v2.Document) (ok bool, err error) { ok = true if g == nil { return true, nil } if err := k.VendorExtensible.FromGnostic(g.VendorExtension); err != nil { return false, err } if nok, err := k.SwaggerProps.FromGnostic(g); err != nil { return false, err } else if !nok { ok = false } return ok, nil } func (k *SwaggerProps) FromGnostic(g *openapi_v2.Document) (ok bool, err error) { if g == nil { return true, nil } ok = true // openapi_v2.Document does not support "ID" field, so it will not be // included k.Consumes = g.Consumes k.Produces = g.Produces k.Schemes = g.Schemes k.Swagger = g.Swagger if g.Info != nil { k.Info = &Info{} if nok, err := k.Info.FromGnostic(g.Info); err != nil { return false, err } else if !nok { ok = false } } k.Host = g.Host k.BasePath = g.BasePath if g.Paths != nil { k.Paths = &Paths{} if nok, err := k.Paths.FromGnostic(g.Paths); err != nil { return false, err } else if !nok { ok = false } } if g.Definitions != nil { k.Definitions = make(Definitions, len(g.Definitions.AdditionalProperties)) for _, v := range g.Definitions.AdditionalProperties { if v == nil { continue } converted := Schema{} if nok, err := converted.FromGnostic(v.Value); err != nil { return false, err } else if !nok { ok = false } k.Definitions[v.Name] = converted } } if g.Parameters != nil { k.Parameters = make( map[string]Parameter, len(g.Parameters.AdditionalProperties)) for _, v := range g.Parameters.AdditionalProperties { if v == nil { continue } p := Parameter{} if nok, err := p.FromGnostic(v.Value); err != nil { return false, err } else if !nok { ok = false } k.Parameters[v.Name] = p } } if g.Responses != nil { k.Responses = make( map[string]Response, len(g.Responses.AdditionalProperties)) for _, v := range g.Responses.AdditionalProperties { if v == nil { continue } p := Response{} if nok, err := p.FromGnostic(v.Value); err != nil { return false, err } else if !nok { ok = false } k.Responses[v.Name] = p } } if g.SecurityDefinitions != nil { k.SecurityDefinitions = make(SecurityDefinitions) if err := k.SecurityDefinitions.FromGnostic(g.SecurityDefinitions); err != nil { return false, err } } if g.Security != nil { k.Security = make([]map[string][]string, len(g.Security)) for i, v := range g.Security { if v == nil || v.AdditionalProperties == nil { continue } k.Security[i] = make(map[string][]string, len(v.AdditionalProperties)) converted := k.Security[i] for _, p := range v.AdditionalProperties { if p == nil { continue } if p.Value != nil { converted[p.Name] = p.Value.Value } else { converted[p.Name] = nil } } } } if g.Tags != nil { k.Tags = make([]Tag, len(g.Tags)) for i, v := range g.Tags { if v == nil { continue } else if nok, err := k.Tags[i].FromGnostic(v); err != nil { return false, err } else if !nok { ok = false } } } if g.ExternalDocs != nil { k.ExternalDocs = &ExternalDocumentation{} if nok, err := k.ExternalDocs.FromGnostic(g.ExternalDocs); err != nil { return false, err } else if !nok { ok = false } } return ok, nil } // Info func (k *Info) FromGnostic(g *openapi_v2.Info) (ok bool, err error) { ok = true if g == nil { return true, nil } if err := k.VendorExtensible.FromGnostic(g.VendorExtension); err != nil { return false, err } if nok, err := k.InfoProps.FromGnostic(g); err != nil { return false, err } else if !nok { ok = false } return ok, nil } func (k *InfoProps) FromGnostic(g *openapi_v2.Info) (ok bool, err error) { if g == nil { return true, nil } ok = true k.Description = g.Description k.Title = g.Title k.TermsOfService = g.TermsOfService if g.Contact != nil { k.Contact = &ContactInfo{} if nok, err := k.Contact.FromGnostic(g.Contact); err != nil { return false, err } else if !nok { ok = false } } if g.License != nil { k.License = &License{} if nok, err := k.License.FromGnostic(g.License); err != nil { return false, err } else if !nok { ok = false } } k.Version = g.Version return ok, nil } func (k *License) FromGnostic(g *openapi_v2.License) (ok bool, err error) { if g == nil { return true, nil } ok = true k.Name = g.Name k.URL = g.Url // License does not embed to VendorExtensible! // data loss from g.VendorExtension if len(g.VendorExtension) != 0 { ok = false } return ok, nil } func (k *ContactInfo) FromGnostic(g *openapi_v2.Contact) (ok bool, err error) { if g == nil { return true, nil } ok = true k.Name = g.Name k.URL = g.Url k.Email = g.Email // ContactInfo does not embed to VendorExtensible! // data loss from g.VendorExtension if len(g.VendorExtension) != 0 { ok = false } return ok, nil } // Paths func (k *Paths) FromGnostic(g *openapi_v2.Paths) (ok bool, err error) { if g == nil { return true, nil } ok = true if g.Path != nil { k.Paths = make(map[string]PathItem, len(g.Path)) for _, v := range g.Path { if v == nil { continue } converted := PathItem{} if nok, err := converted.FromGnostic(v.Value); err != nil { return false, err } else if !nok { ok = false } k.Paths[v.Name] = converted } } if err := k.VendorExtensible.FromGnostic(g.VendorExtension); err != nil { return false, err } return ok, nil } func (k *PathItem) FromGnostic(g *openapi_v2.PathItem) (ok bool, err error) { if g == nil { return true, nil } ok = true if nok, err := k.PathItemProps.FromGnostic(g); err != nil { return false, err } else if !nok { ok = false } if err := k.Refable.FromGnostic(g.XRef); err != nil { return false, err } if err := k.VendorExtensible.FromGnostic(g.VendorExtension); err != nil { return false, err } return ok, nil } func (k *PathItemProps) FromGnostic(g *openapi_v2.PathItem) (ok bool, err error) { if g == nil { return true, nil } ok = true if g.Get != nil { k.Get = &Operation{} if nok, err := k.Get.FromGnostic(g.Get); err != nil { return false, err } else if !nok { ok = false } } if g.Put != nil { k.Put = &Operation{} if nok, err := k.Put.FromGnostic(g.Put); err != nil { return false, err } else if !nok { ok = false } } if g.Post != nil { k.Post = &Operation{} if nok, err := k.Post.FromGnostic(g.Post); err != nil { return false, err } else if !nok { ok = false } } if g.Delete != nil { k.Delete = &Operation{} if nok, err := k.Delete.FromGnostic(g.Delete); err != nil { return false, err } else if !nok { ok = false } } if g.Options != nil { k.Options = &Operation{} if nok, err := k.Options.FromGnostic(g.Options); err != nil { return false, err } else if !nok { ok = false } } if g.Head != nil { k.Head = &Operation{} if nok, err := k.Head.FromGnostic(g.Head); err != nil { return false, err } else if !nok { ok = false } } if g.Patch != nil { k.Patch = &Operation{} if nok, err := k.Patch.FromGnostic(g.Patch); err != nil { return false, err } else if !nok { ok = false } } if g.Parameters != nil { k.Parameters = make([]Parameter, len(g.Parameters)) for i, v := range g.Parameters { if v == nil { continue } else if nok, err := k.Parameters[i].FromGnosticParametersItem(v); err != nil { return false, err } else if !nok { ok = false } } } return ok, nil } func (k *Operation) FromGnostic(g *openapi_v2.Operation) (ok bool, err error) { if g == nil { return true, nil } ok = true if err := k.VendorExtensible.FromGnostic(g.VendorExtension); err != nil { return false, err } if nok, err := k.OperationProps.FromGnostic(g); err != nil { return false, err } else if !nok { ok = false } return ok, nil } func (k *OperationProps) FromGnostic(g *openapi_v2.Operation) (ok bool, err error) { if g == nil { return true, nil } ok = true k.Description = g.Description k.Consumes = g.Consumes k.Produces = g.Produces k.Schemes = g.Schemes k.Tags = g.Tags k.Summary = g.Summary if g.ExternalDocs != nil { k.ExternalDocs = &ExternalDocumentation{} if nok, err := k.ExternalDocs.FromGnostic(g.ExternalDocs); err != nil { return false, err } else if !nok { ok = false } } k.ID = g.OperationId k.Deprecated = g.Deprecated if g.Security != nil { k.Security = make([]map[string][]string, len(g.Security)) for i, v := range g.Security { if v == nil || v.AdditionalProperties == nil { continue } k.Security[i] = make(map[string][]string, len(v.AdditionalProperties)) converted := k.Security[i] for _, p := range v.AdditionalProperties { if p == nil { continue } if p.Value != nil { converted[p.Name] = p.Value.Value } else { converted[p.Name] = nil } } } } if g.Parameters != nil { k.Parameters = make([]Parameter, len(g.Parameters)) for i, v := range g.Parameters { if v == nil { continue } else if nok, err := k.Parameters[i].FromGnosticParametersItem(v); err != nil { return false, err } else if !nok { ok = false } } } if g.Responses != nil { k.Responses = &Responses{} if nok, err := k.Responses.FromGnostic(g.Responses); err != nil { return false, err } else if !nok { ok = false } } return ok, nil } // Responses func (k *Responses) FromGnostic(g *openapi_v2.Responses) (ok bool, err error) { if g == nil { return true, nil } ok = true if err := k.VendorExtensible.FromGnostic(g.VendorExtension); err != nil { return false, err } if nok, err := k.ResponsesProps.FromGnostic(g); err != nil { return false, err } else if !nok { ok = false } return ok, nil } func (k *ResponsesProps) FromGnostic(g *openapi_v2.Responses) (ok bool, err error) { if g == nil { return true, nil } else if g.ResponseCode == nil { return ok, nil } ok = true for _, v := range g.ResponseCode { if v == nil { continue } if v.Name == "default" { k.Default = &Response{} if nok, err := k.Default.FromGnosticResponseValue(v.Value); err != nil { return false, err } else if !nok { ok = false } } else if nk, err := strconv.Atoi(v.Name); err != nil { // This should actually never fail, unless gnostic struct was // manually/purposefully tampered with at runtime. // Gnostic's ParseDocument validates that all StatusCodeResponses // keys adhere to the following regex ^([0-9]{3})$|^(default)$ ok = false } else { if k.StatusCodeResponses == nil { k.StatusCodeResponses = map[int]Response{} } res := Response{} if nok, err := res.FromGnosticResponseValue(v.Value); err != nil { return false, err } else if !nok { ok = false } k.StatusCodeResponses[nk] = res } } return ok, nil } func (k *Response) FromGnostic(g *openapi_v2.Response) (ok bool, err error) { if g == nil { return true, nil } ok = true // Refable case handled in FromGnosticResponseValue if err := k.VendorExtensible.FromGnostic(g.VendorExtension); err != nil { return false, err } if nok, err := k.ResponseProps.FromGnostic(g); err != nil { return false, err } else if !nok { ok = false } return ok, nil } func (k *Response) FromGnosticResponseValue(g *openapi_v2.ResponseValue) (ok bool, err error) { ok = true if ref := g.GetJsonReference(); ref != nil { k.Description = ref.Description if err := k.Refable.FromGnostic(ref.XRef); err != nil { return false, err } } else if nok, err := k.FromGnostic(g.GetResponse()); err != nil { return false, err } else if !nok { ok = false } return ok, nil } func (k *ResponseProps) FromGnostic(g *openapi_v2.Response) (ok bool, err error) { if g == nil { return true, nil } ok = true k.Description = g.Description if g.Schema != nil { k.Schema = &Schema{} if nok, err := k.Schema.FromGnosticSchemaItem(g.Schema); err != nil { return false, err } else if !nok { ok = false } } if g.Headers != nil { k.Headers = make(map[string]Header, len(g.Headers.AdditionalProperties)) for _, v := range g.Headers.AdditionalProperties { if v == nil { continue } converted := Header{} if err := converted.FromGnostic(v.GetValue()); err != nil { return false, err } k.Headers[v.Name] = converted } } if g.Examples != nil { k.Examples = make(map[string]interface{}, len(g.Examples.AdditionalProperties)) for _, v := range g.Examples.AdditionalProperties { if v == nil { continue } else if v.Value == nil { k.Examples[v.Name] = nil continue } var iface interface{} if err := v.Value.ToRawInfo().Decode(&iface); err != nil { return false, err } else { k.Examples[v.Name] = iface } } } return ok, nil } // Header func (k *Header) FromGnostic(g *openapi_v2.Header) (err error) { if g == nil { return nil } if err := k.CommonValidations.FromGnostic(g); err != nil { return err } if err := k.VendorExtensible.FromGnostic(g.VendorExtension); err != nil { return err } if err := k.SimpleSchema.FromGnostic(g); err != nil { return err } if err := k.HeaderProps.FromGnostic(g); err != nil { return err } return nil } func (k *HeaderProps) FromGnostic(g *openapi_v2.Header) error { if g == nil { return nil } // All other fields of openapi_v2.Header are handled by // the embeded fields, commonvalidations, etc. k.Description = g.Description return nil } // Parameters func (k *Parameter) FromGnostic(g *openapi_v2.Parameter) (ok bool, err error) { if g == nil { return true, nil } ok = true switch p := g.Oneof.(type) { case *openapi_v2.Parameter_BodyParameter: if nok, err := k.ParamProps.FromGnostic(p.BodyParameter); err != nil { return false, err } else if !nok { ok = false } if err := k.VendorExtensible.FromGnostic(p.BodyParameter.GetVendorExtension()); err != nil { return false, err } return ok, nil case *openapi_v2.Parameter_NonBodyParameter: switch nb := g.GetNonBodyParameter().Oneof.(type) { case *openapi_v2.NonBodyParameter_HeaderParameterSubSchema: if nok, err := k.ParamProps.FromGnostic(nb.HeaderParameterSubSchema); err != nil { return false, err } else if !nok { ok = false } if err := k.SimpleSchema.FromGnostic(nb.HeaderParameterSubSchema); err != nil { return false, err } if err := k.CommonValidations.FromGnostic(nb.HeaderParameterSubSchema); err != nil { return false, err } if err := k.VendorExtensible.FromGnostic(nb.HeaderParameterSubSchema.GetVendorExtension()); err != nil { return false, err } return ok, nil case *openapi_v2.NonBodyParameter_FormDataParameterSubSchema: if nok, err := k.ParamProps.FromGnostic(nb.FormDataParameterSubSchema); err != nil { return false, err } else if !nok { ok = false } if err := k.SimpleSchema.FromGnostic(nb.FormDataParameterSubSchema); err != nil { return false, err } if err := k.CommonValidations.FromGnostic(nb.FormDataParameterSubSchema); err != nil { return false, err } if err := k.VendorExtensible.FromGnostic(nb.FormDataParameterSubSchema.GetVendorExtension()); err != nil { return false, err } return ok, nil case *openapi_v2.NonBodyParameter_QueryParameterSubSchema: if nok, err := k.ParamProps.FromGnostic(nb.QueryParameterSubSchema); err != nil { return false, err } else if !nok { ok = false } if err := k.SimpleSchema.FromGnostic(nb.QueryParameterSubSchema); err != nil { return false, err } if err := k.CommonValidations.FromGnostic(nb.QueryParameterSubSchema); err != nil { return false, err } if err := k.VendorExtensible.FromGnostic(nb.QueryParameterSubSchema.GetVendorExtension()); err != nil { return false, err } return ok, nil case *openapi_v2.NonBodyParameter_PathParameterSubSchema: if nok, err := k.ParamProps.FromGnostic(nb.PathParameterSubSchema); err != nil { return false, err } else if !nok { ok = false } if err := k.SimpleSchema.FromGnostic(nb.PathParameterSubSchema); err != nil { return false, err } if err := k.CommonValidations.FromGnostic(nb.PathParameterSubSchema); err != nil { return false, err } if err := k.VendorExtensible.FromGnostic(nb.PathParameterSubSchema.GetVendorExtension()); err != nil { return false, err } return ok, nil default: return false, errors.New("unrecognized nonbody type for Parameter") } default: return false, errors.New("unrecognized type for Parameter") } } type GnosticCommonParamProps interface { GetName() string GetRequired() bool GetIn() string GetDescription() string } type GnosticCommonParamPropsBodyParameter interface { GetSchema() *openapi_v2.Schema } type GnosticCommonParamPropsFormData interface { GetAllowEmptyValue() bool } func (k *ParamProps) FromGnostic(g GnosticCommonParamProps) (ok bool, err error) { ok = true k.Description = g.GetDescription() k.In = g.GetIn() k.Name = g.GetName() k.Required = g.GetRequired() if formDataParameter, success := g.(GnosticCommonParamPropsFormData); success { k.AllowEmptyValue = formDataParameter.GetAllowEmptyValue() } if bodyParameter, success := g.(GnosticCommonParamPropsBodyParameter); success { if bodyParameter.GetSchema() != nil { k.Schema = &Schema{} if nok, err := k.Schema.FromGnostic(bodyParameter.GetSchema()); err != nil { return false, err } else if !nok { ok = false } } } return ok, nil } // PB types use a different structure than we do for "refable". For PB, there is // a wrappign oneof type that could be a ref or the type func (k *Parameter) FromGnosticParametersItem(g *openapi_v2.ParametersItem) (ok bool, err error) { if g == nil { return true, nil } ok = true if ref := g.GetJsonReference(); ref != nil { k.Description = ref.Description if err := k.Refable.FromGnostic(ref.XRef); err != nil { return false, err } } else if nok, err := k.FromGnostic(g.GetParameter()); err != nil { return false, err } else if !nok { ok = false } return ok, nil } // Schema func (k *Schema) FromGnostic(g *openapi_v2.Schema) (ok bool, err error) { if g == nil { return true, nil } ok = true if err := k.VendorExtensible.FromGnostic(g.VendorExtension); err != nil { return false, err } // SwaggerSchemaProps k.Discriminator = g.Discriminator k.ReadOnly = g.ReadOnly k.Description = g.Description if g.ExternalDocs != nil { k.ExternalDocs = &ExternalDocumentation{} if nok, err := k.ExternalDocs.FromGnostic(g.ExternalDocs); err != nil { return false, err } else if !nok { ok = false } } if g.Example != nil { if err := g.Example.ToRawInfo().Decode(&k.Example); err != nil { return false, err } } // SchemaProps if err := k.Ref.FromGnostic(g.XRef); err != nil { return false, err } k.Type = g.Type.GetValue() k.Format = g.GetFormat() k.Title = g.GetTitle() // These below fields are not available in gnostic types, so will never // be populated. This means roundtrips which make use of these // (non-official, kube-only) fields will lose information. // // Schema.ID is not available in official spec // Schema.$schema // Schema.Nullable - in openapiv3, not v2 // Schema.AnyOf - in openapiv3, not v2 // Schema.OneOf - in openapiv3, not v2 // Schema.Not - in openapiv3, not v2 // Schema.PatternProperties - in openapiv3, not v2 // Schema.Dependencies - in openapiv3, not v2 // Schema.AdditionalItems // Schema.Definitions - not part of spec // Schema.ExtraProps - gnostic parser rejects any keys it does not recognize if g.GetDefault() != nil { if err := g.GetDefault().ToRawInfo().Decode(&k.Default); err != nil { return false, err } } // These conditionals (!= 0) follow gnostic's logic for ToRawInfo // The keys in gnostic source are only included if nonzero. if g.Maximum != 0.0 { k.Maximum = &g.Maximum } if g.Minimum != 0.0 { k.Minimum = &g.Minimum } k.ExclusiveMaximum = g.ExclusiveMaximum k.ExclusiveMinimum = g.ExclusiveMinimum if g.MaxLength != 0 { k.MaxLength = &g.MaxLength } if g.MinLength != 0 { k.MinLength = &g.MinLength } k.Pattern = g.GetPattern() if g.MaxItems != 0 { k.MaxItems = &g.MaxItems } if g.MinItems != 0 { k.MinItems = &g.MinItems } k.UniqueItems = g.UniqueItems if g.MultipleOf != 0 { k.MultipleOf = &g.MultipleOf } for _, v := range g.GetEnum() { if v == nil { continue } var convert interface{} if err := v.ToRawInfo().Decode(&convert); err != nil { return false, err } k.Enum = append(k.Enum, convert) } if g.MaxProperties != 0 { k.MaxProperties = &g.MaxProperties } if g.MinProperties != 0 { k.MinProperties = &g.MinProperties } k.Required = g.Required if g.GetItems() != nil { k.Items = &SchemaOrArray{} for _, v := range g.Items.GetSchema() { if v == nil { continue } schema := Schema{} if nok, err := schema.FromGnostic(v); err != nil { return false, err } else if !nok { ok = false } k.Items.Schemas = append(k.Items.Schemas, schema) } if len(k.Items.Schemas) == 1 { k.Items.Schema = &k.Items.Schemas[0] k.Items.Schemas = nil } } for i, v := range g.GetAllOf() { if v == nil { continue } k.AllOf = append(k.AllOf, Schema{}) if nok, err := k.AllOf[i].FromGnostic(v); err != nil { return false, err } else if !nok { ok = false } } if g.Properties != nil { k.Properties = make(map[string]Schema) for _, namedSchema := range g.Properties.AdditionalProperties { if namedSchema == nil { continue } val := &Schema{} if nok, err := val.FromGnostic(namedSchema.Value); err != nil { return false, err } else if !nok { ok = false } k.Properties[namedSchema.Name] = *val } } if g.AdditionalProperties != nil { k.AdditionalProperties = &SchemaOrBool{} if g.AdditionalProperties.GetSchema() == nil { k.AdditionalProperties.Allows = g.AdditionalProperties.GetBoolean() } else { k.AdditionalProperties.Schema = &Schema{} k.AdditionalProperties.Allows = true if nok, err := k.AdditionalProperties.Schema.FromGnostic(g.AdditionalProperties.GetSchema()); err != nil { return false, err } else if !nok { ok = false } } } return ok, nil } func (k *Schema) FromGnosticSchemaItem(g *openapi_v2.SchemaItem) (ok bool, err error) { if g == nil { return true, nil } ok = true switch p := g.Oneof.(type) { case *openapi_v2.SchemaItem_FileSchema: fileSchema := p.FileSchema if err := k.VendorExtensible.FromGnostic(fileSchema.VendorExtension); err != nil { return false, err } k.Format = fileSchema.Format k.Title = fileSchema.Title k.Description = fileSchema.Description k.Required = fileSchema.Required k.Type = []string{fileSchema.Type} k.ReadOnly = fileSchema.ReadOnly if fileSchema.ExternalDocs != nil { k.ExternalDocs = &ExternalDocumentation{} if nok, err := k.ExternalDocs.FromGnostic(fileSchema.ExternalDocs); err != nil { return false, err } else if !nok { ok = false } } if fileSchema.Example != nil { if err := fileSchema.Example.ToRawInfo().Decode(&k.Example); err != nil { return false, err } } if fileSchema.Default != nil { if err := fileSchema.Default.ToRawInfo().Decode(&k.Default); err != nil { return false, err } } case *openapi_v2.SchemaItem_Schema: schema := p.Schema if nok, err := k.FromGnostic(schema); err != nil { return false, err } else if !nok { ok = false } default: return false, errors.New("unrecognized type for SchemaItem") } return ok, nil } // SecurityDefinitions func (k SecurityDefinitions) FromGnostic(g *openapi_v2.SecurityDefinitions) error { for _, v := range g.GetAdditionalProperties() { if v == nil { continue } secScheme := &SecurityScheme{} if err := secScheme.FromGnostic(v.Value); err != nil { return err } k[v.Name] = secScheme } return nil } type GnosticCommonSecurityDefinition interface { GetType() string GetDescription() string } func (k *SecuritySchemeProps) FromGnostic(g GnosticCommonSecurityDefinition) error { k.Type = g.GetType() k.Description = g.GetDescription() if hasName, success := g.(interface{ GetName() string }); success { k.Name = hasName.GetName() } if hasIn, success := g.(interface{ GetIn() string }); success { k.In = hasIn.GetIn() } if hasFlow, success := g.(interface{ GetFlow() string }); success { k.Flow = hasFlow.GetFlow() } if hasAuthURL, success := g.(interface{ GetAuthorizationUrl() string }); success { k.AuthorizationURL = hasAuthURL.GetAuthorizationUrl() } if hasTokenURL, success := g.(interface{ GetTokenUrl() string }); success { k.TokenURL = hasTokenURL.GetTokenUrl() } if hasScopes, success := g.(interface { GetScopes() *openapi_v2.Oauth2Scopes }); success { scopes := hasScopes.GetScopes() if scopes != nil { k.Scopes = make(map[string]string, len(scopes.AdditionalProperties)) for _, v := range scopes.AdditionalProperties { if v == nil { continue } k.Scopes[v.Name] = v.Value } } } return nil } func (k *SecurityScheme) FromGnostic(g *openapi_v2.SecurityDefinitionsItem) error { if g == nil { return nil } switch s := g.Oneof.(type) { case *openapi_v2.SecurityDefinitionsItem_ApiKeySecurity: if err := k.SecuritySchemeProps.FromGnostic(s.ApiKeySecurity); err != nil { return err } if err := k.VendorExtensible.FromGnostic(s.ApiKeySecurity.VendorExtension); err != nil { return err } return nil case *openapi_v2.SecurityDefinitionsItem_BasicAuthenticationSecurity: if err := k.SecuritySchemeProps.FromGnostic(s.BasicAuthenticationSecurity); err != nil { return err } if err := k.VendorExtensible.FromGnostic(s.BasicAuthenticationSecurity.VendorExtension); err != nil { return err } return nil case *openapi_v2.SecurityDefinitionsItem_Oauth2AccessCodeSecurity: if err := k.SecuritySchemeProps.FromGnostic(s.Oauth2AccessCodeSecurity); err != nil { return err } if err := k.VendorExtensible.FromGnostic(s.Oauth2AccessCodeSecurity.VendorExtension); err != nil { return err } return nil case *openapi_v2.SecurityDefinitionsItem_Oauth2ApplicationSecurity: if err := k.SecuritySchemeProps.FromGnostic(s.Oauth2ApplicationSecurity); err != nil { return err } if err := k.VendorExtensible.FromGnostic(s.Oauth2ApplicationSecurity.VendorExtension); err != nil { return err } return nil case *openapi_v2.SecurityDefinitionsItem_Oauth2ImplicitSecurity: if err := k.SecuritySchemeProps.FromGnostic(s.Oauth2ImplicitSecurity); err != nil { return err } if err := k.VendorExtensible.FromGnostic(s.Oauth2ImplicitSecurity.VendorExtension); err != nil { return err } return nil case *openapi_v2.SecurityDefinitionsItem_Oauth2PasswordSecurity: if err := k.SecuritySchemeProps.FromGnostic(s.Oauth2PasswordSecurity); err != nil { return err } if err := k.VendorExtensible.FromGnostic(s.Oauth2PasswordSecurity.VendorExtension); err != nil { return err } return nil default: return errors.New("unrecognized SecurityDefinitionsItem") } } // Tag func (k *Tag) FromGnostic(g *openapi_v2.Tag) (ok bool, err error) { if g == nil { return true, nil } ok = true if nok, err := k.TagProps.FromGnostic(g); err != nil { return false, err } else if !nok { ok = false } if err := k.VendorExtensible.FromGnostic(g.VendorExtension); err != nil { return false, err } return ok, nil } func (k *TagProps) FromGnostic(g *openapi_v2.Tag) (ok bool, err error) { if g == nil { return true, nil } ok = true k.Description = g.Description k.Name = g.Name if g.ExternalDocs != nil { k.ExternalDocs = &ExternalDocumentation{} if nok, err := k.ExternalDocs.FromGnostic(g.ExternalDocs); err != nil { return false, err } else if !nok { ok = false } } return ok, nil } // ExternalDocumentation func (k *ExternalDocumentation) FromGnostic(g *openapi_v2.ExternalDocs) (ok bool, err error) { if g == nil { return true, nil } ok = true k.Description = g.Description k.URL = g.Url // data loss! g.VendorExtension if len(g.VendorExtension) != 0 { ok = false } return ok, nil } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/gnostic_test.go000066400000000000000000000400271453663023200273220ustar00rootroot00000000000000/* Copyright 2022 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec_test import ( "encoding/json" "io" "os" "reflect" "testing" "time" "github.com/google/gnostic-models/compiler" openapi_v2 "github.com/google/gnostic-models/openapiv2" "github.com/google/go-cmp/cmp" fuzz "github.com/google/gofuzz" "github.com/stretchr/testify/require" "google.golang.org/protobuf/proto" "gopkg.in/yaml.v3" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" . "k8s.io/kube-openapi/pkg/validation/spec" ) func gnosticCommonTest(t testing.TB, fuzzer *fuzz.Fuzzer) { fuzzer.Funcs( SwaggerFuzzFuncs..., ) expected := Swagger{} fuzzer.Fuzz(&expected) // Convert to gnostic via JSON to compare jsonBytes, err := expected.MarshalJSON() require.NoError(t, err) t.Log("Specimen", string(jsonBytes)) gnosticSpec, err := openapi_v2.ParseDocument(jsonBytes) require.NoError(t, err) actual := Swagger{} ok, err := actual.FromGnostic(gnosticSpec) require.NoError(t, err) require.True(t, ok) if !cmp.Equal(expected, actual, SwaggerDiffOptions...) { t.Fatal(cmp.Diff(expected, actual, SwaggerDiffOptions...)) } newJsonBytes, err := actual.MarshalJSON() require.NoError(t, err) if err := jsontesting.JsonCompare(jsonBytes, newJsonBytes); err != nil { t.Fatal(err) } } func TestGnosticConversionSmallDeterministic(t *testing.T) { gnosticCommonTest( t, fuzz. NewWithSeed(15). NilChance(0.8). MaxDepth(10). NumElements(1, 2), ) } func TestGnosticConversionSmallDeterministic2(t *testing.T) { // A failed case of TestGnosticConversionSmallRandom // which failed during development/testing loop gnosticCommonTest( t, fuzz. NewWithSeed(1646770841). NilChance(0.8). MaxDepth(10). NumElements(1, 2), ) } func TestGnosticConversionSmallDeterministic3(t *testing.T) { // A failed case of TestGnosticConversionSmallRandom // which failed during development/testing loop gnosticCommonTest( t, fuzz. NewWithSeed(1646772024). NilChance(0.8). MaxDepth(10). NumElements(1, 2), ) } func TestGnosticConversionSmallDeterministic4(t *testing.T) { // A failed case of TestGnosticConversionSmallRandom // which failed during development/testing loop gnosticCommonTest( t, fuzz. NewWithSeed(1646791953). NilChance(0.8). MaxDepth(10). NumElements(1, 2), ) } func TestGnosticConversionSmallDeterministic5(t *testing.T) { // A failed case of TestGnosticConversionSmallRandom // which failed during development/testing loop gnosticCommonTest( t, fuzz. NewWithSeed(1646940131). NilChance(0.8). MaxDepth(10). NumElements(1, 2), ) } func TestGnosticConversionSmallDeterministic6(t *testing.T) { // A failed case of TestGnosticConversionSmallRandom // which failed during development/testing loop gnosticCommonTest( t, fuzz. NewWithSeed(1646941926). NilChance(0.8). MaxDepth(10). NumElements(1, 2), ) } func TestGnosticConversionSmallDeterministic7(t *testing.T) { // A failed case of TestGnosticConversionSmallRandom // which failed during development/testing loop // This case did not convert nil/empty array within OperationProps.Security // correctly gnosticCommonTest( t, fuzz. NewWithSeed(1647297721085690000). NilChance(0.8). MaxDepth(10). NumElements(1, 2), ) } func TestGnosticConversionSmallRandom(t *testing.T) { seed := time.Now().UnixNano() t.Log("Using seed: ", seed) fuzzer := fuzz. NewWithSeed(seed). NilChance(0.8). MaxDepth(10). NumElements(1, 2) for i := 0; i <= 50; i++ { gnosticCommonTest( t, fuzzer, ) } } func TestGnosticConversionMediumDeterministic(t *testing.T) { gnosticCommonTest( t, fuzz. NewWithSeed(15). NilChance(0.4). MaxDepth(12). NumElements(3, 5), ) } func TestGnosticConversionLargeDeterministic(t *testing.T) { gnosticCommonTest( t, fuzz. NewWithSeed(15). NilChance(0.1). MaxDepth(15). NumElements(3, 5), ) } func TestGnosticConversionLargeRandom(t *testing.T) { var seed int64 = time.Now().UnixNano() t.Log("Using seed: ", seed) fuzzer := fuzz. NewWithSeed(seed). NilChance(0). MaxDepth(15). NumElements(3, 5) for i := 0; i < 5; i++ { gnosticCommonTest( t, fuzzer, ) } } func BenchmarkGnosticConversion(b *testing.B) { // Download kube-openapi swagger json swagFile, err := os.Open("../../schemaconv/testdata/swagger.json") if err != nil { b.Fatal(err) } defer swagFile.Close() originalJSON, err := io.ReadAll(swagFile) if err != nil { b.Fatal(err) } // Parse into kube-openapi types var result *Swagger b.Run("json->swagger", func(b2 *testing.B) { for i := 0; i < b2.N; i++ { if err := json.Unmarshal(originalJSON, &result); err != nil { b2.Fatal(err) } } }) // Convert to JSON var encodedJSON []byte b.Run("swagger->json", func(b2 *testing.B) { for i := 0; i < b2.N; i++ { encodedJSON, err = json.Marshal(result) if err != nil { b2.Fatal(err) } } }) // Convert to gnostic var originalGnostic *openapi_v2.Document b.Run("json->gnostic", func(b2 *testing.B) { for i := 0; i < b2.N; i++ { originalGnostic, err = openapi_v2.ParseDocument(encodedJSON) if err != nil { b2.Fatal(err) } } }) // Convert to PB var encodedProto []byte b.Run("gnostic->pb", func(b2 *testing.B) { for i := 0; i < b2.N; i++ { encodedProto, err = proto.Marshal(originalGnostic) if err != nil { b2.Fatal(err) } } }) // Convert to gnostic var backToGnostic openapi_v2.Document b.Run("pb->gnostic", func(b2 *testing.B) { for i := 0; i < b2.N; i++ { if err := proto.Unmarshal(encodedProto, &backToGnostic); err != nil { b2.Fatal(err) } } }) for i := 0; i < b.N; i++ { b.Run("gnostic->kube", func(b2 *testing.B) { for i := 0; i < b2.N; i++ { decodedSwagger := &Swagger{} if ok, err := decodedSwagger.FromGnostic(&backToGnostic); err != nil { b2.Fatal(err) } else if !ok { b2.Fatal("conversion lost data") } } }) } } // Ensure all variants of SecurityDefinition are being exercised by tests func TestSecurityDefinitionVariants(t *testing.T) { type TestPattern struct { Name string Pattern string } patterns := []TestPattern{ { Name: "Basic Authentication", Pattern: `{"type": "basic", "description": "cool basic auth"}`, }, { Name: "API Key Query", Pattern: `{"type": "apiKey", "description": "cool api key auth", "in": "query", "name": "coolAuth"}`, }, { Name: "API Key Header", Pattern: `{"type": "apiKey", "description": "cool api key auth", "in": "header", "name": "coolAuth"}`, }, { Name: "OAuth2 Implicit", Pattern: `{"type": "oauth2", "flow": "implicit", "authorizationUrl": "https://google.com", "scopes": {"scope1": "a scope", "scope2": "a scope"}, "description": "cool oauth2 auth"}`, }, { Name: "OAuth2 Password", Pattern: `{"type": "oauth2", "flow": "password", "tokenUrl": "https://google.com", "scopes": {"scope1": "a scope", "scope2": "a scope"}, "description": "cool oauth2 auth"}`, }, { Name: "OAuth2 Application", Pattern: `{"type": "oauth2", "flow": "application", "tokenUrl": "https://google.com", "scopes": {"scope1": "a scope", "scope2": "a scope"}, "description": "cool oauth2 auth"}`, }, { Name: "OAuth2 Access Code", Pattern: `{"type": "oauth2", "flow": "accessCode", "authorizationUrl": "https://google.com", "tokenUrl": "https://google.com", "scopes": {"scope1": "a scope", "scope2": "a scope"}, "description": "cool oauth2 auth"}`, }, } for _, p := range patterns { t.Run(p.Name, func(t *testing.T) { // Parse JSON into yaml var nodes yaml.Node if err := yaml.Unmarshal([]byte(p.Pattern), &nodes); err != nil { t.Error(err) return } else if len(nodes.Content) != 1 { t.Errorf("unexpected yaml parse result") return } root := nodes.Content[0] parsed, err := openapi_v2.NewSecurityDefinitionsItem(root, compiler.NewContextWithExtensions("$root", root, nil, nil)) if err != nil { t.Error(err) return } converted := SecurityScheme{} if err := converted.FromGnostic(parsed); err != nil { t.Error(err) return } // Ensure that the same JSON parsed via kube-openapi gives the same // result var expected SecurityScheme if err := json.Unmarshal([]byte(p.Pattern), &expected); err != nil { t.Error(err) return } else if !reflect.DeepEqual(expected, converted) { t.Errorf("expected equal values: %v", cmp.Diff(expected, converted, SwaggerDiffOptions...)) return } }) } } // Ensure all variants of Parameter are being exercised by tests func TestParamVariants(t *testing.T) { type TestPattern struct { Name string Pattern string } patterns := []TestPattern{ { Name: "Body Parameter", Pattern: `{"in": "body", "name": "myBodyParam", "schema": {}}`, }, { Name: "NonBody Header Parameter", Pattern: `{"in": "header", "name": "myHeaderParam", "description": "a cool parameter", "type": "string", "collectionFormat": "pipes"}`, }, { Name: "NonBody FormData Parameter", Pattern: `{"in": "formData", "name": "myFormDataParam", "description": "a cool parameter", "type": "string", "collectionFormat": "pipes"}`, }, { Name: "NonBody Query Parameter", Pattern: `{"in": "query", "name": "myQueryParam", "description": "a cool parameter", "type": "string", "collectionFormat": "pipes"}`, }, { Name: "NonBody Path Parameter", Pattern: `{"required": true, "in": "path", "name": "myPathParam", "description": "a cool parameter", "type": "string", "collectionFormat": "pipes"}`, }, } for _, p := range patterns { t.Run(p.Name, func(t *testing.T) { // Parse JSON into yaml var nodes yaml.Node if err := yaml.Unmarshal([]byte(p.Pattern), &nodes); err != nil { t.Error(err) return } else if len(nodes.Content) != 1 { t.Errorf("unexpected yaml parse result") return } root := nodes.Content[0] ctx := compiler.NewContextWithExtensions("$root", root, nil, nil) parsed, err := openapi_v2.NewParameter(root, ctx) if err != nil { t.Error(err) return } converted := Parameter{} if ok, err := converted.FromGnostic(parsed); err != nil { t.Error(err) return } else if !ok { t.Errorf("expected no data loss while converting parameter: %v", p.Pattern) return } // Ensure that the same JSON parsed via kube-openapi gives the same // result var expected Parameter if err := json.Unmarshal([]byte(p.Pattern), &expected); err != nil { t.Error(err) return } else if !reflect.DeepEqual(expected, converted) { t.Errorf("expected equal values: %v", cmp.Diff(expected, converted, SwaggerDiffOptions...)) return } }) } } // Test that a few patterns of obvious data loss are detected func TestCommonDataLoss(t *testing.T) { type TestPattern struct { Name string BadInstance string FixedInstance string } patterns := []TestPattern{ { Name: "License with Vendor Extension", BadInstance: `{"swagger": "2.0", "info": {"title": "test", "version": "1.0", "license": {"name": "MIT", "x-hello": "ignored"}}, "paths": {}}`, FixedInstance: `{"swagger": "2.0", "info": {"title": "test", "version": "1.0", "license": {"name": "MIT"}}, "paths": {}}`, }, { Name: "Contact with Vendor Extension", BadInstance: `{"swagger": "2.0", "info": {"title": "test", "version": "1.0", "contact": {"name": "bill", "x-hello": "ignored"}}, "paths": {}}`, FixedInstance: `{"swagger": "2.0", "info": {"title": "test", "version": "1.0", "contact": {"name": "bill"}}, "paths": {}}`, }, { Name: "External Documentation with Vendor Extension", BadInstance: `{"swagger": "2.0", "info": {"title": "test", "version": "1.0", "contact": {"name": "bill", "x-hello": "ignored"}}, "paths": {}}`, FixedInstance: `{"swagger": "2.0", "info": {"title": "test", "version": "1.0", "contact": {"name": "bill"}}, "paths": {}}`, }, } for _, v := range patterns { t.Run(v.Name, func(t *testing.T) { bad, err := openapi_v2.ParseDocument([]byte(v.BadInstance)) if err != nil { t.Error(err) return } fixed, err := openapi_v2.ParseDocument([]byte(v.FixedInstance)) if err != nil { t.Error(err) return } badConverted := Swagger{} if ok, err := badConverted.FromGnostic(bad); err != nil { t.Error(err) return } else if ok { t.Errorf("expected test to have data loss") return } fixedConverted := Swagger{} if ok, err := fixedConverted.FromGnostic(fixed); err != nil { t.Error(err) return } else if !ok { t.Errorf("expected fixed test to not have data loss") return } // Convert JSON directly into our kube-openapi type and check that // it is exactly equal to the converted instance fixedDirect := Swagger{} if err := json.Unmarshal([]byte(v.FixedInstance), &fixedDirect); err != nil { t.Error(err) return } if !reflect.DeepEqual(fixedConverted, badConverted) { t.Errorf("expected equal documents: %v", cmp.Diff(fixedConverted, badConverted, SwaggerDiffOptions...)) return } // Make sure that they were exactly the same, except for the data loss // by checking JSON encodes the some badConvertedJSON, err := badConverted.MarshalJSON() if err != nil { t.Error(err) return } fixedConvertedJSON, err := fixedConverted.MarshalJSON() if err != nil { t.Error(err) return } fixedDirectJSON, err := fixedDirect.MarshalJSON() if err != nil { t.Error(err) return } if !reflect.DeepEqual(badConvertedJSON, fixedConvertedJSON) { t.Errorf("encoded json values for bad and fixed tests are not identical: %v", cmp.Diff(string(badConvertedJSON), string(fixedConvertedJSON))) } if !reflect.DeepEqual(fixedDirectJSON, fixedConvertedJSON) { t.Errorf("encoded json values for fixed direct and fixed-from-gnostic tests are not identical: %v", cmp.Diff(string(fixedDirectJSON), string(fixedConvertedJSON))) } }) } } func TestBadStatusCode(t *testing.T) { const testCase = `{"swagger": "2.0", "info": {"title": "test", "version": "1.0"}, "paths": {"/": {"get": {"responses" : { "default": { "$ref": "#/definitions/a" }, "200": { "$ref": "#/definitions/b" }}}}}}` const dropped = `{"swagger": "2.0", "info": {"title": "test", "version": "1.0"}, "paths": {"/": {"get": {"responses" : { "200": { "$ref": "#/definitions/b" }}}}}}` gnosticInstance, err := openapi_v2.ParseDocument([]byte(testCase)) if err != nil { t.Fatal(err) } droppedGnosticInstance, err := openapi_v2.ParseDocument([]byte(dropped)) if err != nil { t.Fatal(err) } // Manually poke an response code name which gnostic's json parser would not allow gnosticInstance.Paths.Path[0].Value.Get.Responses.ResponseCode[0].Name = "bad" badConverted := Swagger{} droppedConverted := Swagger{} if ok, err := badConverted.FromGnostic(gnosticInstance); err != nil { t.Fatal(err) } else if ok { t.Fatalf("expected data loss converting an operation with a response code 'bad'") } if ok, err := droppedConverted.FromGnostic(droppedGnosticInstance); err != nil { t.Fatal(err) } else if !ok { t.Fatalf("expected no data loss converting a known good operation") } // Make sure that they were exactly the same, except for the data loss // by checking JSON encodes the some badConvertedJSON, err := badConverted.MarshalJSON() if err != nil { t.Error(err) return } droppedConvertedJSON, err := droppedConverted.MarshalJSON() if err != nil { t.Error(err) return } if !reflect.DeepEqual(badConvertedJSON, droppedConvertedJSON) { t.Errorf("encoded json values for bad and fixed tests are not identical: %v", cmp.Diff(string(badConvertedJSON), string(droppedConvertedJSON))) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/header.go000066400000000000000000000060431453663023200260450ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" ) const ( jsonArray = "array" ) // HeaderProps describes a response header type HeaderProps struct { Description string `json:"description,omitempty"` } // Header describes a header for a response of the API // // For more information: http://goo.gl/8us55a#headerObject type Header struct { CommonValidations SimpleSchema VendorExtensible HeaderProps } // MarshalJSON marshal this to JSON func (h Header) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshaling { return internal.DeterministicMarshal(h) } b1, err := json.Marshal(h.CommonValidations) if err != nil { return nil, err } b2, err := json.Marshal(h.SimpleSchema) if err != nil { return nil, err } b3, err := json.Marshal(h.HeaderProps) if err != nil { return nil, err } b4, err := json.Marshal(h.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2, b3, b4), nil } func (h Header) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { CommonValidations commonValidationsOmitZero `json:",inline"` SimpleSchema simpleSchemaOmitZero `json:",inline"` Extensions HeaderProps } x.CommonValidations = commonValidationsOmitZero(h.CommonValidations) x.SimpleSchema = simpleSchemaOmitZero(h.SimpleSchema) x.Extensions = internal.SanitizeExtensions(h.Extensions) x.HeaderProps = h.HeaderProps return opts.MarshalNext(enc, x) } // UnmarshalJSON unmarshals this header from JSON func (h *Header) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshaling { return jsonv2.Unmarshal(data, h) } if err := json.Unmarshal(data, &h.CommonValidations); err != nil { return err } if err := json.Unmarshal(data, &h.SimpleSchema); err != nil { return err } if err := json.Unmarshal(data, &h.VendorExtensible); err != nil { return err } return json.Unmarshal(data, &h.HeaderProps) } func (h *Header) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { CommonValidations SimpleSchema Extensions HeaderProps } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } h.CommonValidations = x.CommonValidations h.SimpleSchema = x.SimpleSchema h.Extensions = internal.SanitizeExtensions(x.Extensions) h.HeaderProps = x.HeaderProps return nil } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/header_test.go000066400000000000000000000102661453663023200271060ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "reflect" "testing" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" ) func float64Ptr(f float64) *float64 { return &f } func int64Ptr(f int64) *int64 { return &f } var header = Header{ VendorExtensible: VendorExtensible{Extensions: map[string]interface{}{ "x-framework": "swagger-go", }}, HeaderProps: HeaderProps{Description: "the description of this header"}, SimpleSchema: SimpleSchema{ Items: &Items{ Refable: Refable{Ref: MustCreateRef("Cat")}, }, Type: "string", Format: "date", Default: "8", }, CommonValidations: CommonValidations{ Maximum: float64Ptr(100), ExclusiveMaximum: true, ExclusiveMinimum: true, Minimum: float64Ptr(5), MaxLength: int64Ptr(100), MinLength: int64Ptr(5), Pattern: "\\w{1,5}\\w+", MaxItems: int64Ptr(100), MinItems: int64Ptr(5), UniqueItems: true, MultipleOf: float64Ptr(5), Enum: []interface{}{"hello", "world"}, }, } const headerJSON = `{ "items": { "$ref": "Cat" }, "x-framework": "swagger-go", "description": "the description of this header", "maximum": 100, "minimum": 5, "exclusiveMaximum": true, "exclusiveMinimum": true, "maxLength": 100, "minLength": 5, "pattern": "\\w{1,5}\\w+", "maxItems": 100, "minItems": 5, "uniqueItems": true, "multipleOf": 5, "enum": ["hello", "world"], "type": "string", "format": "date", "default": "8" }` // cmp.Diff panics when reflecting unexported fields under jsonreference.Ref // a custom comparator is required var swaggerDiffOptions = []cmp.Option{cmp.Comparer(func(a Ref, b Ref) bool { return a.String() == b.String() })} func TestIntegrationHeader(t *testing.T) { var actual Header if assert.NoError(t, json.Unmarshal([]byte(headerJSON), &actual)) { if !reflect.DeepEqual(header, actual) { t.Fatal(cmp.Diff(header, actual, swaggerDiffOptions...)) } } assertParsesJSON(t, headerJSON, header) } // Makes sure that a Header unmarshaled from known good JSON, and one unmarshaled // from generated JSON are equivalent. func TestHeaderSerialization(t *testing.T) { generatedJSON, err := json.Marshal(header) require.NoError(t, err) generatedJSONActual := Header{} require.NoError(t, json.Unmarshal(generatedJSON, &generatedJSONActual)) if !reflect.DeepEqual(header, generatedJSONActual) { t.Fatal(cmp.Diff(header, generatedJSONActual, swaggerDiffOptions...)) } goodJSONActual := Header{} require.NoError(t, json.Unmarshal([]byte(headerJSON), &goodJSONActual)) if !reflect.DeepEqual(header, goodJSONActual) { t.Fatal(cmp.Diff(header, goodJSONActual, swaggerDiffOptions...)) } } func TestHeaderRoundTrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { // Show at least one field from each embededd struct sitll allows // roundtrips successfully Name: "UnmarshalEmbedded", JSON: `{ "pattern": "x-^", "type": "string", "x-framework": "swagger-go", "description": "the description of this header" }`, Object: &Header{ CommonValidations{ Pattern: "x-^", }, SimpleSchema{ Type: "string", }, VendorExtensible{Extensions{ "x-framework": "swagger-go", }}, HeaderProps{ Description: "the description of this header", }, }, }, { Name: "BasicCase", JSON: headerJSON, Object: &header, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&Header{})) }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/info.go000066400000000000000000000130471453663023200255520ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "strings" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" ) // Extensions vendor specific extensions type Extensions map[string]interface{} // Add adds a value to these extensions func (e Extensions) Add(key string, value interface{}) { realKey := strings.ToLower(key) e[realKey] = value } // GetString gets a string value from the extensions func (e Extensions) GetString(key string) (string, bool) { if v, ok := e[strings.ToLower(key)]; ok { str, ok := v.(string) return str, ok } return "", false } // GetBool gets a string value from the extensions func (e Extensions) GetBool(key string) (bool, bool) { if v, ok := e[strings.ToLower(key)]; ok { str, ok := v.(bool) return str, ok } return false, false } // GetStringSlice gets a string value from the extensions func (e Extensions) GetStringSlice(key string) ([]string, bool) { if v, ok := e[strings.ToLower(key)]; ok { arr, isSlice := v.([]interface{}) if !isSlice { return nil, false } var strs []string for _, iface := range arr { str, isString := iface.(string) if !isString { return nil, false } strs = append(strs, str) } return strs, ok } return nil, false } // GetObject gets the object value from the extensions. // out must be a json serializable type; the json go struct // tags of out are used to populate it. func (e Extensions) GetObject(key string, out interface{}) error { // This json serialization/deserialization could be replaced with // an approach using reflection if the optimization becomes justified. if v, ok := e[strings.ToLower(key)]; ok { b, err := json.Marshal(v) if err != nil { return err } err = json.Unmarshal(b, out) if err != nil { return err } } return nil } func (e Extensions) sanitizeWithExtra() (extra map[string]any) { for k, v := range e { if !internal.IsExtensionKey(k) { if extra == nil { extra = make(map[string]any) } extra[k] = v delete(e, k) } } return extra } // VendorExtensible composition block. type VendorExtensible struct { Extensions Extensions } // AddExtension adds an extension to this extensible object func (v *VendorExtensible) AddExtension(key string, value interface{}) { if value == nil { return } if v.Extensions == nil { v.Extensions = make(map[string]interface{}) } v.Extensions.Add(key, value) } // MarshalJSON marshals the extensions to json func (v VendorExtensible) MarshalJSON() ([]byte, error) { toser := make(map[string]interface{}) for k, v := range v.Extensions { lk := strings.ToLower(k) if strings.HasPrefix(lk, "x-") { toser[k] = v } } return json.Marshal(toser) } // UnmarshalJSON for this extensible object func (v *VendorExtensible) UnmarshalJSON(data []byte) error { var d map[string]interface{} if err := json.Unmarshal(data, &d); err != nil { return err } for k, vv := range d { lk := strings.ToLower(k) if strings.HasPrefix(lk, "x-") { if v.Extensions == nil { v.Extensions = map[string]interface{}{} } v.Extensions[k] = vv } } return nil } // InfoProps the properties for an info definition type InfoProps struct { Description string `json:"description,omitempty"` Title string `json:"title,omitempty"` TermsOfService string `json:"termsOfService,omitempty"` Contact *ContactInfo `json:"contact,omitempty"` License *License `json:"license,omitempty"` Version string `json:"version,omitempty"` } // Info object provides metadata about the API. // The metadata can be used by the clients if needed, and can be presented in the Swagger-UI for convenience. // // For more information: http://goo.gl/8us55a#infoObject type Info struct { VendorExtensible InfoProps } // MarshalJSON marshal this to JSON func (i Info) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshaling { return internal.DeterministicMarshal(i) } b1, err := json.Marshal(i.InfoProps) if err != nil { return nil, err } b2, err := json.Marshal(i.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2), nil } func (i Info) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { Extensions InfoProps } x.Extensions = i.Extensions x.InfoProps = i.InfoProps return opts.MarshalNext(enc, x) } // UnmarshalJSON marshal this from JSON func (i *Info) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshaling { return jsonv2.Unmarshal(data, i) } if err := json.Unmarshal(data, &i.InfoProps); err != nil { return err } return json.Unmarshal(data, &i.VendorExtensible) } func (i *Info) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { Extensions InfoProps } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } i.Extensions = internal.SanitizeExtensions(x.Extensions) i.InfoProps = x.InfoProps return nil } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/info_test.go000066400000000000000000000056361453663023200266160ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" ) const infoJSON = `{ "description": "A sample API that uses a petstore as an example to demonstrate features in ` + `the swagger-2.0 specification", "title": "Swagger Sample API", "termsOfService": "http://helloreverb.com/terms/", "contact": { "name": "wordnik api team", "url": "http://developer.wordnik.com" }, "license": { "name": "Creative Commons 4.0 International", "url": "http://creativecommons.org/licenses/by/4.0/" }, "version": "1.0.9-abcd", "x-framework": "go-swagger" }` var info = Info{ InfoProps: InfoProps{ Version: "1.0.9-abcd", Title: "Swagger Sample API", Description: "A sample API that uses a petstore as an example to demonstrate features in " + "the swagger-2.0 specification", TermsOfService: "http://helloreverb.com/terms/", Contact: &ContactInfo{Name: "wordnik api team", URL: "http://developer.wordnik.com"}, License: &License{ Name: "Creative Commons 4.0 International", URL: "http://creativecommons.org/licenses/by/4.0/", }, }, VendorExtensible: VendorExtensible{Extensions: map[string]interface{}{"x-framework": "go-swagger"}}, } func TestIntegrationInfo_Serialize(t *testing.T) { b, err := json.MarshalIndent(info, "", "\t") if assert.NoError(t, err) { assert.Equal(t, infoJSON, string(b)) } } func TestIntegrationInfo_Deserialize(t *testing.T) { actual := Info{} err := json.Unmarshal([]byte(infoJSON), &actual) if assert.NoError(t, err) { assert.EqualValues(t, info, actual) } } func TestInfoRoundTrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { // Show at least one field from each embededd struct sitll allows // roundtrips successfully Name: "UnmarshalEmbedded", JSON: `{ "x-framework": "swagger-go", "description": "the description of this object" }`, Object: &Info{ VendorExtensible{Extensions{ "x-framework": "swagger-go", }}, InfoProps{ Description: "the description of this object", }, }, }, { Name: "BasicCase", JSON: infoJSON, Object: &info, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&Info{})) }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/items.go000066400000000000000000000140621453663023200257360ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" ) const ( jsonRef = "$ref" ) // SimpleSchema describe swagger simple schemas for parameters and headers type SimpleSchema struct { Type string `json:"type,omitempty"` Nullable bool `json:"nullable,omitempty"` Format string `json:"format,omitempty"` Items *Items `json:"items,omitempty"` CollectionFormat string `json:"collectionFormat,omitempty"` Default interface{} `json:"default,omitempty"` Example interface{} `json:"example,omitempty"` } // Marshaling structure only, always edit along with corresponding // struct (or compilation will fail). type simpleSchemaOmitZero struct { Type string `json:"type,omitempty"` Nullable bool `json:"nullable,omitzero"` Format string `json:"format,omitempty"` Items *Items `json:"items,omitzero"` CollectionFormat string `json:"collectionFormat,omitempty"` Default interface{} `json:"default,omitempty"` Example interface{} `json:"example,omitempty"` } // CommonValidations describe common JSON-schema validations type CommonValidations struct { Maximum *float64 `json:"maximum,omitempty"` ExclusiveMaximum bool `json:"exclusiveMaximum,omitempty"` Minimum *float64 `json:"minimum,omitempty"` ExclusiveMinimum bool `json:"exclusiveMinimum,omitempty"` MaxLength *int64 `json:"maxLength,omitempty"` MinLength *int64 `json:"minLength,omitempty"` Pattern string `json:"pattern,omitempty"` MaxItems *int64 `json:"maxItems,omitempty"` MinItems *int64 `json:"minItems,omitempty"` UniqueItems bool `json:"uniqueItems,omitempty"` MultipleOf *float64 `json:"multipleOf,omitempty"` Enum []interface{} `json:"enum,omitempty"` } // Marshaling structure only, always edit along with corresponding // struct (or compilation will fail). type commonValidationsOmitZero struct { Maximum *float64 `json:"maximum,omitempty"` ExclusiveMaximum bool `json:"exclusiveMaximum,omitzero"` Minimum *float64 `json:"minimum,omitempty"` ExclusiveMinimum bool `json:"exclusiveMinimum,omitzero"` MaxLength *int64 `json:"maxLength,omitempty"` MinLength *int64 `json:"minLength,omitempty"` Pattern string `json:"pattern,omitempty"` MaxItems *int64 `json:"maxItems,omitempty"` MinItems *int64 `json:"minItems,omitempty"` UniqueItems bool `json:"uniqueItems,omitzero"` MultipleOf *float64 `json:"multipleOf,omitempty"` Enum []interface{} `json:"enum,omitempty"` } // Items a limited subset of JSON-Schema's items object. // It is used by parameter definitions that are not located in "body". // // For more information: http://goo.gl/8us55a#items-object type Items struct { Refable CommonValidations SimpleSchema VendorExtensible } // UnmarshalJSON hydrates this items instance with the data from JSON func (i *Items) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshaling { return jsonv2.Unmarshal(data, i) } var validations CommonValidations if err := json.Unmarshal(data, &validations); err != nil { return err } var ref Refable if err := json.Unmarshal(data, &ref); err != nil { return err } var simpleSchema SimpleSchema if err := json.Unmarshal(data, &simpleSchema); err != nil { return err } var vendorExtensible VendorExtensible if err := json.Unmarshal(data, &vendorExtensible); err != nil { return err } i.Refable = ref i.CommonValidations = validations i.SimpleSchema = simpleSchema i.VendorExtensible = vendorExtensible return nil } func (i *Items) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { CommonValidations SimpleSchema Extensions } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } if err := i.Refable.Ref.fromMap(x.Extensions); err != nil { return err } i.CommonValidations = x.CommonValidations i.SimpleSchema = x.SimpleSchema i.Extensions = internal.SanitizeExtensions(x.Extensions) return nil } // MarshalJSON converts this items object to JSON func (i Items) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshaling { return internal.DeterministicMarshal(i) } b1, err := json.Marshal(i.CommonValidations) if err != nil { return nil, err } b2, err := json.Marshal(i.SimpleSchema) if err != nil { return nil, err } b3, err := json.Marshal(i.Refable) if err != nil { return nil, err } b4, err := json.Marshal(i.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b4, b3, b1, b2), nil } func (i Items) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { CommonValidations commonValidationsOmitZero `json:",inline"` SimpleSchema simpleSchemaOmitZero `json:",inline"` Ref string `json:"$ref,omitempty"` Extensions } x.CommonValidations = commonValidationsOmitZero(i.CommonValidations) x.SimpleSchema = simpleSchemaOmitZero(i.SimpleSchema) x.Ref = i.Refable.Ref.String() x.Extensions = internal.SanitizeExtensions(i.Extensions) return opts.MarshalNext(enc, x) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/items_test.go000066400000000000000000000056231453663023200270000ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" ) var items = Items{ Refable: Refable{Ref: MustCreateRef("Dog")}, CommonValidations: CommonValidations{ Maximum: float64Ptr(100), ExclusiveMaximum: true, ExclusiveMinimum: true, Minimum: float64Ptr(5), MaxLength: int64Ptr(100), MinLength: int64Ptr(5), Pattern: "\\w{1,5}\\w+", MaxItems: int64Ptr(100), MinItems: int64Ptr(5), UniqueItems: true, MultipleOf: float64Ptr(5), Enum: []interface{}{"hello", "world"}, }, SimpleSchema: SimpleSchema{ Type: "string", Format: "date", Items: &Items{ Refable: Refable{Ref: MustCreateRef("Cat")}, }, CollectionFormat: "csv", Default: "8", }, } const itemsJSON = `{ "items": { "$ref": "Cat" }, "$ref": "Dog", "maximum": 100, "minimum": 5, "exclusiveMaximum": true, "exclusiveMinimum": true, "maxLength": 100, "minLength": 5, "pattern": "\\w{1,5}\\w+", "maxItems": 100, "minItems": 5, "uniqueItems": true, "multipleOf": 5, "enum": ["hello", "world"], "type": "string", "format": "date", "collectionFormat": "csv", "default": "8" }` func TestIntegrationItems(t *testing.T) { var actual Items if assert.NoError(t, json.Unmarshal([]byte(itemsJSON), &actual)) { assert.EqualValues(t, actual, items) } assertParsesJSON(t, itemsJSON, items) } func TestItemsRoundTrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { // Show at least one field from each embededd struct sitll allows // roundtrips successfully Name: "UnmarshalEmbedded", JSON: `{ "$ref": "/components/my.cool.Schema", "pattern": "x-^", "type": "string", "x-framework": "swagger-go" }`, Object: &Items{ Refable{MustCreateRef("/components/my.cool.Schema")}, CommonValidations{ Pattern: "x-^", }, SimpleSchema{ Type: "string", }, VendorExtensible{Extensions{ "x-framework": "swagger-go", }}, }, }, { Name: "BasicCase", JSON: itemsJSON, Object: &items, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&Items{})) }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/license.go000066400000000000000000000014611453663023200262360ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec // License information for the exposed API. // // For more information: http://goo.gl/8us55a#licenseObject type License struct { Name string `json:"name,omitempty"` URL string `json:"url,omitempty"` } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/license_test.go000066400000000000000000000016461453663023200273020ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import "testing" func TestIntegrationLicense(t *testing.T) { license := License{Name: "the name", URL: "the url"} const licenseJSON = `{"name":"the name","url":"the url"}` const licenseYAML = "name: the name\nurl: the url\n" assertSerializeJSON(t, license, licenseJSON) assertParsesJSON(t, licenseJSON, license) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/operation.go000066400000000000000000000120401453663023200266070ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" ) // OperationProps describes an operation // // NOTES: // - schemes, when present must be from [http, https, ws, wss]: see validate // - Security is handled as a special case: see MarshalJSON function type OperationProps struct { Description string `json:"description,omitempty"` Consumes []string `json:"consumes,omitempty"` Produces []string `json:"produces,omitempty"` Schemes []string `json:"schemes,omitempty"` Tags []string `json:"tags,omitempty"` Summary string `json:"summary,omitempty"` ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"` ID string `json:"operationId,omitempty"` Deprecated bool `json:"deprecated,omitempty"` Security []map[string][]string `json:"security,omitempty"` Parameters []Parameter `json:"parameters,omitempty"` Responses *Responses `json:"responses,omitempty"` } // Marshaling structure only, always edit along with corresponding // struct (or compilation will fail). type operationPropsOmitZero struct { Description string `json:"description,omitempty"` Consumes []string `json:"consumes,omitempty"` Produces []string `json:"produces,omitempty"` Schemes []string `json:"schemes,omitempty"` Tags []string `json:"tags,omitempty"` Summary string `json:"summary,omitempty"` ExternalDocs *ExternalDocumentation `json:"externalDocs,omitzero"` ID string `json:"operationId,omitempty"` Deprecated bool `json:"deprecated,omitempty,omitzero"` Security []map[string][]string `json:"security,omitempty"` Parameters []Parameter `json:"parameters,omitempty"` Responses *Responses `json:"responses,omitzero"` } // MarshalJSON takes care of serializing operation properties to JSON // // We use a custom marhaller here to handle a special cases related to // the Security field. We need to preserve zero length slice // while omitting the field when the value is nil/unset. func (op OperationProps) MarshalJSON() ([]byte, error) { type Alias OperationProps if op.Security == nil { return json.Marshal(&struct { Security []map[string][]string `json:"security,omitempty"` *Alias }{ Security: op.Security, Alias: (*Alias)(&op), }) } return json.Marshal(&struct { Security []map[string][]string `json:"security"` *Alias }{ Security: op.Security, Alias: (*Alias)(&op), }) } // Operation describes a single API operation on a path. // // For more information: http://goo.gl/8us55a#operationObject type Operation struct { VendorExtensible OperationProps } // UnmarshalJSON hydrates this items instance with the data from JSON func (o *Operation) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshaling { return jsonv2.Unmarshal(data, o) } if err := json.Unmarshal(data, &o.OperationProps); err != nil { return err } return json.Unmarshal(data, &o.VendorExtensible) } func (o *Operation) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { type OperationPropsNoMethods OperationProps // strip MarshalJSON method var x struct { Extensions OperationPropsNoMethods } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } o.Extensions = internal.SanitizeExtensions(x.Extensions) o.OperationProps = OperationProps(x.OperationPropsNoMethods) return nil } // MarshalJSON converts this items object to JSON func (o Operation) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshaling { return internal.DeterministicMarshal(o) } b1, err := json.Marshal(o.OperationProps) if err != nil { return nil, err } b2, err := json.Marshal(o.VendorExtensible) if err != nil { return nil, err } concated := swag.ConcatJSON(b1, b2) return concated, nil } func (o Operation) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { Extensions OperationProps operationPropsOmitZero `json:",inline"` } x.Extensions = internal.SanitizeExtensions(o.Extensions) x.OperationProps = operationPropsOmitZero(o.OperationProps) return opts.MarshalNext(enc, x) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/operation_test.go000066400000000000000000000060271453663023200276560ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" ) var operation = Operation{ VendorExtensible: VendorExtensible{ Extensions: map[string]interface{}{ "x-framework": "go-swagger", }, }, OperationProps: OperationProps{ Description: "operation description", Consumes: []string{"application/json", "application/x-yaml"}, Produces: []string{"application/json", "application/x-yaml"}, Schemes: []string{"http", "https"}, Tags: []string{"dogs"}, Summary: "the summary of the operation", ID: "sendCat", Deprecated: true, Security: []map[string][]string{ { "apiKey": {}, }, }, Parameters: []Parameter{ {Refable: Refable{Ref: MustCreateRef("Cat")}}, }, Responses: &Responses{ ResponsesProps: ResponsesProps{ Default: &Response{ ResponseProps: ResponseProps{ Description: "void response", }, }, }, }, }, } const operationJSON = `{ "description": "operation description", "x-framework": "go-swagger", "consumes": [ "application/json", "application/x-yaml" ], "produces": [ "application/json", "application/x-yaml" ], "schemes": ["http", "https"], "tags": ["dogs"], "summary": "the summary of the operation", "operationId": "sendCat", "deprecated": true, "security": [ { "apiKey": [] } ], "parameters": [{"$ref":"Cat"}], "responses": { "default": { "description": "void response" } } }` func TestIntegrationOperation(t *testing.T) { var actual Operation if assert.NoError(t, json.Unmarshal([]byte(operationJSON), &actual)) { assert.EqualValues(t, actual, operation) } assertParsesJSON(t, operationJSON, operation) } func TestOperationRoundtrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { // Show at least one field from each embededd struct sitll allows // roundtrips successfully Name: "UnmarshalEmbedded", JSON: `{ "description": "a cool description", "x-framework": "swagger-go" }`, Object: &Operation{ VendorExtensible{Extensions{ "x-framework": "swagger-go", }}, OperationProps{ Description: "a cool description", }, }, }, { Name: "BasicCase", JSON: operationJSON, Object: &operation, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&Operation{})) }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/parameter.go000066400000000000000000000147001453663023200265740ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" ) // ParamProps describes the specific attributes of an operation parameter // // NOTE: // - Schema is defined when "in" == "body": see validate // - AllowEmptyValue is allowed where "in" == "query" || "formData" type ParamProps struct { Description string `json:"description,omitempty"` Name string `json:"name,omitempty"` In string `json:"in,omitempty"` Required bool `json:"required,omitempty"` Schema *Schema `json:"schema,omitempty"` AllowEmptyValue bool `json:"allowEmptyValue,omitempty"` } // Marshaling structure only, always edit along with corresponding // struct (or compilation will fail). type paramPropsOmitZero struct { Description string `json:"description,omitempty"` Name string `json:"name,omitempty"` In string `json:"in,omitempty"` Required bool `json:"required,omitzero"` Schema *Schema `json:"schema,omitzero"` AllowEmptyValue bool `json:"allowEmptyValue,omitzero"` } // Parameter a unique parameter is defined by a combination of a [name](#parameterName) and [location](#parameterIn). // // There are five possible parameter types. // * Path - Used together with [Path Templating](#pathTemplating), where the parameter value is actually part // // of the operation's URL. This does not include the host or base path of the API. For example, in `/items/{itemId}`, // the path parameter is `itemId`. // // * Query - Parameters that are appended to the URL. For example, in `/items?id=###`, the query parameter is `id`. // * Header - Custom headers that are expected as part of the request. // * Body - The payload that's appended to the HTTP request. Since there can only be one payload, there can only be // // _one_ body parameter. The name of the body parameter has no effect on the parameter itself and is used for // documentation purposes only. Since Form parameters are also in the payload, body and form parameters cannot exist // together for the same operation. // // * Form - Used to describe the payload of an HTTP request when either `application/x-www-form-urlencoded` or // // `multipart/form-data` are used as the content type of the request (in Swagger's definition, // the [`consumes`](#operationConsumes) property of an operation). This is the only parameter type that can be used // to send files, thus supporting the `file` type. Since form parameters are sent in the payload, they cannot be // declared together with a body parameter for the same operation. Form parameters have a different format based on // the content-type used (for further details, consult http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4). // * `application/x-www-form-urlencoded` - Similar to the format of Query parameters but as a payload. // For example, `foo=1&bar=swagger` - both `foo` and `bar` are form parameters. This is normally used for simple // parameters that are being transferred. // * `multipart/form-data` - each parameter takes a section in the payload with an internal header. // For example, for the header `Content-Disposition: form-data; name="submit-name"` the name of the parameter is // `submit-name`. This type of form parameters is more commonly used for file transfers. // // For more information: http://goo.gl/8us55a#parameterObject type Parameter struct { Refable CommonValidations SimpleSchema VendorExtensible ParamProps } // UnmarshalJSON hydrates this items instance with the data from JSON func (p *Parameter) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshaling { return jsonv2.Unmarshal(data, p) } if err := json.Unmarshal(data, &p.CommonValidations); err != nil { return err } if err := json.Unmarshal(data, &p.Refable); err != nil { return err } if err := json.Unmarshal(data, &p.SimpleSchema); err != nil { return err } if err := json.Unmarshal(data, &p.VendorExtensible); err != nil { return err } return json.Unmarshal(data, &p.ParamProps) } func (p *Parameter) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { CommonValidations SimpleSchema Extensions ParamProps } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } if err := p.Refable.Ref.fromMap(x.Extensions); err != nil { return err } p.CommonValidations = x.CommonValidations p.SimpleSchema = x.SimpleSchema p.Extensions = internal.SanitizeExtensions(x.Extensions) p.ParamProps = x.ParamProps return nil } // MarshalJSON converts this items object to JSON func (p Parameter) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshaling { return internal.DeterministicMarshal(p) } b1, err := json.Marshal(p.CommonValidations) if err != nil { return nil, err } b2, err := json.Marshal(p.SimpleSchema) if err != nil { return nil, err } b3, err := json.Marshal(p.Refable) if err != nil { return nil, err } b4, err := json.Marshal(p.VendorExtensible) if err != nil { return nil, err } b5, err := json.Marshal(p.ParamProps) if err != nil { return nil, err } return swag.ConcatJSON(b3, b1, b2, b4, b5), nil } func (p Parameter) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { CommonValidations commonValidationsOmitZero `json:",inline"` SimpleSchema simpleSchemaOmitZero `json:",inline"` ParamProps paramPropsOmitZero `json:",inline"` Ref string `json:"$ref,omitempty"` Extensions } x.CommonValidations = commonValidationsOmitZero(p.CommonValidations) x.SimpleSchema = simpleSchemaOmitZero(p.SimpleSchema) x.Extensions = internal.SanitizeExtensions(p.Extensions) x.ParamProps = paramPropsOmitZero(p.ParamProps) x.Ref = p.Refable.Ref.String() return opts.MarshalNext(enc, x) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/parameters_test.go000066400000000000000000000071471453663023200300250ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" ) var parameter = Parameter{ VendorExtensible: VendorExtensible{Extensions: map[string]interface{}{ "x-framework": "swagger-go", }}, Refable: Refable{Ref: MustCreateRef("Dog")}, CommonValidations: CommonValidations{ Maximum: float64Ptr(100), ExclusiveMaximum: true, ExclusiveMinimum: true, Minimum: float64Ptr(5), MaxLength: int64Ptr(100), MinLength: int64Ptr(5), Pattern: "\\w{1,5}\\w+", MaxItems: int64Ptr(100), MinItems: int64Ptr(5), UniqueItems: true, MultipleOf: float64Ptr(5), Enum: []interface{}{"hello", "world"}, }, SimpleSchema: SimpleSchema{ Type: "string", Format: "date", CollectionFormat: "csv", Items: &Items{ Refable: Refable{Ref: MustCreateRef("Cat")}, }, Default: "8", }, ParamProps: ParamProps{ Name: "param-name", In: "header", Required: true, Schema: &Schema{SchemaProps: SchemaProps{Type: []string{"string"}}}, Description: "the description of this parameter", }, } var parameterJSON = `{ "items": { "$ref": "Cat" }, "x-framework": "swagger-go", "$ref": "Dog", "description": "the description of this parameter", "maximum": 100, "minimum": 5, "exclusiveMaximum": true, "exclusiveMinimum": true, "maxLength": 100, "minLength": 5, "pattern": "\\w{1,5}\\w+", "maxItems": 100, "minItems": 5, "uniqueItems": true, "multipleOf": 5, "enum": ["hello", "world"], "type": "string", "format": "date", "name": "param-name", "in": "header", "required": true, "schema": { "type": "string" }, "collectionFormat": "csv", "default": "8" }` func TestIntegrationParameter(t *testing.T) { var actual Parameter if assert.NoError(t, json.Unmarshal([]byte(parameterJSON), &actual)) { assert.EqualValues(t, actual, parameter) } assertParsesJSON(t, parameterJSON, parameter) } func TestParameterRoundtrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { // Show at least one field from each embededd struct sitll allows // roundtrips successfully Name: "UnmarshalEmbedded", JSON: `{ "$ref": "/components/ref/to/something.foo", "maxLength": 100, "type": "string", "x-framework": "swagger-go", "description": "a really cool description" }`, Object: &Parameter{ Refable{MustCreateRef("/components/ref/to/something.foo")}, CommonValidations{ MaxLength: int64Ptr(100), }, SimpleSchema{ Type: "string", }, VendorExtensible{Extensions{ "x-framework": "swagger-go", }}, ParamProps{ Description: "a really cool description", }, }, }, { Name: "BasicCase", JSON: parameterJSON, Object: ¶meter, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&Parameter{})) }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/path_item.go000066400000000000000000000064051453663023200265710ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" ) // PathItemProps the path item specific properties type PathItemProps struct { Get *Operation `json:"get,omitempty"` Put *Operation `json:"put,omitempty"` Post *Operation `json:"post,omitempty"` Delete *Operation `json:"delete,omitempty"` Options *Operation `json:"options,omitempty"` Head *Operation `json:"head,omitempty"` Patch *Operation `json:"patch,omitempty"` Parameters []Parameter `json:"parameters,omitempty"` } // PathItem describes the operations available on a single path. // A Path Item may be empty, due to [ACL constraints](http://goo.gl/8us55a#securityFiltering). // The path itself is still exposed to the documentation viewer but they will // not know which operations and parameters are available. // // For more information: http://goo.gl/8us55a#pathItemObject type PathItem struct { Refable VendorExtensible PathItemProps } // UnmarshalJSON hydrates this items instance with the data from JSON func (p *PathItem) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshaling { return jsonv2.Unmarshal(data, p) } if err := json.Unmarshal(data, &p.Refable); err != nil { return err } if err := json.Unmarshal(data, &p.VendorExtensible); err != nil { return err } return json.Unmarshal(data, &p.PathItemProps) } func (p *PathItem) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { Extensions PathItemProps } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } if err := p.Refable.Ref.fromMap(x.Extensions); err != nil { return err } p.Extensions = internal.SanitizeExtensions(x.Extensions) p.PathItemProps = x.PathItemProps return nil } // MarshalJSON converts this items object to JSON func (p PathItem) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshaling { return internal.DeterministicMarshal(p) } b3, err := json.Marshal(p.Refable) if err != nil { return nil, err } b4, err := json.Marshal(p.VendorExtensible) if err != nil { return nil, err } b5, err := json.Marshal(p.PathItemProps) if err != nil { return nil, err } concated := swag.ConcatJSON(b3, b4, b5) return concated, nil } func (p PathItem) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { Ref string `json:"$ref,omitempty"` Extensions PathItemProps } x.Ref = p.Refable.Ref.String() x.Extensions = internal.SanitizeExtensions(p.Extensions) x.PathItemProps = p.PathItemProps return opts.MarshalNext(enc, x) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/path_item_test.go000066400000000000000000000065521453663023200276330ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" ) var pathItem = PathItem{ Refable: Refable{Ref: MustCreateRef("Dog")}, VendorExtensible: VendorExtensible{ Extensions: map[string]interface{}{ "x-framework": "go-swagger", }, }, PathItemProps: PathItemProps{ Get: &Operation{ OperationProps: OperationProps{Description: "get operation description"}, }, Put: &Operation{ OperationProps: OperationProps{Description: "put operation description"}, }, Post: &Operation{ OperationProps: OperationProps{Description: "post operation description"}, }, Delete: &Operation{ OperationProps: OperationProps{Description: "delete operation description"}, }, Options: &Operation{ OperationProps: OperationProps{Description: "options operation description"}, }, Head: &Operation{ OperationProps: OperationProps{Description: "head operation description"}, }, Patch: &Operation{ OperationProps: OperationProps{Description: "patch operation description"}, }, Parameters: []Parameter{ { ParamProps: ParamProps{In: "path"}, }, }, }, } const pathItemJSON = `{ "$ref": "Dog", "x-framework": "go-swagger", "get": { "description": "get operation description" }, "put": { "description": "put operation description" }, "post": { "description": "post operation description" }, "delete": { "description": "delete operation description" }, "options": { "description": "options operation description" }, "head": { "description": "head operation description" }, "patch": { "description": "patch operation description" }, "parameters": [{"in":"path"}] }` func TestIntegrationPathItem(t *testing.T) { var actual PathItem if assert.NoError(t, json.Unmarshal([]byte(pathItemJSON), &actual)) { assert.EqualValues(t, actual, pathItem) } assertParsesJSON(t, pathItemJSON, pathItem) } func TestPathItemRoundTrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { // Show at least one field from each embededd struct sitll allows // roundtrips successfully Name: "UnmarshalEmbedded", JSON: `{ "$ref": "/components/ref/to/something.foo", "x-framework": "swagger-go", "get": { "description": "a cool operation" } }`, Object: &PathItem{ Refable{MustCreateRef("/components/ref/to/something.foo")}, VendorExtensible{Extensions{"x-framework": "swagger-go"}}, PathItemProps{Get: &Operation{OperationProps: OperationProps{Description: "a cool operation"}}}, }, }, { Name: "BasicCase", JSON: pathItemJSON, Object: &pathItem, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&PathItem{})) }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/paths.go000066400000000000000000000076611453663023200257430ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "fmt" "strings" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" ) // Paths holds the relative paths to the individual endpoints. // The path is appended to the [`basePath`](http://goo.gl/8us55a#swaggerBasePath) in order // to construct the full URL. // The Paths may be empty, due to [ACL constraints](http://goo.gl/8us55a#securityFiltering). // // For more information: http://goo.gl/8us55a#pathsObject type Paths struct { VendorExtensible Paths map[string]PathItem `json:"-"` // custom serializer to flatten this, each entry must start with "/" } // UnmarshalJSON hydrates this items instance with the data from JSON func (p *Paths) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshaling { return jsonv2.Unmarshal(data, p) } var res map[string]json.RawMessage if err := json.Unmarshal(data, &res); err != nil { return err } for k, v := range res { if strings.HasPrefix(strings.ToLower(k), "x-") { if p.Extensions == nil { p.Extensions = make(map[string]interface{}) } var d interface{} if err := json.Unmarshal(v, &d); err != nil { return err } p.Extensions[k] = d } if strings.HasPrefix(k, "/") { if p.Paths == nil { p.Paths = make(map[string]PathItem) } var pi PathItem if err := json.Unmarshal(v, &pi); err != nil { return err } p.Paths[k] = pi } } return nil } func (p *Paths) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { tok, err := dec.ReadToken() if err != nil { return err } var ext any var pi PathItem switch k := tok.Kind(); k { case 'n': return nil // noop case '{': for { tok, err := dec.ReadToken() if err != nil { return err } if tok.Kind() == '}' { return nil } switch k := tok.String(); { case internal.IsExtensionKey(k): ext = nil if err := opts.UnmarshalNext(dec, &ext); err != nil { return err } if p.Extensions == nil { p.Extensions = make(map[string]any) } p.Extensions[k] = ext case len(k) > 0 && k[0] == '/': pi = PathItem{} if err := opts.UnmarshalNext(dec, &pi); err != nil { return err } if p.Paths == nil { p.Paths = make(map[string]PathItem) } p.Paths[k] = pi default: _, err := dec.ReadValue() // skip value if err != nil { return err } } } default: return fmt.Errorf("unknown JSON kind: %v", k) } } // MarshalJSON converts this items object to JSON func (p Paths) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshaling { return internal.DeterministicMarshal(p) } b1, err := json.Marshal(p.VendorExtensible) if err != nil { return nil, err } pths := make(map[string]PathItem) for k, v := range p.Paths { if strings.HasPrefix(k, "/") { pths[k] = v } } b2, err := json.Marshal(pths) if err != nil { return nil, err } concated := swag.ConcatJSON(b1, b2) return concated, nil } func (p Paths) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { m := make(map[string]any, len(p.Extensions)+len(p.Paths)) for k, v := range p.Extensions { if internal.IsExtensionKey(k) { m[k] = v } } for k, v := range p.Paths { if strings.HasPrefix(k, "/") { m[k] = v } } return opts.MarshalNext(enc, m) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/paths_test.go000066400000000000000000000044531453663023200267760ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" ) var paths = Paths{ VendorExtensible: VendorExtensible{Extensions: map[string]interface{}{"x-framework": "go-swagger"}}, Paths: map[string]PathItem{ "/": { Refable: Refable{Ref: MustCreateRef("cats")}, }, }, } const pathsJSON = `{"x-framework":"go-swagger","/":{"$ref":"cats"}}` const pathsJSONInvalidKey = `{"x-framework":"go-swagger","not-path-nor-extension":"invalid","/":{"$ref":"cats"}}` func TestIntegrationPaths(t *testing.T) { var actual Paths if assert.NoError(t, json.Unmarshal([]byte(pathsJSON), &actual)) { assert.EqualValues(t, actual, paths) } if assert.NoError(t, json.Unmarshal([]byte(pathsJSONInvalidKey), &actual)) { assert.EqualValues(t, actual, paths) } assertParsesJSON(t, pathsJSON, paths) assertParsesJSON(t, pathsJSONInvalidKey, paths) } func TestPathsRoundtrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { // Show at least one field from each embededd struct sitll allows // roundtrips successfully Name: "UnmarshalEmbedded", JSON: `{ "x-framework": "swagger-go", "/this-is-a-path": { "$ref": "/components/a/path/item" } }`, Object: &Paths{ VendorExtensible{Extensions{ "x-framework": "swagger-go", }}, map[string]PathItem{ "/this-is-a-path": {Refable: Refable{MustCreateRef("/components/a/path/item")}}, }, }, }, { Name: "BasicCase", JSON: pathsJSON, Object: &paths, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&Paths{})) }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/ref.go000066400000000000000000000067771453663023200254070ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "net/http" "os" "path/filepath" "github.com/go-openapi/jsonreference" "k8s.io/kube-openapi/pkg/internal" ) // Refable is a struct for things that accept a $ref property type Refable struct { Ref Ref } // MarshalJSON marshals the ref to json func (r Refable) MarshalJSON() ([]byte, error) { return r.Ref.MarshalJSON() } // UnmarshalJSON unmarshalss the ref from json func (r *Refable) UnmarshalJSON(d []byte) error { return json.Unmarshal(d, &r.Ref) } // Ref represents a json reference that is potentially resolved type Ref struct { jsonreference.Ref } // RemoteURI gets the remote uri part of the ref func (r *Ref) RemoteURI() string { if r.String() == "" { return r.String() } u := *r.GetURL() u.Fragment = "" return u.String() } // IsValidURI returns true when the url the ref points to can be found func (r *Ref) IsValidURI(basepaths ...string) bool { if r.String() == "" { return true } v := r.RemoteURI() if v == "" { return true } if r.HasFullURL { rr, err := http.Get(v) if err != nil { return false } return rr.StatusCode/100 == 2 } if !(r.HasFileScheme || r.HasFullFilePath || r.HasURLPathOnly) { return false } // check for local file pth := v if r.HasURLPathOnly { base := "." if len(basepaths) > 0 { base = filepath.Dir(filepath.Join(basepaths...)) } p, e := filepath.Abs(filepath.ToSlash(filepath.Join(base, pth))) if e != nil { return false } pth = p } fi, err := os.Stat(filepath.ToSlash(pth)) if err != nil { return false } return !fi.IsDir() } // Inherits creates a new reference from a parent and a child // If the child cannot inherit from the parent, an error is returned func (r *Ref) Inherits(child Ref) (*Ref, error) { ref, err := r.Ref.Inherits(child.Ref) if err != nil { return nil, err } return &Ref{Ref: *ref}, nil } // NewRef creates a new instance of a ref object // returns an error when the reference uri is an invalid uri func NewRef(refURI string) (Ref, error) { ref, err := jsonreference.New(refURI) if err != nil { return Ref{}, err } return Ref{Ref: ref}, nil } // MustCreateRef creates a ref object but panics when refURI is invalid. // Use the NewRef method for a version that returns an error. func MustCreateRef(refURI string) Ref { return Ref{Ref: jsonreference.MustCreateRef(refURI)} } // MarshalJSON marshals this ref into a JSON object func (r Ref) MarshalJSON() ([]byte, error) { str := r.String() if str == "" { if r.IsRoot() { return []byte(`{"$ref":""}`), nil } return []byte("{}"), nil } v := map[string]interface{}{"$ref": str} return json.Marshal(v) } // UnmarshalJSON unmarshals this ref from a JSON object func (r *Ref) UnmarshalJSON(d []byte) error { var v map[string]interface{} if err := json.Unmarshal(d, &v); err != nil { return err } return r.fromMap(v) } func (r *Ref) fromMap(v map[string]interface{}) error { return internal.JSONRefFromMap(&r.Ref, v) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/ref_test.go000066400000000000000000000021371453663023200264300ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "bytes" "encoding/gob" "encoding/json" "testing" "github.com/stretchr/testify/assert" ) // pin pointing go-swagger/go-swagger#1816 issue with cloning ref's func TestCloneRef(t *testing.T) { var b bytes.Buffer src := MustCreateRef("#/definitions/test") err := gob.NewEncoder(&b).Encode(&src) if !assert.NoError(t, err) { t.FailNow() } jazon, err := json.Marshal(src) if !assert.NoError(t, err) { t.FailNow() } assert.Equal(t, `{"$ref":"#/definitions/test"}`, string(jazon)) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/response.go000066400000000000000000000072031453663023200264520ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" ) // ResponseProps properties specific to a response type ResponseProps struct { Description string `json:"description,omitempty"` Schema *Schema `json:"schema,omitempty"` Headers map[string]Header `json:"headers,omitempty"` Examples map[string]interface{} `json:"examples,omitempty"` } // Marshaling structure only, always edit along with corresponding // struct (or compilation will fail). type responsePropsOmitZero struct { Description string `json:"description,omitempty"` Schema *Schema `json:"schema,omitzero"` Headers map[string]Header `json:"headers,omitempty"` Examples map[string]interface{} `json:"examples,omitempty"` } // Response describes a single response from an API Operation. // // For more information: http://goo.gl/8us55a#responseObject type Response struct { Refable ResponseProps VendorExtensible } // UnmarshalJSON hydrates this items instance with the data from JSON func (r *Response) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshaling { return jsonv2.Unmarshal(data, r) } if err := json.Unmarshal(data, &r.ResponseProps); err != nil { return err } if err := json.Unmarshal(data, &r.Refable); err != nil { return err } if err := json.Unmarshal(data, &r.VendorExtensible); err != nil { return err } return nil } func (r *Response) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { ResponseProps Extensions } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } if err := r.Refable.Ref.fromMap(x.Extensions); err != nil { return err } r.Extensions = internal.SanitizeExtensions(x.Extensions) r.ResponseProps = x.ResponseProps return nil } // MarshalJSON converts this items object to JSON func (r Response) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshaling { return internal.DeterministicMarshal(r) } b1, err := json.Marshal(r.ResponseProps) if err != nil { return nil, err } b2, err := json.Marshal(r.Refable) if err != nil { return nil, err } b3, err := json.Marshal(r.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2, b3), nil } func (r Response) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { Ref string `json:"$ref,omitempty"` Extensions ResponseProps responsePropsOmitZero `json:",inline"` } x.Ref = r.Refable.Ref.String() x.Extensions = internal.SanitizeExtensions(r.Extensions) x.ResponseProps = responsePropsOmitZero(r.ResponseProps) return opts.MarshalNext(enc, x) } // NewResponse creates a new response instance func NewResponse() *Response { return new(Response) } // ResponseRef creates a response as a json reference func ResponseRef(url string) *Response { resp := NewResponse() resp.Ref = MustCreateRef(url) return resp } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/response_test.go000066400000000000000000000043701453663023200275130ustar00rootroot00000000000000// Copyright 2017 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" ) var response = Response{ Refable: Refable{Ref: MustCreateRef("Dog")}, VendorExtensible: VendorExtensible{ Extensions: map[string]interface{}{ "x-go-name": "PutDogExists", }, }, ResponseProps: ResponseProps{ Description: "Dog exists", Schema: &Schema{SchemaProps: SchemaProps{Type: []string{"string"}}}, }, } const responseJSON = `{ "$ref": "Dog", "x-go-name": "PutDogExists", "description": "Dog exists", "schema": { "type": "string" } }` func TestIntegrationResponse(t *testing.T) { var actual Response if assert.NoError(t, json.Unmarshal([]byte(responseJSON), &actual)) { assert.EqualValues(t, actual, response) } assertParsesJSON(t, responseJSON, response) } func TestResponseRoundtrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { // Show at least one field from each embededd struct sitll allows // roundtrips successfully Name: "UnmarshalEmbedded", JSON: `{ "$ref": "/components/ref/to/something.foo", "x-framework": "swagger-go", "description": "a really cool description" }`, Object: &Response{ Refable{MustCreateRef("/components/ref/to/something.foo")}, ResponseProps{Description: "a really cool description"}, VendorExtensible{Extensions{"x-framework": "swagger-go"}}, }, }, { Name: "BasicCase", JSON: responseJSON, Object: &response, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&Response{})) }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/responses.go000066400000000000000000000130171453663023200266350ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "fmt" "reflect" "strconv" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" ) // Responses is a container for the expected responses of an operation. // The container maps a HTTP response code to the expected response. // It is not expected from the documentation to necessarily cover all possible HTTP response codes, // since they may not be known in advance. However, it is expected from the documentation to cover // a successful operation response and any known errors. // // The `default` can be used a default response object for all HTTP codes that are not covered // individually by the specification. // // The `Responses Object` MUST contain at least one response code, and it SHOULD be the response // for a successful operation call. // // For more information: http://goo.gl/8us55a#responsesObject type Responses struct { VendorExtensible ResponsesProps } // UnmarshalJSON hydrates this items instance with the data from JSON func (r *Responses) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshaling { return jsonv2.Unmarshal(data, r) } if err := json.Unmarshal(data, &r.ResponsesProps); err != nil { return err } if err := json.Unmarshal(data, &r.VendorExtensible); err != nil { return err } if reflect.DeepEqual(ResponsesProps{}, r.ResponsesProps) { r.ResponsesProps = ResponsesProps{} } return nil } // MarshalJSON converts this items object to JSON func (r Responses) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshaling { return internal.DeterministicMarshal(r) } b1, err := json.Marshal(r.ResponsesProps) if err != nil { return nil, err } b2, err := json.Marshal(r.VendorExtensible) if err != nil { return nil, err } concated := swag.ConcatJSON(b1, b2) return concated, nil } func (r Responses) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { type ArbitraryKeys map[string]interface{} var x struct { ArbitraryKeys Default *Response `json:"default,omitempty"` } x.ArbitraryKeys = make(map[string]any, len(r.Extensions)+len(r.StatusCodeResponses)) for k, v := range r.Extensions { if internal.IsExtensionKey(k) { x.ArbitraryKeys[k] = v } } for k, v := range r.StatusCodeResponses { x.ArbitraryKeys[strconv.Itoa(k)] = v } x.Default = r.Default return opts.MarshalNext(enc, x) } // ResponsesProps describes all responses for an operation. // It tells what is the default response and maps all responses with a // HTTP status code. type ResponsesProps struct { Default *Response StatusCodeResponses map[int]Response } // MarshalJSON marshals responses as JSON func (r ResponsesProps) MarshalJSON() ([]byte, error) { toser := map[string]Response{} if r.Default != nil { toser["default"] = *r.Default } for k, v := range r.StatusCodeResponses { toser[strconv.Itoa(k)] = v } return json.Marshal(toser) } // UnmarshalJSON unmarshals responses from JSON func (r *ResponsesProps) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshaling { return jsonv2.Unmarshal(data, r) } var res map[string]json.RawMessage if err := json.Unmarshal(data, &res); err != nil { return err } if v, ok := res["default"]; ok { value := Response{} if err := json.Unmarshal(v, &value); err != nil { return err } r.Default = &value delete(res, "default") } for k, v := range res { // Take all integral keys if nk, err := strconv.Atoi(k); err == nil { if r.StatusCodeResponses == nil { r.StatusCodeResponses = map[int]Response{} } value := Response{} if err := json.Unmarshal(v, &value); err != nil { return err } r.StatusCodeResponses[nk] = value } } return nil } func (r *Responses) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) (err error) { tok, err := dec.ReadToken() if err != nil { return err } var ext any var resp Response switch k := tok.Kind(); k { case 'n': return nil // noop case '{': for { tok, err := dec.ReadToken() if err != nil { return err } if tok.Kind() == '}' { return nil } switch k := tok.String(); { case internal.IsExtensionKey(k): ext = nil if err := opts.UnmarshalNext(dec, &ext); err != nil { return err } if r.Extensions == nil { r.Extensions = make(map[string]any) } r.Extensions[k] = ext case k == "default": resp = Response{} if err := opts.UnmarshalNext(dec, &resp); err != nil { return err } respCopy := resp r.ResponsesProps.Default = &respCopy default: if nk, err := strconv.Atoi(k); err == nil { resp = Response{} if err := opts.UnmarshalNext(dec, &resp); err != nil { return err } if r.StatusCodeResponses == nil { r.StatusCodeResponses = map[int]Response{} } r.StatusCodeResponses[nk] = resp } } } default: return fmt.Errorf("unknown JSON kind: %v", k) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/responses_test.go000066400000000000000000000127161453663023200277010ustar00rootroot00000000000000/* Copyright 2022 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec import ( "testing" "github.com/stretchr/testify/require" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" ) func TestResponsesRoundtrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { // Show at least one field from each embededd struct sitll allows // roundtrips successfully Name: "UnmarshalEmbedded", JSON: `{ "default": { "$ref": "/components/some/ref.foo" }, "x-framework": "swagger-go" }`, Object: &Responses{ VendorExtensible: VendorExtensible{ Extensions: Extensions{ "x-framework": "swagger-go", }, }, ResponsesProps: ResponsesProps{ Default: &Response{ Refable: Refable{Ref: MustCreateRef("/components/some/ref.foo")}, }, }, }, }, { Name: "Decode Ref Object", Object: &Responses{ VendorExtensible: VendorExtensible{Extensions: map[string]interface{}{ "x- 0 && data[0] == '{' { var sch Schema if err := json.Unmarshal(data, &sch); err != nil { return err } nw.Schema = &sch nw.Allows = true } else { json.Unmarshal(data, &nw.Allows) } *s = nw return nil } func (s *SchemaOrBool) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { switch k := dec.PeekKind(); k { case '{': err := opts.UnmarshalNext(dec, &s.Schema) if err != nil { return err } s.Allows = true return nil case 't', 'f': err := opts.UnmarshalNext(dec, &s.Allows) if err != nil { return err } return nil default: return fmt.Errorf("expected object or bool, not '%v'", k.String()) } } // SchemaOrStringArray represents a schema or a string array type SchemaOrStringArray struct { Schema *Schema Property []string } // MarshalJSON converts this schema object or array into JSON structure func (s SchemaOrStringArray) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshaling { return internal.DeterministicMarshal(s) } if len(s.Property) > 0 { return json.Marshal(s.Property) } if s.Schema != nil { return json.Marshal(s.Schema) } return []byte("null"), nil } // MarshalJSON converts this schema object or array into JSON structure func (s SchemaOrStringArray) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { if len(s.Property) > 0 { return opts.MarshalNext(enc, s.Property) } if s.Schema != nil { return opts.MarshalNext(enc, s.Schema) } return enc.WriteToken(jsonv2.Null) } // UnmarshalJSON converts this schema object or array from a JSON structure func (s *SchemaOrStringArray) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshaling { return jsonv2.Unmarshal(data, s) } var first byte if len(data) > 1 { first = data[0] } var nw SchemaOrStringArray if first == '{' { var sch Schema if err := json.Unmarshal(data, &sch); err != nil { return err } nw.Schema = &sch } if first == '[' { if err := json.Unmarshal(data, &nw.Property); err != nil { return err } } *s = nw return nil } func (s *SchemaOrStringArray) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { switch dec.PeekKind() { case '{': return opts.UnmarshalNext(dec, &s.Schema) case '[': return opts.UnmarshalNext(dec, &s.Property) default: _, err := dec.ReadValue() return err } } // Definitions contains the models explicitly defined in this spec // An object to hold data types that can be consumed and produced by operations. // These data types can be primitives, arrays or models. // // For more information: http://goo.gl/8us55a#definitionsObject type Definitions map[string]Schema // SecurityDefinitions a declaration of the security schemes available to be used in the specification. // This does not enforce the security schemes on the operations and only serves to provide // the relevant details for each scheme. // // For more information: http://goo.gl/8us55a#securityDefinitionsObject type SecurityDefinitions map[string]*SecurityScheme // StringOrArray represents a value that can either be a string // or an array of strings. Mainly here for serialization purposes type StringOrArray []string // Contains returns true when the value is contained in the slice func (s StringOrArray) Contains(value string) bool { for _, str := range s { if str == value { return true } } return false } // UnmarshalJSON unmarshals this string or array object from a JSON array or JSON string func (s *StringOrArray) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshaling { return jsonv2.Unmarshal(data, s) } var first byte if len(data) > 1 { first = data[0] } if first == '[' { var parsed []string if err := json.Unmarshal(data, &parsed); err != nil { return err } *s = StringOrArray(parsed) return nil } var single interface{} if err := json.Unmarshal(data, &single); err != nil { return err } if single == nil { return nil } switch v := single.(type) { case string: *s = StringOrArray([]string{v}) return nil default: return fmt.Errorf("only string or array is allowed, not %T", single) } } func (s *StringOrArray) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { switch k := dec.PeekKind(); k { case '[': *s = StringOrArray{} return opts.UnmarshalNext(dec, (*[]string)(s)) case '"': *s = StringOrArray{""} return opts.UnmarshalNext(dec, &(*s)[0]) case 'n': // Throw out null token _, _ = dec.ReadToken() return nil default: return fmt.Errorf("expected string or array, not '%v'", k.String()) } } // MarshalJSON converts this string or array to a JSON array or JSON string func (s StringOrArray) MarshalJSON() ([]byte, error) { if len(s) == 1 { return json.Marshal([]string(s)[0]) } return json.Marshal([]string(s)) } // SchemaOrArray represents a value that can either be a Schema // or an array of Schema. Mainly here for serialization purposes type SchemaOrArray struct { Schema *Schema Schemas []Schema } // Len returns the number of schemas in this property func (s SchemaOrArray) Len() int { if s.Schema != nil { return 1 } return len(s.Schemas) } // ContainsType returns true when one of the schemas is of the specified type func (s *SchemaOrArray) ContainsType(name string) bool { if s.Schema != nil { return s.Schema.Type != nil && s.Schema.Type.Contains(name) } return false } // MarshalJSON converts this schema object or array into JSON structure func (s SchemaOrArray) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshaling { return internal.DeterministicMarshal(s) } if s.Schemas != nil { return json.Marshal(s.Schemas) } return json.Marshal(s.Schema) } // MarshalJSON converts this schema object or array into JSON structure func (s SchemaOrArray) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { if s.Schemas != nil { return opts.MarshalNext(enc, s.Schemas) } return opts.MarshalNext(enc, s.Schema) } // UnmarshalJSON converts this schema object or array from a JSON structure func (s *SchemaOrArray) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshaling { return jsonv2.Unmarshal(data, s) } var nw SchemaOrArray var first byte if len(data) > 1 { first = data[0] } if first == '{' { var sch Schema if err := json.Unmarshal(data, &sch); err != nil { return err } nw.Schema = &sch } if first == '[' { if err := json.Unmarshal(data, &nw.Schemas); err != nil { return err } } *s = nw return nil } func (s *SchemaOrArray) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { switch dec.PeekKind() { case '{': return opts.UnmarshalNext(dec, &s.Schema) case '[': return opts.UnmarshalNext(dec, &s.Schemas) default: _, err := dec.ReadValue() return err } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/swagger_test.go000066400000000000000000000237211453663023200273150ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "fmt" "io" "os" "reflect" "testing" "github.com/google/go-cmp/cmp" fuzz "github.com/google/gofuzz" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "k8s.io/kube-openapi/pkg/internal" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" ) var spec = Swagger{ SwaggerProps: SwaggerProps{ ID: "http://localhost:3849/api-docs", Swagger: "2.0", Consumes: []string{"application/json", "application/x-yaml"}, Produces: []string{"application/json"}, Schemes: []string{"http", "https"}, Info: &info, Host: "some.api.out.there", BasePath: "/", Paths: &paths, Definitions: map[string]Schema{"Category": {SchemaProps: SchemaProps{Type: []string{"string"}}}}, Parameters: map[string]Parameter{ "categoryParam": {ParamProps: ParamProps{Name: "category", In: "query"}, SimpleSchema: SimpleSchema{Type: "string"}}, }, Responses: map[string]Response{ "EmptyAnswer": { ResponseProps: ResponseProps{ Description: "no data to return for this operation", }, }, }, SecurityDefinitions: map[string]*SecurityScheme{ "internalApiKey": &(SecurityScheme{SecuritySchemeProps: SecuritySchemeProps{Type: "apiKey", Name: "api_key", In: "header"}}), }, Security: []map[string][]string{ {"internalApiKey": {}}, }, Tags: []Tag{{TagProps: TagProps{Description: "", Name: "pets", ExternalDocs: nil}}}, ExternalDocs: &ExternalDocumentation{Description: "the name", URL: "the url"}, }, VendorExtensible: VendorExtensible{Extensions: map[string]interface{}{ "x-some-extension": "vendor", "x-schemes": []interface{}{"unix", "amqp"}, }}, } const specJSON = `{ "id": "http://localhost:3849/api-docs", "consumes": ["application/json", "application/x-yaml"], "produces": ["application/json"], "schemes": ["http", "https"], "swagger": "2.0", "info": { "contact": { "name": "wordnik api team", "url": "http://developer.wordnik.com" }, "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0` + ` specification", "license": { "name": "Creative Commons 4.0 International", "url": "http://creativecommons.org/licenses/by/4.0/" }, "termsOfService": "http://helloreverb.com/terms/", "title": "Swagger Sample API", "version": "1.0.9-abcd", "x-framework": "go-swagger" }, "host": "some.api.out.there", "basePath": "/", "paths": {"x-framework":"go-swagger","/":{"$ref":"cats"}}, "definitions": { "Category": { "type": "string"} }, "parameters": { "categoryParam": { "name": "category", "in": "query", "type": "string" } }, "responses": { "EmptyAnswer": { "description": "no data to return for this operation" } }, "securityDefinitions": { "internalApiKey": { "type": "apiKey", "in": "header", "name": "api_key" } }, "security": [{"internalApiKey":[]}], "tags": [{"name":"pets"}], "externalDocs": {"description":"the name","url":"the url"}, "x-some-extension": "vendor", "x-schemes": ["unix","amqp"] }` func TestSwaggerSpec_Serialize(t *testing.T) { expected := make(map[string]interface{}) _ = json.Unmarshal([]byte(specJSON), &expected) b, err := spec.MarshalJSON() if assert.NoError(t, err) { var actual map[string]interface{} err := json.Unmarshal(b, &actual) if assert.NoError(t, err) { assert.EqualValues(t, actual, expected) } } } func TestSwaggerSpec_Deserialize(t *testing.T) { var actual Swagger err := json.Unmarshal([]byte(specJSON), &actual) if assert.NoError(t, err) { assert.EqualValues(t, actual, spec) } } func TestSwaggerRoundtrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { // Show at least one field from each embededd struct sitll allows // roundtrips successfully Name: "UnmarshalEmbedded", Object: &Swagger{ VendorExtensible{Extensions{ "x-framework": "go-swagger", }}, SwaggerProps{ Swagger: "2.0.0", }, }, }, { Name: "BasicCase", JSON: specJSON, Object: &spec, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&Swagger{})) }) } } func TestSwaggerSpec_Marshalv2Fuzzed(t *testing.T) { fuzzer := fuzz. NewWithSeed(1646791953). NilChance(0.075). MaxDepth(13). NumElements(1, 2) fuzzer.Funcs( SwaggerFuzzFuncs..., ) for i := 0; i < 100; i++ { t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { swagger := Swagger{} fuzzer.Fuzz(&swagger) internal.UseOptimizedJSONMarshaling = false want, err := json.Marshal(swagger) if err != nil { t.Errorf("failed to marshal swagger: %v", err) } internal.UseOptimizedJSONMarshaling = true got, err := swagger.MarshalJSON() if err != nil { t.Errorf("failed to marshal next swagger: %v", err) } if err := jsontesting.JsonCompare(want, got); err != nil { t.Errorf("fuzzed marshal doesn't match: %v", err) } }) } } func TestSwaggerSpec_Marshalv2FuzzedIsStable(t *testing.T) { swagFile, err := os.Open("../../schemaconv/testdata/swagger.json") if err != nil { t.Fatal(err) } defer swagFile.Close() js, err := io.ReadAll(swagFile) if err != nil { t.Fatal(err) } swagger := Swagger{} assert.NoError(t, json.Unmarshal(js, &swagger)) for i := 0; i < 5; i++ { t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { want, err := swagger.MarshalJSON() if err != nil { t.Errorf("failed to marshal swagger: %v", err) } got, err := swagger.MarshalJSON() if err != nil { t.Errorf("failed to marshal swagger again: %v", err) } if err := cmp.Diff(want, got); err != "" { t.Fatalf("expected both marshal to be identical/stable: %v", err) } }) } } func TestUnmarshalAdditionalProperties(t *testing.T) { cases := []string{ `{}`, `{"description": "the description of this schema"}`, `false`, `true`, } for _, tc := range cases { t.Run(tc, func(t *testing.T) { var v1, v2 SchemaOrBool internal.UseOptimizedJSONUnmarshaling = true require.NoError(t, json.Unmarshal([]byte(tc), &v2)) internal.UseOptimizedJSONUnmarshaling = false require.NoError(t, json.Unmarshal([]byte(tc), &v1)) if !cmp.Equal(v1, v2, SwaggerDiffOptions...) { t.Fatal(cmp.Diff(v1, v2, SwaggerDiffOptions...)) } }) } } func TestSwaggerSpec_ExperimentalUnmarshal(t *testing.T) { fuzzer := fuzz. NewWithSeed(1646791953). NilChance(0.01). MaxDepth(10). NumElements(1, 2) fuzzer.Funcs( SwaggerFuzzFuncs..., ) expected := Swagger{} fuzzer.Fuzz(&expected) // Serialize into JSON jsonBytes, err := json.Marshal(expected) require.NoError(t, err) t.Log("Specimen", string(jsonBytes)) actual := Swagger{} internal.UseOptimizedJSONUnmarshaling = true err = json.Unmarshal(jsonBytes, &actual) require.NoError(t, err) if !cmp.Equal(expected, actual, SwaggerDiffOptions...) { t.Fatal(cmp.Diff(expected, actual, SwaggerDiffOptions...)) } control := Swagger{} internal.UseOptimizedJSONUnmarshaling = false err = json.Unmarshal(jsonBytes, &control) require.NoError(t, err) if !reflect.DeepEqual(control, actual) { t.Fatal(cmp.Diff(control, actual, SwaggerDiffOptions...)) } } func BenchmarkSwaggerSpec_ExperimentalUnmarshal(b *testing.B) { // Download kube-openapi swagger json swagFile, err := os.Open("../../schemaconv/testdata/swagger.json") if err != nil { b.Fatal(err) } defer swagFile.Close() originalJSON, err := io.ReadAll(swagFile) if err != nil { b.Fatal(err) } b.ResetTimer() // Parse into kube-openapi types b.Run("jsonv1", func(b2 *testing.B) { internal.UseOptimizedJSONUnmarshaling = false for i := 0; i < b2.N; i++ { var result *Swagger if err := json.Unmarshal(originalJSON, &result); err != nil { b2.Fatal(err) } } }) b.Run("jsonv2 via jsonv1", func(b2 *testing.B) { internal.UseOptimizedJSONUnmarshaling = true for i := 0; i < b2.N; i++ { var result *Swagger if err := json.Unmarshal(originalJSON, &result); err != nil { b2.Fatal(err) } } }) // Our UnmarshalJSON implementation which defers to jsonv2 causes the // text to be parsed/validated twice. This costs a significant amount of time. b.Run("jsonv2", func(b2 *testing.B) { internal.UseOptimizedJSONUnmarshaling = true for i := 0; i < b2.N; i++ { var result Swagger if err := result.UnmarshalJSON(originalJSON); err != nil { b2.Fatal(err) } } }) } func BenchmarkSwaggerSpec_ExperimentalMarshal(b *testing.B) { // Load kube-openapi swagger json swagFile, err := os.Open("../../schemaconv/testdata/swagger.json") if err != nil { b.Fatal(err) } defer swagFile.Close() originalJSON, err := io.ReadAll(swagFile) if err != nil { b.Fatal(err) } var swagger *Swagger if err := json.Unmarshal(originalJSON, &swagger); err != nil { b.Fatal(err) } b.ResetTimer() // Serialize kube-openapi types b.Run("jsonv1", func(b2 *testing.B) { b2.ReportAllocs() internal.UseOptimizedJSONMarshaling = false for i := 0; i < b2.N; i++ { if _, err = json.Marshal(swagger); err != nil { b2.Fatal(err) } } }) b.Run("jsonv2 via jsonv1", func(b2 *testing.B) { b2.ReportAllocs() internal.UseOptimizedJSONMarshaling = true for i := 0; i < b2.N; i++ { if _, err := json.Marshal(swagger); err != nil { b2.Fatal(err) } } }) b.Run("jsonv2", func(b2 *testing.B) { b2.ReportAllocs() internal.UseOptimizedJSONUnmarshaling = true for i := 0; i < b2.N; i++ { if _, err = swagger.MarshalJSON(); err != nil { b2.Fatal(err) } } }) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/tag.go000066400000000000000000000050571453663023200253740ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package spec import ( "encoding/json" "github.com/go-openapi/swag" "k8s.io/kube-openapi/pkg/internal" jsonv2 "k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json" ) // TagProps describe a tag entry in the top level tags section of a swagger spec type TagProps struct { Description string `json:"description,omitempty"` Name string `json:"name,omitempty"` ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"` } // Tag allows adding meta data to a single tag that is used by the // [Operation Object](http://goo.gl/8us55a#operationObject). // It is not mandatory to have a Tag Object per tag used there. // // For more information: http://goo.gl/8us55a#tagObject type Tag struct { VendorExtensible TagProps } // MarshalJSON marshal this to JSON func (t Tag) MarshalJSON() ([]byte, error) { if internal.UseOptimizedJSONMarshaling { return internal.DeterministicMarshal(t) } b1, err := json.Marshal(t.TagProps) if err != nil { return nil, err } b2, err := json.Marshal(t.VendorExtensible) if err != nil { return nil, err } return swag.ConcatJSON(b1, b2), nil } func (t Tag) MarshalNextJSON(opts jsonv2.MarshalOptions, enc *jsonv2.Encoder) error { var x struct { Extensions TagProps } x.Extensions = internal.SanitizeExtensions(t.Extensions) x.TagProps = t.TagProps return opts.MarshalNext(enc, x) } // UnmarshalJSON marshal this from JSON func (t *Tag) UnmarshalJSON(data []byte) error { if internal.UseOptimizedJSONUnmarshaling { return jsonv2.Unmarshal(data, t) } if err := json.Unmarshal(data, &t.TagProps); err != nil { return err } return json.Unmarshal(data, &t.VendorExtensible) } func (t *Tag) UnmarshalNextJSON(opts jsonv2.UnmarshalOptions, dec *jsonv2.Decoder) error { var x struct { Extensions TagProps } if err := opts.UnmarshalNext(dec, &x); err != nil { return err } t.Extensions = internal.SanitizeExtensions(x.Extensions) t.TagProps = x.TagProps return nil } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/spec/tag_test.go000066400000000000000000000024611453663023200264270ustar00rootroot00000000000000/* Copyright 2022 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package spec import ( "testing" "github.com/stretchr/testify/require" jsontesting "k8s.io/kube-openapi/pkg/util/jsontesting" ) func TestTagRoundtrip(t *testing.T) { cases := []jsontesting.RoundTripTestCase{ { // Show at least one field from each embededd struct sitll allows // roundtrips successfully Name: "UnmarshalEmbedded", JSON: `{ "x-framework": "go-swagger", "description": "this is a description" }`, Object: &Tag{ VendorExtensible{Extensions: Extensions{ "x-framework": "go-swagger", }}, TagProps{ Description: "this is a description", }, }, }, } for _, tcase := range cases { t.Run(tcase.Name, func(t *testing.T) { require.NoError(t, tcase.RoundTripTest(&Tag{})) }) } } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/strfmt/000077500000000000000000000000001453663023200246505ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/strfmt/.github/000077500000000000000000000000001453663023200262105ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/strfmt/.github/CONTRIBUTING.md000066400000000000000000000114601453663023200304430ustar00rootroot00000000000000## Contribution Guidelines ### Pull requests are always welcome We are always thrilled to receive pull requests, and do our best to process them as fast as possible. Not sure if that typo is worth a pull request? Do it! We will appreciate it. If your pull request is not accepted on the first try, don't be discouraged! If there's a problem with the implementation, hopefully you received feedback on what to improve. We're trying very hard to keep go-swagger lean and focused. We don't want it to do everything for everybody. This means that we might decide against incorporating a new feature. However, there might be a way to implement that feature *on top of* go-swagger. ### Conventions Fork the repo and make changes on your fork in a feature branch: - If it's a bugfix branch, name it XXX-something where XXX is the number of the issue - If it's a feature branch, create an enhancement issue to announce your intentions, and name it XXX-something where XXX is the number of the issue. Submit unit tests for your changes. Go has a great test framework built in; use it! Take a look at existing tests for inspiration. Run the full test suite on your branch before submitting a pull request. Update the documentation when creating or modifying features. Test your documentation changes for clarity, concision, and correctness, as well as a clean documentation build. See ``docs/README.md`` for more information on building the docs and how docs get released. Write clean code. Universally formatted code promotes ease of writing, reading, and maintenance. Always run `gofmt -s -w file.go` on each changed file before committing your changes. Most editors have plugins that do this automatically. Pull requests descriptions should be as clear as possible and include a reference to all the issues that they address. Pull requests must not contain commits from other users or branches. Commit messages must start with a capitalized and short summary (max. 50 chars) written in the imperative, followed by an optional, more detailed explanatory text which is separated from the summary by an empty line. Code review comments may be added to your pull request. Discuss, then make the suggested modifications and push additional commits to your feature branch. Be sure to post a comment after pushing. The new commits will show up in the pull request automatically, but the reviewers will not be notified unless you comment. Before the pull request is merged, make sure that you squash your commits into logical units of work using `git rebase -i` and `git push -f`. After every commit the test suite should be passing. Include documentation changes in the same commit so that a revert would remove all traces of the feature or fix. Commits that fix or close an issue should include a reference like `Closes #XXX` or `Fixes #XXX`, which will automatically close the issue when merged. ### Sign your work The sign-off is a simple line at the end of the explanation for the patch, which certifies that you wrote it or otherwise have the right to pass it on as an open-source patch. The rules are pretty simple: if you can certify the below (from [developercertificate.org](http://developercertificate.org/)): ``` Developer Certificate of Origin Version 1.1 Copyright (C) 2004, 2006 The Linux Foundation and its contributors. 660 York Street, Suite 102, San Francisco, CA 94110 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Developer's Certificate of Origin 1.1 By making a contribution to this project, I certify that: (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. ``` then you just add a line to every git commit message: Signed-off-by: Joe Smith using your real name (sorry, no pseudonyms or anonymous contributions.) You can add the sign off when creating the git commit via `git commit -s`. golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/strfmt/.gitignore000066400000000000000000000000311453663023200266320ustar00rootroot00000000000000secrets.yml coverage.out golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/strfmt/LICENSE000066400000000000000000000261361453663023200256650ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/strfmt/bson.go000066400000000000000000000052061453663023200261430ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package strfmt import ( bsonprim "k8s.io/kube-openapi/pkg/validation/strfmt/bson" ) func init() { var id ObjectId // register this format in the default registry Default.Add("bsonobjectid", &id, IsBSONObjectID) } // IsBSONObjectID returns true when the string is a valid BSON.ObjectId func IsBSONObjectID(str string) bool { _, err := bsonprim.ObjectIDFromHex(str) return err == nil } // ObjectId represents a BSON object ID (alias to go.mongodb.org/mongo-driver/bson/primitive.ObjectID) // // swagger:strfmt bsonobjectid type ObjectId bsonprim.ObjectID // NewObjectId creates a ObjectId from a Hex String func NewObjectId(hex string) ObjectId { oid, err := bsonprim.ObjectIDFromHex(hex) if err != nil { panic(err) } return ObjectId(oid) } // MarshalText turns this instance into text func (id ObjectId) MarshalText() ([]byte, error) { oid := bsonprim.ObjectID(id) if oid == bsonprim.NilObjectID { return nil, nil } return []byte(oid.Hex()), nil } // UnmarshalText hydrates this instance from text func (id *ObjectId) UnmarshalText(data []byte) error { // validation is performed later on if len(data) == 0 { *id = ObjectId(bsonprim.NilObjectID) return nil } oidstr := string(data) oid, err := bsonprim.ObjectIDFromHex(oidstr) if err != nil { return err } *id = ObjectId(oid) return nil } func (id ObjectId) String() string { return bsonprim.ObjectID(id).String() } // MarshalJSON returns the ObjectId as JSON func (id ObjectId) MarshalJSON() ([]byte, error) { return bsonprim.ObjectID(id).MarshalJSON() } // UnmarshalJSON sets the ObjectId from JSON func (id *ObjectId) UnmarshalJSON(data []byte) error { var obj bsonprim.ObjectID if err := obj.UnmarshalJSON(data); err != nil { return err } *id = ObjectId(obj) return nil } // DeepCopyInto copies the receiver and writes its value into out. func (id *ObjectId) DeepCopyInto(out *ObjectId) { *out = *id } // DeepCopy copies the receiver into a new ObjectId. func (id *ObjectId) DeepCopy() *ObjectId { if id == nil { return nil } out := new(ObjectId) id.DeepCopyInto(out) return out } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/strfmt/bson/000077500000000000000000000000001453663023200256115ustar00rootroot00000000000000golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/strfmt/bson/objectid.go000066400000000000000000000063631453663023200277330ustar00rootroot00000000000000// Copyright (C) MongoDB, Inc. 2017-present. // // Licensed under the Apache License, Version 2.0 (the "License"); you may // not use this file except in compliance with the License. You may obtain // a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 // // Based on gopkg.in/mgo.v2/bson by Gustavo Niemeyer // See THIRD-PARTY-NOTICES for original license terms. package bson import ( "bytes" "encoding/hex" "encoding/json" "errors" "fmt" ) // ErrInvalidHex indicates that a hex string cannot be converted to an ObjectID. var ErrInvalidHex = errors.New("the provided hex string is not a valid ObjectID") // ObjectID is the BSON ObjectID type. type ObjectID [12]byte // NilObjectID is the zero value for ObjectID. var NilObjectID ObjectID // Hex returns the hex encoding of the ObjectID as a string. func (id ObjectID) Hex() string { return hex.EncodeToString(id[:]) } func (id ObjectID) String() string { return fmt.Sprintf("ObjectID(%q)", id.Hex()) } // IsZero returns true if id is the empty ObjectID. func (id ObjectID) IsZero() bool { return bytes.Equal(id[:], NilObjectID[:]) } // ObjectIDFromHex creates a new ObjectID from a hex string. It returns an error if the hex string is not a // valid ObjectID. func ObjectIDFromHex(s string) (ObjectID, error) { b, err := hex.DecodeString(s) if err != nil { return NilObjectID, err } if len(b) != 12 { return NilObjectID, ErrInvalidHex } var oid [12]byte copy(oid[:], b[:]) return oid, nil } // MarshalJSON returns the ObjectID as a string func (id ObjectID) MarshalJSON() ([]byte, error) { return json.Marshal(id.Hex()) } // UnmarshalJSON populates the byte slice with the ObjectID. If the byte slice is 24 bytes long, it // will be populated with the hex representation of the ObjectID. If the byte slice is twelve bytes // long, it will be populated with the BSON representation of the ObjectID. This method also accepts empty strings and // decodes them as NilObjectID. For any other inputs, an error will be returned. func (id *ObjectID) UnmarshalJSON(b []byte) error { // Ignore "null" to keep parity with the standard library. Decoding a JSON null into a non-pointer ObjectID field // will leave the field unchanged. For pointer values, encoding/json will set the pointer to nil and will not // enter the UnmarshalJSON hook. if string(b) == "null" { return nil } var err error switch len(b) { case 12: copy(id[:], b) default: // Extended JSON var res interface{} err := json.Unmarshal(b, &res) if err != nil { return err } str, ok := res.(string) if !ok { m, ok := res.(map[string]interface{}) if !ok { return errors.New("not an extended JSON ObjectID") } oid, ok := m["$oid"] if !ok { return errors.New("not an extended JSON ObjectID") } str, ok = oid.(string) if !ok { return errors.New("not an extended JSON ObjectID") } } // An empty string is not a valid ObjectID, but we treat it as a special value that decodes as NilObjectID. if len(str) == 0 { copy(id[:], NilObjectID[:]) return nil } if len(str) != 24 { return fmt.Errorf("cannot unmarshal into an ObjectID, the length must be 24 but it is %d", len(str)) } _, err = hex.Decode(id[:], []byte(str)) if err != nil { return err } } return err } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/strfmt/bson_test.go000066400000000000000000000025551453663023200272060ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package strfmt import ( "testing" "github.com/stretchr/testify/assert" ) func TestBSONObjectId_fullCycle(t *testing.T) { id := NewObjectId("507f1f77bcf86cd799439011") bytes, err := id.MarshalText() assert.NoError(t, err) var idCopy ObjectId err = idCopy.UnmarshalText(bytes) assert.NoError(t, err) assert.Equal(t, id, idCopy) jsonBytes, err := id.MarshalJSON() assert.NoError(t, err) err = idCopy.UnmarshalJSON(jsonBytes) assert.NoError(t, err) assert.Equal(t, id, idCopy) } func TestDeepCopyObjectId(t *testing.T) { id := NewObjectId("507f1f77bcf86cd799439011") in := &id out := new(ObjectId) in.DeepCopyInto(out) assert.Equal(t, in, out) out2 := in.DeepCopy() assert.Equal(t, in, out2) var inNil *ObjectId out3 := inNil.DeepCopy() assert.Nil(t, out3) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/strfmt/date.go000066400000000000000000000046131453663023200261200ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package strfmt import ( "encoding/json" "time" ) func init() { d := Date{} // register this format in the default registry Default.Add("date", &d, IsDate) } // IsDate returns true when the string is a valid date func IsDate(str string) bool { _, err := time.Parse(RFC3339FullDate, str) return err == nil } const ( // RFC3339FullDate represents a full-date as specified by RFC3339 // See: http://goo.gl/xXOvVd RFC3339FullDate = "2006-01-02" ) // Date represents a date from the API // // swagger:strfmt date type Date time.Time // String converts this date into a string func (d Date) String() string { return time.Time(d).Format(RFC3339FullDate) } // UnmarshalText parses a text representation into a date type func (d *Date) UnmarshalText(text []byte) error { if len(text) == 0 { return nil } dd, err := time.Parse(RFC3339FullDate, string(text)) if err != nil { return err } *d = Date(dd) return nil } // MarshalText serializes this date type to string func (d Date) MarshalText() ([]byte, error) { return []byte(d.String()), nil } // MarshalJSON returns the Date as JSON func (d Date) MarshalJSON() ([]byte, error) { return json.Marshal(time.Time(d).Format(RFC3339FullDate)) } // UnmarshalJSON sets the Date from JSON func (d *Date) UnmarshalJSON(data []byte) error { if string(data) == jsonNull { return nil } var strdate string if err := json.Unmarshal(data, &strdate); err != nil { return err } tt, err := time.Parse(RFC3339FullDate, strdate) if err != nil { return err } *d = Date(tt) return nil } // DeepCopyInto copies the receiver and writes its value into out. func (d *Date) DeepCopyInto(out *Date) { *out = *d } // DeepCopy copies the receiver into a new Date. func (d *Date) DeepCopy() *Date { if d == nil { return nil } out := new(Date) d.DeepCopyInto(out) return out } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/strfmt/date_test.go000066400000000000000000000047631453663023200271650ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package strfmt import ( "testing" "time" "github.com/stretchr/testify/assert" ) func TestDate(t *testing.T) { pp := Date{} err := pp.UnmarshalText([]byte{}) assert.NoError(t, err) err = pp.UnmarshalText([]byte("yada")) assert.Error(t, err) orig := "2014-12-15" bj := []byte("\"" + orig + "\"") err = pp.UnmarshalText([]byte(orig)) assert.NoError(t, err) txt, err := pp.MarshalText() assert.NoError(t, err) assert.Equal(t, orig, string(txt)) err = pp.UnmarshalJSON(bj) assert.NoError(t, err) assert.EqualValues(t, orig, pp.String()) err = pp.UnmarshalJSON([]byte(`"1972/01/01"`)) assert.Error(t, err) b, err := pp.MarshalJSON() assert.NoError(t, err) assert.Equal(t, bj, b) var dateZero Date err = dateZero.UnmarshalJSON([]byte(jsonNull)) assert.NoError(t, err) assert.Equal(t, Date{}, dateZero) } func TestDate_IsDate(t *testing.T) { tests := []struct { value string valid bool }{ {"2017-12-22", true}, {"2017-1-1", false}, {"17-13-22", false}, {"2017-02-29", false}, // not a valid date : 2017 is not a leap year {"1900-02-29", false}, // not a valid date : 1900 is not a leap year {"2100-02-29", false}, // not a valid date : 2100 is not a leap year {"2000-02-29", true}, // a valid date : 2000 is a leap year {"2400-02-29", true}, // a valid date : 2000 is a leap year {"2017-13-22", false}, {"2017-12-32", false}, {"20171-12-32", false}, {"YYYY-MM-DD", false}, {"20-17-2017", false}, {"2017-12-22T01:02:03Z", false}, } for _, test := range tests { assert.Equal(t, test.valid, IsDate(test.value), "value [%s] should be valid: [%t]", test.value, test.valid) } } func TestDeepCopyDate(t *testing.T) { ref := time.Now().Truncate(24 * time.Hour).UTC() date := Date(ref) in := &date out := new(Date) in.DeepCopyInto(out) assert.Equal(t, in, out) out2 := in.DeepCopy() assert.Equal(t, in, out2) var inNil *Date out3 := inNil.DeepCopy() assert.Nil(t, out3) } golang-k8s-kube-openapi-0.0~git20231214.ab13479/pkg/validation/strfmt/default.go000066400000000000000000001052761453663023200266360ustar00rootroot00000000000000// Copyright 2015 go-swagger maintainers // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package strfmt import ( "encoding/base64" "encoding/json" "fmt" "net/mail" "regexp" "strings" "github.com/asaskevich/govalidator" netutils "k8s.io/utils/net" ) const ( // HostnamePattern http://json-schema.org/latest/json-schema-validation.html#anchor114 // A string instance is valid against this attribute if it is a valid // representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034]. // http://tools.ietf.org/html/rfc1034#section-3.5 // ::= any one of the ten digits 0 through 9 // var digit = /[0-9]/; // ::= any one of the 52 alphabetic characters A through Z in upper case and a through z in lower case // var letter = /[a-zA-Z]/; // ::= | // var letDig = /[0-9a-zA-Z]/; // ::= | "-" // var letDigHyp = /[-0-9a-zA-Z]/; // ::= | // var ldhStr = /[-0-9a-zA-Z]+/; //